diff --git a/docs/200.html b/docs/200.html
index 5313462..c7c892e 100644
--- a/docs/200.html
+++ b/docs/200.html
@@ -1 +1 @@
-
huge-link
\ No newline at end of file
+huge-link
\ No newline at end of file
diff --git a/docs/404.html b/docs/404.html
index 10ea7ff..e0dd62a 100644
--- a/docs/404.html
+++ b/docs/404.html
@@ -1 +1 @@
-huge-link Huge link A minimalist serverless publishing tool that allows you to create markdown posts and push them to the Web by sharing the link.
Preview
\ No newline at end of file
+huge-link
\ No newline at end of file
diff --git a/docs/bundle.36a1c.js b/docs/bundle.36a1c.js
new file mode 100644
index 0000000..4556c8b
--- /dev/null
+++ b/docs/bundle.36a1c.js
@@ -0,0 +1,2 @@
+!function(t){function n(n){for(var e,r,o=n[0],i=n[1],_=0,l=[];_=e.__.length&&e.__.push({}),e.__[t]}function o(t){return x=1,u(g,t)}function u(t,n,e){var o=r(b++,2);return o.t=t,o.__c||(o.__=[e?e(n):g(void 0,n),function(t){var n=o.t(o.__[0],t);o.__[0]!==n&&(o.__=[n,o.__[1]],o.__c.setState({}))}],o.__c=k),o.__}function i(t,n){var e=r(b++,3);!w.options.__s&&m(e.__H,n)&&(e.__=t,e.__H=n,k.__H.__h.push(e))}function _(t,n){var e=r(b++,4);!w.options.__s&&m(e.__H,n)&&(e.__=t,e.__H=n,k.__h.push(e))}function l(t){return x=5,a((function(){return{current:t}}),[])}function c(t,n,e){x=6,_((function(){"function"==typeof t?t(n()):t&&(t.current=n())}),null==e?e:e.concat(t))}function a(t,n){var e=r(b++,7);return m(e.__H,n)&&(e.__=t(),e.__H=n,e.__h=t),e.__}function f(t,n){return x=8,a((function(){return t}),n)}function s(t){var n=k.context[t.__c],e=r(b++,9);return e.__c=t,n?(null==e.__&&(e.__=!0,n.sub(k)),n.props.value):t.__}function p(t,n){w.options.useDebugValue&&w.options.useDebugValue(n?n(t):t)}function h(t){var n=r(b++,10),e=o();return n.__=t,k.componentDidCatch||(k.componentDidCatch=function(t){n.__&&n.__(t),e[1](t)}),[e[0],function(){e[1](void 0)}]}function d(){A.forEach((function(t){if(t.__P)try{t.__H.__h.forEach(v),t.__H.__h.forEach(y),t.__H.__h=[]}catch(n){t.__H.__h=[],w.options.__e(n,t.__v)}})),A=[]}function v(t){var n=k;"function"==typeof t.__c&&t.__c(),k=n}function y(t){var n=k;t.__c=t.__(),k=n}function m(t,n){return!t||t.length!==n.length||n.some((function(n,e){return n!==t[e]}))}function g(t,n){return"function"==typeof n?n(t):n}e.d(n,"k",(function(){return o})),e.d(n,"i",(function(){return u})),e.d(n,"d",(function(){return i})),e.d(n,"g",(function(){return _})),e.d(n,"j",(function(){return l})),e.d(n,"f",(function(){return c})),e.d(n,"h",(function(){return a})),e.d(n,"a",(function(){return f})),e.d(n,"b",(function(){return s})),e.d(n,"c",(function(){return p})),e.d(n,"e",(function(){return h}));var b,k,C,w=e("hosL"),x=0,A=[],O=w.options.__b,E=w.options.__r,S=w.options.diffed,P=w.options.__c,j=w.options.unmount;w.options.__b=function(t){k=null,O&&O(t)},w.options.__r=function(t){E&&E(t),b=0;var n=(k=t.__c).__H;n&&(n.__h.forEach(v),n.__h.forEach(y),n.__h=[])},w.options.diffed=function(t){S&&S(t);var n=t.__c;n&&n.__H&&n.__H.__h.length&&(1!==A.push(n)&&C===w.options.requestAnimationFrame||((C=w.options.requestAnimationFrame)||function(t){var n,e=function(){clearTimeout(r),T&&cancelAnimationFrame(n),setTimeout(t)},r=setTimeout(e,100);T&&(n=requestAnimationFrame(e))})(d)),k=void 0},w.options.__c=function(t,n){n.some((function(t){try{t.__h.forEach(v),t.__h=t.__h.filter((function(t){return!t.__||y(t)}))}catch(e){n.some((function(t){t.__h&&(t.__h=[])})),n=[],w.options.__e(e,t.__v)}})),P&&P(t,n)},w.options.unmount=function(t){j&&j(t);var n=t.__c;if(n&&n.__H)try{n.__H.__.forEach(v)}catch(t){w.options.__e(t,n.__v)}};var T="function"==typeof requestAnimationFrame},QfWi:function(t,n,e){"use strict";function r(t){function n(){var n=this;u.Component.call(this),e||(this.componentWillMount=function(){t((function(t){e=t&&t.default||t,n.setState({})}))},this.shouldComponentUpdate=function(){return null!=e}),this.render=function(t){if(e)return Object(u.h)(e,t);var r=function t(n,e){if("string"==typeof n.type)return null;var r=n.__;if(r){var o=r.__k;if(o){Array.isArray(o)||(o=[o]);var u=o.indexOf(n);-1===u&&(u=o.length);for(var i=u;i--;){var _=o[i],l=_&&_.__e||t(_,!0);if(l)return l}}return e?void 0:t(r)}}(n.__v),o=r&&r.nextSibling||(n.__P||n._parentDom).firstChild;return o&&Object(u.h)(o.localName,{dangerouslySetInnerHTML:l})}}var e;return n.preload=t,(n.prototype=new u.Component).constructor=n,n}function o(){return(o=Object.assign||function(t){for(var n=1;nn.rank?-1:t.index-n.index}function i(t,n){return t.index=n,t.rank=function(t){return t.props.default?0:(n=t.props.path,_(n).map(l).join(""));var n}(t),t.props}function _(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function l(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function c(){var t;return""+((t=m&&m.location?m.location:m&&m.getCurrentLocation?m.getCurrentLocation():"undefined"!=typeof location?location:k).pathname||"")+(t.search||"")}function a(t,n){return void 0===n&&(n=!1),"string"!=typeof t&&t.url&&(n=t.replace,t=t.url),function(t){for(var n=g.length;n--;)if(g[n].canRoute(t))return!0;return!1}(t)&&function(t,n){void 0===n&&(n="push"),m&&m[n]?m[n](t):"undefined"!=typeof history&&history[n+"State"]&&history[n+"State"](null,null,t)}(t,n?"replace":"push"),f(t)}function f(t){for(var n=!1,e=0;e0},n.prototype.routeTo=function(t){this.setState({url:t});var n=this.canRoute(t);return this.updating||this.forceUpdate(),n},n.prototype.componentWillMount=function(){g.push(this),this.updating=!0},n.prototype.componentDidMount=function(){var t=this;m&&(this.unlisten=m.listen((function(n){t.routeTo(""+(n.pathname||"")+(n.search||""))}))),this.updating=!1},n.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),g.splice(g.indexOf(this),1)},n.prototype.componentWillUpdate=function(){this.updating=!0},n.prototype.componentDidUpdate=function(){this.updating=!1},n.prototype.getMatchingChildren=function(t,n,e){return t.filter(i).sort(u).map((function(t){var u=o(n,t.props.path,t.props);if(u){if(!1!==e){var i={url:n,matches:u};return r(i,u),delete i.ref,delete i.key,Object(v.cloneElement)(t,i)}return t}})).filter(Boolean)},n.prototype.render=function(t,n){var e=t.children,r=t.onChange,o=n.url,u=this.getMatchingChildren(Object(v.toChildArray)(e),o,!0),i=u[0]||null,_=this.previousUrl;return o!==_&&(this.previousUrl=o,"function"==typeof r&&r({router:this,url:o,previous:_,active:u,current:i})),i},n}(v.Component),x=function(t){return Object(v.createElement)("a",r({onClick:p},t))},A=function(t){return Object(v.createElement)(t.component,t)};w.subscribers=b,w.getCurrentUrl=c,w.route=a,w.Router=w,w.Route=A,w.Link=x,w.exec=o,n.default=w},hosL:function(t,n,e){"use strict";function r(t,n){for(var e in n)t[e]=n[e];return t}function o(t){var n=t.parentNode;n&&n.removeChild(t)}function u(t,n,e){var r,o,u,_=arguments,l={};for(u in n)"key"==u?r=n[u]:"ref"==u?o=n[u]:l[u]=n[u];if(arguments.length>3)for(e=[e],u=3;u1&&k(o,n,e),n=v(e,o,o,t.__k,null,o.__e,n),"function"==typeof t.type&&(t.__d=n)))}function C(t,n,e,o,u,i,_,a,f){var s,p,d,v,y,m,g,b,C,w,A,O=n.type;if(void 0!==n.constructor)return null;null!=e.__h&&(f=e.__h,a=n.__e=e.__e,n.__h=null,i=[a]),(s=L.__b)&&s(n);try{t:if("function"==typeof O){if(b=n.props,C=(s=O.contextType)&&o[s.__c],w=s?C?C.props.value:s.__:o,e.__c?g=(p=n.__c=e.__c).__=p.__E:("prototype"in O&&O.prototype.render?n.__c=p=new O(b,w):(n.__c=p=new c(b,w),p.constructor=O,p.render=E),C&&C.sub(p),p.props=b,p.state||(p.state={}),p.context=w,p.__n=o,d=p.__d=!0,p.__h=[]),null==p.__s&&(p.__s=p.state),null!=O.getDerivedStateFromProps&&(p.__s==p.state&&(p.__s=r({},p.__s)),r(p.__s,O.getDerivedStateFromProps(b,p.__s))),v=p.props,y=p.state,d)null==O.getDerivedStateFromProps&&null!=p.componentWillMount&&p.componentWillMount(),null!=p.componentDidMount&&p.__h.push(p.componentDidMount);else{if(null==O.getDerivedStateFromProps&&b!==v&&null!=p.componentWillReceiveProps&&p.componentWillReceiveProps(b,w),!p.__e&&null!=p.shouldComponentUpdate&&!1===p.shouldComponentUpdate(b,p.__s,w)||n.__v===e.__v){p.props=b,p.state=p.__s,n.__v!==e.__v&&(p.__d=!1),p.__v=n,n.__e=e.__e,n.__k=e.__k,p.__h.length&&_.push(p),k(n,a,t);break t}null!=p.componentWillUpdate&&p.componentWillUpdate(b,p.__s,w),null!=p.componentDidUpdate&&p.__h.push((function(){p.componentDidUpdate(v,y,m)}))}p.context=w,p.props=b,p.state=p.__s,(s=L.__r)&&s(n),p.__d=!1,p.__v=n,p.__P=t,s=p.render(p.props,p.state,p.context),p.state=p.__s,null!=p.getChildContext&&(o=r(r({},o),p.getChildContext())),d||null==p.getSnapshotBeforeUpdate||(m=p.getSnapshotBeforeUpdate(v,y)),A=null!=s&&s.type==l&&null==s.key?s.props.children:s,h(t,Array.isArray(A)?A:[A],n,e,o,u,i,_,a,f),p.base=n.__e,n.__h=null,p.__h.length&&_.push(p),g&&(p.__E=p.__=null),p.__e=!1}else null==i&&n.__v===e.__v?(n.__k=e.__k,n.__e=e.__e):n.__e=x(e.__e,n,e,o,u,i,_,f);(s=L.diffed)&&s(n)}catch(t){n.__v=null,(f||null!=i)&&(n.__e=a,n.__h=!!f,i[i.indexOf(a)]=null),L.__e(t,n,e)}return n.__e}function w(t,n){L.__c&&L.__c(n,t),t.some((function(n){try{t=n.__h,n.__h=[],t.some((function(t){t.call(n)}))}catch(t){L.__e(t,n.__v)}}))}function x(t,n,e,r,o,u,i,_){var l,c,a,f,s,p=e.props,d=n.props;if(o="svg"===n.type||o,null!=u)for(l=0;l3)for(e=[e],_=3;_ {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\n\nclass Router extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tshouldComponentUpdate(props) {\n\t\tif (props.static!==true) return true;\n\t\treturn props.url!==this.props.url || props.onChange!==this.props.onChange;\n\t}\n\n\t/** Check if the given URL can be matched against any children */\n\tcanRoute(url) {\n\t\tconst children = toChildArray(this.props.children);\n\t\treturn this.getMatchingChildren(children, url, false).length > 0;\n\t}\n\n\t/** Re-render children with a new URL to match against. */\n\trouteTo(url) {\n\t\tthis.setState({ url });\n\n\t\tconst didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) this.forceUpdate();\n\n\t\treturn didRoute;\n\t}\n\n\tcomponentWillMount() {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidMount() {\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen((location) => {\n\t\t\t\tthis.routeTo(`${location.pathname || ''}${location.search || ''}`);\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (typeof this.unlisten==='function') this.unlisten();\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t}\n\n\tcomponentWillUpdate() {\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updating = false;\n\t}\n\n\tgetMatchingChildren(children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( vnode => {\n\t\t\t\tlet matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tlet newProps = { url, matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t}\n\n\trender({ children, onChange }, { url }) {\n\t\tlet active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tlet current = active[0] || null;\n\n\t\tlet previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl,\n\t\t\t\t\tprevious,\n\t\t\t\t\tactive,\n\t\t\t\t\tcurrent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nconst Link = (props) => (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n);\n\nconst Route = props => createElement(props.component, props);\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };\nexport default Router;\n","import { h, Component } from 'preact';\n\nconst PENDING = {};\n\n// Given a VNode, finds its previous element sibling\nfunction getPreviousSibling(vnode, inner) {\n\t// in an element parent with no preceeding siblings means we're the first child\n\tif (typeof vnode.type === 'string') return null;\n\tconst parent = vnode.__;\n\tif (!parent) return;\n\tlet children = parent.__k;\n\tif (children) {\n\t\tif (!Array.isArray(children)) children = [children];\n\t\t// only search previous children\n\t\tlet end = children.indexOf(vnode);\n\t\tif (end === -1) end = children.length;\n\t\tfor (let i=end; i--; ) {\n\t\t\tconst child = children[i];\n\t\t\tconst dom = child && child.__e || getPreviousSibling(child, true);\n\t\t\tif (dom) return dom;\n\t\t}\n\t}\n\tif (!inner) return getPreviousSibling(parent);\n}\n\nexport default function async(load) {\n\tlet component;\n\n\tfunction AsyncComponent() {\n\t\tComponent.call(this);\n\n\t\tif (!component) {\n\t\t\tthis.componentWillMount = () => {\n\t\t\t\tload((mod) => {\n\t\t\t\t\tcomponent = (mod && mod.default) || mod;\n\t\t\t\t\tthis.setState({});\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = () => component != null;\n\t\t}\n\n\t\tthis.render = (props) => {\n\t\t\tif (component) {\n\t\t\t\treturn h(component, props);\n\t\t\t}\n\n\t\t\tconst prev = getPreviousSibling(this.__v);\n\t\t\tconst me = prev && prev.nextSibling || (this.__P || this._parentDom).firstChild;\n\n\t\t\treturn (\n\t\t\t\tme &&\n\t\t\t\th(me.localName, {\n\t\t\t\t\tdangerouslySetInnerHTML: PENDING,\n\t\t\t\t})\n\t\t\t);\n\t\t};\n\t}\n\n\tAsyncComponent.preload = load;\n\t(AsyncComponent.prototype = new Component()).constructor = AsyncComponent;\n\n\treturn AsyncComponent;\n}\n","\n\t\timport Async from \"../../../node_modules/@preact/async-loader/async.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tvar result = require(\"!!../../../node_modules/babel-loader/lib/index.js??ref--4!./index.js\");\n\t\t\t\ttypeof cb === 'function' && cb(result);\n\t\t\t}, \"route-editor\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../../node_modules/@preact/async-loader/async.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tvar result = require(\"!!../../../node_modules/babel-loader/lib/index.js??ref--4!./index.js\");\n\t\t\t\ttypeof cb === 'function' && cb(result);\n\t\t\t}, \"route-post\");\n\t\t}\n\n\t\texport default Async(load);\n\t","import {h} from 'preact'\nimport {useState} from 'preact/hooks'\nimport {Router} from 'preact-router'\n\nimport Editor from './routes/editor'\nimport Post from './routes/post'\n\nimport './style/typography.css'\nimport './style'\n\nconst App = () => {\n const [markdown, setMarkdown] = useState('')\n\n return (\n \n \n \n \n \n )\n}\n\nexport default App\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++options._vnodeId : original\n\t};\n\n\tif (options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((process._rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\nprocess._rerenderCount = 0;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../index').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. {reuse}{reuse}
) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (typeof childVNode == 'string' || typeof childVNode == 'number') {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._dom != null || childVNode._component != null) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tnull,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tnewDom = diff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\toldDom = placeChild(\n\t\t\t\tparentDom,\n\t\t\t\tchildVNode,\n\t\t\t\toldVNode,\n\t\t\t\toldChildren,\n\t\t\t\texcessDomChildren,\n\t\t\t\tnewDom,\n\t\t\t\toldDom\n\t\t\t);\n\n\t\t\t// Browsers will infer an option's `value` from `textContent` when\n\t\t\t// no value is present. This essentially bypasses our code to set it\n\t\t\t// later in `diff()`. It works fine in all browsers except for IE11\n\t\t\t// where it breaks setting `select.value`. There it will be always set\n\t\t\t// to an empty string. Re-applying an options value will fix that, so\n\t\t\t// there are probably some internal data structures that aren't\n\t\t\t// updated properly.\n\t\t\t//\n\t\t\t// To fix it we make sure to reset the inferred value, so that our own\n\t\t\t// value check in `diff()` won't be skipped.\n\t\t\tif (!isHydrating && newParentVNode.type == 'option') {\n\t\t\t\tparentDom.value = '';\n\t\t\t} else if (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove children that are not part of any vnode.\n\tif (excessDomChildren != null && typeof newParentVNode.type != 'function') {\n\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) unmount(oldChildren[i], oldChildren[i]);\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nexport function placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\texcessDomChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\texcessDomChildren == oldVNode ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t// The values only have the same type when `null`.\n\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j 1) {\n\t\t\t\t\treorderChildren(vnode, oldDom, parentDom);\n\t\t\t\t}\n\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tvnode,\n\t\t\t\t\tvnode,\n\t\t\t\t\tnewVNode._children,\n\t\t\t\t\tnull,\n\t\t\t\t\tvnode._dom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\n\t\t\t\tif (typeof newVNode.type == 'function') {\n\t\t\t\t\tnewVNode._nextDom = oldDom;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\treorderChildren(newVNode, oldDom, parentDom);\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the -element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value || (newVNode.type === 'progress' && !i))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.childNodes.length\n\t\t\t? EMPTY_ARR.slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { assign } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\tProvider(props, subs, ctx) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tsubs = [];\n\t\t\t\tctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function(_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(enqueueRender);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType = context);\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError,\n\t_vnodeId: 0\n};\n\nexport default options;\n","// import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tconst wasHydrating = vnode._hydrating;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\tvnode._hydrating = wasHydrating;\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nconst normalizeURL = url => (url[url.length - 1] === '/' ? url : url + '/');\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw-debug.js');\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(\n\t\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t// eslint-disable-next-line no-undef\n\tnavigator.serviceWorker.register(\n\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData =\n\t\t\t\tJSON.parse(decodeURI(inlineDataElement.innerHTML)).preRenderData ||\n\t\t\t\tpreRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst currentURL = preRenderData.url ? normalizeURL(preRenderData.url) : '';\n\t\tconst canHydrate =\n\t\t\tprocess.env.PRERENDER &&\n\t\t\tprocess.env.NODE_ENV === 'production' &&\n\t\t\thydrate &&\n\t\t\tcurrentURL === normalizeURL(location.pathname);\n\t\tconst doRender = canHydrate ? hydrate : render;\n\t\troot = doRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/docs/bundle.6319d.js b/docs/bundle.6319d.js
deleted file mode 100644
index a6615e0..0000000
--- a/docs/bundle.6319d.js
+++ /dev/null
@@ -1,2 +0,0 @@
-!function(t){function n(n){for(var e,r,o=n[0],i=n[1],_=0,l=[];_=e.__.length&&e.__.push({}),e.__[t]}function o(t){return x=1,u(g,t)}function u(t,n,e){var o=r(b++,2);return o.t=t,o.__c||(o.__=[e?e(n):g(void 0,n),function(t){var n=o.t(o.__[0],t);o.__[0]!==n&&(o.__=[n,o.__[1]],o.__c.setState({}))}],o.__c=k),o.__}function i(t,n){var e=r(b++,3);!w.options.__s&&m(e.__H,n)&&(e.__=t,e.__H=n,k.__H.__h.push(e))}function _(t,n){var e=r(b++,4);!w.options.__s&&m(e.__H,n)&&(e.__=t,e.__H=n,k.__h.push(e))}function l(t){return x=5,a((function(){return{current:t}}),[])}function c(t,n,e){x=6,_((function(){"function"==typeof t?t(n()):t&&(t.current=n())}),null==e?e:e.concat(t))}function a(t,n){var e=r(b++,7);return m(e.__H,n)&&(e.__=t(),e.__H=n,e.__h=t),e.__}function f(t,n){return x=8,a((function(){return t}),n)}function s(t){var n=k.context[t.__c],e=r(b++,9);return e.__c=t,n?(null==e.__&&(e.__=!0,n.sub(k)),n.props.value):t.__}function p(t,n){w.options.useDebugValue&&w.options.useDebugValue(n?n(t):t)}function d(t){var n=r(b++,10),e=o();return n.__=t,k.componentDidCatch||(k.componentDidCatch=function(t){n.__&&n.__(t),e[1](t)}),[e[0],function(){e[1](void 0)}]}function h(){A.forEach((function(t){if(t.__P)try{t.__H.__h.forEach(v),t.__H.__h.forEach(y),t.__H.__h=[]}catch(n){t.__H.__h=[],w.options.__e(n,t.__v)}})),A=[]}function v(t){var n=k;"function"==typeof t.__c&&t.__c(),k=n}function y(t){var n=k;t.__c=t.__(),k=n}function m(t,n){return!t||t.length!==n.length||n.some((function(n,e){return n!==t[e]}))}function g(t,n){return"function"==typeof n?n(t):n}e.d(n,"k",(function(){return o})),e.d(n,"i",(function(){return u})),e.d(n,"d",(function(){return i})),e.d(n,"g",(function(){return _})),e.d(n,"j",(function(){return l})),e.d(n,"f",(function(){return c})),e.d(n,"h",(function(){return a})),e.d(n,"a",(function(){return f})),e.d(n,"b",(function(){return s})),e.d(n,"c",(function(){return p})),e.d(n,"e",(function(){return d}));var b,k,C,w=e("hosL"),x=0,A=[],O=w.options.__b,E=w.options.__r,S=w.options.diffed,P=w.options.__c,j=w.options.unmount;w.options.__b=function(t){k=null,O&&O(t)},w.options.__r=function(t){E&&E(t),b=0;var n=(k=t.__c).__H;n&&(n.__h.forEach(v),n.__h.forEach(y),n.__h=[])},w.options.diffed=function(t){S&&S(t);var n=t.__c;n&&n.__H&&n.__H.__h.length&&(1!==A.push(n)&&C===w.options.requestAnimationFrame||((C=w.options.requestAnimationFrame)||function(t){var n,e=function(){clearTimeout(r),T&&cancelAnimationFrame(n),setTimeout(t)},r=setTimeout(e,100);T&&(n=requestAnimationFrame(e))})(h)),k=void 0},w.options.__c=function(t,n){n.some((function(t){try{t.__h.forEach(v),t.__h=t.__h.filter((function(t){return!t.__||y(t)}))}catch(e){n.some((function(t){t.__h&&(t.__h=[])})),n=[],w.options.__e(e,t.__v)}})),P&&P(t,n)},w.options.unmount=function(t){j&&j(t);var n=t.__c;if(n&&n.__H)try{n.__H.__.forEach(v)}catch(t){w.options.__e(t,n.__v)}};var T="function"==typeof requestAnimationFrame},QfWi:function(t,n,e){"use strict";function r(t){function n(){var n=this;u.Component.call(this),e||(this.componentWillMount=function(){t((function(t){e=t&&t.default||t,n.setState({})}))},this.shouldComponentUpdate=function(){return null!=e}),this.render=function(t){if(e)return Object(u.h)(e,t);var r=function t(n,e){if("string"==typeof n.type)return null;var r=n.__;if(r){var o=r.__k;if(o){Array.isArray(o)||(o=[o]);var u=o.indexOf(n);-1===u&&(u=o.length);for(var i=u;i--;){var _=o[i],l=_&&_.__e||t(_,!0);if(l)return l}}return e?void 0:t(r)}}(n.__v),o=r&&r.nextSibling||(n.__P||n._parentDom).firstChild;return o&&Object(u.h)(o.localName,{dangerouslySetInnerHTML:l})}}var e;return n.preload=t,(n.prototype=new u.Component).constructor=n,n}function o(){return(o=Object.assign||function(t){for(var n=1;nn.rank?-1:t.index-n.index}function i(t,n){return t.index=n,t.rank=function(t){return t.props.default?0:(n=t.props.path,_(n).map(l).join(""));var n}(t),t.props}function _(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function l(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function c(){var t;return""+((t=m&&m.location?m.location:m&&m.getCurrentLocation?m.getCurrentLocation():"undefined"!=typeof location?location:k).pathname||"")+(t.search||"")}function a(t,n){return void 0===n&&(n=!1),"string"!=typeof t&&t.url&&(n=t.replace,t=t.url),function(t){for(var n=g.length;n--;)if(g[n].canRoute(t))return!0;return!1}(t)&&function(t,n){void 0===n&&(n="push"),m&&m[n]?m[n](t):"undefined"!=typeof history&&history[n+"State"]&&history[n+"State"](null,null,t)}(t,n?"replace":"push"),f(t)}function f(t){for(var n=!1,e=0;e0},n.prototype.routeTo=function(t){this.setState({url:t});var n=this.canRoute(t);return this.updating||this.forceUpdate(),n},n.prototype.componentWillMount=function(){g.push(this),this.updating=!0},n.prototype.componentDidMount=function(){var t=this;m&&(this.unlisten=m.listen((function(n){t.routeTo(""+(n.pathname||"")+(n.search||""))}))),this.updating=!1},n.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),g.splice(g.indexOf(this),1)},n.prototype.componentWillUpdate=function(){this.updating=!0},n.prototype.componentDidUpdate=function(){this.updating=!1},n.prototype.getMatchingChildren=function(t,n,e){return t.filter(i).sort(u).map((function(t){var u=o(n,t.props.path,t.props);if(u){if(!1!==e){var i={url:n,matches:u};return r(i,u),delete i.ref,delete i.key,Object(v.cloneElement)(t,i)}return t}})).filter(Boolean)},n.prototype.render=function(t,n){var e=t.children,r=t.onChange,o=n.url,u=this.getMatchingChildren(Object(v.toChildArray)(e),o,!0),i=u[0]||null,_=this.previousUrl;return o!==_&&(this.previousUrl=o,"function"==typeof r&&r({router:this,url:o,previous:_,active:u,current:i})),i},n}(v.Component),x=function(t){return Object(v.createElement)("a",r({onClick:p},t))},A=function(t){return Object(v.createElement)(t.component,t)};w.subscribers=b,w.getCurrentUrl=c,w.route=a,w.Router=w,w.Route=A,w.Link=x,w.exec=o,n.default=w},hosL:function(t,n,e){"use strict";function r(t,n){for(var e in n)t[e]=n[e];return t}function o(t){var n=t.parentNode;n&&n.removeChild(t)}function u(t,n,e){var r,o,u,_=arguments,l={};for(u in n)"key"==u?r=n[u]:"ref"==u?o=n[u]:l[u]=n[u];if(arguments.length>3)for(e=[e],u=3;u1&&k(o,n,e),n=v(e,o,o,t.__k,null,o.__e,n),"function"==typeof t.type&&(t.__d=n)))}function C(t,n,e,o,u,i,_,a,f){var s,p,h,v,y,m,g,b,C,w,A,O=n.type;if(void 0!==n.constructor)return null;null!=e.__h&&(f=e.__h,a=n.__e=e.__e,n.__h=null,i=[a]),(s=L.__b)&&s(n);try{t:if("function"==typeof O){if(b=n.props,C=(s=O.contextType)&&o[s.__c],w=s?C?C.props.value:s.__:o,e.__c?g=(p=n.__c=e.__c).__=p.__E:("prototype"in O&&O.prototype.render?n.__c=p=new O(b,w):(n.__c=p=new c(b,w),p.constructor=O,p.render=E),C&&C.sub(p),p.props=b,p.state||(p.state={}),p.context=w,p.__n=o,h=p.__d=!0,p.__h=[]),null==p.__s&&(p.__s=p.state),null!=O.getDerivedStateFromProps&&(p.__s==p.state&&(p.__s=r({},p.__s)),r(p.__s,O.getDerivedStateFromProps(b,p.__s))),v=p.props,y=p.state,h)null==O.getDerivedStateFromProps&&null!=p.componentWillMount&&p.componentWillMount(),null!=p.componentDidMount&&p.__h.push(p.componentDidMount);else{if(null==O.getDerivedStateFromProps&&b!==v&&null!=p.componentWillReceiveProps&&p.componentWillReceiveProps(b,w),!p.__e&&null!=p.shouldComponentUpdate&&!1===p.shouldComponentUpdate(b,p.__s,w)||n.__v===e.__v){p.props=b,p.state=p.__s,n.__v!==e.__v&&(p.__d=!1),p.__v=n,n.__e=e.__e,n.__k=e.__k,p.__h.length&&_.push(p),k(n,a,t);break t}null!=p.componentWillUpdate&&p.componentWillUpdate(b,p.__s,w),null!=p.componentDidUpdate&&p.__h.push((function(){p.componentDidUpdate(v,y,m)}))}p.context=w,p.props=b,p.state=p.__s,(s=L.__r)&&s(n),p.__d=!1,p.__v=n,p.__P=t,s=p.render(p.props,p.state,p.context),p.state=p.__s,null!=p.getChildContext&&(o=r(r({},o),p.getChildContext())),h||null==p.getSnapshotBeforeUpdate||(m=p.getSnapshotBeforeUpdate(v,y)),A=null!=s&&s.type==l&&null==s.key?s.props.children:s,d(t,Array.isArray(A)?A:[A],n,e,o,u,i,_,a,f),p.base=n.__e,n.__h=null,p.__h.length&&_.push(p),g&&(p.__E=p.__=null),p.__e=!1}else null==i&&n.__v===e.__v?(n.__k=e.__k,n.__e=e.__e):n.__e=x(e.__e,n,e,o,u,i,_,f);(s=L.diffed)&&s(n)}catch(t){n.__v=null,(f||null!=i)&&(n.__e=a,n.__h=!!f,i[i.indexOf(a)]=null),L.__e(t,n,e)}return n.__e}function w(t,n){L.__c&&L.__c(n,t),t.some((function(n){try{t=n.__h,n.__h=[],t.some((function(t){t.call(n)}))}catch(t){L.__e(t,n.__v)}}))}function x(t,n,e,r,o,u,i,_){var l,c,a,f,s,p=e.props,h=n.props;if(o="svg"===n.type||o,null!=u)for(l=0;l3)for(e=[e],_=3;_ {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\n\nclass Router extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tshouldComponentUpdate(props) {\n\t\tif (props.static!==true) return true;\n\t\treturn props.url!==this.props.url || props.onChange!==this.props.onChange;\n\t}\n\n\t/** Check if the given URL can be matched against any children */\n\tcanRoute(url) {\n\t\tconst children = toChildArray(this.props.children);\n\t\treturn this.getMatchingChildren(children, url, false).length > 0;\n\t}\n\n\t/** Re-render children with a new URL to match against. */\n\trouteTo(url) {\n\t\tthis.setState({ url });\n\n\t\tconst didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) this.forceUpdate();\n\n\t\treturn didRoute;\n\t}\n\n\tcomponentWillMount() {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidMount() {\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen((location) => {\n\t\t\t\tthis.routeTo(`${location.pathname || ''}${location.search || ''}`);\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (typeof this.unlisten==='function') this.unlisten();\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t}\n\n\tcomponentWillUpdate() {\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updating = false;\n\t}\n\n\tgetMatchingChildren(children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( vnode => {\n\t\t\t\tlet matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tlet newProps = { url, matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t}\n\n\trender({ children, onChange }, { url }) {\n\t\tlet active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tlet current = active[0] || null;\n\n\t\tlet previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl,\n\t\t\t\t\tprevious,\n\t\t\t\t\tactive,\n\t\t\t\t\tcurrent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nconst Link = (props) => (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n);\n\nconst Route = props => createElement(props.component, props);\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };\nexport default Router;\n","import { h, Component } from 'preact';\n\nconst PENDING = {};\n\n// Given a VNode, finds its previous element sibling\nfunction getPreviousSibling(vnode, inner) {\n\t// in an element parent with no preceeding siblings means we're the first child\n\tif (typeof vnode.type === 'string') return null;\n\tconst parent = vnode.__;\n\tif (!parent) return;\n\tlet children = parent.__k;\n\tif (children) {\n\t\tif (!Array.isArray(children)) children = [children];\n\t\t// only search previous children\n\t\tlet end = children.indexOf(vnode);\n\t\tif (end === -1) end = children.length;\n\t\tfor (let i=end; i--; ) {\n\t\t\tconst child = children[i];\n\t\t\tconst dom = child && child.__e || getPreviousSibling(child, true);\n\t\t\tif (dom) return dom;\n\t\t}\n\t}\n\tif (!inner) return getPreviousSibling(parent);\n}\n\nexport default function async(load) {\n\tlet component;\n\n\tfunction AsyncComponent() {\n\t\tComponent.call(this);\n\n\t\tif (!component) {\n\t\t\tthis.componentWillMount = () => {\n\t\t\t\tload((mod) => {\n\t\t\t\t\tcomponent = (mod && mod.default) || mod;\n\t\t\t\t\tthis.setState({});\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = () => component != null;\n\t\t}\n\n\t\tthis.render = (props) => {\n\t\t\tif (component) {\n\t\t\t\treturn h(component, props);\n\t\t\t}\n\n\t\t\tconst prev = getPreviousSibling(this.__v);\n\t\t\tconst me = prev && prev.nextSibling || (this.__P || this._parentDom).firstChild;\n\n\t\t\treturn (\n\t\t\t\tme &&\n\t\t\t\th(me.localName, {\n\t\t\t\t\tdangerouslySetInnerHTML: PENDING,\n\t\t\t\t})\n\t\t\t);\n\t\t};\n\t}\n\n\tAsyncComponent.preload = load;\n\t(AsyncComponent.prototype = new Component()).constructor = AsyncComponent;\n\n\treturn AsyncComponent;\n}\n","\n\t\timport Async from \"../../../node_modules/@preact/async-loader/async.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tvar result = require(\"!!../../../node_modules/babel-loader/lib/index.js??ref--4!./index.js\");\n\t\t\t\ttypeof cb === 'function' && cb(result);\n\t\t\t}, \"route-editor\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../../node_modules/@preact/async-loader/async.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tvar result = require(\"!!../../../node_modules/babel-loader/lib/index.js??ref--4!./index.js\");\n\t\t\t\ttypeof cb === 'function' && cb(result);\n\t\t\t}, \"route-post\");\n\t\t}\n\n\t\texport default Async(load);\n\t","import {h} from 'preact'\nimport {useState} from 'preact/hooks'\nimport {Router} from 'preact-router'\n\nimport Editor from './routes/editor'\nimport Post from './routes/post'\n\nimport './style/typography.css'\nimport './style'\n\nconst App = () => {\n const [markdown, setMarkdown] = useState('')\n\n return (\n \n \n \n \n \n )\n}\n\nexport default App\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++options._vnodeId : original\n\t};\n\n\tif (options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((process._rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\nprocess._rerenderCount = 0;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../index').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. {reuse}{reuse}
) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (typeof childVNode == 'string' || typeof childVNode == 'number') {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._dom != null || childVNode._component != null) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tnull,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tnewDom = diff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\toldDom = placeChild(\n\t\t\t\tparentDom,\n\t\t\t\tchildVNode,\n\t\t\t\toldVNode,\n\t\t\t\toldChildren,\n\t\t\t\texcessDomChildren,\n\t\t\t\tnewDom,\n\t\t\t\toldDom\n\t\t\t);\n\n\t\t\t// Browsers will infer an option's `value` from `textContent` when\n\t\t\t// no value is present. This essentially bypasses our code to set it\n\t\t\t// later in `diff()`. It works fine in all browsers except for IE11\n\t\t\t// where it breaks setting `select.value`. There it will be always set\n\t\t\t// to an empty string. Re-applying an options value will fix that, so\n\t\t\t// there are probably some internal data structures that aren't\n\t\t\t// updated properly.\n\t\t\t//\n\t\t\t// To fix it we make sure to reset the inferred value, so that our own\n\t\t\t// value check in `diff()` won't be skipped.\n\t\t\tif (!isHydrating && newParentVNode.type == 'option') {\n\t\t\t\tparentDom.value = '';\n\t\t\t} else if (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove children that are not part of any vnode.\n\tif (excessDomChildren != null && typeof newParentVNode.type != 'function') {\n\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) unmount(oldChildren[i], oldChildren[i]);\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nexport function placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\texcessDomChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\texcessDomChildren == oldVNode ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t// The values only have the same type when `null`.\n\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j 1) {\n\t\t\t\t\treorderChildren(vnode, oldDom, parentDom);\n\t\t\t\t}\n\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tvnode,\n\t\t\t\t\tvnode,\n\t\t\t\t\tnewVNode._children,\n\t\t\t\t\tnull,\n\t\t\t\t\tvnode._dom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\n\t\t\t\tif (typeof newVNode.type == 'function') {\n\t\t\t\t\tnewVNode._nextDom = oldDom;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\treorderChildren(newVNode, oldDom, parentDom);\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the -element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value || (newVNode.type === 'progress' && !i))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.childNodes.length\n\t\t\t? EMPTY_ARR.slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { assign } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\tProvider(props, subs, ctx) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tsubs = [];\n\t\t\t\tctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function(_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(enqueueRender);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType = context);\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError,\n\t_vnodeId: 0\n};\n\nexport default options;\n","// import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tconst wasHydrating = vnode._hydrating;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\tvnode._hydrating = wasHydrating;\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nconst normalizeURL = url => (url[url.length - 1] === '/' ? url : url + '/');\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw-debug.js');\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(\n\t\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t// eslint-disable-next-line no-undef\n\tnavigator.serviceWorker.register(\n\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData =\n\t\t\t\tJSON.parse(decodeURI(inlineDataElement.innerHTML)).preRenderData ||\n\t\t\t\tpreRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst currentURL = preRenderData.url ? normalizeURL(preRenderData.url) : '';\n\t\tconst canHydrate =\n\t\t\tprocess.env.PRERENDER &&\n\t\t\tprocess.env.NODE_ENV === 'production' &&\n\t\t\thydrate &&\n\t\t\tcurrentURL === normalizeURL(location.pathname);\n\t\tconst doRender = canHydrate ? hydrate : render;\n\t\troot = doRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/docs/bundle.8259f.esm.js b/docs/bundle.8259f.esm.js
new file mode 100644
index 0000000..a55af5e
--- /dev/null
+++ b/docs/bundle.8259f.esm.js
@@ -0,0 +1,2 @@
+!function(t){function n(n){for(var e,r,o=n[0],u=n[1],_=0,l=[];_=e.__.length&&e.__.push({}),e.__[t]}function o(t){return x=1,i(g,t)}function i(t,n,e){var o=r(b++,2);return o.t=t,o.__c||(o.__=[e?e(n):g(void 0,n),function(t){var n=o.t(o.__[0],t);o.__[0]!==n&&(o.__=[n,o.__[1]],o.__c.setState({}))}],o.__c=k),o.__}function u(t,n){var e=r(b++,3);!w.options.__s&&m(e.__H,n)&&(e.__=t,e.__H=n,k.__H.__h.push(e))}function _(t,n){var e=r(b++,4);!w.options.__s&&m(e.__H,n)&&(e.__=t,e.__H=n,k.__h.push(e))}function l(t){return x=5,a((function(){return{current:t}}),[])}function c(t,n,e){x=6,_((function(){"function"==typeof t?t(n()):t&&(t.current=n())}),null==e?e:e.concat(t))}function a(t,n){var e=r(b++,7);return m(e.__H,n)&&(e.__=t(),e.__H=n,e.__h=t),e.__}function f(t,n){return x=8,a((function(){return t}),n)}function s(t){var n=k.context[t.__c],e=r(b++,9);return e.__c=t,n?(null==e.__&&(e.__=!0,n.sub(k)),n.props.value):t.__}function p(t,n){w.options.useDebugValue&&w.options.useDebugValue(n?n(t):t)}function h(t){var n=r(b++,10),e=o();return n.__=t,k.componentDidCatch||(k.componentDidCatch=function(t){n.__&&n.__(t),e[1](t)}),[e[0],function(){e[1](void 0)}]}function d(){A.forEach((function(t){if(t.__P)try{t.__H.__h.forEach(v),t.__H.__h.forEach(y),t.__H.__h=[]}catch(n){t.__H.__h=[],w.options.__e(n,t.__v)}})),A=[]}function v(t){var n=k;"function"==typeof t.__c&&t.__c(),k=n}function y(t){var n=k;t.__c=t.__(),k=n}function m(t,n){return!t||t.length!==n.length||n.some((function(n,e){return n!==t[e]}))}function g(t,n){return"function"==typeof n?n(t):n}e.d(n,"k",(function(){return o})),e.d(n,"i",(function(){return i})),e.d(n,"d",(function(){return u})),e.d(n,"g",(function(){return _})),e.d(n,"j",(function(){return l})),e.d(n,"f",(function(){return c})),e.d(n,"h",(function(){return a})),e.d(n,"a",(function(){return f})),e.d(n,"b",(function(){return s})),e.d(n,"c",(function(){return p})),e.d(n,"e",(function(){return h}));var b,k,C,w=e("hosL"),x=0,A=[],O=w.options.__b,E=w.options.__r,S=w.options.diffed,P=w.options.__c,j=w.options.unmount;w.options.__b=function(t){k=null,O&&O(t)},w.options.__r=function(t){E&&E(t),b=0;var n=(k=t.__c).__H;n&&(n.__h.forEach(v),n.__h.forEach(y),n.__h=[])},w.options.diffed=function(t){S&&S(t);var n=t.__c;n&&n.__H&&n.__H.__h.length&&(1!==A.push(n)&&C===w.options.requestAnimationFrame||((C=w.options.requestAnimationFrame)||function(t){var n,e=function(){clearTimeout(r),T&&cancelAnimationFrame(n),setTimeout(t)},r=setTimeout(e,100);T&&(n=requestAnimationFrame(e))})(d)),k=void 0},w.options.__c=function(t,n){n.some((function(t){try{t.__h.forEach(v),t.__h=t.__h.filter((function(t){return!t.__||y(t)}))}catch(e){n.some((function(t){t.__h&&(t.__h=[])})),n=[],w.options.__e(e,t.__v)}})),P&&P(t,n)},w.options.unmount=function(t){j&&j(t);var n=t.__c;if(n&&n.__H)try{n.__H.__.forEach(v)}catch(t){w.options.__e(t,n.__v)}};var T="function"==typeof requestAnimationFrame},QfWi:function(t,n,e){"use strict";function r(t){function n(){i.Component.call(this),e||(this.componentWillMount=()=>{t(t=>{e=t&&t.default||t,this.setState({})})},this.shouldComponentUpdate=()=>null!=e),this.render=t=>{if(e)return Object(i.h)(e,t);const n=function t(n,e){if("string"==typeof n.type)return null;const r=n.__;if(!r)return;let o=r.__k;if(o){Array.isArray(o)||(o=[o]);let e=o.indexOf(n);-1===e&&(e=o.length);for(let n=e;n--;){const e=o[n],r=e&&e.__e||t(e,!0);if(r)return r}}return e?void 0:t(r)}(this.__v),r=n&&n.nextSibling||(this.__P||this._parentDom).firstChild;return r&&Object(i.h)(r.localName,{dangerouslySetInnerHTML:l})}}let e;return n.preload=t,(n.prototype=new i.Component).constructor=n,n}function o(){return(o=Object.assign||function(t){for(var n=1;n{const[t,n]=Object(u.k)("");return Object(i.h)("main",null,Object(i.h)(_.Router,null,Object(i.h)(c,o({path:"/huge-link/",markdown:t},{setMarkdown:n})),Object(i.h)(a,o({path:"/huge-link/preview/",mode:"preview",payload:t},{setMarkdown:n})),Object(i.h)(a,o({path:"/huge-link/p/:payload",mode:"post"},{setMarkdown:n}))))}},Y3FI:function(t,n,e){"use strict";function r(t,n){for(var e in n)t[e]=n[e];return t}function o(t,n,e){var r,o=/(?:\?([^#]*))?(#.*)?$/,i=t.match(o),u={};if(i&&i[1])for(var l=i[1].split("&"),c=0;cn.rank?-1:t.index-n.index}function u(t,n){return t.index=n,t.rank=function(t){return t.props.default?0:(n=t.props.path,_(n).map(l).join(""));var n}(t),t.props}function _(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function l(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function c(){var t;return""+((t=m&&m.location?m.location:m&&m.getCurrentLocation?m.getCurrentLocation():"undefined"!=typeof location?location:k).pathname||"")+(t.search||"")}function a(t,n){return void 0===n&&(n=!1),"string"!=typeof t&&t.url&&(n=t.replace,t=t.url),function(t){for(var n=g.length;n--;)if(g[n].canRoute(t))return!0;return!1}(t)&&function(t,n){void 0===n&&(n="push"),m&&m[n]?m[n](t):"undefined"!=typeof history&&history[n+"State"]&&history[n+"State"](null,null,t)}(t,n?"replace":"push"),f(t)}function f(t){for(var n=!1,e=0;e0},n.prototype.routeTo=function(t){this.setState({url:t});var n=this.canRoute(t);return this.updating||this.forceUpdate(),n},n.prototype.componentWillMount=function(){g.push(this),this.updating=!0},n.prototype.componentDidMount=function(){var t=this;m&&(this.unlisten=m.listen((function(n){t.routeTo(""+(n.pathname||"")+(n.search||""))}))),this.updating=!1},n.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),g.splice(g.indexOf(this),1)},n.prototype.componentWillUpdate=function(){this.updating=!0},n.prototype.componentDidUpdate=function(){this.updating=!1},n.prototype.getMatchingChildren=function(t,n,e){return t.filter(u).sort(i).map((function(t){var i=o(n,t.props.path,t.props);if(i){if(!1!==e){var u={url:n,matches:i};return r(u,i),delete u.ref,delete u.key,Object(v.cloneElement)(t,u)}return t}})).filter(Boolean)},n.prototype.render=function(t,n){var e=t.children,r=t.onChange,o=n.url,i=this.getMatchingChildren(Object(v.toChildArray)(e),o,!0),u=i[0]||null,_=this.previousUrl;return o!==_&&(this.previousUrl=o,"function"==typeof r&&r({router:this,url:o,previous:_,active:i,current:u})),u},n}(v.Component),x=function(t){return Object(v.createElement)("a",r({onClick:p},t))},A=function(t){return Object(v.createElement)(t.component,t)};w.subscribers=b,w.getCurrentUrl=c,w.route=a,w.Router=w,w.Route=A,w.Link=x,w.exec=o,n.default=w},hosL:function(t,n,e){"use strict";function r(t,n){for(var e in n)t[e]=n[e];return t}function o(t){var n=t.parentNode;n&&n.removeChild(t)}function i(t,n,e){var r,o,i,_=arguments,l={};for(i in n)"key"==i?r=n[i]:"ref"==i?o=n[i]:l[i]=n[i];if(arguments.length>3)for(e=[e],i=3;i1&&k(o,n,e),n=v(e,o,o,t.__k,null,o.__e,n),"function"==typeof t.type&&(t.__d=n)))}function C(t,n,e,o,i,u,_,a,f){var s,p,d,v,y,m,g,b,C,w,A,O=n.type;if(void 0!==n.constructor)return null;null!=e.__h&&(f=e.__h,a=n.__e=e.__e,n.__h=null,u=[a]),(s=L.__b)&&s(n);try{t:if("function"==typeof O){if(b=n.props,C=(s=O.contextType)&&o[s.__c],w=s?C?C.props.value:s.__:o,e.__c?g=(p=n.__c=e.__c).__=p.__E:("prototype"in O&&O.prototype.render?n.__c=p=new O(b,w):(n.__c=p=new c(b,w),p.constructor=O,p.render=E),C&&C.sub(p),p.props=b,p.state||(p.state={}),p.context=w,p.__n=o,d=p.__d=!0,p.__h=[]),null==p.__s&&(p.__s=p.state),null!=O.getDerivedStateFromProps&&(p.__s==p.state&&(p.__s=r({},p.__s)),r(p.__s,O.getDerivedStateFromProps(b,p.__s))),v=p.props,y=p.state,d)null==O.getDerivedStateFromProps&&null!=p.componentWillMount&&p.componentWillMount(),null!=p.componentDidMount&&p.__h.push(p.componentDidMount);else{if(null==O.getDerivedStateFromProps&&b!==v&&null!=p.componentWillReceiveProps&&p.componentWillReceiveProps(b,w),!p.__e&&null!=p.shouldComponentUpdate&&!1===p.shouldComponentUpdate(b,p.__s,w)||n.__v===e.__v){p.props=b,p.state=p.__s,n.__v!==e.__v&&(p.__d=!1),p.__v=n,n.__e=e.__e,n.__k=e.__k,p.__h.length&&_.push(p),k(n,a,t);break t}null!=p.componentWillUpdate&&p.componentWillUpdate(b,p.__s,w),null!=p.componentDidUpdate&&p.__h.push((function(){p.componentDidUpdate(v,y,m)}))}p.context=w,p.props=b,p.state=p.__s,(s=L.__r)&&s(n),p.__d=!1,p.__v=n,p.__P=t,s=p.render(p.props,p.state,p.context),p.state=p.__s,null!=p.getChildContext&&(o=r(r({},o),p.getChildContext())),d||null==p.getSnapshotBeforeUpdate||(m=p.getSnapshotBeforeUpdate(v,y)),A=null!=s&&s.type==l&&null==s.key?s.props.children:s,h(t,Array.isArray(A)?A:[A],n,e,o,i,u,_,a,f),p.base=n.__e,n.__h=null,p.__h.length&&_.push(p),g&&(p.__E=p.__=null),p.__e=!1}else null==u&&n.__v===e.__v?(n.__k=e.__k,n.__e=e.__e):n.__e=x(e.__e,n,e,o,i,u,_,f);(s=L.diffed)&&s(n)}catch(t){n.__v=null,(f||null!=u)&&(n.__e=a,n.__h=!!f,u[u.indexOf(a)]=null),L.__e(t,n,e)}return n.__e}function w(t,n){L.__c&&L.__c(n,t),t.some((function(n){try{t=n.__h,n.__h=[],t.some((function(t){t.call(n)}))}catch(t){L.__e(t,n.__v)}}))}function x(t,n,e,r,o,i,u,_){var l,c,a,f,s,p=e.props,d=n.props;if(o="svg"===n.type||o,null!=i)for(l=0;l3)for(e=[e],_=3;_t&&t.default?t.default:t,l=t=>"/"===t[t.length-1]?t:t+"/";if("serviceWorker"in navigator&&navigator.serviceWorker.register(e.p+"sw-esm.js"),"function"==typeof _(e("QfWi"))){let t=document.getElementById("preact_root")||document.body.firstElementChild;0,(()=>{let n=_(e("QfWi")),r={};const c=document.querySelector('[type="__PREACT_CLI_DATA__"]');c&&(r=JSON.parse(decodeURI(c.innerHTML)).preRenderData||r);const a={preRenderData:r},f=r.url?l(r.url):"",s=u&&f===l(location.pathname);t=(s?u:i)(o(n,{CLI_DATA:a}),document.body,t)})()}},pRls:function(){}});
+//# sourceMappingURL=bundle.8259f.esm.js.map
\ No newline at end of file
diff --git a/docs/bundle.8259f.esm.js.map b/docs/bundle.8259f.esm.js.map
new file mode 100644
index 0000000..9598852
--- /dev/null
+++ b/docs/bundle.8259f.esm.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../src/index.js","webpack:///../node_modules/@preact/async-loader/async.js","webpack:///./routes/editor/index.js?5cf4","webpack:///./routes/post/index.js?01a5","webpack:///./index.js","webpack:///../src/util.js","webpack:///../src/create-element.js","webpack:///../src/component.js","webpack:///../src/diff/children.js","webpack:///../src/diff/props.js","webpack:///../src/diff/index.js","webpack:///../src/render.js","webpack:///../src/clone-element.js","webpack:///../src/create-context.js","webpack:///../src/constants.js","webpack:///../src/options.js","webpack:///../src/diff/catch-error.js","webpack:///../node_modules/preact-cli/lib/lib/entry.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","__webpack_require__","installedModules","exports","module","l","installedCssChunks","0","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","s","getHookState","index","options","currentComponent","currentHook","hooks","useState","initialState","useReducer","invokeOrReturn","reducer","init","hookState","currentIndex","_reducer","nextValue","action","setState","useEffect","callback","args","state","argsChanged","useLayoutEffect","useRef","initialValue","useMemo","current","useImperativeHandle","ref","createHandle","concat","factory","useCallback","useContext","context","provider","sub","props","useDebugValue","formatter","useErrorBoundary","cb","errState","componentDidCatch","flushAfterPaintEffects","afterPaintEffects","forEach","component","invokeCleanup","invokeEffect","hook","comp","oldArgs","newArgs","some","arg","f","prevRaf","oldBeforeDiff","oldBeforeRender","oldAfterDiff","diffed","oldCommit","oldBeforeUnmount","unmount","vnode","requestAnimationFrame","raf","done","HAS_RAF","cancelAnimationFrame","commitQueue","filter","async","load","AsyncComponent","Component","this","componentWillMount","mod","default","shouldComponentUpdate","render","h","prev","getPreviousSibling","inner","parent","__","children","__k","Array","isArray","end","indexOf","child","dom","__e","__v","me","nextSibling","__P","_parentDom","firstChild","localName","dangerouslySetInnerHTML","PENDING","preload","constructor","result","App","markdown","setMarkdown","path","payload","let","EMPTY","getCurrentUrl","url","customHistory","location","getCurrentLocation","pathname","search","route","replace","ROUTERS","canRoute","history","setUrl","routeTo","didRoute","subscribers","routeFromLink","node","match","handleLinkClick","ctrlKey","metaKey","altKey","shiftKey","button","currentTarget","prevent","stopImmediatePropagation","stopPropagation","preventDefault","delegateLinkHandler","String","nodeName","toUpperCase","hasAttribute","eventListenersInitialized","Router","super","addEventListener","static","onChange","const","getMatchingChildren","updating","forceUpdate","componentDidMount","unlisten","listen","componentWillUnmount","splice","componentWillUpdate","componentDidUpdate","invoke","prepareVNodeForRanking","sort","pathRankSort","map","matches","exec","newProps","assign","Boolean","active","previous","previousUrl","router","Link","onClick","Route","obj","removeNode","normalizedProps","arguments","defaultProps","createVNode","original","createRef","Fragment","getDomSibling","childIndex","sibling","updateParentDomPointers","base","enqueueRender","rerenderQueue","process","prevDebounce","debounceRendering","defer","queue","a","b","oldVNode","newDom","oldDom","parentDom","diff","ownerSVGElement","commitRoot","diffChildren","renderResult","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","j","childVNode","firstChildDom","refs","oldChildren","EMPTY_ARR","oldChildrenLength","EMPTY_OBJ","placeChild","applyRef","toChildArray","out","nextDom","sibDom","outer","insertBefore","setStyle","style","setProperty","IS_NON_DIMENSIONAL","test","oldValue","useCapture","nameLower","proxy","cssText","toLowerCase","_listeners","eventProxyCapture","eventProxy","removeEventListener","removeAttributeNS","setAttributeNS","removeAttribute","reorderChildren","newVNode","tmp","isNew","oldProps","oldState","snapshot","clearProcessingException","componentContext","newType","contextType","doRender","getDerivedStateFromProps","componentWillReceiveProps","getChildContext","getSnapshotBeforeUpdate","diffElementNodes","root","oldHtml","newHtml","nodeType","createTextNode","createElementNS","is","childNodes","attributes","innerHTML","hydrate","diffProps","checked","parentVNode","skipRemove","replaceNode","IS_HYDRATE","cloneElement","createContext","defaultValue","contextId","Consumer","contextValue","Provider","subs","ctx","_props","old","isValidElement","ctor","handled","wasHydrating","getDerivedStateFromError","update","Preact","interopDefault","normalizeURL","navigator","serviceWorker","register","__webpack_public_path__","require","getElementById","body","firstElementChild","app","preRenderData","inlineDataElement","querySelector","JSON","parse","decodeURI","CLI_DATA","currentURL","canHydrate"],"mappings":"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","file":"bundle.8259f.esm.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t0: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"2\":\"route-editor\",\"3\":\"route-post\"}[chunkId]||chunkId) + \".chunk.\" + {\"2\":\"f6351\",\"3\":\"fd471\"}[chunkId] + \".esm.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"\" + ({\"2\":\"route-editor\",\"3\":\"route-post\"}[chunkId]||chunkId) + \".chunk.\" + {\"2\":\"e8d99\",\"3\":\"31d6c\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\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\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/huge-link/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"mdyV\");\n","import { cloneElement, createElement, Component, toChildArray } from 'preact';\nimport { exec, prepareVNodeForRanking, assign, pathRankSort } from './util';\n\nlet customHistory = null;\n\nconst ROUTERS = [];\n\nconst subscribers = [];\n\nconst EMPTY = {};\n\nfunction setUrl(url, type='push') {\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t}\n\telse if (typeof history!=='undefined' && history[type+'State']) {\n\t\thistory[type+'State'](null, null, url);\n\t}\n}\n\n\nfunction getCurrentUrl() {\n\tlet url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t}\n\telse if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t}\n\telse {\n\t\turl = typeof location!=='undefined' ? location : EMPTY;\n\t}\n\treturn `${url.pathname || ''}${url.search || ''}`;\n}\n\n\n\nfunction route(url, replace=false) {\n\tif (typeof url!=='string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (let i=ROUTERS.length; i--; ) {\n\t\tif (ROUTERS[i].canRoute(url)) return true;\n\t}\n\treturn false;\n}\n\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tlet didRoute = false;\n\tfor (let i=0; i {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\n\nclass Router extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tshouldComponentUpdate(props) {\n\t\tif (props.static!==true) return true;\n\t\treturn props.url!==this.props.url || props.onChange!==this.props.onChange;\n\t}\n\n\t/** Check if the given URL can be matched against any children */\n\tcanRoute(url) {\n\t\tconst children = toChildArray(this.props.children);\n\t\treturn this.getMatchingChildren(children, url, false).length > 0;\n\t}\n\n\t/** Re-render children with a new URL to match against. */\n\trouteTo(url) {\n\t\tthis.setState({ url });\n\n\t\tconst didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) this.forceUpdate();\n\n\t\treturn didRoute;\n\t}\n\n\tcomponentWillMount() {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidMount() {\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen((location) => {\n\t\t\t\tthis.routeTo(`${location.pathname || ''}${location.search || ''}`);\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (typeof this.unlisten==='function') this.unlisten();\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t}\n\n\tcomponentWillUpdate() {\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updating = false;\n\t}\n\n\tgetMatchingChildren(children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( vnode => {\n\t\t\t\tlet matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tlet newProps = { url, matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t}\n\n\trender({ children, onChange }, { url }) {\n\t\tlet active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tlet current = active[0] || null;\n\n\t\tlet previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl,\n\t\t\t\t\tprevious,\n\t\t\t\t\tactive,\n\t\t\t\t\tcurrent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nconst Link = (props) => (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n);\n\nconst Route = props => createElement(props.component, props);\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };\nexport default Router;\n","import { h, Component } from 'preact';\n\nconst PENDING = {};\n\n// Given a VNode, finds its previous element sibling\nfunction getPreviousSibling(vnode, inner) {\n\t// in an element parent with no preceeding siblings means we're the first child\n\tif (typeof vnode.type === 'string') return null;\n\tconst parent = vnode.__;\n\tif (!parent) return;\n\tlet children = parent.__k;\n\tif (children) {\n\t\tif (!Array.isArray(children)) children = [children];\n\t\t// only search previous children\n\t\tlet end = children.indexOf(vnode);\n\t\tif (end === -1) end = children.length;\n\t\tfor (let i=end; i--; ) {\n\t\t\tconst child = children[i];\n\t\t\tconst dom = child && child.__e || getPreviousSibling(child, true);\n\t\t\tif (dom) return dom;\n\t\t}\n\t}\n\tif (!inner) return getPreviousSibling(parent);\n}\n\nexport default function async(load) {\n\tlet component;\n\n\tfunction AsyncComponent() {\n\t\tComponent.call(this);\n\n\t\tif (!component) {\n\t\t\tthis.componentWillMount = () => {\n\t\t\t\tload((mod) => {\n\t\t\t\t\tcomponent = (mod && mod.default) || mod;\n\t\t\t\t\tthis.setState({});\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = () => component != null;\n\t\t}\n\n\t\tthis.render = (props) => {\n\t\t\tif (component) {\n\t\t\t\treturn h(component, props);\n\t\t\t}\n\n\t\t\tconst prev = getPreviousSibling(this.__v);\n\t\t\tconst me = prev && prev.nextSibling || (this.__P || this._parentDom).firstChild;\n\n\t\t\treturn (\n\t\t\t\tme &&\n\t\t\t\th(me.localName, {\n\t\t\t\t\tdangerouslySetInnerHTML: PENDING,\n\t\t\t\t})\n\t\t\t);\n\t\t};\n\t}\n\n\tAsyncComponent.preload = load;\n\t(AsyncComponent.prototype = new Component()).constructor = AsyncComponent;\n\n\treturn AsyncComponent;\n}\n","\n\t\timport Async from \"../../../node_modules/@preact/async-loader/async.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tvar result = require(\"!!../../../node_modules/babel-loader/lib/index.js??ref--4!./index.js\");\n\t\t\t\ttypeof cb === 'function' && cb(result);\n\t\t\t}, \"route-editor\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../../node_modules/@preact/async-loader/async.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tvar result = require(\"!!../../../node_modules/babel-loader/lib/index.js??ref--4!./index.js\");\n\t\t\t\ttypeof cb === 'function' && cb(result);\n\t\t\t}, \"route-post\");\n\t\t}\n\n\t\texport default Async(load);\n\t","import {h} from 'preact'\nimport {useState} from 'preact/hooks'\nimport {Router} from 'preact-router'\n\nimport Editor from './routes/editor'\nimport Post from './routes/post'\n\nimport './style/typography.css'\nimport './style'\n\nconst App = () => {\n const [markdown, setMarkdown] = useState('')\n\n return (\n \n \n \n \n \n )\n}\n\nexport default App\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++options._vnodeId : original\n\t};\n\n\tif (options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((process._rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\nprocess._rerenderCount = 0;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../index').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. {reuse}{reuse}
) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (typeof childVNode == 'string' || typeof childVNode == 'number') {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._dom != null || childVNode._component != null) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tnull,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tnewDom = diff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\toldDom = placeChild(\n\t\t\t\tparentDom,\n\t\t\t\tchildVNode,\n\t\t\t\toldVNode,\n\t\t\t\toldChildren,\n\t\t\t\texcessDomChildren,\n\t\t\t\tnewDom,\n\t\t\t\toldDom\n\t\t\t);\n\n\t\t\t// Browsers will infer an option's `value` from `textContent` when\n\t\t\t// no value is present. This essentially bypasses our code to set it\n\t\t\t// later in `diff()`. It works fine in all browsers except for IE11\n\t\t\t// where it breaks setting `select.value`. There it will be always set\n\t\t\t// to an empty string. Re-applying an options value will fix that, so\n\t\t\t// there are probably some internal data structures that aren't\n\t\t\t// updated properly.\n\t\t\t//\n\t\t\t// To fix it we make sure to reset the inferred value, so that our own\n\t\t\t// value check in `diff()` won't be skipped.\n\t\t\tif (!isHydrating && newParentVNode.type == 'option') {\n\t\t\t\tparentDom.value = '';\n\t\t\t} else if (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove children that are not part of any vnode.\n\tif (excessDomChildren != null && typeof newParentVNode.type != 'function') {\n\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) unmount(oldChildren[i], oldChildren[i]);\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nexport function placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\texcessDomChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\texcessDomChildren == oldVNode ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t// The values only have the same type when `null`.\n\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j 1) {\n\t\t\t\t\treorderChildren(vnode, oldDom, parentDom);\n\t\t\t\t}\n\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tvnode,\n\t\t\t\t\tvnode,\n\t\t\t\t\tnewVNode._children,\n\t\t\t\t\tnull,\n\t\t\t\t\tvnode._dom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\n\t\t\t\tif (typeof newVNode.type == 'function') {\n\t\t\t\t\tnewVNode._nextDom = oldDom;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\treorderChildren(newVNode, oldDom, parentDom);\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the -element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value || (newVNode.type === 'progress' && !i))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.childNodes.length\n\t\t\t? EMPTY_ARR.slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { assign } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\tProvider(props, subs, ctx) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tsubs = [];\n\t\t\t\tctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function(_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(enqueueRender);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType = context);\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError,\n\t_vnodeId: 0\n};\n\nexport default options;\n","// import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tconst wasHydrating = vnode._hydrating;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\tvnode._hydrating = wasHydrating;\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nconst normalizeURL = url => (url[url.length - 1] === '/' ? url : url + '/');\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw-debug.js');\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(\n\t\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t// eslint-disable-next-line no-undef\n\tnavigator.serviceWorker.register(\n\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData =\n\t\t\t\tJSON.parse(decodeURI(inlineDataElement.innerHTML)).preRenderData ||\n\t\t\t\tpreRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst currentURL = preRenderData.url ? normalizeURL(preRenderData.url) : '';\n\t\tconst canHydrate =\n\t\t\tprocess.env.PRERENDER &&\n\t\t\tprocess.env.NODE_ENV === 'production' &&\n\t\t\thydrate &&\n\t\t\tcurrentURL === normalizeURL(location.pathname);\n\t\tconst doRender = canHydrate ? hydrate : render;\n\t\troot = doRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/docs/bundle.e0447.esm.js b/docs/bundle.e0447.esm.js
deleted file mode 100644
index 2cb955b..0000000
--- a/docs/bundle.e0447.esm.js
+++ /dev/null
@@ -1,2 +0,0 @@
-!function(t){function n(n){for(var e,r,o=n[0],u=n[1],_=0,l=[];_=e.__.length&&e.__.push({}),e.__[t]}function o(t){return x=1,i(g,t)}function i(t,n,e){var o=r(b++,2);return o.t=t,o.__c||(o.__=[e?e(n):g(void 0,n),function(t){var n=o.t(o.__[0],t);o.__[0]!==n&&(o.__=[n,o.__[1]],o.__c.setState({}))}],o.__c=k),o.__}function u(t,n){var e=r(b++,3);!w.options.__s&&m(e.__H,n)&&(e.__=t,e.__H=n,k.__H.__h.push(e))}function _(t,n){var e=r(b++,4);!w.options.__s&&m(e.__H,n)&&(e.__=t,e.__H=n,k.__h.push(e))}function l(t){return x=5,a((function(){return{current:t}}),[])}function c(t,n,e){x=6,_((function(){"function"==typeof t?t(n()):t&&(t.current=n())}),null==e?e:e.concat(t))}function a(t,n){var e=r(b++,7);return m(e.__H,n)&&(e.__=t(),e.__H=n,e.__h=t),e.__}function f(t,n){return x=8,a((function(){return t}),n)}function s(t){var n=k.context[t.__c],e=r(b++,9);return e.__c=t,n?(null==e.__&&(e.__=!0,n.sub(k)),n.props.value):t.__}function p(t,n){w.options.useDebugValue&&w.options.useDebugValue(n?n(t):t)}function h(t){var n=r(b++,10),e=o();return n.__=t,k.componentDidCatch||(k.componentDidCatch=function(t){n.__&&n.__(t),e[1](t)}),[e[0],function(){e[1](void 0)}]}function d(){A.forEach((function(t){if(t.__P)try{t.__H.__h.forEach(v),t.__H.__h.forEach(y),t.__H.__h=[]}catch(n){t.__H.__h=[],w.options.__e(n,t.__v)}})),A=[]}function v(t){var n=k;"function"==typeof t.__c&&t.__c(),k=n}function y(t){var n=k;t.__c=t.__(),k=n}function m(t,n){return!t||t.length!==n.length||n.some((function(n,e){return n!==t[e]}))}function g(t,n){return"function"==typeof n?n(t):n}e.d(n,"k",(function(){return o})),e.d(n,"i",(function(){return i})),e.d(n,"d",(function(){return u})),e.d(n,"g",(function(){return _})),e.d(n,"j",(function(){return l})),e.d(n,"f",(function(){return c})),e.d(n,"h",(function(){return a})),e.d(n,"a",(function(){return f})),e.d(n,"b",(function(){return s})),e.d(n,"c",(function(){return p})),e.d(n,"e",(function(){return h}));var b,k,C,w=e("hosL"),x=0,A=[],O=w.options.__b,E=w.options.__r,S=w.options.diffed,P=w.options.__c,j=w.options.unmount;w.options.__b=function(t){k=null,O&&O(t)},w.options.__r=function(t){E&&E(t),b=0;var n=(k=t.__c).__H;n&&(n.__h.forEach(v),n.__h.forEach(y),n.__h=[])},w.options.diffed=function(t){S&&S(t);var n=t.__c;n&&n.__H&&n.__H.__h.length&&(1!==A.push(n)&&C===w.options.requestAnimationFrame||((C=w.options.requestAnimationFrame)||function(t){var n,e=function(){clearTimeout(r),T&&cancelAnimationFrame(n),setTimeout(t)},r=setTimeout(e,100);T&&(n=requestAnimationFrame(e))})(d)),k=void 0},w.options.__c=function(t,n){n.some((function(t){try{t.__h.forEach(v),t.__h=t.__h.filter((function(t){return!t.__||y(t)}))}catch(e){n.some((function(t){t.__h&&(t.__h=[])})),n=[],w.options.__e(e,t.__v)}})),P&&P(t,n)},w.options.unmount=function(t){j&&j(t);var n=t.__c;if(n&&n.__H)try{n.__H.__.forEach(v)}catch(t){w.options.__e(t,n.__v)}};var T="function"==typeof requestAnimationFrame},QfWi:function(t,n,e){"use strict";function r(t){function n(){i.Component.call(this),e||(this.componentWillMount=()=>{t(t=>{e=t&&t.default||t,this.setState({})})},this.shouldComponentUpdate=()=>null!=e),this.render=t=>{if(e)return Object(i.h)(e,t);const n=function t(n,e){if("string"==typeof n.type)return null;const r=n.__;if(!r)return;let o=r.__k;if(o){Array.isArray(o)||(o=[o]);let e=o.indexOf(n);-1===e&&(e=o.length);for(let n=e;n--;){const e=o[n],r=e&&e.__e||t(e,!0);if(r)return r}}return e?void 0:t(r)}(this.__v),r=n&&n.nextSibling||(this.__P||this._parentDom).firstChild;return r&&Object(i.h)(r.localName,{dangerouslySetInnerHTML:l})}}let e;return n.preload=t,(n.prototype=new i.Component).constructor=n,n}function o(){return(o=Object.assign||function(t){for(var n=1;n{const[t,n]=Object(u.k)("");return Object(i.h)("main",null,Object(i.h)(_.Router,null,Object(i.h)(c,o({path:"/",markdown:t},{setMarkdown:n})),Object(i.h)(a,o({path:"/preview/",mode:"preview",payload:t},{setMarkdown:n})),Object(i.h)(a,o({path:"/p/:payload",mode:"post"},{setMarkdown:n}))))}},Y3FI:function(t,n,e){"use strict";function r(t,n){for(var e in n)t[e]=n[e];return t}function o(t,n,e){var r,o=/(?:\?([^#]*))?(#.*)?$/,i=t.match(o),u={};if(i&&i[1])for(var l=i[1].split("&"),c=0;cn.rank?-1:t.index-n.index}function u(t,n){return t.index=n,t.rank=function(t){return t.props.default?0:(n=t.props.path,_(n).map(l).join(""));var n}(t),t.props}function _(t){return t.replace(/(^\/+|\/+$)/g,"").split("/")}function l(t){return":"==t.charAt(0)?1+"*+?".indexOf(t.charAt(t.length-1))||4:5}function c(){var t;return""+((t=m&&m.location?m.location:m&&m.getCurrentLocation?m.getCurrentLocation():"undefined"!=typeof location?location:k).pathname||"")+(t.search||"")}function a(t,n){return void 0===n&&(n=!1),"string"!=typeof t&&t.url&&(n=t.replace,t=t.url),function(t){for(var n=g.length;n--;)if(g[n].canRoute(t))return!0;return!1}(t)&&function(t,n){void 0===n&&(n="push"),m&&m[n]?m[n](t):"undefined"!=typeof history&&history[n+"State"]&&history[n+"State"](null,null,t)}(t,n?"replace":"push"),f(t)}function f(t){for(var n=!1,e=0;e0},n.prototype.routeTo=function(t){this.setState({url:t});var n=this.canRoute(t);return this.updating||this.forceUpdate(),n},n.prototype.componentWillMount=function(){g.push(this),this.updating=!0},n.prototype.componentDidMount=function(){var t=this;m&&(this.unlisten=m.listen((function(n){t.routeTo(""+(n.pathname||"")+(n.search||""))}))),this.updating=!1},n.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),g.splice(g.indexOf(this),1)},n.prototype.componentWillUpdate=function(){this.updating=!0},n.prototype.componentDidUpdate=function(){this.updating=!1},n.prototype.getMatchingChildren=function(t,n,e){return t.filter(u).sort(i).map((function(t){var i=o(n,t.props.path,t.props);if(i){if(!1!==e){var u={url:n,matches:i};return r(u,i),delete u.ref,delete u.key,Object(v.cloneElement)(t,u)}return t}})).filter(Boolean)},n.prototype.render=function(t,n){var e=t.children,r=t.onChange,o=n.url,i=this.getMatchingChildren(Object(v.toChildArray)(e),o,!0),u=i[0]||null,_=this.previousUrl;return o!==_&&(this.previousUrl=o,"function"==typeof r&&r({router:this,url:o,previous:_,active:i,current:u})),u},n}(v.Component),x=function(t){return Object(v.createElement)("a",r({onClick:p},t))},A=function(t){return Object(v.createElement)(t.component,t)};w.subscribers=b,w.getCurrentUrl=c,w.route=a,w.Router=w,w.Route=A,w.Link=x,w.exec=o,n.default=w},hosL:function(t,n,e){"use strict";function r(t,n){for(var e in n)t[e]=n[e];return t}function o(t){var n=t.parentNode;n&&n.removeChild(t)}function i(t,n,e){var r,o,i,_=arguments,l={};for(i in n)"key"==i?r=n[i]:"ref"==i?o=n[i]:l[i]=n[i];if(arguments.length>3)for(e=[e],i=3;i1&&k(o,n,e),n=v(e,o,o,t.__k,null,o.__e,n),"function"==typeof t.type&&(t.__d=n)))}function C(t,n,e,o,i,u,_,a,f){var s,p,d,v,y,m,g,b,C,w,A,O=n.type;if(void 0!==n.constructor)return null;null!=e.__h&&(f=e.__h,a=n.__e=e.__e,n.__h=null,u=[a]),(s=L.__b)&&s(n);try{t:if("function"==typeof O){if(b=n.props,C=(s=O.contextType)&&o[s.__c],w=s?C?C.props.value:s.__:o,e.__c?g=(p=n.__c=e.__c).__=p.__E:("prototype"in O&&O.prototype.render?n.__c=p=new O(b,w):(n.__c=p=new c(b,w),p.constructor=O,p.render=E),C&&C.sub(p),p.props=b,p.state||(p.state={}),p.context=w,p.__n=o,d=p.__d=!0,p.__h=[]),null==p.__s&&(p.__s=p.state),null!=O.getDerivedStateFromProps&&(p.__s==p.state&&(p.__s=r({},p.__s)),r(p.__s,O.getDerivedStateFromProps(b,p.__s))),v=p.props,y=p.state,d)null==O.getDerivedStateFromProps&&null!=p.componentWillMount&&p.componentWillMount(),null!=p.componentDidMount&&p.__h.push(p.componentDidMount);else{if(null==O.getDerivedStateFromProps&&b!==v&&null!=p.componentWillReceiveProps&&p.componentWillReceiveProps(b,w),!p.__e&&null!=p.shouldComponentUpdate&&!1===p.shouldComponentUpdate(b,p.__s,w)||n.__v===e.__v){p.props=b,p.state=p.__s,n.__v!==e.__v&&(p.__d=!1),p.__v=n,n.__e=e.__e,n.__k=e.__k,p.__h.length&&_.push(p),k(n,a,t);break t}null!=p.componentWillUpdate&&p.componentWillUpdate(b,p.__s,w),null!=p.componentDidUpdate&&p.__h.push((function(){p.componentDidUpdate(v,y,m)}))}p.context=w,p.props=b,p.state=p.__s,(s=L.__r)&&s(n),p.__d=!1,p.__v=n,p.__P=t,s=p.render(p.props,p.state,p.context),p.state=p.__s,null!=p.getChildContext&&(o=r(r({},o),p.getChildContext())),d||null==p.getSnapshotBeforeUpdate||(m=p.getSnapshotBeforeUpdate(v,y)),A=null!=s&&s.type==l&&null==s.key?s.props.children:s,h(t,Array.isArray(A)?A:[A],n,e,o,i,u,_,a,f),p.base=n.__e,n.__h=null,p.__h.length&&_.push(p),g&&(p.__E=p.__=null),p.__e=!1}else null==u&&n.__v===e.__v?(n.__k=e.__k,n.__e=e.__e):n.__e=x(e.__e,n,e,o,i,u,_,f);(s=L.diffed)&&s(n)}catch(t){n.__v=null,(f||null!=u)&&(n.__e=a,n.__h=!!f,u[u.indexOf(a)]=null),L.__e(t,n,e)}return n.__e}function w(t,n){L.__c&&L.__c(n,t),t.some((function(n){try{t=n.__h,n.__h=[],t.some((function(t){t.call(n)}))}catch(t){L.__e(t,n.__v)}}))}function x(t,n,e,r,o,i,u,_){var l,c,a,f,s,p=e.props,d=n.props;if(o="svg"===n.type||o,null!=i)for(l=0;l3)for(e=[e],_=3;_t&&t.default?t.default:t,l=t=>"/"===t[t.length-1]?t:t+"/";if("serviceWorker"in navigator&&navigator.serviceWorker.register(e.p+"sw-esm.js"),"function"==typeof _(e("QfWi"))){let t=document.getElementById("preact_root")||document.body.firstElementChild;0,(()=>{let n=_(e("QfWi")),r={};const c=document.querySelector('[type="__PREACT_CLI_DATA__"]');c&&(r=JSON.parse(decodeURI(c.innerHTML)).preRenderData||r);const a={preRenderData:r},f=r.url?l(r.url):"",s=u&&f===l(location.pathname);t=(s?u:i)(o(n,{CLI_DATA:a}),document.body,t)})()}},pRls:function(){}});
-//# sourceMappingURL=bundle.e0447.esm.js.map
\ No newline at end of file
diff --git a/docs/bundle.e0447.esm.js.map b/docs/bundle.e0447.esm.js.map
deleted file mode 100644
index 6e1a408..0000000
--- a/docs/bundle.e0447.esm.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../src/index.js","webpack:///../node_modules/@preact/async-loader/async.js","webpack:///./routes/editor/index.js?5cf4","webpack:///./routes/post/index.js?01a5","webpack:///./index.js","webpack:///../src/util.js","webpack:///../src/create-element.js","webpack:///../src/component.js","webpack:///../src/diff/children.js","webpack:///../src/diff/props.js","webpack:///../src/diff/index.js","webpack:///../src/render.js","webpack:///../src/clone-element.js","webpack:///../src/create-context.js","webpack:///../src/constants.js","webpack:///../src/options.js","webpack:///../src/diff/catch-error.js","webpack:///../node_modules/preact-cli/lib/lib/entry.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","__webpack_require__","installedModules","exports","module","l","installedCssChunks","0","e","promises","Promise","resolve","reject","href","fullhref","p","existingLinkTags","document","getElementsByTagName","dataHref","tag","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","jsonpScriptSrc","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","head","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","s","getHookState","index","options","currentComponent","currentHook","hooks","useState","initialState","useReducer","invokeOrReturn","reducer","init","hookState","currentIndex","_reducer","nextValue","action","setState","useEffect","callback","args","state","argsChanged","useLayoutEffect","useRef","initialValue","useMemo","current","useImperativeHandle","ref","createHandle","concat","factory","useCallback","useContext","context","provider","sub","props","useDebugValue","formatter","useErrorBoundary","cb","errState","componentDidCatch","flushAfterPaintEffects","afterPaintEffects","forEach","component","invokeCleanup","invokeEffect","hook","comp","oldArgs","newArgs","some","arg","f","prevRaf","oldBeforeDiff","oldBeforeRender","oldAfterDiff","diffed","oldCommit","oldBeforeUnmount","unmount","vnode","requestAnimationFrame","raf","done","HAS_RAF","cancelAnimationFrame","commitQueue","filter","async","load","AsyncComponent","Component","this","componentWillMount","mod","default","shouldComponentUpdate","render","h","prev","getPreviousSibling","inner","parent","__","children","__k","Array","isArray","end","indexOf","child","dom","__e","__v","me","nextSibling","__P","_parentDom","firstChild","localName","dangerouslySetInnerHTML","PENDING","preload","constructor","result","App","markdown","setMarkdown","path","payload","let","EMPTY","getCurrentUrl","url","customHistory","location","getCurrentLocation","pathname","search","route","replace","ROUTERS","canRoute","history","setUrl","routeTo","didRoute","subscribers","routeFromLink","node","match","handleLinkClick","ctrlKey","metaKey","altKey","shiftKey","button","currentTarget","prevent","stopImmediatePropagation","stopPropagation","preventDefault","delegateLinkHandler","String","nodeName","toUpperCase","hasAttribute","eventListenersInitialized","Router","super","addEventListener","static","onChange","const","getMatchingChildren","updating","forceUpdate","componentDidMount","unlisten","listen","componentWillUnmount","splice","componentWillUpdate","componentDidUpdate","invoke","prepareVNodeForRanking","sort","pathRankSort","map","matches","exec","newProps","assign","Boolean","active","previous","previousUrl","router","Link","onClick","Route","obj","removeNode","normalizedProps","arguments","defaultProps","createVNode","original","createRef","Fragment","getDomSibling","childIndex","sibling","updateParentDomPointers","base","enqueueRender","rerenderQueue","process","prevDebounce","debounceRendering","defer","queue","a","b","oldVNode","newDom","oldDom","parentDom","diff","ownerSVGElement","commitRoot","diffChildren","renderResult","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","j","childVNode","firstChildDom","refs","oldChildren","EMPTY_ARR","oldChildrenLength","EMPTY_OBJ","placeChild","applyRef","toChildArray","out","nextDom","sibDom","outer","insertBefore","setStyle","style","setProperty","IS_NON_DIMENSIONAL","test","oldValue","useCapture","nameLower","proxy","cssText","toLowerCase","_listeners","eventProxyCapture","eventProxy","removeEventListener","removeAttributeNS","setAttributeNS","removeAttribute","reorderChildren","newVNode","tmp","isNew","oldProps","oldState","snapshot","clearProcessingException","componentContext","newType","contextType","doRender","getDerivedStateFromProps","componentWillReceiveProps","getChildContext","getSnapshotBeforeUpdate","diffElementNodes","root","oldHtml","newHtml","nodeType","createTextNode","createElementNS","is","childNodes","attributes","innerHTML","hydrate","diffProps","checked","parentVNode","skipRemove","replaceNode","IS_HYDRATE","cloneElement","createContext","defaultValue","contextId","Consumer","contextValue","Provider","subs","ctx","_props","old","isValidElement","ctor","handled","wasHydrating","getDerivedStateFromError","update","Preact","interopDefault","normalizeURL","navigator","serviceWorker","register","__webpack_public_path__","require","getElementById","body","firstElementChild","app","preRenderData","inlineDataElement","querySelector","JSON","parse","decodeURI","CLI_DATA","currentURL","canHydrate"],"mappings":"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","file":"bundle.e0447.esm.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t0: 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"2\":\"route-editor\",\"3\":\"route-post\"}[chunkId]||chunkId) + \".chunk.\" + {\"2\":\"f6351\",\"3\":\"fd471\"}[chunkId] + \".esm.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"2\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"\" + ({\"2\":\"route-editor\",\"3\":\"route-post\"}[chunkId]||chunkId) + \".chunk.\" + {\"2\":\"e8d99\",\"3\":\"31d6c\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\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\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/huge-link/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"mdyV\");\n","import { cloneElement, createElement, Component, toChildArray } from 'preact';\nimport { exec, prepareVNodeForRanking, assign, pathRankSort } from './util';\n\nlet customHistory = null;\n\nconst ROUTERS = [];\n\nconst subscribers = [];\n\nconst EMPTY = {};\n\nfunction setUrl(url, type='push') {\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t}\n\telse if (typeof history!=='undefined' && history[type+'State']) {\n\t\thistory[type+'State'](null, null, url);\n\t}\n}\n\n\nfunction getCurrentUrl() {\n\tlet url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t}\n\telse if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t}\n\telse {\n\t\turl = typeof location!=='undefined' ? location : EMPTY;\n\t}\n\treturn `${url.pathname || ''}${url.search || ''}`;\n}\n\n\n\nfunction route(url, replace=false) {\n\tif (typeof url!=='string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (let i=ROUTERS.length; i--; ) {\n\t\tif (ROUTERS[i].canRoute(url)) return true;\n\t}\n\treturn false;\n}\n\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tlet didRoute = false;\n\tfor (let i=0; i {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\n\nclass Router extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tshouldComponentUpdate(props) {\n\t\tif (props.static!==true) return true;\n\t\treturn props.url!==this.props.url || props.onChange!==this.props.onChange;\n\t}\n\n\t/** Check if the given URL can be matched against any children */\n\tcanRoute(url) {\n\t\tconst children = toChildArray(this.props.children);\n\t\treturn this.getMatchingChildren(children, url, false).length > 0;\n\t}\n\n\t/** Re-render children with a new URL to match against. */\n\trouteTo(url) {\n\t\tthis.setState({ url });\n\n\t\tconst didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) this.forceUpdate();\n\n\t\treturn didRoute;\n\t}\n\n\tcomponentWillMount() {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidMount() {\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen((location) => {\n\t\t\t\tthis.routeTo(`${location.pathname || ''}${location.search || ''}`);\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (typeof this.unlisten==='function') this.unlisten();\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t}\n\n\tcomponentWillUpdate() {\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updating = false;\n\t}\n\n\tgetMatchingChildren(children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( vnode => {\n\t\t\t\tlet matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tlet newProps = { url, matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t}\n\n\trender({ children, onChange }, { url }) {\n\t\tlet active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tlet current = active[0] || null;\n\n\t\tlet previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl,\n\t\t\t\t\tprevious,\n\t\t\t\t\tactive,\n\t\t\t\t\tcurrent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nconst Link = (props) => (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n);\n\nconst Route = props => createElement(props.component, props);\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };\nexport default Router;\n","import { h, Component } from 'preact';\n\nconst PENDING = {};\n\n// Given a VNode, finds its previous element sibling\nfunction getPreviousSibling(vnode, inner) {\n\t// in an element parent with no preceeding siblings means we're the first child\n\tif (typeof vnode.type === 'string') return null;\n\tconst parent = vnode.__;\n\tif (!parent) return;\n\tlet children = parent.__k;\n\tif (children) {\n\t\tif (!Array.isArray(children)) children = [children];\n\t\t// only search previous children\n\t\tlet end = children.indexOf(vnode);\n\t\tif (end === -1) end = children.length;\n\t\tfor (let i=end; i--; ) {\n\t\t\tconst child = children[i];\n\t\t\tconst dom = child && child.__e || getPreviousSibling(child, true);\n\t\t\tif (dom) return dom;\n\t\t}\n\t}\n\tif (!inner) return getPreviousSibling(parent);\n}\n\nexport default function async(load) {\n\tlet component;\n\n\tfunction AsyncComponent() {\n\t\tComponent.call(this);\n\n\t\tif (!component) {\n\t\t\tthis.componentWillMount = () => {\n\t\t\t\tload((mod) => {\n\t\t\t\t\tcomponent = (mod && mod.default) || mod;\n\t\t\t\t\tthis.setState({});\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tthis.shouldComponentUpdate = () => component != null;\n\t\t}\n\n\t\tthis.render = (props) => {\n\t\t\tif (component) {\n\t\t\t\treturn h(component, props);\n\t\t\t}\n\n\t\t\tconst prev = getPreviousSibling(this.__v);\n\t\t\tconst me = prev && prev.nextSibling || (this.__P || this._parentDom).firstChild;\n\n\t\t\treturn (\n\t\t\t\tme &&\n\t\t\t\th(me.localName, {\n\t\t\t\t\tdangerouslySetInnerHTML: PENDING,\n\t\t\t\t})\n\t\t\t);\n\t\t};\n\t}\n\n\tAsyncComponent.preload = load;\n\t(AsyncComponent.prototype = new Component()).constructor = AsyncComponent;\n\n\treturn AsyncComponent;\n}\n","\n\t\timport Async from \"../../../node_modules/@preact/async-loader/async.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tvar result = require(\"!!../../../node_modules/babel-loader/lib/index.js??ref--4!./index.js\");\n\t\t\t\ttypeof cb === 'function' && cb(result);\n\t\t\t}, \"route-editor\");\n\t\t}\n\n\t\texport default Async(load);\n\t","\n\t\timport Async from \"../../../node_modules/@preact/async-loader/async.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tvar result = require(\"!!../../../node_modules/babel-loader/lib/index.js??ref--4!./index.js\");\n\t\t\t\ttypeof cb === 'function' && cb(result);\n\t\t\t}, \"route-post\");\n\t\t}\n\n\t\texport default Async(load);\n\t","import {h} from 'preact'\nimport {useState} from 'preact/hooks'\nimport {Router} from 'preact-router'\n\nimport Editor from './routes/editor'\nimport Post from './routes/post'\n\nimport './style/typography.css'\nimport './style'\n\nconst App = () => {\n const [markdown, setMarkdown] = useState('')\n\n return (\n \n \n \n \n \n )\n}\n\nexport default App\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++options._vnodeId : original\n\t};\n\n\tif (options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((process._rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\nprocess._rerenderCount = 0;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../index').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. {reuse}{reuse}
) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (typeof childVNode == 'string' || typeof childVNode == 'number') {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._dom != null || childVNode._component != null) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tnull,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tnewDom = diff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\toldDom = placeChild(\n\t\t\t\tparentDom,\n\t\t\t\tchildVNode,\n\t\t\t\toldVNode,\n\t\t\t\toldChildren,\n\t\t\t\texcessDomChildren,\n\t\t\t\tnewDom,\n\t\t\t\toldDom\n\t\t\t);\n\n\t\t\t// Browsers will infer an option's `value` from `textContent` when\n\t\t\t// no value is present. This essentially bypasses our code to set it\n\t\t\t// later in `diff()`. It works fine in all browsers except for IE11\n\t\t\t// where it breaks setting `select.value`. There it will be always set\n\t\t\t// to an empty string. Re-applying an options value will fix that, so\n\t\t\t// there are probably some internal data structures that aren't\n\t\t\t// updated properly.\n\t\t\t//\n\t\t\t// To fix it we make sure to reset the inferred value, so that our own\n\t\t\t// value check in `diff()` won't be skipped.\n\t\t\tif (!isHydrating && newParentVNode.type == 'option') {\n\t\t\t\tparentDom.value = '';\n\t\t\t} else if (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove children that are not part of any vnode.\n\tif (excessDomChildren != null && typeof newParentVNode.type != 'function') {\n\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) unmount(oldChildren[i], oldChildren[i]);\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nexport function placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\texcessDomChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\texcessDomChildren == oldVNode ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t// The values only have the same type when `null`.\n\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j 1) {\n\t\t\t\t\treorderChildren(vnode, oldDom, parentDom);\n\t\t\t\t}\n\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tvnode,\n\t\t\t\t\tvnode,\n\t\t\t\t\tnewVNode._children,\n\t\t\t\t\tnull,\n\t\t\t\t\tvnode._dom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\n\t\t\t\tif (typeof newVNode.type == 'function') {\n\t\t\t\t\tnewVNode._nextDom = oldDom;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\treorderChildren(newVNode, oldDom, parentDom);\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the -element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value || (newVNode.type === 'progress' && !i))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.childNodes.length\n\t\t\t? EMPTY_ARR.slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { assign } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\tProvider(props, subs, ctx) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tsubs = [];\n\t\t\t\tctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function(_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(enqueueRender);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType = context);\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError,\n\t_vnodeId: 0\n};\n\nexport default options;\n","// import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tconst wasHydrating = vnode._hydrating;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\tvnode._hydrating = wasHydrating;\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nconst normalizeURL = url => (url[url.length - 1] === '/' ? url : url + '/');\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw-debug.js');\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(\n\t\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t// eslint-disable-next-line no-undef\n\tnavigator.serviceWorker.register(\n\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData =\n\t\t\t\tJSON.parse(decodeURI(inlineDataElement.innerHTML)).preRenderData ||\n\t\t\t\tpreRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst currentURL = preRenderData.url ? normalizeURL(preRenderData.url) : '';\n\t\tconst canHydrate =\n\t\t\tprocess.env.PRERENDER &&\n\t\t\tprocess.env.NODE_ENV === 'production' &&\n\t\t\thydrate &&\n\t\t\tcurrentURL === normalizeURL(location.pathname);\n\t\tconst doRender = canHydrate ? hydrate : render;\n\t\troot = doRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
index 10ea7ff..e0dd62a 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -1 +1 @@
-huge-link Huge link A minimalist serverless publishing tool that allows you to create markdown posts and push them to the Web by sharing the link.
Preview
\ No newline at end of file
+huge-link
\ No newline at end of file
diff --git a/docs/push-manifest.json b/docs/push-manifest.json
index 12e2092..2be6c90 100644
--- a/docs/push-manifest.json
+++ b/docs/push-manifest.json
@@ -1 +1 @@
-{"/":{"bundle.47ed9.css":{"type":"style","weight":1},"bundle.e0447.esm.js":{"type":"script","weight":1}},"/editor":{"bundle.47ed9.css":{"type":"style","weight":1},"bundle.e0447.esm.js":{"type":"script","weight":1},"route-editor.chunk.f6351.esm.js":{"type":"script","weight":0.9},"route-editor.chunk.e8d99.css":{"type":"style","weight":0.9}},"/post":{"bundle.47ed9.css":{"type":"style","weight":1},"bundle.e0447.esm.js":{"type":"script","weight":1},"route-post.chunk.fd471.esm.js":{"type":"script","weight":0.9}}}
\ No newline at end of file
+{"/":{"bundle.47ed9.css":{"type":"style","weight":1},"bundle.8259f.esm.js":{"type":"script","weight":1}},"/editor":{"bundle.47ed9.css":{"type":"style","weight":1},"bundle.8259f.esm.js":{"type":"script","weight":1},"route-editor.chunk.f6351.esm.js":{"type":"script","weight":0.9},"route-editor.chunk.e8d99.css":{"type":"style","weight":0.9}},"/post":{"bundle.47ed9.css":{"type":"style","weight":1},"bundle.8259f.esm.js":{"type":"script","weight":1},"route-post.chunk.fd471.esm.js":{"type":"script","weight":0.9}}}
\ No newline at end of file
diff --git a/docs/ssr-build/ssr-bundle.js b/docs/ssr-build/ssr-bundle.js
index d1359a2..d31652f 100644
--- a/docs/ssr-build/ssr-bundle.js
+++ b/docs/ssr-build/ssr-bundle.js
@@ -13,5 +13,5 @@ module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;va
* @author Feross Aboukhadijeh
* @license MIT
*/
-e.exports=function(e){return null!=e&&(n(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&n(e.slice(0,0))}(e)||!!e._isBuffer)}},Ek7W:function(e,t,n){"use strict";var r=n("m5ak");e.exports=function(e){return r({},e)}},EsqR:function(e,t,n){"use strict";var r=n("pMvH"),i=n("7sXb"),o={name:"blockQuote",tokenize:function(e,t,n){var i=this;return function(t){if(62===t)return i.containerState.open||(e.enter("blockQuote",{_container:!0}),i.containerState.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(t),e.exit("blockQuoteMarker"),o;return n(t)};function o(n){return r(n)?(e.enter("blockQuotePrefixWhitespace"),e.consume(n),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(n))}},continuation:{tokenize:function(e,t,n){return i(e,e.attempt(o,t,n),"linePrefix",this.parser.constructs.disable.null.indexOf("codeIndented")>-1?void 0:4)}},exit:function(e){e.exit("blockQuote")}};e.exports=o},FsDf:function(e,t,n){"use strict";e.exports=function(e,t){var n,r=t.start._index,i=t.start._bufferIndex,o=t.end._index,u=t.end._bufferIndex;return r===o?n=[e[r].slice(i,u)]:(n=e.slice(r,o),i>-1&&(n[0]=n[0].slice(i)),u>0&&n.push(e[o].slice(0,u))),n}},GFNa:function(e,t,n){},GZPr:function(e,t,n){"use strict";var r=["http","https","mailto","tel"];e.exports=function(e){var t=(e||"").trim(),n=t.charAt(0);if("#"===n||"/"===n)return t;var i=t.indexOf(":");if(-1===i)return t;for(var o=r.length,u=-1;++uu||-1!==(u=t.indexOf("#"))&&i>u?t:"javascript:void(0)"}},Gthe:function(e,t,n){"use strict";var r=n("OF0j")(/[#-'*+\--9=?A-Z^-~]/);e.exports=r},H5je:function(e,t,n){"use strict";var r=n("hKxf");e.exports=function(e,t){var n=e[e.length-1];return n&&n[1].type===t?r(n[2].sliceStream(n[1])):0}},HteQ:function(e,t){e.exports=require("preact")},INXP:function(e,t,n){"use strict";e.exports=/[!-\/:-@\[-`\{-~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/},Iacx:function(e,t,n){"use strict";var r=[].slice;e.exports=function(e,t){var n;return function(){var t,u=r.call(arguments,0),c=e.length>u.length;c&&u.push(i);try{t=e.apply(null,u)}catch(e){if(c&&n)throw e;return i(e)}c||(t&&"function"==typeof t.then?t.then(o,i):t instanceof Error?i(t):o(t))};function i(){n||(n=!0,t.apply(null,arguments))}function o(e){i(null,e)}}},JdhB:function(e,t,n){"use strict";var r=n("4kIE"),i=n("pMvH"),o=n("7sXb"),u={name:"thematicBreak",tokenize:function(e,t,n){var u,c=0;return function(t){return e.enter("thematicBreak"),u=t,a(t)};function a(l){return l===u?(e.enter("thematicBreakSequence"),s(l)):i(l)?o(e,a,"whitespace")(l):c<3||null!==l&&!r(l)?n(l):(e.exit("thematicBreak"),t(l))}function s(t){return t===u?(e.consume(t),c++,s):(e.exit("thematicBreakSequence"),a(t))}}};e.exports=u},K4HH:function(e,t,n){"use strict";var r=n("YT9o"),i=n("4kIE"),o=n("pMvH"),u=n("7sXb"),c=n("mQVw"),a={name:"headingAtx",tokenize:function(e,t,n){var r=this,a=0;return function(t){return e.enter("atxHeading"),e.enter("atxHeadingSequence"),s(t)};function s(i){return 35===i&&a++<6?(e.consume(i),s):null===i||c(i)?(e.exit("atxHeadingSequence"),r.interrupt?t(i):l(i)):n(i)}function l(n){return 35===n?(e.enter("atxHeadingSequence"),f(n)):null===n||i(n)?(e.exit("atxHeading"),t(n)):o(n)?u(e,l,"whitespace")(n):(e.enter("atxHeadingText"),p(n))}function f(t){return 35===t?(e.consume(t),f):(e.exit("atxHeadingSequence"),l(t))}function p(t){return null===t||35===t||c(t)?(e.exit("atxHeadingText"),l(t)):(e.consume(t),p)}},resolve:function(e,t){var n,i,o=e.length-2,u=3;"whitespace"===e[u][1].type&&(u+=2);o-2>u&&"whitespace"===e[o][1].type&&(o-=2);"atxHeadingSequence"===e[o][1].type&&(u===o-1||o-4>u&&"whitespace"===e[o-2][1].type)&&(o-=u+1===o?2:4);o>u&&(n={type:"atxHeadingText",start:e[u][1].start,end:e[o][1].end},i={type:"chunkText",start:e[u][1].start,end:e[o][1].end,contentType:"text"},r(e,u,o-u+1,[["enter",n,t],["enter",i,t],["exit",i,t],["exit",n,t]]));return e}};e.exports=a},KSUl:function(e,t,n){"use strict";var r=[].splice;e.exports=r},Kio5:function(e,t,n){"use strict";var r=n("OF0j")(/\s/);e.exports=r},LO0j:function(e,t,n){"use strict";var r=n("1hwd"),i=n("w6Nv"),o=n("yAYQ"),u=n("W0B4"),c=n("unVz"),a=n("gxcY"),s=n("N//3"),l=n("XmUT"),f=n("7kD2"),p=n("26+u"),d=n("GZPr"),h=n("3d/4"),m=n("8UgC"),g=Object.keys(h),v=function(e){var t=e.source||e.children||"";if(e.allowedTypes&&e.disallowedTypes)throw new Error("Only one of `allowedTypes` and `disallowedTypes` should be defined");var n=r(h,e.renderers),u=i().use(o).use(e.plugins||[]),d=u.runSync(u.parse(t)),v=r(e,{renderers:n,definitions:p(d)});return function(e){var t=[f,c()],n=e.disallowedTypes;e.allowedTypes&&(n=g.filter((function(t){return"root"!==t&&-1===e.allowedTypes.indexOf(t)})));var r=e.unwrapDisallowed?"unwrap":"remove";n&&n.length>0&&t.push(s.ofType(n,r));e.allowNode&&t.push(s.ifNotMatch(e.allowNode,r));var i=(e.allowDangerousHtml||!1===e.escapeHtml)&&!e.skipHtml,o=(e.astPlugins||[]).some((function(e){return e.identity===m.HtmlParser}));i&&!o&&t.push(a);e.astPlugins&&(t=t.concat(e.astPlugins));return t.push(l),t}(e).forEach((function(e){d=e(d,v)})),d};v.defaultProps={transformLinkUri:d},v.propTypes={className:u.string,source:u.string,children:u.string,sourcePos:u.bool,rawSourcePos:u.bool,escapeHtml:u.bool,allowDangerousHtml:u.bool,skipHtml:u.bool,allowNode:u.func,allowedTypes:u.arrayOf(u.oneOf(g)),disallowedTypes:u.arrayOf(u.oneOf(g)),transformLinkUri:u.oneOfType([u.func,u.bool]),linkTarget:u.oneOfType([u.func,u.string]),transformImageUri:u.func,astPlugins:u.arrayOf(u.func),unwrapDisallowed:u.bool,renderers:u.object,plugins:u.array},v.types=g,v.renderers=h,v.uriTransformer=d,e.exports=v},LzXL:function(e,t,n){"use strict";e.exports=process},"N//3":function(e,t,n){"use strict";var r=n("BN5T"),i=[].splice;function o(e,t){return function(e){return r(e,n),e};function n(n,r,o){if(o&&!e(n,r,o)){var u=[r,1];return"unwrap"===t&&n.children&&(u=u.concat(n.children)),i.apply(o.children,u),r}}}t.ofType=function(e,t){return o((function(t,n,r){return!e.includes(t.type)}),t)},t.ifNotMatch=o},NFok:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("VNaL"),i=n("w+ik"),o=n("UMwc"),u=n("EsqR"),c=n("lD/g"),a=n("0+f6"),s=n("sy7/"),l=n("xyCV"),f=n("Bdgx"),p=n("kSGr"),d=n("qWgT"),h=n("K4HH"),m=n("oAca"),g=n("oarT"),v=n("tezt"),y=n("zTh2"),b=n("XFvC"),x=n("gC7f"),k=n("JdhB"),_=n("Z6Dk"),w=n("zN7H"),E={42:_,43:_,45:_,48:_,49:_,50:_,51:_,52:_,53:_,54:_,55:_,56:_,57:_,62:u},S={91:p},A={"-2":l,"-1":l,32:l},C={35:h,42:k,45:[w,k],60:m,61:w,95:k,96:s,126:s},q={38:a,92:c},T={"-5":x,"-4":x,"-3":x,33:y,38:a,42:i,60:[o,g],91:b,92:[d,c],93:v,95:i,96:f},O={null:[i,r.resolver]};t.contentInitial=S,t.disable={null:[]},t.document=E,t.flow=C,t.flowInitial=A,t.insideSpan=O,t.string=q,t.text=T},NS33:function(e,t,n){"use strict";var r=n("E02R");function i(){}function o(){}o.resetWarningCache=i,e.exports=function(){function e(e,t,n,i,o,u){if(u!==r){var c=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");throw c.name="Invariant Violation",c}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:i};return n.PropTypes=n,n}},OF0j:function(e,t,n){"use strict";var r=n("nppI");e.exports=function(e){return function(t){return e.test(r(t))}}},Q4YM:function(e,t,n){"use strict";function r(e){return e&&(e.value||e.alt||e.title||"children"in e&&i(e.children)||"length"in e&&i(e))||""}function i(e){for(var t=[],n=-1;++n=n.__.length&&n.__.push({}),n.__[e]}function m(e){return c=1,g(F,e)}function g(e,t,n){var o=h(r++,2);return o.t=e,o.__c||(o.__=[n?n(t):F(void 0,t),function(e){var t=o.t(o.__[0],e);o.__[0]!==t&&(o.__=[t,o.__[1]],o.__c.setState({}))}],o.__c=i),o.__}function v(e,t){var n=h(r++,3);!u.options.__s&&O(n.__H,t)&&(n.__=e,n.__H=t,i.__H.__h.push(n))}function y(e,t){var n=h(r++,4);!u.options.__s&&O(n.__H,t)&&(n.__=e,n.__H=t,i.__h.push(n))}function b(e){return c=5,k((function(){return{current:e}}),[])}function x(e,t,n){c=6,y((function(){"function"==typeof e?e(t()):e&&(e.current=t())}),null==n?n:n.concat(e))}function k(e,t){var n=h(r++,7);return O(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function _(e,t){return c=8,k((function(){return e}),t)}function w(e){var t=i.context[e.__c],n=h(r++,9);return n.__c=e,t?(null==n.__&&(n.__=!0,t.sub(i)),t.props.value):e.__}function E(e,t){u.options.useDebugValue&&u.options.useDebugValue(t?t(e):e)}function S(e){var t=h(r++,10),n=m();return t.__=e,i.componentDidCatch||(i.componentDidCatch=function(e){t.__&&t.__(e),n[1](e)}),[n[0],function(){n[1](void 0)}]}function A(){a.forEach((function(e){if(e.__P)try{e.__H.__h.forEach(q),e.__H.__h.forEach(T),e.__H.__h=[]}catch(t){e.__H.__h=[],u.options.__e(t,e.__v)}})),a=[]}u.options.__b=function(e){i=null,s&&s(e)},u.options.__r=function(e){l&&l(e),r=0;var t=(i=e.__c).__H;t&&(t.__h.forEach(q),t.__h.forEach(T),t.__h=[])},u.options.diffed=function(e){f&&f(e);var t=e.__c;t&&t.__H&&t.__H.__h.length&&(1!==a.push(t)&&o===u.options.requestAnimationFrame||((o=u.options.requestAnimationFrame)||function(e){var t,n=function(){clearTimeout(r),C&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,100);C&&(t=requestAnimationFrame(n))})(A)),i=void 0},u.options.__c=function(e,t){t.some((function(e){try{e.__h.forEach(q),e.__h=e.__h.filter((function(e){return!e.__||T(e)}))}catch(n){t.some((function(e){e.__h&&(e.__h=[])})),t=[],u.options.__e(n,e.__v)}})),p&&p(e,t)},u.options.unmount=function(e){d&&d(e);var t=e.__c;if(t&&t.__H)try{t.__H.__.forEach(q)}catch(e){u.options.__e(e,t.__v)}};var C="function"==typeof requestAnimationFrame;function q(e){var t=i;"function"==typeof e.__c&&e.__c(),i=t}function T(e){var t=i;e.__c=e.__(),i=t}function O(e,t){return!e||e.length!==t.length||t.some((function(t,n){return t!==e[n]}))}function F(e,t){return"function"==typeof t?t(e):t}},QfWi:function(e,t,n){"use strict";n.r(t);var r=n("HteQ"),i=n("QRet"),o=n("Y3FI"),u=n("ox/y"),c=n("tP7B"),a=n.n(c),s=function(e){var t=e.markdown,n=e.setMarkdown;return Object(r.h)("section",null,Object(r.h)("h1",null,"Huge link"),Object(r.h)("p",null,"A minimalist serverless publishing tool that allows you to create markdown posts and push them to the Web by sharing the link."),Object(r.h)("textarea",{class:a.a.textarea,placeholder:"Write a post using markdown and click Preview",onInput:function(e){var t=e.target;return n(t.value)}},t),Object(r.h)("nav",null,Object(r.h)(u.Link,{href:"/preview"},"Preview")))},l=n("LO0j"),f=n.n(l),p=n("D+jO"),d=function(e){return null},h=function(e){return e},m=function(e){return Object(r.h)("header",null,Object(r.h)("nav",null,Object(r.h)("ul",null,Object(r.h)("li",null,Object(r.h)(u.Link,{href:"/"},"Edit")),Object(r.h)("li",null,Object(r.h)(u.Link,{href:"/p/"+e},"Publish")))))},g=function(e){var t=e.mode,n=e.payload,i=e.setMarkdown,o={preview:[m,h,p.compressToEncodedURIComponent],post:[d,p.decompressFromEncodedURIComponent,h]}[t],c=o[0],a=o[1],s=o[2],l=a(n),g=s(n);return i(l),Object(r.h)("section",null,c(g),Object(r.h)("article",null,Object(r.h)(f.a,null,l)),Object(r.h)(u.Link,{href:"/"},"Edit post"))};n("pRls"),n("GFNa");function v(){return(v=Object.assign||function(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=t.renderers[e.type];e.position||(e.position={start:{line:null,column:null,offset:null},end:{line:null,column:null,offset:null}});var s=e.position.start,l=[e.type,s.line,s.column,i].join("-");if(!o.isValidElementType(a))throw new Error("Renderer for type `".concat(e.type,"` not defined or is not renderable"));var f=c(e,l,t,a,n,i);return r.createElement(a,f,f.children||p()||void 0);function p(){return e.children&&e.children.map((function(n,r){return u(n,t,{node:e,props:f},r)}))}}function c(e,t,n,o,c,l){var f,p={key:t},d="string"==typeof o||o===r.Fragment;n.sourcePos&&e.position&&(p["data-sourcepos"]=[(f=e.position).start.line,":",f.start.column,"-",f.end.line,":",f.end.column].map(String).join("")),n.rawSourcePos&&!d&&(p.sourcePosition=e.position),n.includeNodeIndex&&c.node&&c.node.children&&!d&&(p.index=c.node.children.indexOf(e),p.parentChildCount=c.node.children.length);var h=null!==e.identifier&&void 0!==e.identifier?n.definitions[e.identifier.toUpperCase()]||{}:null;switch(e.type){case"root":a(p,{className:n.className});break;case"text":p.nodeKey=t,p.children=e.value;break;case"heading":p.level=e.depth;break;case"list":p.start=e.start,p.ordered=e.ordered,p.spread=e.spread,p.depth=e.depth;break;case"listItem":p.checked=e.checked,p.spread=e.spread,p.ordered=e.ordered,p.index=e.index,p.children=function(e,t){return(t&&t.node?function(e){var t=e.children,n=e.spread,r=-1;for(;!n&&++r1:t}e.exports=u},Y3FI:function(e,t,n){"use strict";n.r(t),n.d(t,"subscribers",(function(){return d})),n.d(t,"getCurrentUrl",(function(){return m})),n.d(t,"route",(function(){return g})),n.d(t,"Router",(function(){return w})),n.d(t,"Route",(function(){return S})),n.d(t,"Link",(function(){return E})),n.d(t,"exec",(function(){return u}));var r=n("HteQ"),i={};function o(e,t){for(var n in t)e[n]=t[n];return e}function u(e,t,n){var r,o=/(?:\?([^#]*))?(#.*)?$/,u=e.match(o),c={};if(u&&u[1])for(var a=u[1].split("&"),l=0;lt.rank?-1:e.index-t.index}function a(e,t){return e.index=t,e.rank=function(e){return e.props.default?0:(t=e.props.path,s(t).map(l).join(""));var t}(e),e.props}function s(e){return e.replace(/(^\/+|\/+$)/g,"").split("/")}function l(e){return":"==e.charAt(0)?1+"*+?".indexOf(e.charAt(e.length-1))||4:5}var f=null,p=[],d=[],h={};function m(){var e;return""+((e=f&&f.location?f.location:f&&f.getCurrentLocation?f.getCurrentLocation():"undefined"!=typeof location?location:h).pathname||"")+(e.search||"")}function g(e,t){return void 0===t&&(t=!1),"string"!=typeof e&&e.url&&(t=e.replace,e=e.url),function(e){for(var t=p.length;t--;)if(p[t].canRoute(e))return!0;return!1}(e)&&function(e,t){void 0===t&&(t="push"),f&&f[t]?f[t](e):"undefined"!=typeof history&&history[t+"State"]&&history[t+"State"](null,null,e)}(e,t?"replace":"push"),v(e)}function v(e){for(var t=!1,n=0;n0},t.prototype.routeTo=function(e){this.setState({url:e});var t=this.canRoute(e);return this.updating||this.forceUpdate(),t},t.prototype.componentWillMount=function(){p.push(this),this.updating=!0},t.prototype.componentDidMount=function(){var e=this;f&&(this.unlisten=f.listen((function(t){e.routeTo(""+(t.pathname||"")+(t.search||""))}))),this.updating=!1},t.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),p.splice(p.indexOf(this),1)},t.prototype.componentWillUpdate=function(){this.updating=!0},t.prototype.componentDidUpdate=function(){this.updating=!1},t.prototype.getMatchingChildren=function(e,t,n){return e.filter(a).sort(c).map((function(e){var i=u(t,e.props.path,e.props);if(i){if(!1!==n){var c={url:t,matches:i};return o(c,i),delete c.ref,delete c.key,Object(r.cloneElement)(e,c)}return e}})).filter(Boolean)},t.prototype.render=function(e,t){var n=e.children,i=e.onChange,o=t.url,u=this.getMatchingChildren(Object(r.toChildArray)(n),o,!0),c=u[0]||null,a=this.previousUrl;return o!==a&&(this.previousUrl=o,"function"==typeof i&&i({router:this,url:o,previous:a,active:u,current:c})),c},t}(r.Component),E=function(e){return Object(r.createElement)("a",o({onClick:b},e))},S=function(e){return Object(r.createElement)(e.component,e)};w.subscribers=d,w.getCurrentUrl=m,w.route=g,w.Router=w,w.Route=S,w.Link=E,w.exec=u,t.default=w},YT9o:function(e,t,n){"use strict";var r=n("KSUl");e.exports=function(e,t,n,i){var o,u=e.length,c=0;if(t=t<0?-t>u?0:u+t:t>u?u:t,n=n>0?n:0,i.length<1e4)(o=Array.from(i)).unshift(t,n),r.apply(e,o);else for(n&&r.apply(e,[t,n]);c-1?void 0:4)(r)}}},exit:function(e){e.exit(this.containerState.type)}},f={tokenize:function(e,t,n){var o=this;return i(e,(function(e){return r(e)||!c(o.events,"listItemPrefixWhitespace")?n(e):t(e)}),"listItemPrefixWhitespace",o.parser.constructs.disable.null.indexOf("codeIndented")>-1?void 0:5)},partial:!0},p={tokenize:function(e,t,n){var r=this;return i(e,(function(e){return c(r.events,"listItemIndent")===r.containerState.size?t(e):n(e)}),"listItemIndent",r.containerState.size+1)},partial:!0};e.exports=l},a7DW:function(e,t,n){"use strict";var r=n("4kIE"),i=n("pMvH");e.exports=function(e,t,n,o,u,c){var a,s=this,l=0;return function(t){return e.enter(o),e.enter(u),e.consume(t),e.exit(u),e.enter(c),f};function f(i){return null===i||91===i||93===i&&!a||94===i&&!l&&"_hiddenFootnoteSupport"in s.parser.constructs||l>999?n(i):93===i?(e.exit(c),e.enter(u),e.consume(i),e.exit(u),e.exit(o),t):r(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),f):(e.enter("chunkString",{contentType:"string"}),p(i))}function p(t){return null===t||91===t||93===t||r(t)||l++>999?(e.exit("chunkString"),f(t)):(e.consume(t),a=a||!i(t),92===t?d:p)}function d(t){return 91===t||92===t||93===t?(e.consume(t),l++,p):p(t)}}},ajvC:function(e,t,n){"use strict";e.exports=function(e){if(e)throw e}},bhct:function(e,t,n){"use strict";var r=n("h+A4");e.exports=function(e){return!!i.call(r,e)&&r[e]};var i={}.hasOwnProperty},bpHb:function(e,t,n){"use strict";e.exports=function(e,t){return e.column+=t,e.offset+=t,e._bufferIndex+=t,e}},cTMR:function(e,t,n){"use strict";var r=Object.prototype.toString;e.exports=function(e){var t;return"[object Object]"===r.call(e)&&(null===(t=Object.getPrototypeOf(e))||t===Object.getPrototypeOf({}))}},dY77:function(e,t,n){"use strict";var r=n("Iacx");e.exports=o,o.wrap=r;var i=[].slice;function o(){var e=[],t={run:function(){var t=-1,n=i.call(arguments,0,-1),o=arguments[arguments.length-1];if("function"!=typeof o)throw new Error("Expected function as last argument, not "+o);function u(c){var a=e[++t],s=i.call(arguments,0),l=s.slice(1),f=n.length,p=-1;if(c)o(c);else{for(;++p$/i,o=/^<(\/?)([a-z]+)\s*>$/;e.exports=function(e){var t,n;return r(e,"html",(function(e,r,u){n!==u&&(t=[],n=u);var c=function(e){var t=e.value.match(i);return!!t&&t[1]}(e);if(c)return u.children.splice(r,1,{type:"virtualHtml",tag:c,position:e.position}),!0;var a=function(e,t){var n=e.value.match(o);return!!n&&{tag:n[2],opening:!n[1],node:e}}(e);if(!a)return!0;var s=function(e,t){var n=e.length;for(;n--;)if(e[n].tag===t)return e.splice(n,1)[0];return!1}(t,a.tag);return s?u.children.splice(r,0,function(e,t,n){var r=n.children.indexOf(e.node),i=n.children.indexOf(t.node),o=n.children.splice(r,i-r+1).slice(1,-1);return{type:"virtualHtml",children:o,tag:e.tag,position:{start:e.node.position.start,end:t.node.position.end,indent:[]}}}(a,s,u)):a.opening||t.push(a),!0}),!0),e}},"h+A4":function(e){e.exports=JSON.parse('{"AEli":"Æ","AElig":"Æ","AM":"&","AMP":"&","Aacut":"Á","Aacute":"Á","Abreve":"Ă","Acir":"Â","Acirc":"Â","Acy":"А","Afr":"𝔄","Agrav":"À","Agrave":"À","Alpha":"Α","Amacr":"Ā","And":"⩓","Aogon":"Ą","Aopf":"𝔸","ApplyFunction":"","Arin":"Å","Aring":"Å","Ascr":"𝒜","Assign":"≔","Atild":"Ã","Atilde":"Ã","Aum":"Ä","Auml":"Ä","Backslash":"∖","Barv":"⫧","Barwed":"⌆","Bcy":"Б","Because":"∵","Bernoullis":"ℬ","Beta":"Β","Bfr":"𝔅","Bopf":"𝔹","Breve":"˘","Bscr":"ℬ","Bumpeq":"≎","CHcy":"Ч","COP":"©","COPY":"©","Cacute":"Ć","Cap":"⋒","CapitalDifferentialD":"ⅅ","Cayleys":"ℭ","Ccaron":"Č","Ccedi":"Ç","Ccedil":"Ç","Ccirc":"Ĉ","Cconint":"∰","Cdot":"Ċ","Cedilla":"¸","CenterDot":"·","Cfr":"ℭ","Chi":"Χ","CircleDot":"⊙","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","Colon":"∷","Colone":"⩴","Congruent":"≡","Conint":"∯","ContourIntegral":"∮","Copf":"ℂ","Coproduct":"∐","CounterClockwiseContourIntegral":"∳","Cross":"⨯","Cscr":"𝒞","Cup":"⋓","CupCap":"≍","DD":"ⅅ","DDotrahd":"⤑","DJcy":"Ђ","DScy":"Ѕ","DZcy":"Џ","Dagger":"‡","Darr":"↡","Dashv":"⫤","Dcaron":"Ď","Dcy":"Д","Del":"∇","Delta":"Δ","Dfr":"𝔇","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","Diamond":"⋄","DifferentialD":"ⅆ","Dopf":"𝔻","Dot":"¨","DotDot":"⃜","DotEqual":"≐","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrow":"↓","DownArrowBar":"⤓","DownArrowUpArrow":"⇵","DownBreve":"̑","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVector":"↽","DownLeftVectorBar":"⥖","DownRightTeeVector":"⥟","DownRightVector":"⇁","DownRightVectorBar":"⥗","DownTee":"⊤","DownTeeArrow":"↧","Downarrow":"⇓","Dscr":"𝒟","Dstrok":"Đ","ENG":"Ŋ","ET":"Ð","ETH":"Ð","Eacut":"É","Eacute":"É","Ecaron":"Ě","Ecir":"Ê","Ecirc":"Ê","Ecy":"Э","Edot":"Ė","Efr":"𝔈","Egrav":"È","Egrave":"È","Element":"∈","Emacr":"Ē","EmptySmallSquare":"◻","EmptyVerySmallSquare":"▫","Eogon":"Ę","Eopf":"𝔼","Epsilon":"Ε","Equal":"⩵","EqualTilde":"≂","Equilibrium":"⇌","Escr":"ℰ","Esim":"⩳","Eta":"Η","Eum":"Ë","Euml":"Ë","Exists":"∃","ExponentialE":"ⅇ","Fcy":"Ф","Ffr":"𝔉","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","Fopf":"𝔽","ForAll":"∀","Fouriertrf":"ℱ","Fscr":"ℱ","GJcy":"Ѓ","G":">","GT":">","Gamma":"Γ","Gammad":"Ϝ","Gbreve":"Ğ","Gcedil":"Ģ","Gcirc":"Ĝ","Gcy":"Г","Gdot":"Ġ","Gfr":"𝔊","Gg":"⋙","Gopf":"𝔾","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","Gt":"≫","HARDcy":"Ъ","Hacek":"ˇ","Hat":"^","Hcirc":"Ĥ","Hfr":"ℌ","HilbertSpace":"ℋ","Hopf":"ℍ","HorizontalLine":"─","Hscr":"ℋ","Hstrok":"Ħ","HumpDownHump":"≎","HumpEqual":"≏","IEcy":"Е","IJlig":"IJ","IOcy":"Ё","Iacut":"Í","Iacute":"Í","Icir":"Î","Icirc":"Î","Icy":"И","Idot":"İ","Ifr":"ℑ","Igrav":"Ì","Igrave":"Ì","Im":"ℑ","Imacr":"Ī","ImaginaryI":"ⅈ","Implies":"⇒","Int":"∬","Integral":"∫","Intersection":"⋂","InvisibleComma":"","InvisibleTimes":"","Iogon":"Į","Iopf":"𝕀","Iota":"Ι","Iscr":"ℐ","Itilde":"Ĩ","Iukcy":"І","Ium":"Ï","Iuml":"Ï","Jcirc":"Ĵ","Jcy":"Й","Jfr":"𝔍","Jopf":"𝕁","Jscr":"𝒥","Jsercy":"Ј","Jukcy":"Є","KHcy":"Х","KJcy":"Ќ","Kappa":"Κ","Kcedil":"Ķ","Kcy":"К","Kfr":"𝔎","Kopf":"𝕂","Kscr":"𝒦","LJcy":"Љ","L":"<","LT":"<","Lacute":"Ĺ","Lambda":"Λ","Lang":"⟪","Laplacetrf":"ℒ","Larr":"↞","Lcaron":"Ľ","Lcedil":"Ļ","Lcy":"Л","LeftAngleBracket":"⟨","LeftArrow":"←","LeftArrowBar":"⇤","LeftArrowRightArrow":"⇆","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVector":"⇃","LeftDownVectorBar":"⥙","LeftFloor":"⌊","LeftRightArrow":"↔","LeftRightVector":"⥎","LeftTee":"⊣","LeftTeeArrow":"↤","LeftTeeVector":"⥚","LeftTriangle":"⊲","LeftTriangleBar":"⧏","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVector":"↿","LeftUpVectorBar":"⥘","LeftVector":"↼","LeftVectorBar":"⥒","Leftarrow":"⇐","Leftrightarrow":"⇔","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","LessLess":"⪡","LessSlantEqual":"⩽","LessTilde":"≲","Lfr":"𝔏","Ll":"⋘","Lleftarrow":"⇚","Lmidot":"Ŀ","LongLeftArrow":"⟵","LongLeftRightArrow":"⟷","LongRightArrow":"⟶","Longleftarrow":"⟸","Longleftrightarrow":"⟺","Longrightarrow":"⟹","Lopf":"𝕃","LowerLeftArrow":"↙","LowerRightArrow":"↘","Lscr":"ℒ","Lsh":"↰","Lstrok":"Ł","Lt":"≪","Map":"⤅","Mcy":"М","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","MinusPlus":"∓","Mopf":"𝕄","Mscr":"ℳ","Mu":"Μ","NJcy":"Њ","Nacute":"Ń","Ncaron":"Ň","Ncedil":"Ņ","Ncy":"Н","NegativeMediumSpace":"","NegativeThickSpace":"","NegativeThinSpace":"","NegativeVeryThinSpace":"","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","Nfr":"𝔑","NoBreak":"","NonBreakingSpace":" ","Nopf":"ℕ","Not":"⫬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","NotLeftTriangle":"⋪","NotLeftTriangleBar":"⧏̸","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangle":"⋫","NotRightTriangleBar":"⧐̸","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","Nscr":"𝒩","Ntild":"Ñ","Ntilde":"Ñ","Nu":"Ν","OElig":"Œ","Oacut":"Ó","Oacute":"Ó","Ocir":"Ô","Ocirc":"Ô","Ocy":"О","Odblac":"Ő","Ofr":"𝔒","Ograv":"Ò","Ograve":"Ò","Omacr":"Ō","Omega":"Ω","Omicron":"Ο","Oopf":"𝕆","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","Or":"⩔","Oscr":"𝒪","Oslas":"Ø","Oslash":"Ø","Otild":"Õ","Otilde":"Õ","Otimes":"⨷","Oum":"Ö","Ouml":"Ö","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","PartialD":"∂","Pcy":"П","Pfr":"𝔓","Phi":"Φ","Pi":"Π","PlusMinus":"±","Poincareplane":"ℌ","Popf":"ℙ","Pr":"⪻","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","Prime":"″","Product":"∏","Proportion":"∷","Proportional":"∝","Pscr":"𝒫","Psi":"Ψ","QUO":"\\"","QUOT":"\\"","Qfr":"𝔔","Qopf":"ℚ","Qscr":"𝒬","RBarr":"⤐","RE":"®","REG":"®","Racute":"Ŕ","Rang":"⟫","Rarr":"↠","Rarrtl":"⤖","Rcaron":"Ř","Rcedil":"Ŗ","Rcy":"Р","Re":"ℜ","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","Rfr":"ℜ","Rho":"Ρ","RightAngleBracket":"⟩","RightArrow":"→","RightArrowBar":"⇥","RightArrowLeftArrow":"⇄","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVector":"⇂","RightDownVectorBar":"⥕","RightFloor":"⌋","RightTee":"⊢","RightTeeArrow":"↦","RightTeeVector":"⥛","RightTriangle":"⊳","RightTriangleBar":"⧐","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVector":"↾","RightUpVectorBar":"⥔","RightVector":"⇀","RightVectorBar":"⥓","Rightarrow":"⇒","Ropf":"ℝ","RoundImplies":"⥰","Rrightarrow":"⇛","Rscr":"ℛ","Rsh":"↱","RuleDelayed":"⧴","SHCHcy":"Щ","SHcy":"Ш","SOFTcy":"Ь","Sacute":"Ś","Sc":"⪼","Scaron":"Š","Scedil":"Ş","Scirc":"Ŝ","Scy":"С","Sfr":"𝔖","ShortDownArrow":"↓","ShortLeftArrow":"←","ShortRightArrow":"→","ShortUpArrow":"↑","Sigma":"Σ","SmallCircle":"∘","Sopf":"𝕊","Sqrt":"√","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","Sscr":"𝒮","Star":"⋆","Sub":"⋐","Subset":"⋐","SubsetEqual":"⊆","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","SuchThat":"∋","Sum":"∑","Sup":"⋑","Superset":"⊃","SupersetEqual":"⊇","Supset":"⋑","THOR":"Þ","THORN":"Þ","TRADE":"™","TSHcy":"Ћ","TScy":"Ц","Tab":"\\t","Tau":"Τ","Tcaron":"Ť","Tcedil":"Ţ","Tcy":"Т","Tfr":"𝔗","Therefore":"∴","Theta":"Θ","ThickSpace":" ","ThinSpace":" ","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","Topf":"𝕋","TripleDot":"⃛","Tscr":"𝒯","Tstrok":"Ŧ","Uacut":"Ú","Uacute":"Ú","Uarr":"↟","Uarrocir":"⥉","Ubrcy":"Ў","Ubreve":"Ŭ","Ucir":"Û","Ucirc":"Û","Ucy":"У","Udblac":"Ű","Ufr":"𝔘","Ugrav":"Ù","Ugrave":"Ù","Umacr":"Ū","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","Uopf":"𝕌","UpArrow":"↑","UpArrowBar":"⤒","UpArrowDownArrow":"⇅","UpDownArrow":"↕","UpEquilibrium":"⥮","UpTee":"⊥","UpTeeArrow":"↥","Uparrow":"⇑","Updownarrow":"⇕","UpperLeftArrow":"↖","UpperRightArrow":"↗","Upsi":"ϒ","Upsilon":"Υ","Uring":"Ů","Uscr":"𝒰","Utilde":"Ũ","Uum":"Ü","Uuml":"Ü","VDash":"⊫","Vbar":"⫫","Vcy":"В","Vdash":"⊩","Vdashl":"⫦","Vee":"⋁","Verbar":"‖","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","Vopf":"𝕍","Vscr":"𝒱","Vvdash":"⊪","Wcirc":"Ŵ","Wedge":"⋀","Wfr":"𝔚","Wopf":"𝕎","Wscr":"𝒲","Xfr":"𝔛","Xi":"Ξ","Xopf":"𝕏","Xscr":"𝒳","YAcy":"Я","YIcy":"Ї","YUcy":"Ю","Yacut":"Ý","Yacute":"Ý","Ycirc":"Ŷ","Ycy":"Ы","Yfr":"𝔜","Yopf":"𝕐","Yscr":"𝒴","Yuml":"Ÿ","ZHcy":"Ж","Zacute":"Ź","Zcaron":"Ž","Zcy":"З","Zdot":"Ż","ZeroWidthSpace":"","Zeta":"Ζ","Zfr":"ℨ","Zopf":"ℤ","Zscr":"𝒵","aacut":"á","aacute":"á","abreve":"ă","ac":"∾","acE":"∾̳","acd":"∿","acir":"â","acirc":"â","acut":"´","acute":"´","acy":"а","aeli":"æ","aelig":"æ","af":"","afr":"𝔞","agrav":"à","agrave":"à","alefsym":"ℵ","aleph":"ℵ","alpha":"α","amacr":"ā","amalg":"⨿","am":"&","amp":"&","and":"∧","andand":"⩕","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsd":"∡","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","aogon":"ą","aopf":"𝕒","ap":"≈","apE":"⩰","apacir":"⩯","ape":"≊","apid":"≋","apos":"\'","approx":"≈","approxeq":"≊","arin":"å","aring":"å","ascr":"𝒶","ast":"*","asymp":"≈","asympeq":"≍","atild":"ã","atilde":"ã","aum":"ä","auml":"ä","awconint":"∳","awint":"⨑","bNot":"⫭","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","barvee":"⊽","barwed":"⌅","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","beta":"β","beth":"ℶ","between":"≬","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bnot":"⌐","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxDL":"╗","boxDR":"╔","boxDl":"╖","boxDr":"╓","boxH":"═","boxHD":"╦","boxHU":"╩","boxHd":"╤","boxHu":"╧","boxUL":"╝","boxUR":"╚","boxUl":"╜","boxUr":"╙","boxV":"║","boxVH":"╬","boxVL":"╣","boxVR":"╠","boxVh":"╫","boxVl":"╢","boxVr":"╟","boxbox":"⧉","boxdL":"╕","boxdR":"╒","boxdl":"┐","boxdr":"┌","boxh":"─","boxhD":"╥","boxhU":"╨","boxhd":"┬","boxhu":"┴","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxuL":"╛","boxuR":"╘","boxul":"┘","boxur":"└","boxv":"│","boxvH":"╪","boxvL":"╡","boxvR":"╞","boxvh":"┼","boxvl":"┤","boxvr":"├","bprime":"‵","breve":"˘","brvba":"¦","brvbar":"¦","bscr":"𝒷","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsol":"\\\\","bsolb":"⧅","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","bumpeq":"≏","cacute":"ć","cap":"∩","capand":"⩄","capbrcup":"⩉","capcap":"⩋","capcup":"⩇","capdot":"⩀","caps":"∩︀","caret":"⁁","caron":"ˇ","ccaps":"⩍","ccaron":"č","ccedi":"ç","ccedil":"ç","ccirc":"ĉ","ccups":"⩌","ccupssm":"⩐","cdot":"ċ","cedi":"¸","cedil":"¸","cemptyv":"⦲","cen":"¢","cent":"¢","centerdot":"·","cfr":"𝔠","chcy":"ч","check":"✓","checkmark":"✓","chi":"χ","cir":"○","cirE":"⧃","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledR":"®","circledS":"Ⓢ","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","clubs":"♣","clubsuit":"♣","colon":":","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","conint":"∮","copf":"𝕔","coprod":"∐","cop":"©","copy":"©","copysr":"℗","crarr":"↵","cross":"✗","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cup":"∪","cupbrcap":"⩈","cupcap":"⩆","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curre":"¤","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dArr":"⇓","dHar":"⥥","dagger":"†","daleth":"ℸ","darr":"↓","dash":"‐","dashv":"⊣","dbkarow":"⤏","dblac":"˝","dcaron":"ď","dcy":"д","dd":"ⅆ","ddagger":"‡","ddarr":"⇊","ddotseq":"⩷","de":"°","deg":"°","delta":"δ","demptyv":"⦱","dfisht":"⥿","dfr":"𝔡","dharl":"⇃","dharr":"⇂","diam":"⋄","diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","digamma":"ϝ","disin":"⋲","div":"÷","divid":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","dopf":"𝕕","dot":"˙","doteq":"≐","doteqdot":"≑","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","downarrow":"↓","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","dscr":"𝒹","dscy":"ѕ","dsol":"⧶","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","dzcy":"џ","dzigrarr":"⟿","eDDot":"⩷","eDot":"≑","eacut":"é","eacute":"é","easter":"⩮","ecaron":"ě","ecir":"ê","ecirc":"ê","ecolon":"≕","ecy":"э","edot":"ė","ee":"ⅇ","efDot":"≒","efr":"𝔢","eg":"⪚","egrav":"è","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","emacr":"ē","empty":"∅","emptyset":"∅","emptyv":"∅","emsp13":" ","emsp14":" ","emsp":" ","eng":"ŋ","ensp":" ","eogon":"ę","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","equals":"=","equest":"≟","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erDot":"≓","erarr":"⥱","escr":"ℯ","esdot":"≐","esim":"≂","eta":"η","et":"ð","eth":"ð","eum":"ë","euml":"ë","euro":"€","excl":"!","exist":"∃","expectation":"ℰ","exponentiale":"ⅇ","fallingdotseq":"≒","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","ffr":"𝔣","filig":"fi","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","fopf":"𝕗","forall":"∀","fork":"⋔","forkv":"⫙","fpartint":"⨍","frac1":"¼","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac3":"¾","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","gE":"≧","gEl":"⪌","gacute":"ǵ","gamma":"γ","gammad":"ϝ","gap":"⪆","gbreve":"ğ","gcirc":"ĝ","gcy":"г","gdot":"ġ","ge":"≥","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","ges":"⩾","gescc":"⪩","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","gfr":"𝔤","gg":"≫","ggg":"⋙","gimel":"ℷ","gjcy":"ѓ","gl":"≷","glE":"⪒","gla":"⪥","glj":"⪤","gnE":"≩","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gneq":"⪈","gneqq":"≩","gnsim":"⋧","gopf":"𝕘","grave":"`","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","g":">","gt":">","gtcc":"⪧","gtcir":"⩺","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","hArr":"⇔","hairsp":" ","half":"½","hamilt":"ℋ","hardcy":"ъ","harr":"↔","harrcir":"⥈","harrw":"↭","hbar":"ℏ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","horbar":"―","hscr":"𝒽","hslash":"ℏ","hstrok":"ħ","hybull":"⁃","hyphen":"‐","iacut":"í","iacute":"í","ic":"","icir":"î","icirc":"î","icy":"и","iecy":"е","iexc":"¡","iexcl":"¡","iff":"⇔","ifr":"𝔦","igrav":"ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","ijlig":"ij","imacr":"ī","image":"ℑ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","imof":"⊷","imped":"Ƶ","in":"∈","incare":"℅","infin":"∞","infintie":"⧝","inodot":"ı","int":"∫","intcal":"⊺","integers":"ℤ","intercal":"⊺","intlarhk":"⨗","intprod":"⨼","iocy":"ё","iogon":"į","iopf":"𝕚","iota":"ι","iprod":"⨼","iques":"¿","iquest":"¿","iscr":"𝒾","isin":"∈","isinE":"⋹","isindot":"⋵","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"","itilde":"ĩ","iukcy":"і","ium":"ï","iuml":"ï","jcirc":"ĵ","jcy":"й","jfr":"𝔧","jmath":"ȷ","jopf":"𝕛","jscr":"𝒿","jsercy":"ј","jukcy":"є","kappa":"κ","kappav":"ϰ","kcedil":"ķ","kcy":"к","kfr":"𝔨","kgreen":"ĸ","khcy":"х","kjcy":"ќ","kopf":"𝕜","kscr":"𝓀","lAarr":"⇚","lArr":"⇐","lAtail":"⤛","lBarr":"⤎","lE":"≦","lEg":"⪋","lHar":"⥢","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","lambda":"λ","lang":"⟨","langd":"⦑","langle":"⟨","lap":"⪅","laqu":"«","laquo":"«","larr":"←","larrb":"⇤","larrbfs":"⤟","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","lat":"⪫","latail":"⤙","late":"⪭","lates":"⪭︀","lbarr":"⤌","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","lcaron":"ľ","lcedil":"ļ","lceil":"⌈","lcub":"{","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","leftarrow":"←","leftarrowtail":"↢","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","leftthreetimes":"⋋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","les":"⩽","lescc":"⪨","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","lessgtr":"≶","lesssim":"≲","lfisht":"⥼","lfloor":"⌊","lfr":"𝔩","lg":"≶","lgE":"⪑","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","ljcy":"љ","ll":"≪","llarr":"⇇","llcorner":"⌞","llhard":"⥫","lltri":"◺","lmidot":"ŀ","lmoust":"⎰","lmoustache":"⎰","lnE":"≨","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","longleftrightarrow":"⟷","longmapsto":"⟼","longrightarrow":"⟶","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","lstrok":"ł","l":"<","lt":"<","ltcc":"⪦","ltcir":"⩹","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltrPar":"⦖","ltri":"◃","ltrie":"⊴","ltrif":"◂","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","mDDot":"∺","mac":"¯","macr":"¯","male":"♂","malt":"✠","maltese":"✠","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","mcy":"м","mdash":"—","measuredangle":"∡","mfr":"𝔪","mho":"℧","micr":"µ","micro":"µ","mid":"∣","midast":"*","midcir":"⫰","middo":"·","middot":"·","minus":"−","minusb":"⊟","minusd":"∸","minusdu":"⨪","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","mopf":"𝕞","mp":"∓","mscr":"𝓂","mstpos":"∾","mu":"μ","multimap":"⊸","mumap":"⊸","nGg":"⋙̸","nGt":"≫⃒","nGtv":"≫̸","nLeftarrow":"⇍","nLeftrightarrow":"⇎","nLl":"⋘̸","nLt":"≪⃒","nLtv":"≪̸","nRightarrow":"⇏","nVDash":"⊯","nVdash":"⊮","nabla":"∇","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natur":"♮","natural":"♮","naturals":"ℕ","nbs":" ","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","ncaron":"ň","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","ncy":"н","ndash":"–","ne":"≠","neArr":"⇗","nearhk":"⤤","nearr":"↗","nearrow":"↗","nedot":"≐̸","nequiv":"≢","nesear":"⤨","nesim":"≂̸","nexist":"∄","nexists":"∄","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","ngsim":"≵","ngt":"≯","ngtr":"≯","nhArr":"⇎","nharr":"↮","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","njcy":"њ","nlArr":"⇍","nlE":"≦̸","nlarr":"↚","nldr":"‥","nle":"≰","nleftarrow":"↚","nleftrightarrow":"↮","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nlsim":"≴","nlt":"≮","nltri":"⋪","nltrie":"⋬","nmid":"∤","nopf":"𝕟","no":"¬","not":"¬","notin":"∉","notinE":"⋹̸","notindot":"⋵̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","npar":"∦","nparallel":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","npre":"⪯̸","nprec":"⊀","npreceq":"⪯̸","nrArr":"⇏","nrarr":"↛","nrarrc":"⤳̸","nrarrw":"↝̸","nrightarrow":"↛","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","ntild":"ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","nu":"ν","num":"#","numero":"№","numsp":" ","nvDash":"⊭","nvHarr":"⤄","nvap":"≍⃒","nvdash":"⊬","nvge":"≥⃒","nvgt":">⃒","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwArr":"⇖","nwarhk":"⤣","nwarr":"↖","nwarrow":"↖","nwnear":"⤧","oS":"Ⓢ","oacut":"ó","oacute":"ó","oast":"⊛","ocir":"ô","ocirc":"ô","ocy":"о","odash":"⊝","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","oelig":"œ","ofcir":"⦿","ofr":"𝔬","ogon":"˛","ograv":"ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","omacr":"ō","omega":"ω","omicron":"ο","omid":"⦶","ominus":"⊖","oopf":"𝕠","opar":"⦷","operp":"⦹","oplus":"⊕","or":"∨","orarr":"↻","ord":"º","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oscr":"ℴ","oslas":"ø","oslash":"ø","osol":"⊘","otild":"õ","otilde":"õ","otimes":"⊗","otimesas":"⨶","oum":"ö","ouml":"ö","ovbar":"⌽","par":"¶","para":"¶","parallel":"∥","parsim":"⫳","parsl":"⫽","part":"∂","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","pfr":"𝔭","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plus":"+","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plusdo":"∔","plusdu":"⨥","pluse":"⩲","plusm":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","pointint":"⨕","popf":"𝕡","poun":"£","pound":"£","pr":"≺","prE":"⪳","prap":"⪷","prcue":"≼","pre":"⪯","prec":"≺","precapprox":"⪷","preccurlyeq":"≼","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","precsim":"≾","prime":"′","primes":"ℙ","prnE":"⪵","prnap":"⪹","prnsim":"⋨","prod":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","propto":"∝","prsim":"≾","prurel":"⊰","pscr":"𝓅","psi":"ψ","puncsp":" ","qfr":"𝔮","qint":"⨌","qopf":"𝕢","qprime":"⁗","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quo":"\\"","quot":"\\"","rAarr":"⇛","rArr":"⇒","rAtail":"⤜","rBarr":"⤏","rHar":"⥤","race":"∽̱","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","rangd":"⦒","range":"⦥","rangle":"⟩","raqu":"»","raquo":"»","rarr":"→","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","rarrtl":"↣","rarrw":"↝","ratail":"⤚","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","rcaron":"ř","rcedil":"ŗ","rceil":"⌉","rcub":"}","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","rect":"▭","re":"®","reg":"®","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","rhard":"⇁","rharu":"⇀","rharul":"⥬","rho":"ρ","rhov":"ϱ","rightarrow":"→","rightarrowtail":"↣","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","rightthreetimes":"⋌","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"","rmoust":"⎱","rmoustache":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","roplus":"⨮","rotimes":"⨵","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","rsaquo":"›","rscr":"𝓇","rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","ruluhar":"⥨","rx":"℞","sacute":"ś","sbquo":"‚","sc":"≻","scE":"⪴","scap":"⪸","scaron":"š","sccue":"≽","sce":"⪰","scedil":"ş","scirc":"ŝ","scnE":"⪶","scnap":"⪺","scnsim":"⋩","scpolint":"⨓","scsim":"≿","scy":"с","sdot":"⋅","sdotb":"⊡","sdote":"⩦","seArr":"⇘","searhk":"⤥","searr":"↘","searrow":"↘","sec":"§","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","sfr":"𝔰","sfrown":"⌢","sharp":"♯","shchcy":"щ","shcy":"ш","shortmid":"∣","shortparallel":"∥","sh":"","shy":"","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","softcy":"ь","sol":"/","solb":"⧄","solbar":"⌿","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","squ":"□","square":"□","squarf":"▪","squf":"▪","srarr":"→","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","subE":"⫅","subdot":"⪽","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","subseteq":"⊆","subseteqq":"⫅","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succ":"≻","succapprox":"⪸","succcurlyeq":"≽","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","sum":"∑","sung":"♪","sup":"⊃","sup1":"¹","sup2":"²","sup3":"³","supE":"⫆","supdot":"⪾","supdsub":"⫘","supe":"⊇","supedot":"⫄","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swArr":"⇙","swarhk":"⤦","swarr":"↙","swarrow":"↙","swnwar":"⤪","szli":"ß","szlig":"ß","target":"⌖","tau":"τ","tbrk":"⎴","tcaron":"ť","tcedil":"ţ","tcy":"т","tdot":"⃛","telrec":"⌕","tfr":"𝔱","there4":"∴","therefore":"∴","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","thinsp":" ","thkap":"≈","thksim":"∼","thor":"þ","thorn":"þ","tilde":"˜","time":"×","times":"×","timesb":"⊠","timesbar":"⨱","timesd":"⨰","tint":"∭","toea":"⤨","top":"⊤","topbot":"⌶","topcir":"⫱","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","tscr":"𝓉","tscy":"ц","tshcy":"ћ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","uArr":"⇑","uHar":"⥣","uacut":"ú","uacute":"ú","uarr":"↑","ubrcy":"ў","ubreve":"ŭ","ucir":"û","ucirc":"û","ucy":"у","udarr":"⇅","udblac":"ű","udhar":"⥮","ufisht":"⥾","ufr":"𝔲","ugrav":"ù","ugrave":"ù","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","umacr":"ū","um":"¨","uml":"¨","uogon":"ų","uopf":"𝕦","uparrow":"↑","updownarrow":"↕","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","upsi":"υ","upsih":"ϒ","upsilon":"υ","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","uring":"ů","urtri":"◹","uscr":"𝓊","utdot":"⋰","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","uum":"ü","uuml":"ü","uwangle":"⦧","vArr":"⇕","vBar":"⫨","vBarv":"⫩","vDash":"⊨","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vcy":"в","vdash":"⊢","vee":"∨","veebar":"⊻","veeeq":"≚","vellip":"⋮","verbar":"|","vert":"|","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","vopf":"𝕧","vprop":"∝","vrtri":"⊳","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","vzigzag":"⦚","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","wedgeq":"≙","weierp":"℘","wfr":"𝔴","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","xfr":"𝔵","xhArr":"⟺","xharr":"⟷","xi":"ξ","xlArr":"⟸","xlarr":"⟵","xmap":"⟼","xnis":"⋻","xodot":"⨀","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrArr":"⟹","xrarr":"⟶","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","yacut":"ý","yacute":"ý","yacy":"я","ycirc":"ŷ","ycy":"ы","ye":"¥","yen":"¥","yfr":"𝔶","yicy":"ї","yopf":"𝕪","yscr":"𝓎","yucy":"ю","yum":"ÿ","yuml":"ÿ","zacute":"ź","zcaron":"ž","zcy":"з","zdot":"ż","zeetrf":"ℨ","zeta":"ζ","zfr":"𝔷","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","zscr":"𝓏","zwj":"","zwnj":""}')},"h+e0":function(e,t,n){"use strict";var r=n("OF0j")(/[!-/:-@[-`{-~]/);e.exports=r},h3af:function(e,t,n){"use strict";var r=n("nppI");e.exports=function(e){for(var t,n,i,o=-1,u=[];++o-1&&(_.call(this,e),w.call(this,e))},link:b((function(){var e=this.stack[this.stack.length-1];f("inReference")?(e.type+="Reference",e.referenceType=f("referenceType")||"shortcut",delete e.url,delete e.title):(delete e.identifier,delete e.label,delete e.referenceType);l("referenceType")})),listItem:b(),listOrdered:b(),listUnordered:b(),paragraph:b(),referenceString:function(e){var t=this.resume();this.stack[this.stack.length-1].label=t,this.stack[this.stack.length-1].identifier=c(this.sliceSerialize(e)).toLowerCase(),l("referenceType","full")},resourceDestinationString:function(){var e=this.resume();this.stack[this.stack.length-1].url=e},resourceTitleString:function(){var e=this.resume();this.stack[this.stack.length-1].title=e},resource:function(){l("inReference")},setextHeading:b((function(){l("setextHeadingSlurpLineEnding")})),setextHeadingLineSequence:function(e){this.stack[this.stack.length-1].depth=61===this.sliceSerialize(e).charCodeAt(0)?1:2},setextHeadingText:function(){l("setextHeadingSlurpLineEnding",!0)},strong:b(),thematicBreak:b()}},t.mdastExtensions||[]),r={};return function(e){var t,r,i=[{type:"root",children:[]}],c=[],a=[],p=-1,h={stack:i,tokenStack:c,config:n,enter:y,exit:x,buffer:v,resume:k,setData:l,getData:f};for(;++pp?n(r):(e.consume(r),v):41===r?d--?(e.consume(r),v):(e.exit("chunkString"),e.exit(l),e.exit(s),e.exit(u),t(r)):null===r||i(r)?d?n(r):(e.exit("chunkString"),e.exit(l),e.exit(s),e.exit(u),t(r)):o(r)?n(r):(e.consume(r),92===r?y:v)}function y(t){return 40===t||41===t||92===t?(e.consume(t),v):v(t)}}},juNq:function(e,t,n){"use strict";var r=n("SpX7"),i=n("LzXL"),o=n("EbX1");e.exports=a;var u={}.hasOwnProperty,c=["history","path","basename","stem","extname","dirname"];function a(e){var t,n;if(e){if("string"==typeof e||o(e))e={contents:e};else if("message"in e&&"messages"in e)return e}else e={};if(!(this instanceof a))return new a(e);for(this.data={},this.messages=[],this.history=[],this.cwd=i.cwd(),n=-1;++n-1)throw new Error("`"+t+"` cannot be a path: did not expect `"+r.sep+"`")}function l(e,t){if(!e)throw new Error("`"+t+"` cannot be empty")}function f(e,t){if(!e)throw new Error("Setting `"+t+"` requires `path` to be set too")}a.prototype.toString=function(e){return(this.contents||"").toString(e)},Object.defineProperty(a.prototype,"path",{get:function(){return this.history[this.history.length-1]},set:function(e){l(e,"path"),this.path!==e&&this.history.push(e)}}),Object.defineProperty(a.prototype,"dirname",{get:function(){return"string"==typeof this.path?r.dirname(this.path):void 0},set:function(e){f(this.path,"dirname"),this.path=r.join(e||"",this.basename)}}),Object.defineProperty(a.prototype,"basename",{get:function(){return"string"==typeof this.path?r.basename(this.path):void 0},set:function(e){l(e,"basename"),s(e,"basename"),this.path=r.join(this.dirname||"",e)}}),Object.defineProperty(a.prototype,"extname",{get:function(){return"string"==typeof this.path?r.extname(this.path):void 0},set:function(e){if(s(e,"extname"),f(this.path,"extname"),e){if(46!==e.charCodeAt(0))throw new Error("`extname` must start with `.`");if(e.indexOf(".",1)>-1)throw new Error("`extname` cannot contain multiple dots")}this.path=r.join(this.dirname,this.stem+(e||""))}}),Object.defineProperty(a.prototype,"stem",{get:function(){return"string"==typeof this.path?r.basename(this.path,this.extname):void 0},set:function(e){l(e,"stem"),s(e,"stem"),this.path=r.join(this.dirname||"",e+(this.extname||""))}})},kSGr:function(e,t,n){"use strict";var r=n("W9KB"),i=n("4kIE"),o=n("7sXb"),u=n("mQVw"),c=n("j1Sy"),a=n("a7DW"),s=n("QGTt"),l=n("eOGU"),f={name:"definition",tokenize:function(e,t,n){var u,l=this;return function(t){return e.enter("definition"),a.call(l,e,f,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(t)};function f(t){return u=r(l.sliceSerialize(l.events[l.events.length-1][1]).slice(1,-1)),58===t?(e.enter("definitionMarker"),e.consume(t),e.exit("definitionMarker"),s(e,c(e,e.attempt(p,o(e,d,"whitespace"),o(e,d,"whitespace")),n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):n(t)}function d(r){return null===r||i(r)?(e.exit("definition"),l.parser.defined.indexOf(u)<0&&l.parser.defined.push(u),t(r)):n(r)}}},p={tokenize:function(e,t,n){return function(t){return u(t)?s(e,r)(t):n(t)};function r(t){return 34===t||39===t||40===t?l(e,o(e,c,"whitespace"),n,"definitionTitle","definitionTitleMarker","definitionTitleString")(t):n(t)}function c(e){return null===e||i(e)?t(e):n(e)}},partial:!0};e.exports=f},kqyo:function(e,t,n){"use strict";e.exports=function(e,t,n){var r=[];"function"==typeof t&&(n=t,t=null);function i(e){var o;return t&&e.type!==t||(o=n(e,r.concat())),e.children&&!1!==o?function(e,t){var n,o=e.length,u=-1;r.push(t);for(;++u3;)n.pop()();if(n[1]-1?(c=1,v.interrupt?t(o):j(o)):l.indexOf(h.toLowerCase())>-1?(c=6,47===o?(e.consume(o),E):v.interrupt?t(o):j(o)):(c=7,v.interrupt?n(o):p?A(o):S(o)):45===o||i(o)?(e.consume(o),h+=r(o),w):n(o)}function E(r){return 62===r?(e.consume(r),v.interrupt?t:j):n(r)}function S(t){return u(t)?(e.consume(t),S):L(t)}function A(t){return 47===t?(e.consume(t),L):58===t||95===t||s(t)?(e.consume(t),C):u(t)?(e.consume(t),A):L(t)}function C(t){return 45===t||46===t||58===t||95===t||i(t)?(e.consume(t),C):q(t)}function q(t){return 61===t?(e.consume(t),T):u(t)?(e.consume(t),q):A(t)}function T(t){return null===t||60===t||61===t||62===t||96===t?n(t):34===t||39===t?(e.consume(t),g=t,O):u(t)?(e.consume(t),T):(g=void 0,F(t))}function O(t){return t===g?(e.consume(t),D):null===t||o(t)?n(t):(e.consume(t),O)}function F(t){return null===t||34===t||39===t||60===t||61===t||62===t||96===t||a(t)?q(t):(e.consume(t),F)}function D(e){return 47===e||62===e||u(e)?A(e):n(e)}function L(t){return 62===t?(e.consume(t),I):n(t)}function I(t){return u(t)?(e.consume(t),I):null===t||o(t)?j(t):n(t)}function j(t){return 45===t&&2===c?(e.consume(t),H):60===t&&1===c?(e.consume(t),B):62===t&&4===c?(e.consume(t),z):63===t&&3===c?(e.consume(t),M):93===t&&5===c?(e.consume(t),N):!o(t)||6!==c&&7!==c?null===t||o(t)?P(t):(e.consume(t),j):e.check(d,z,P)(t)}function P(t){return e.exit("htmlFlowData"),R(t)}function R(t){return null===t?V(t):o(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),R):(e.enter("htmlFlowData"),j(t))}function H(t){return 45===t?(e.consume(t),M):j(t)}function B(t){return 47===t?(e.consume(t),h="",U):j(t)}function U(t){return 62===t&&f.indexOf(h.toLowerCase())>-1?(e.consume(t),z):s(t)&&h.length<8?(e.consume(t),h+=r(t),U):j(t)}function N(t){return 93===t?(e.consume(t),M):j(t)}function M(t){return 62===t?(e.consume(t),z):j(t)}function z(t){return null===t||o(t)?(e.exit("htmlFlowData"),V(t)):(e.consume(t),z)}function V(n){return e.exit("htmlFlow"),t(n)}},resolveTo:function(e){var t=e.length;for(;t--&&("enter"!==e[t][0]||"htmlFlow"!==e[t][1].type););t>1&&"linePrefix"===e[t-2][1].type&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2));return e},concrete:!0},d={tokenize:function(e,t,n){return function(r){return e.exit("htmlFlowData"),e.enter("lineEndingBlank"),e.consume(r),e.exit("lineEndingBlank"),e.attempt(c,t,n)}},partial:!0};e.exports=p},oarT:function(e,t,n){"use strict";var r=n("6zBE"),i=n("4kIE"),o=n("pMvH"),u=n("7sXb"),c=n("mQVw"),a=n("9pEU"),s={name:"htmlText",tokenize:function(e,t,n){var s,l,f,p,d=this;return function(t){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(t),h};function h(t){return 33===t?(e.consume(t),m):47===t?(e.consume(t),q):63===t?(e.consume(t),A):a(t)?(e.consume(t),F):n(t)}function m(t){return 45===t?(e.consume(t),g):91===t?(e.consume(t),l="CDATA[",f=0,k):a(t)?(e.consume(t),S):n(t)}function g(t){return 45===t?(e.consume(t),v):n(t)}function v(t){return null===t||62===t?n(t):45===t?(e.consume(t),y):b(t)}function y(e){return null===e||62===e?n(e):b(e)}function b(t){return null===t?n(t):45===t?(e.consume(t),x):i(t)?(p=b,B(t)):(e.consume(t),b)}function x(t){return 45===t?(e.consume(t),N):b(t)}function k(t){return t===l.charCodeAt(f++)?(e.consume(t),f===l.length?_:k):n(t)}function _(t){return null===t?n(t):93===t?(e.consume(t),w):i(t)?(p=_,B(t)):(e.consume(t),_)}function w(t){return 93===t?(e.consume(t),E):_(t)}function E(t){return 62===t?N(t):93===t?(e.consume(t),E):_(t)}function S(t){return null===t||62===t?N(t):i(t)?(p=S,B(t)):(e.consume(t),S)}function A(t){return null===t?n(t):63===t?(e.consume(t),C):i(t)?(p=A,B(t)):(e.consume(t),A)}function C(e){return 62===e?N(e):A(e)}function q(t){return a(t)?(e.consume(t),T):n(t)}function T(t){return 45===t||r(t)?(e.consume(t),T):O(t)}function O(t){return i(t)?(p=O,B(t)):o(t)?(e.consume(t),O):N(t)}function F(t){return 45===t||r(t)?(e.consume(t),F):47===t||62===t||c(t)?D(t):n(t)}function D(t){return 47===t?(e.consume(t),N):58===t||95===t||a(t)?(e.consume(t),L):i(t)?(p=D,B(t)):o(t)?(e.consume(t),D):N(t)}function L(t){return 45===t||46===t||58===t||95===t||r(t)?(e.consume(t),L):I(t)}function I(t){return 61===t?(e.consume(t),j):i(t)?(p=I,B(t)):o(t)?(e.consume(t),I):D(t)}function j(t){return null===t||60===t||61===t||62===t||96===t?n(t):34===t||39===t?(e.consume(t),s=t,P):i(t)?(p=j,B(t)):o(t)?(e.consume(t),j):(e.consume(t),s=void 0,H)}function P(t){return t===s?(e.consume(t),R):null===t?n(t):i(t)?(p=P,B(t)):(e.consume(t),P)}function R(e){return 62===e||47===e||c(e)?D(e):n(e)}function H(t){return null===t||34===t||39===t||60===t||61===t||96===t?n(t):62===t||c(t)?D(t):(e.consume(t),H)}function B(t){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),u(e,U,"linePrefix",d.parser.constructs.disable.null.indexOf("codeIndented")>-1?void 0:4)}function U(t){return e.enter("htmlTextData"),p(t)}function N(r){return 62===r?(e.consume(r),e.exit("htmlTextData"),e.exit("htmlText"),t):n(r)}}};e.exports=s},"ox/y":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Link=t.Match=void 0;var r=Object.assign||function(e){for(var t=1;t>>0,1)},t.prototype.render=function(e){var t=this.nextUrl||(0,o.getCurrentUrl)(),n=t.replace(/\?.+$/,"");return this.nextUrl=null,e.children({url:t,path:n,matches:!1!==(0,o.exec)(n,e.path,{})})},t}(i.Component),s=function(e){var t=e.activeClassName,n=e.path,u=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["activeClassName","path"]);return(0,i.h)(a,{path:n||u.href},(function(e){var n=e.matches;return(0,i.h)(o.Link,r({},u,{class:[u.class||u.className,n&&t].filter(Boolean).join(" ")}))}))};t.Link=s,t.default=a,a.Link=s},oyvS:function(e,t){e.exports=require("path")},pMvH:function(e,t,n){"use strict";e.exports=function(e){return-2===e||-1===e||32===e}},pRls:function(e,t,n){},"pi/J":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("4kIE"),i=n("7sXb"),o=n("A0tY"),u=function(e){var t,n,i,u=this,s=[],l=0,f={tokenize:function(e,r){var i=0;return t={},l;function l(r){return it;)u.containerState=s[o][1],s[o][0].exit.call(u,e);s.length=t}},c={tokenize:function(e,t,n){return i(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.indexOf("codeIndented")>-1?void 0:4)}},a={tokenize:function(e,t,n){return i(e,e.lazy(this.parser.constructs.flow,t,n),"linePrefix",this.parser.constructs.disable.null.indexOf("codeIndented")>-1?void 0:4)}};t.tokenize=u},qWgT:function(e,t,n){"use strict";var r=n("4kIE"),i={name:"hardBreakEscape",tokenize:function(e,t,n){return function(t){return e.enter("hardBreakEscape"),e.enter("escapeMarker"),e.consume(t),i};function i(i){return r(i)?(e.exit("escapeMarker"),e.exit("hardBreakEscape"),t(i)):n(i)}}};e.exports=i},rNCH:function(e,t,n){"use strict";e.exports=["pre","script","style","textarea"]},"sWw+":function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty,i=Object.prototype.toString,o=Object.defineProperty,u=Object.getOwnPropertyDescriptor,c=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===i.call(e)},a=function(e){if(!e||"[object Object]"!==i.call(e))return!1;var t,n=r.call(e,"constructor"),o=e.constructor&&e.constructor.prototype&&r.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!o)return!1;for(t in e);return void 0===t||r.call(e,t)},s=function(e,t){o&&"__proto__"===t.name?o(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,t){if("__proto__"===t){if(!r.call(e,t))return;if(u)return u(e,t).value}return e[t]};e.exports=function e(){var t,n,r,i,o,u,f=arguments[0],p=1,d=arguments.length,h=!1;for("boolean"==typeof f&&(h=f,f=arguments[1]||{},p=2),(null==f||"object"!=typeof f&&"function"!=typeof f)&&(f={});p-1?void 0:4);function u(t){return t===c?(e.consume(t),o++,u):o-1,e.enter("labelEnd"),e.enter("labelMarker"),e.consume(t),e.exit("labelMarker"),e.exit("labelEnd"),a)};function a(n){return 40===n?e.attempt(h,t,i?t:s)(n):91===n?e.attempt(m,t,i?e.attempt(g,t,s):s)(n):i?t(n):s(n)}function s(e){return r._balanced=!0,n(e)}},resolveTo:function(e,t){var n,o,a,s,l,f,p,d=e.length,h=0;for(;d--;)if(s=e[d][1],l){if("link"===s.type||"labelLink"===s.type&&s._inactive)break;"enter"===e[d][0]&&"labelLink"===s.type&&(s._inactive=!0)}else if(f){if("enter"===e[d][0]&&("labelImage"===s.type||"labelLink"===s.type)&&!s._balanced&&(l=d,"labelLink"!==s.type)){h=2;break}}else"labelEnd"===s.type&&(f=d);return n={type:"labelLink"===e[l][1].type?"link":"image",start:u(e[l][1].start),end:u(e[e.length-1][1].end)},o={type:"label",start:u(e[l][1].start),end:u(e[f][1].end)},a={type:"labelText",start:u(e[l+h+2][1].end),end:u(e[f-2][1].start)},p=i(p=[["enter",n,t],["enter",o,t]],e.slice(l+1,l+h+3)),p=i(p,[["enter",a,t]]),p=i(p,c(t.parser.constructs.insideSpan.null,e.slice(l+h+4,f-3),t)),p=i(p,[["exit",a,t],e[f-2],e[f-1],["exit",o,t]]),p=i(p,e.slice(f+1)),p=i(p,[["exit",n,t]]),r(e,l,e.length,p),e},resolveAll:function(e){var t,n=-1;for(;++n-1)return m();return e.tokenize.call(t?r({},y,t):y,v,h,m)(n)}}function h(t){return e(s,l),i}function m(e){return l.restore(),++a1&&e[m][1].end.offset-e[m][1].start.offset>1?2:1,l={type:p>1?"strongSequence":"emphasisSequence",start:a(o(e[n][1].end),-p),end:o(e[n][1].end)},f={type:p>1?"strongSequence":"emphasisSequence",start:o(e[m][1].start),end:a(o(e[m][1].start),p)},s={type:p>1?"strongText":"emphasisText",start:o(e[n][1].end),end:o(e[m][1].start)},c={type:p>1?"strong":"emphasis",start:o(l.start),end:o(f.end)},e[n][1].end=o(l.start),e[m][1].start=o(f.end),d=[],e[n][1].end.offset-e[n][1].start.offset&&(d=i(d,[["enter",e[n][1],t],["exit",e[n][1],t]])),d=i(d,[["enter",c,t],["enter",l,t],["exit",l,t],["enter",s,t]]),d=i(d,u(t.parser.constructs.insideSpan.null,e.slice(n+1,m),t)),d=i(d,[["exit",s,t],["enter",f,t],["exit",f,t],["exit",c,t]]),e[m][1].end.offset-e[m][1].start.offset?(h=2,d=i(d,[["enter",e[m][1],t],["exit",e[m][1],t]])):h=0,r(e,n-1,m-n+3,d),m=n+d.length-h-2;break}m=-1;for(;++m-1?void 0:4)}},exit:function(e){e.exit("blockQuote")}};e.exports=o},FsDf:function(e,t,n){"use strict";e.exports=function(e,t){var n,r=t.start._index,i=t.start._bufferIndex,o=t.end._index,u=t.end._bufferIndex;return r===o?n=[e[r].slice(i,u)]:(n=e.slice(r,o),i>-1&&(n[0]=n[0].slice(i)),u>0&&n.push(e[o].slice(0,u))),n}},GFNa:function(e,t,n){},GZPr:function(e,t,n){"use strict";var r=["http","https","mailto","tel"];e.exports=function(e){var t=(e||"").trim(),n=t.charAt(0);if("#"===n||"/"===n)return t;var i=t.indexOf(":");if(-1===i)return t;for(var o=r.length,u=-1;++uu||-1!==(u=t.indexOf("#"))&&i>u?t:"javascript:void(0)"}},Gthe:function(e,t,n){"use strict";var r=n("OF0j")(/[#-'*+\--9=?A-Z^-~]/);e.exports=r},H5je:function(e,t,n){"use strict";var r=n("hKxf");e.exports=function(e,t){var n=e[e.length-1];return n&&n[1].type===t?r(n[2].sliceStream(n[1])):0}},HteQ:function(e,t){e.exports=require("preact")},INXP:function(e,t,n){"use strict";e.exports=/[!-\/:-@\[-`\{-~\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u09FD\u0A76\u0AF0\u0C77\u0C84\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E4F\u2E52\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]/},Iacx:function(e,t,n){"use strict";var r=[].slice;e.exports=function(e,t){var n;return function(){var t,u=r.call(arguments,0),c=e.length>u.length;c&&u.push(i);try{t=e.apply(null,u)}catch(e){if(c&&n)throw e;return i(e)}c||(t&&"function"==typeof t.then?t.then(o,i):t instanceof Error?i(t):o(t))};function i(){n||(n=!0,t.apply(null,arguments))}function o(e){i(null,e)}}},JdhB:function(e,t,n){"use strict";var r=n("4kIE"),i=n("pMvH"),o=n("7sXb"),u={name:"thematicBreak",tokenize:function(e,t,n){var u,c=0;return function(t){return e.enter("thematicBreak"),u=t,a(t)};function a(l){return l===u?(e.enter("thematicBreakSequence"),s(l)):i(l)?o(e,a,"whitespace")(l):c<3||null!==l&&!r(l)?n(l):(e.exit("thematicBreak"),t(l))}function s(t){return t===u?(e.consume(t),c++,s):(e.exit("thematicBreakSequence"),a(t))}}};e.exports=u},K4HH:function(e,t,n){"use strict";var r=n("YT9o"),i=n("4kIE"),o=n("pMvH"),u=n("7sXb"),c=n("mQVw"),a={name:"headingAtx",tokenize:function(e,t,n){var r=this,a=0;return function(t){return e.enter("atxHeading"),e.enter("atxHeadingSequence"),s(t)};function s(i){return 35===i&&a++<6?(e.consume(i),s):null===i||c(i)?(e.exit("atxHeadingSequence"),r.interrupt?t(i):l(i)):n(i)}function l(n){return 35===n?(e.enter("atxHeadingSequence"),f(n)):null===n||i(n)?(e.exit("atxHeading"),t(n)):o(n)?u(e,l,"whitespace")(n):(e.enter("atxHeadingText"),p(n))}function f(t){return 35===t?(e.consume(t),f):(e.exit("atxHeadingSequence"),l(t))}function p(t){return null===t||35===t||c(t)?(e.exit("atxHeadingText"),l(t)):(e.consume(t),p)}},resolve:function(e,t){var n,i,o=e.length-2,u=3;"whitespace"===e[u][1].type&&(u+=2);o-2>u&&"whitespace"===e[o][1].type&&(o-=2);"atxHeadingSequence"===e[o][1].type&&(u===o-1||o-4>u&&"whitespace"===e[o-2][1].type)&&(o-=u+1===o?2:4);o>u&&(n={type:"atxHeadingText",start:e[u][1].start,end:e[o][1].end},i={type:"chunkText",start:e[u][1].start,end:e[o][1].end,contentType:"text"},r(e,u,o-u+1,[["enter",n,t],["enter",i,t],["exit",i,t],["exit",n,t]]));return e}};e.exports=a},KSUl:function(e,t,n){"use strict";var r=[].splice;e.exports=r},Kio5:function(e,t,n){"use strict";var r=n("OF0j")(/\s/);e.exports=r},LO0j:function(e,t,n){"use strict";var r=n("1hwd"),i=n("w6Nv"),o=n("yAYQ"),u=n("W0B4"),c=n("unVz"),a=n("gxcY"),s=n("N//3"),l=n("XmUT"),f=n("7kD2"),p=n("26+u"),d=n("GZPr"),h=n("3d/4"),m=n("8UgC"),g=Object.keys(h),v=function(e){var t=e.source||e.children||"";if(e.allowedTypes&&e.disallowedTypes)throw new Error("Only one of `allowedTypes` and `disallowedTypes` should be defined");var n=r(h,e.renderers),u=i().use(o).use(e.plugins||[]),d=u.runSync(u.parse(t)),v=r(e,{renderers:n,definitions:p(d)});return function(e){var t=[f,c()],n=e.disallowedTypes;e.allowedTypes&&(n=g.filter((function(t){return"root"!==t&&-1===e.allowedTypes.indexOf(t)})));var r=e.unwrapDisallowed?"unwrap":"remove";n&&n.length>0&&t.push(s.ofType(n,r));e.allowNode&&t.push(s.ifNotMatch(e.allowNode,r));var i=(e.allowDangerousHtml||!1===e.escapeHtml)&&!e.skipHtml,o=(e.astPlugins||[]).some((function(e){return e.identity===m.HtmlParser}));i&&!o&&t.push(a);e.astPlugins&&(t=t.concat(e.astPlugins));return t.push(l),t}(e).forEach((function(e){d=e(d,v)})),d};v.defaultProps={transformLinkUri:d},v.propTypes={className:u.string,source:u.string,children:u.string,sourcePos:u.bool,rawSourcePos:u.bool,escapeHtml:u.bool,allowDangerousHtml:u.bool,skipHtml:u.bool,allowNode:u.func,allowedTypes:u.arrayOf(u.oneOf(g)),disallowedTypes:u.arrayOf(u.oneOf(g)),transformLinkUri:u.oneOfType([u.func,u.bool]),linkTarget:u.oneOfType([u.func,u.string]),transformImageUri:u.func,astPlugins:u.arrayOf(u.func),unwrapDisallowed:u.bool,renderers:u.object,plugins:u.array},v.types=g,v.renderers=h,v.uriTransformer=d,e.exports=v},LzXL:function(e,t,n){"use strict";e.exports=process},"N//3":function(e,t,n){"use strict";var r=n("BN5T"),i=[].splice;function o(e,t){return function(e){return r(e,n),e};function n(n,r,o){if(o&&!e(n,r,o)){var u=[r,1];return"unwrap"===t&&n.children&&(u=u.concat(n.children)),i.apply(o.children,u),r}}}t.ofType=function(e,t){return o((function(t,n,r){return!e.includes(t.type)}),t)},t.ifNotMatch=o},NFok:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("VNaL"),i=n("w+ik"),o=n("UMwc"),u=n("EsqR"),c=n("lD/g"),a=n("0+f6"),s=n("sy7/"),l=n("xyCV"),f=n("Bdgx"),p=n("kSGr"),d=n("qWgT"),h=n("K4HH"),m=n("oAca"),g=n("oarT"),v=n("tezt"),y=n("zTh2"),b=n("XFvC"),x=n("gC7f"),k=n("JdhB"),_=n("Z6Dk"),w=n("zN7H"),E={42:_,43:_,45:_,48:_,49:_,50:_,51:_,52:_,53:_,54:_,55:_,56:_,57:_,62:u},S={91:p},A={"-2":l,"-1":l,32:l},C={35:h,42:k,45:[w,k],60:m,61:w,95:k,96:s,126:s},q={38:a,92:c},T={"-5":x,"-4":x,"-3":x,33:y,38:a,42:i,60:[o,g],91:b,92:[d,c],93:v,95:i,96:f},O={null:[i,r.resolver]};t.contentInitial=S,t.disable={null:[]},t.document=E,t.flow=C,t.flowInitial=A,t.insideSpan=O,t.string=q,t.text=T},NS33:function(e,t,n){"use strict";var r=n("E02R");function i(){}function o(){}o.resetWarningCache=i,e.exports=function(){function e(e,t,n,i,o,u){if(u!==r){var c=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");throw c.name="Invariant Violation",c}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:i};return n.PropTypes=n,n}},OF0j:function(e,t,n){"use strict";var r=n("nppI");e.exports=function(e){return function(t){return e.test(r(t))}}},Q4YM:function(e,t,n){"use strict";function r(e){return e&&(e.value||e.alt||e.title||"children"in e&&i(e.children)||"length"in e&&i(e))||""}function i(e){for(var t=[],n=-1;++n=n.__.length&&n.__.push({}),n.__[e]}function m(e){return c=1,g(F,e)}function g(e,t,n){var o=h(r++,2);return o.t=e,o.__c||(o.__=[n?n(t):F(void 0,t),function(e){var t=o.t(o.__[0],e);o.__[0]!==t&&(o.__=[t,o.__[1]],o.__c.setState({}))}],o.__c=i),o.__}function v(e,t){var n=h(r++,3);!u.options.__s&&O(n.__H,t)&&(n.__=e,n.__H=t,i.__H.__h.push(n))}function y(e,t){var n=h(r++,4);!u.options.__s&&O(n.__H,t)&&(n.__=e,n.__H=t,i.__h.push(n))}function b(e){return c=5,k((function(){return{current:e}}),[])}function x(e,t,n){c=6,y((function(){"function"==typeof e?e(t()):e&&(e.current=t())}),null==n?n:n.concat(e))}function k(e,t){var n=h(r++,7);return O(n.__H,t)&&(n.__=e(),n.__H=t,n.__h=e),n.__}function _(e,t){return c=8,k((function(){return e}),t)}function w(e){var t=i.context[e.__c],n=h(r++,9);return n.__c=e,t?(null==n.__&&(n.__=!0,t.sub(i)),t.props.value):e.__}function E(e,t){u.options.useDebugValue&&u.options.useDebugValue(t?t(e):e)}function S(e){var t=h(r++,10),n=m();return t.__=e,i.componentDidCatch||(i.componentDidCatch=function(e){t.__&&t.__(e),n[1](e)}),[n[0],function(){n[1](void 0)}]}function A(){a.forEach((function(e){if(e.__P)try{e.__H.__h.forEach(q),e.__H.__h.forEach(T),e.__H.__h=[]}catch(t){e.__H.__h=[],u.options.__e(t,e.__v)}})),a=[]}u.options.__b=function(e){i=null,s&&s(e)},u.options.__r=function(e){l&&l(e),r=0;var t=(i=e.__c).__H;t&&(t.__h.forEach(q),t.__h.forEach(T),t.__h=[])},u.options.diffed=function(e){f&&f(e);var t=e.__c;t&&t.__H&&t.__H.__h.length&&(1!==a.push(t)&&o===u.options.requestAnimationFrame||((o=u.options.requestAnimationFrame)||function(e){var t,n=function(){clearTimeout(r),C&&cancelAnimationFrame(t),setTimeout(e)},r=setTimeout(n,100);C&&(t=requestAnimationFrame(n))})(A)),i=void 0},u.options.__c=function(e,t){t.some((function(e){try{e.__h.forEach(q),e.__h=e.__h.filter((function(e){return!e.__||T(e)}))}catch(n){t.some((function(e){e.__h&&(e.__h=[])})),t=[],u.options.__e(n,e.__v)}})),p&&p(e,t)},u.options.unmount=function(e){d&&d(e);var t=e.__c;if(t&&t.__H)try{t.__H.__.forEach(q)}catch(e){u.options.__e(e,t.__v)}};var C="function"==typeof requestAnimationFrame;function q(e){var t=i;"function"==typeof e.__c&&e.__c(),i=t}function T(e){var t=i;e.__c=e.__(),i=t}function O(e,t){return!e||e.length!==t.length||t.some((function(t,n){return t!==e[n]}))}function F(e,t){return"function"==typeof t?t(e):t}},QfWi:function(e,t,n){"use strict";n.r(t);var r=n("HteQ"),i=n("QRet"),o=n("Y3FI"),u=n("ox/y"),c=n("tP7B"),a=n.n(c),s=function(e){var t=e.markdown,n=e.setMarkdown;return Object(r.h)("section",null,Object(r.h)("h1",null,"Huge link"),Object(r.h)("p",null,"A minimalist serverless publishing tool that allows you to create markdown posts and push them to the Web by sharing the link."),Object(r.h)("textarea",{class:a.a.textarea,placeholder:"Write a post using markdown and click Preview",onInput:function(e){var t=e.target;return n(t.value)}},t),Object(r.h)("nav",null,Object(r.h)(u.Link,{href:"/preview"},"Preview")))},l=n("LO0j"),f=n.n(l),p=n("D+jO"),d=function(e){return null},h=function(e){return e},m=function(e){return Object(r.h)("header",null,Object(r.h)("nav",null,Object(r.h)("ul",null,Object(r.h)("li",null,Object(r.h)(u.Link,{href:"/"},"Edit")),Object(r.h)("li",null,Object(r.h)(u.Link,{href:"/p/"+e},"Publish")))))},g=function(e){var t=e.mode,n=e.payload,i=e.setMarkdown,o={preview:[m,h,p.compressToEncodedURIComponent],post:[d,p.decompressFromEncodedURIComponent,h]}[t],c=o[0],a=o[1],s=o[2],l=a(n),g=s(n);return i(l),Object(r.h)("section",null,c(g),Object(r.h)("article",null,Object(r.h)(f.a,null,l)),Object(r.h)(u.Link,{href:"/"},"Edit post"))};n("pRls"),n("GFNa");function v(){return(v=Object.assign||function(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=t.renderers[e.type];e.position||(e.position={start:{line:null,column:null,offset:null},end:{line:null,column:null,offset:null}});var s=e.position.start,l=[e.type,s.line,s.column,i].join("-");if(!o.isValidElementType(a))throw new Error("Renderer for type `".concat(e.type,"` not defined or is not renderable"));var f=c(e,l,t,a,n,i);return r.createElement(a,f,f.children||p()||void 0);function p(){return e.children&&e.children.map((function(n,r){return u(n,t,{node:e,props:f},r)}))}}function c(e,t,n,o,c,l){var f,p={key:t},d="string"==typeof o||o===r.Fragment;n.sourcePos&&e.position&&(p["data-sourcepos"]=[(f=e.position).start.line,":",f.start.column,"-",f.end.line,":",f.end.column].map(String).join("")),n.rawSourcePos&&!d&&(p.sourcePosition=e.position),n.includeNodeIndex&&c.node&&c.node.children&&!d&&(p.index=c.node.children.indexOf(e),p.parentChildCount=c.node.children.length);var h=null!==e.identifier&&void 0!==e.identifier?n.definitions[e.identifier.toUpperCase()]||{}:null;switch(e.type){case"root":a(p,{className:n.className});break;case"text":p.nodeKey=t,p.children=e.value;break;case"heading":p.level=e.depth;break;case"list":p.start=e.start,p.ordered=e.ordered,p.spread=e.spread,p.depth=e.depth;break;case"listItem":p.checked=e.checked,p.spread=e.spread,p.ordered=e.ordered,p.index=e.index,p.children=function(e,t){return(t&&t.node?function(e){var t=e.children,n=e.spread,r=-1;for(;!n&&++r1:t}e.exports=u},Y3FI:function(e,t,n){"use strict";n.r(t),n.d(t,"subscribers",(function(){return d})),n.d(t,"getCurrentUrl",(function(){return m})),n.d(t,"route",(function(){return g})),n.d(t,"Router",(function(){return w})),n.d(t,"Route",(function(){return S})),n.d(t,"Link",(function(){return E})),n.d(t,"exec",(function(){return u}));var r=n("HteQ"),i={};function o(e,t){for(var n in t)e[n]=t[n];return e}function u(e,t,n){var r,o=/(?:\?([^#]*))?(#.*)?$/,u=e.match(o),c={};if(u&&u[1])for(var a=u[1].split("&"),l=0;lt.rank?-1:e.index-t.index}function a(e,t){return e.index=t,e.rank=function(e){return e.props.default?0:(t=e.props.path,s(t).map(l).join(""));var t}(e),e.props}function s(e){return e.replace(/(^\/+|\/+$)/g,"").split("/")}function l(e){return":"==e.charAt(0)?1+"*+?".indexOf(e.charAt(e.length-1))||4:5}var f=null,p=[],d=[],h={};function m(){var e;return""+((e=f&&f.location?f.location:f&&f.getCurrentLocation?f.getCurrentLocation():"undefined"!=typeof location?location:h).pathname||"")+(e.search||"")}function g(e,t){return void 0===t&&(t=!1),"string"!=typeof e&&e.url&&(t=e.replace,e=e.url),function(e){for(var t=p.length;t--;)if(p[t].canRoute(e))return!0;return!1}(e)&&function(e,t){void 0===t&&(t="push"),f&&f[t]?f[t](e):"undefined"!=typeof history&&history[t+"State"]&&history[t+"State"](null,null,e)}(e,t?"replace":"push"),v(e)}function v(e){for(var t=!1,n=0;n0},t.prototype.routeTo=function(e){this.setState({url:e});var t=this.canRoute(e);return this.updating||this.forceUpdate(),t},t.prototype.componentWillMount=function(){p.push(this),this.updating=!0},t.prototype.componentDidMount=function(){var e=this;f&&(this.unlisten=f.listen((function(t){e.routeTo(""+(t.pathname||"")+(t.search||""))}))),this.updating=!1},t.prototype.componentWillUnmount=function(){"function"==typeof this.unlisten&&this.unlisten(),p.splice(p.indexOf(this),1)},t.prototype.componentWillUpdate=function(){this.updating=!0},t.prototype.componentDidUpdate=function(){this.updating=!1},t.prototype.getMatchingChildren=function(e,t,n){return e.filter(a).sort(c).map((function(e){var i=u(t,e.props.path,e.props);if(i){if(!1!==n){var c={url:t,matches:i};return o(c,i),delete c.ref,delete c.key,Object(r.cloneElement)(e,c)}return e}})).filter(Boolean)},t.prototype.render=function(e,t){var n=e.children,i=e.onChange,o=t.url,u=this.getMatchingChildren(Object(r.toChildArray)(n),o,!0),c=u[0]||null,a=this.previousUrl;return o!==a&&(this.previousUrl=o,"function"==typeof i&&i({router:this,url:o,previous:a,active:u,current:c})),c},t}(r.Component),E=function(e){return Object(r.createElement)("a",o({onClick:b},e))},S=function(e){return Object(r.createElement)(e.component,e)};w.subscribers=d,w.getCurrentUrl=m,w.route=g,w.Router=w,w.Route=S,w.Link=E,w.exec=u,t.default=w},YT9o:function(e,t,n){"use strict";var r=n("KSUl");e.exports=function(e,t,n,i){var o,u=e.length,c=0;if(t=t<0?-t>u?0:u+t:t>u?u:t,n=n>0?n:0,i.length<1e4)(o=Array.from(i)).unshift(t,n),r.apply(e,o);else for(n&&r.apply(e,[t,n]);c-1?void 0:4)(r)}}},exit:function(e){e.exit(this.containerState.type)}},f={tokenize:function(e,t,n){var o=this;return i(e,(function(e){return r(e)||!c(o.events,"listItemPrefixWhitespace")?n(e):t(e)}),"listItemPrefixWhitespace",o.parser.constructs.disable.null.indexOf("codeIndented")>-1?void 0:5)},partial:!0},p={tokenize:function(e,t,n){var r=this;return i(e,(function(e){return c(r.events,"listItemIndent")===r.containerState.size?t(e):n(e)}),"listItemIndent",r.containerState.size+1)},partial:!0};e.exports=l},a7DW:function(e,t,n){"use strict";var r=n("4kIE"),i=n("pMvH");e.exports=function(e,t,n,o,u,c){var a,s=this,l=0;return function(t){return e.enter(o),e.enter(u),e.consume(t),e.exit(u),e.enter(c),f};function f(i){return null===i||91===i||93===i&&!a||94===i&&!l&&"_hiddenFootnoteSupport"in s.parser.constructs||l>999?n(i):93===i?(e.exit(c),e.enter(u),e.consume(i),e.exit(u),e.exit(o),t):r(i)?(e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),f):(e.enter("chunkString",{contentType:"string"}),p(i))}function p(t){return null===t||91===t||93===t||r(t)||l++>999?(e.exit("chunkString"),f(t)):(e.consume(t),a=a||!i(t),92===t?d:p)}function d(t){return 91===t||92===t||93===t?(e.consume(t),l++,p):p(t)}}},ajvC:function(e,t,n){"use strict";e.exports=function(e){if(e)throw e}},bhct:function(e,t,n){"use strict";var r=n("h+A4");e.exports=function(e){return!!i.call(r,e)&&r[e]};var i={}.hasOwnProperty},bpHb:function(e,t,n){"use strict";e.exports=function(e,t){return e.column+=t,e.offset+=t,e._bufferIndex+=t,e}},cTMR:function(e,t,n){"use strict";var r=Object.prototype.toString;e.exports=function(e){var t;return"[object Object]"===r.call(e)&&(null===(t=Object.getPrototypeOf(e))||t===Object.getPrototypeOf({}))}},dY77:function(e,t,n){"use strict";var r=n("Iacx");e.exports=o,o.wrap=r;var i=[].slice;function o(){var e=[],t={run:function(){var t=-1,n=i.call(arguments,0,-1),o=arguments[arguments.length-1];if("function"!=typeof o)throw new Error("Expected function as last argument, not "+o);function u(c){var a=e[++t],s=i.call(arguments,0),l=s.slice(1),f=n.length,p=-1;if(c)o(c);else{for(;++p$/i,o=/^<(\/?)([a-z]+)\s*>$/;e.exports=function(e){var t,n;return r(e,"html",(function(e,r,u){n!==u&&(t=[],n=u);var c=function(e){var t=e.value.match(i);return!!t&&t[1]}(e);if(c)return u.children.splice(r,1,{type:"virtualHtml",tag:c,position:e.position}),!0;var a=function(e,t){var n=e.value.match(o);return!!n&&{tag:n[2],opening:!n[1],node:e}}(e);if(!a)return!0;var s=function(e,t){var n=e.length;for(;n--;)if(e[n].tag===t)return e.splice(n,1)[0];return!1}(t,a.tag);return s?u.children.splice(r,0,function(e,t,n){var r=n.children.indexOf(e.node),i=n.children.indexOf(t.node),o=n.children.splice(r,i-r+1).slice(1,-1);return{type:"virtualHtml",children:o,tag:e.tag,position:{start:e.node.position.start,end:t.node.position.end,indent:[]}}}(a,s,u)):a.opening||t.push(a),!0}),!0),e}},"h+A4":function(e){e.exports=JSON.parse('{"AEli":"Æ","AElig":"Æ","AM":"&","AMP":"&","Aacut":"Á","Aacute":"Á","Abreve":"Ă","Acir":"Â","Acirc":"Â","Acy":"А","Afr":"𝔄","Agrav":"À","Agrave":"À","Alpha":"Α","Amacr":"Ā","And":"⩓","Aogon":"Ą","Aopf":"𝔸","ApplyFunction":"","Arin":"Å","Aring":"Å","Ascr":"𝒜","Assign":"≔","Atild":"Ã","Atilde":"Ã","Aum":"Ä","Auml":"Ä","Backslash":"∖","Barv":"⫧","Barwed":"⌆","Bcy":"Б","Because":"∵","Bernoullis":"ℬ","Beta":"Β","Bfr":"𝔅","Bopf":"𝔹","Breve":"˘","Bscr":"ℬ","Bumpeq":"≎","CHcy":"Ч","COP":"©","COPY":"©","Cacute":"Ć","Cap":"⋒","CapitalDifferentialD":"ⅅ","Cayleys":"ℭ","Ccaron":"Č","Ccedi":"Ç","Ccedil":"Ç","Ccirc":"Ĉ","Cconint":"∰","Cdot":"Ċ","Cedilla":"¸","CenterDot":"·","Cfr":"ℭ","Chi":"Χ","CircleDot":"⊙","CircleMinus":"⊖","CirclePlus":"⊕","CircleTimes":"⊗","ClockwiseContourIntegral":"∲","CloseCurlyDoubleQuote":"”","CloseCurlyQuote":"’","Colon":"∷","Colone":"⩴","Congruent":"≡","Conint":"∯","ContourIntegral":"∮","Copf":"ℂ","Coproduct":"∐","CounterClockwiseContourIntegral":"∳","Cross":"⨯","Cscr":"𝒞","Cup":"⋓","CupCap":"≍","DD":"ⅅ","DDotrahd":"⤑","DJcy":"Ђ","DScy":"Ѕ","DZcy":"Џ","Dagger":"‡","Darr":"↡","Dashv":"⫤","Dcaron":"Ď","Dcy":"Д","Del":"∇","Delta":"Δ","Dfr":"𝔇","DiacriticalAcute":"´","DiacriticalDot":"˙","DiacriticalDoubleAcute":"˝","DiacriticalGrave":"`","DiacriticalTilde":"˜","Diamond":"⋄","DifferentialD":"ⅆ","Dopf":"𝔻","Dot":"¨","DotDot":"⃜","DotEqual":"≐","DoubleContourIntegral":"∯","DoubleDot":"¨","DoubleDownArrow":"⇓","DoubleLeftArrow":"⇐","DoubleLeftRightArrow":"⇔","DoubleLeftTee":"⫤","DoubleLongLeftArrow":"⟸","DoubleLongLeftRightArrow":"⟺","DoubleLongRightArrow":"⟹","DoubleRightArrow":"⇒","DoubleRightTee":"⊨","DoubleUpArrow":"⇑","DoubleUpDownArrow":"⇕","DoubleVerticalBar":"∥","DownArrow":"↓","DownArrowBar":"⤓","DownArrowUpArrow":"⇵","DownBreve":"̑","DownLeftRightVector":"⥐","DownLeftTeeVector":"⥞","DownLeftVector":"↽","DownLeftVectorBar":"⥖","DownRightTeeVector":"⥟","DownRightVector":"⇁","DownRightVectorBar":"⥗","DownTee":"⊤","DownTeeArrow":"↧","Downarrow":"⇓","Dscr":"𝒟","Dstrok":"Đ","ENG":"Ŋ","ET":"Ð","ETH":"Ð","Eacut":"É","Eacute":"É","Ecaron":"Ě","Ecir":"Ê","Ecirc":"Ê","Ecy":"Э","Edot":"Ė","Efr":"𝔈","Egrav":"È","Egrave":"È","Element":"∈","Emacr":"Ē","EmptySmallSquare":"◻","EmptyVerySmallSquare":"▫","Eogon":"Ę","Eopf":"𝔼","Epsilon":"Ε","Equal":"⩵","EqualTilde":"≂","Equilibrium":"⇌","Escr":"ℰ","Esim":"⩳","Eta":"Η","Eum":"Ë","Euml":"Ë","Exists":"∃","ExponentialE":"ⅇ","Fcy":"Ф","Ffr":"𝔉","FilledSmallSquare":"◼","FilledVerySmallSquare":"▪","Fopf":"𝔽","ForAll":"∀","Fouriertrf":"ℱ","Fscr":"ℱ","GJcy":"Ѓ","G":">","GT":">","Gamma":"Γ","Gammad":"Ϝ","Gbreve":"Ğ","Gcedil":"Ģ","Gcirc":"Ĝ","Gcy":"Г","Gdot":"Ġ","Gfr":"𝔊","Gg":"⋙","Gopf":"𝔾","GreaterEqual":"≥","GreaterEqualLess":"⋛","GreaterFullEqual":"≧","GreaterGreater":"⪢","GreaterLess":"≷","GreaterSlantEqual":"⩾","GreaterTilde":"≳","Gscr":"𝒢","Gt":"≫","HARDcy":"Ъ","Hacek":"ˇ","Hat":"^","Hcirc":"Ĥ","Hfr":"ℌ","HilbertSpace":"ℋ","Hopf":"ℍ","HorizontalLine":"─","Hscr":"ℋ","Hstrok":"Ħ","HumpDownHump":"≎","HumpEqual":"≏","IEcy":"Е","IJlig":"IJ","IOcy":"Ё","Iacut":"Í","Iacute":"Í","Icir":"Î","Icirc":"Î","Icy":"И","Idot":"İ","Ifr":"ℑ","Igrav":"Ì","Igrave":"Ì","Im":"ℑ","Imacr":"Ī","ImaginaryI":"ⅈ","Implies":"⇒","Int":"∬","Integral":"∫","Intersection":"⋂","InvisibleComma":"","InvisibleTimes":"","Iogon":"Į","Iopf":"𝕀","Iota":"Ι","Iscr":"ℐ","Itilde":"Ĩ","Iukcy":"І","Ium":"Ï","Iuml":"Ï","Jcirc":"Ĵ","Jcy":"Й","Jfr":"𝔍","Jopf":"𝕁","Jscr":"𝒥","Jsercy":"Ј","Jukcy":"Є","KHcy":"Х","KJcy":"Ќ","Kappa":"Κ","Kcedil":"Ķ","Kcy":"К","Kfr":"𝔎","Kopf":"𝕂","Kscr":"𝒦","LJcy":"Љ","L":"<","LT":"<","Lacute":"Ĺ","Lambda":"Λ","Lang":"⟪","Laplacetrf":"ℒ","Larr":"↞","Lcaron":"Ľ","Lcedil":"Ļ","Lcy":"Л","LeftAngleBracket":"⟨","LeftArrow":"←","LeftArrowBar":"⇤","LeftArrowRightArrow":"⇆","LeftCeiling":"⌈","LeftDoubleBracket":"⟦","LeftDownTeeVector":"⥡","LeftDownVector":"⇃","LeftDownVectorBar":"⥙","LeftFloor":"⌊","LeftRightArrow":"↔","LeftRightVector":"⥎","LeftTee":"⊣","LeftTeeArrow":"↤","LeftTeeVector":"⥚","LeftTriangle":"⊲","LeftTriangleBar":"⧏","LeftTriangleEqual":"⊴","LeftUpDownVector":"⥑","LeftUpTeeVector":"⥠","LeftUpVector":"↿","LeftUpVectorBar":"⥘","LeftVector":"↼","LeftVectorBar":"⥒","Leftarrow":"⇐","Leftrightarrow":"⇔","LessEqualGreater":"⋚","LessFullEqual":"≦","LessGreater":"≶","LessLess":"⪡","LessSlantEqual":"⩽","LessTilde":"≲","Lfr":"𝔏","Ll":"⋘","Lleftarrow":"⇚","Lmidot":"Ŀ","LongLeftArrow":"⟵","LongLeftRightArrow":"⟷","LongRightArrow":"⟶","Longleftarrow":"⟸","Longleftrightarrow":"⟺","Longrightarrow":"⟹","Lopf":"𝕃","LowerLeftArrow":"↙","LowerRightArrow":"↘","Lscr":"ℒ","Lsh":"↰","Lstrok":"Ł","Lt":"≪","Map":"⤅","Mcy":"М","MediumSpace":" ","Mellintrf":"ℳ","Mfr":"𝔐","MinusPlus":"∓","Mopf":"𝕄","Mscr":"ℳ","Mu":"Μ","NJcy":"Њ","Nacute":"Ń","Ncaron":"Ň","Ncedil":"Ņ","Ncy":"Н","NegativeMediumSpace":"","NegativeThickSpace":"","NegativeThinSpace":"","NegativeVeryThinSpace":"","NestedGreaterGreater":"≫","NestedLessLess":"≪","NewLine":"\\n","Nfr":"𝔑","NoBreak":"","NonBreakingSpace":" ","Nopf":"ℕ","Not":"⫬","NotCongruent":"≢","NotCupCap":"≭","NotDoubleVerticalBar":"∦","NotElement":"∉","NotEqual":"≠","NotEqualTilde":"≂̸","NotExists":"∄","NotGreater":"≯","NotGreaterEqual":"≱","NotGreaterFullEqual":"≧̸","NotGreaterGreater":"≫̸","NotGreaterLess":"≹","NotGreaterSlantEqual":"⩾̸","NotGreaterTilde":"≵","NotHumpDownHump":"≎̸","NotHumpEqual":"≏̸","NotLeftTriangle":"⋪","NotLeftTriangleBar":"⧏̸","NotLeftTriangleEqual":"⋬","NotLess":"≮","NotLessEqual":"≰","NotLessGreater":"≸","NotLessLess":"≪̸","NotLessSlantEqual":"⩽̸","NotLessTilde":"≴","NotNestedGreaterGreater":"⪢̸","NotNestedLessLess":"⪡̸","NotPrecedes":"⊀","NotPrecedesEqual":"⪯̸","NotPrecedesSlantEqual":"⋠","NotReverseElement":"∌","NotRightTriangle":"⋫","NotRightTriangleBar":"⧐̸","NotRightTriangleEqual":"⋭","NotSquareSubset":"⊏̸","NotSquareSubsetEqual":"⋢","NotSquareSuperset":"⊐̸","NotSquareSupersetEqual":"⋣","NotSubset":"⊂⃒","NotSubsetEqual":"⊈","NotSucceeds":"⊁","NotSucceedsEqual":"⪰̸","NotSucceedsSlantEqual":"⋡","NotSucceedsTilde":"≿̸","NotSuperset":"⊃⃒","NotSupersetEqual":"⊉","NotTilde":"≁","NotTildeEqual":"≄","NotTildeFullEqual":"≇","NotTildeTilde":"≉","NotVerticalBar":"∤","Nscr":"𝒩","Ntild":"Ñ","Ntilde":"Ñ","Nu":"Ν","OElig":"Œ","Oacut":"Ó","Oacute":"Ó","Ocir":"Ô","Ocirc":"Ô","Ocy":"О","Odblac":"Ő","Ofr":"𝔒","Ograv":"Ò","Ograve":"Ò","Omacr":"Ō","Omega":"Ω","Omicron":"Ο","Oopf":"𝕆","OpenCurlyDoubleQuote":"“","OpenCurlyQuote":"‘","Or":"⩔","Oscr":"𝒪","Oslas":"Ø","Oslash":"Ø","Otild":"Õ","Otilde":"Õ","Otimes":"⨷","Oum":"Ö","Ouml":"Ö","OverBar":"‾","OverBrace":"⏞","OverBracket":"⎴","OverParenthesis":"⏜","PartialD":"∂","Pcy":"П","Pfr":"𝔓","Phi":"Φ","Pi":"Π","PlusMinus":"±","Poincareplane":"ℌ","Popf":"ℙ","Pr":"⪻","Precedes":"≺","PrecedesEqual":"⪯","PrecedesSlantEqual":"≼","PrecedesTilde":"≾","Prime":"″","Product":"∏","Proportion":"∷","Proportional":"∝","Pscr":"𝒫","Psi":"Ψ","QUO":"\\"","QUOT":"\\"","Qfr":"𝔔","Qopf":"ℚ","Qscr":"𝒬","RBarr":"⤐","RE":"®","REG":"®","Racute":"Ŕ","Rang":"⟫","Rarr":"↠","Rarrtl":"⤖","Rcaron":"Ř","Rcedil":"Ŗ","Rcy":"Р","Re":"ℜ","ReverseElement":"∋","ReverseEquilibrium":"⇋","ReverseUpEquilibrium":"⥯","Rfr":"ℜ","Rho":"Ρ","RightAngleBracket":"⟩","RightArrow":"→","RightArrowBar":"⇥","RightArrowLeftArrow":"⇄","RightCeiling":"⌉","RightDoubleBracket":"⟧","RightDownTeeVector":"⥝","RightDownVector":"⇂","RightDownVectorBar":"⥕","RightFloor":"⌋","RightTee":"⊢","RightTeeArrow":"↦","RightTeeVector":"⥛","RightTriangle":"⊳","RightTriangleBar":"⧐","RightTriangleEqual":"⊵","RightUpDownVector":"⥏","RightUpTeeVector":"⥜","RightUpVector":"↾","RightUpVectorBar":"⥔","RightVector":"⇀","RightVectorBar":"⥓","Rightarrow":"⇒","Ropf":"ℝ","RoundImplies":"⥰","Rrightarrow":"⇛","Rscr":"ℛ","Rsh":"↱","RuleDelayed":"⧴","SHCHcy":"Щ","SHcy":"Ш","SOFTcy":"Ь","Sacute":"Ś","Sc":"⪼","Scaron":"Š","Scedil":"Ş","Scirc":"Ŝ","Scy":"С","Sfr":"𝔖","ShortDownArrow":"↓","ShortLeftArrow":"←","ShortRightArrow":"→","ShortUpArrow":"↑","Sigma":"Σ","SmallCircle":"∘","Sopf":"𝕊","Sqrt":"√","Square":"□","SquareIntersection":"⊓","SquareSubset":"⊏","SquareSubsetEqual":"⊑","SquareSuperset":"⊐","SquareSupersetEqual":"⊒","SquareUnion":"⊔","Sscr":"𝒮","Star":"⋆","Sub":"⋐","Subset":"⋐","SubsetEqual":"⊆","Succeeds":"≻","SucceedsEqual":"⪰","SucceedsSlantEqual":"≽","SucceedsTilde":"≿","SuchThat":"∋","Sum":"∑","Sup":"⋑","Superset":"⊃","SupersetEqual":"⊇","Supset":"⋑","THOR":"Þ","THORN":"Þ","TRADE":"™","TSHcy":"Ћ","TScy":"Ц","Tab":"\\t","Tau":"Τ","Tcaron":"Ť","Tcedil":"Ţ","Tcy":"Т","Tfr":"𝔗","Therefore":"∴","Theta":"Θ","ThickSpace":" ","ThinSpace":" ","Tilde":"∼","TildeEqual":"≃","TildeFullEqual":"≅","TildeTilde":"≈","Topf":"𝕋","TripleDot":"⃛","Tscr":"𝒯","Tstrok":"Ŧ","Uacut":"Ú","Uacute":"Ú","Uarr":"↟","Uarrocir":"⥉","Ubrcy":"Ў","Ubreve":"Ŭ","Ucir":"Û","Ucirc":"Û","Ucy":"У","Udblac":"Ű","Ufr":"𝔘","Ugrav":"Ù","Ugrave":"Ù","Umacr":"Ū","UnderBar":"_","UnderBrace":"⏟","UnderBracket":"⎵","UnderParenthesis":"⏝","Union":"⋃","UnionPlus":"⊎","Uogon":"Ų","Uopf":"𝕌","UpArrow":"↑","UpArrowBar":"⤒","UpArrowDownArrow":"⇅","UpDownArrow":"↕","UpEquilibrium":"⥮","UpTee":"⊥","UpTeeArrow":"↥","Uparrow":"⇑","Updownarrow":"⇕","UpperLeftArrow":"↖","UpperRightArrow":"↗","Upsi":"ϒ","Upsilon":"Υ","Uring":"Ů","Uscr":"𝒰","Utilde":"Ũ","Uum":"Ü","Uuml":"Ü","VDash":"⊫","Vbar":"⫫","Vcy":"В","Vdash":"⊩","Vdashl":"⫦","Vee":"⋁","Verbar":"‖","Vert":"‖","VerticalBar":"∣","VerticalLine":"|","VerticalSeparator":"❘","VerticalTilde":"≀","VeryThinSpace":" ","Vfr":"𝔙","Vopf":"𝕍","Vscr":"𝒱","Vvdash":"⊪","Wcirc":"Ŵ","Wedge":"⋀","Wfr":"𝔚","Wopf":"𝕎","Wscr":"𝒲","Xfr":"𝔛","Xi":"Ξ","Xopf":"𝕏","Xscr":"𝒳","YAcy":"Я","YIcy":"Ї","YUcy":"Ю","Yacut":"Ý","Yacute":"Ý","Ycirc":"Ŷ","Ycy":"Ы","Yfr":"𝔜","Yopf":"𝕐","Yscr":"𝒴","Yuml":"Ÿ","ZHcy":"Ж","Zacute":"Ź","Zcaron":"Ž","Zcy":"З","Zdot":"Ż","ZeroWidthSpace":"","Zeta":"Ζ","Zfr":"ℨ","Zopf":"ℤ","Zscr":"𝒵","aacut":"á","aacute":"á","abreve":"ă","ac":"∾","acE":"∾̳","acd":"∿","acir":"â","acirc":"â","acut":"´","acute":"´","acy":"а","aeli":"æ","aelig":"æ","af":"","afr":"𝔞","agrav":"à","agrave":"à","alefsym":"ℵ","aleph":"ℵ","alpha":"α","amacr":"ā","amalg":"⨿","am":"&","amp":"&","and":"∧","andand":"⩕","andd":"⩜","andslope":"⩘","andv":"⩚","ang":"∠","ange":"⦤","angle":"∠","angmsd":"∡","angmsdaa":"⦨","angmsdab":"⦩","angmsdac":"⦪","angmsdad":"⦫","angmsdae":"⦬","angmsdaf":"⦭","angmsdag":"⦮","angmsdah":"⦯","angrt":"∟","angrtvb":"⊾","angrtvbd":"⦝","angsph":"∢","angst":"Å","angzarr":"⍼","aogon":"ą","aopf":"𝕒","ap":"≈","apE":"⩰","apacir":"⩯","ape":"≊","apid":"≋","apos":"\'","approx":"≈","approxeq":"≊","arin":"å","aring":"å","ascr":"𝒶","ast":"*","asymp":"≈","asympeq":"≍","atild":"ã","atilde":"ã","aum":"ä","auml":"ä","awconint":"∳","awint":"⨑","bNot":"⫭","backcong":"≌","backepsilon":"϶","backprime":"‵","backsim":"∽","backsimeq":"⋍","barvee":"⊽","barwed":"⌅","barwedge":"⌅","bbrk":"⎵","bbrktbrk":"⎶","bcong":"≌","bcy":"б","bdquo":"„","becaus":"∵","because":"∵","bemptyv":"⦰","bepsi":"϶","bernou":"ℬ","beta":"β","beth":"ℶ","between":"≬","bfr":"𝔟","bigcap":"⋂","bigcirc":"◯","bigcup":"⋃","bigodot":"⨀","bigoplus":"⨁","bigotimes":"⨂","bigsqcup":"⨆","bigstar":"★","bigtriangledown":"▽","bigtriangleup":"△","biguplus":"⨄","bigvee":"⋁","bigwedge":"⋀","bkarow":"⤍","blacklozenge":"⧫","blacksquare":"▪","blacktriangle":"▴","blacktriangledown":"▾","blacktriangleleft":"◂","blacktriangleright":"▸","blank":"␣","blk12":"▒","blk14":"░","blk34":"▓","block":"█","bne":"=⃥","bnequiv":"≡⃥","bnot":"⌐","bopf":"𝕓","bot":"⊥","bottom":"⊥","bowtie":"⋈","boxDL":"╗","boxDR":"╔","boxDl":"╖","boxDr":"╓","boxH":"═","boxHD":"╦","boxHU":"╩","boxHd":"╤","boxHu":"╧","boxUL":"╝","boxUR":"╚","boxUl":"╜","boxUr":"╙","boxV":"║","boxVH":"╬","boxVL":"╣","boxVR":"╠","boxVh":"╫","boxVl":"╢","boxVr":"╟","boxbox":"⧉","boxdL":"╕","boxdR":"╒","boxdl":"┐","boxdr":"┌","boxh":"─","boxhD":"╥","boxhU":"╨","boxhd":"┬","boxhu":"┴","boxminus":"⊟","boxplus":"⊞","boxtimes":"⊠","boxuL":"╛","boxuR":"╘","boxul":"┘","boxur":"└","boxv":"│","boxvH":"╪","boxvL":"╡","boxvR":"╞","boxvh":"┼","boxvl":"┤","boxvr":"├","bprime":"‵","breve":"˘","brvba":"¦","brvbar":"¦","bscr":"𝒷","bsemi":"⁏","bsim":"∽","bsime":"⋍","bsol":"\\\\","bsolb":"⧅","bsolhsub":"⟈","bull":"•","bullet":"•","bump":"≎","bumpE":"⪮","bumpe":"≏","bumpeq":"≏","cacute":"ć","cap":"∩","capand":"⩄","capbrcup":"⩉","capcap":"⩋","capcup":"⩇","capdot":"⩀","caps":"∩︀","caret":"⁁","caron":"ˇ","ccaps":"⩍","ccaron":"č","ccedi":"ç","ccedil":"ç","ccirc":"ĉ","ccups":"⩌","ccupssm":"⩐","cdot":"ċ","cedi":"¸","cedil":"¸","cemptyv":"⦲","cen":"¢","cent":"¢","centerdot":"·","cfr":"𝔠","chcy":"ч","check":"✓","checkmark":"✓","chi":"χ","cir":"○","cirE":"⧃","circ":"ˆ","circeq":"≗","circlearrowleft":"↺","circlearrowright":"↻","circledR":"®","circledS":"Ⓢ","circledast":"⊛","circledcirc":"⊚","circleddash":"⊝","cire":"≗","cirfnint":"⨐","cirmid":"⫯","cirscir":"⧂","clubs":"♣","clubsuit":"♣","colon":":","colone":"≔","coloneq":"≔","comma":",","commat":"@","comp":"∁","compfn":"∘","complement":"∁","complexes":"ℂ","cong":"≅","congdot":"⩭","conint":"∮","copf":"𝕔","coprod":"∐","cop":"©","copy":"©","copysr":"℗","crarr":"↵","cross":"✗","cscr":"𝒸","csub":"⫏","csube":"⫑","csup":"⫐","csupe":"⫒","ctdot":"⋯","cudarrl":"⤸","cudarrr":"⤵","cuepr":"⋞","cuesc":"⋟","cularr":"↶","cularrp":"⤽","cup":"∪","cupbrcap":"⩈","cupcap":"⩆","cupcup":"⩊","cupdot":"⊍","cupor":"⩅","cups":"∪︀","curarr":"↷","curarrm":"⤼","curlyeqprec":"⋞","curlyeqsucc":"⋟","curlyvee":"⋎","curlywedge":"⋏","curre":"¤","curren":"¤","curvearrowleft":"↶","curvearrowright":"↷","cuvee":"⋎","cuwed":"⋏","cwconint":"∲","cwint":"∱","cylcty":"⌭","dArr":"⇓","dHar":"⥥","dagger":"†","daleth":"ℸ","darr":"↓","dash":"‐","dashv":"⊣","dbkarow":"⤏","dblac":"˝","dcaron":"ď","dcy":"д","dd":"ⅆ","ddagger":"‡","ddarr":"⇊","ddotseq":"⩷","de":"°","deg":"°","delta":"δ","demptyv":"⦱","dfisht":"⥿","dfr":"𝔡","dharl":"⇃","dharr":"⇂","diam":"⋄","diamond":"⋄","diamondsuit":"♦","diams":"♦","die":"¨","digamma":"ϝ","disin":"⋲","div":"÷","divid":"÷","divide":"÷","divideontimes":"⋇","divonx":"⋇","djcy":"ђ","dlcorn":"⌞","dlcrop":"⌍","dollar":"$","dopf":"𝕕","dot":"˙","doteq":"≐","doteqdot":"≑","dotminus":"∸","dotplus":"∔","dotsquare":"⊡","doublebarwedge":"⌆","downarrow":"↓","downdownarrows":"⇊","downharpoonleft":"⇃","downharpoonright":"⇂","drbkarow":"⤐","drcorn":"⌟","drcrop":"⌌","dscr":"𝒹","dscy":"ѕ","dsol":"⧶","dstrok":"đ","dtdot":"⋱","dtri":"▿","dtrif":"▾","duarr":"⇵","duhar":"⥯","dwangle":"⦦","dzcy":"џ","dzigrarr":"⟿","eDDot":"⩷","eDot":"≑","eacut":"é","eacute":"é","easter":"⩮","ecaron":"ě","ecir":"ê","ecirc":"ê","ecolon":"≕","ecy":"э","edot":"ė","ee":"ⅇ","efDot":"≒","efr":"𝔢","eg":"⪚","egrav":"è","egrave":"è","egs":"⪖","egsdot":"⪘","el":"⪙","elinters":"⏧","ell":"ℓ","els":"⪕","elsdot":"⪗","emacr":"ē","empty":"∅","emptyset":"∅","emptyv":"∅","emsp13":" ","emsp14":" ","emsp":" ","eng":"ŋ","ensp":" ","eogon":"ę","eopf":"𝕖","epar":"⋕","eparsl":"⧣","eplus":"⩱","epsi":"ε","epsilon":"ε","epsiv":"ϵ","eqcirc":"≖","eqcolon":"≕","eqsim":"≂","eqslantgtr":"⪖","eqslantless":"⪕","equals":"=","equest":"≟","equiv":"≡","equivDD":"⩸","eqvparsl":"⧥","erDot":"≓","erarr":"⥱","escr":"ℯ","esdot":"≐","esim":"≂","eta":"η","et":"ð","eth":"ð","eum":"ë","euml":"ë","euro":"€","excl":"!","exist":"∃","expectation":"ℰ","exponentiale":"ⅇ","fallingdotseq":"≒","fcy":"ф","female":"♀","ffilig":"ffi","fflig":"ff","ffllig":"ffl","ffr":"𝔣","filig":"fi","fjlig":"fj","flat":"♭","fllig":"fl","fltns":"▱","fnof":"ƒ","fopf":"𝕗","forall":"∀","fork":"⋔","forkv":"⫙","fpartint":"⨍","frac1":"¼","frac12":"½","frac13":"⅓","frac14":"¼","frac15":"⅕","frac16":"⅙","frac18":"⅛","frac23":"⅔","frac25":"⅖","frac3":"¾","frac34":"¾","frac35":"⅗","frac38":"⅜","frac45":"⅘","frac56":"⅚","frac58":"⅝","frac78":"⅞","frasl":"⁄","frown":"⌢","fscr":"𝒻","gE":"≧","gEl":"⪌","gacute":"ǵ","gamma":"γ","gammad":"ϝ","gap":"⪆","gbreve":"ğ","gcirc":"ĝ","gcy":"г","gdot":"ġ","ge":"≥","gel":"⋛","geq":"≥","geqq":"≧","geqslant":"⩾","ges":"⩾","gescc":"⪩","gesdot":"⪀","gesdoto":"⪂","gesdotol":"⪄","gesl":"⋛︀","gesles":"⪔","gfr":"𝔤","gg":"≫","ggg":"⋙","gimel":"ℷ","gjcy":"ѓ","gl":"≷","glE":"⪒","gla":"⪥","glj":"⪤","gnE":"≩","gnap":"⪊","gnapprox":"⪊","gne":"⪈","gneq":"⪈","gneqq":"≩","gnsim":"⋧","gopf":"𝕘","grave":"`","gscr":"ℊ","gsim":"≳","gsime":"⪎","gsiml":"⪐","g":">","gt":">","gtcc":"⪧","gtcir":"⩺","gtdot":"⋗","gtlPar":"⦕","gtquest":"⩼","gtrapprox":"⪆","gtrarr":"⥸","gtrdot":"⋗","gtreqless":"⋛","gtreqqless":"⪌","gtrless":"≷","gtrsim":"≳","gvertneqq":"≩︀","gvnE":"≩︀","hArr":"⇔","hairsp":" ","half":"½","hamilt":"ℋ","hardcy":"ъ","harr":"↔","harrcir":"⥈","harrw":"↭","hbar":"ℏ","hcirc":"ĥ","hearts":"♥","heartsuit":"♥","hellip":"…","hercon":"⊹","hfr":"𝔥","hksearow":"⤥","hkswarow":"⤦","hoarr":"⇿","homtht":"∻","hookleftarrow":"↩","hookrightarrow":"↪","hopf":"𝕙","horbar":"―","hscr":"𝒽","hslash":"ℏ","hstrok":"ħ","hybull":"⁃","hyphen":"‐","iacut":"í","iacute":"í","ic":"","icir":"î","icirc":"î","icy":"и","iecy":"е","iexc":"¡","iexcl":"¡","iff":"⇔","ifr":"𝔦","igrav":"ì","igrave":"ì","ii":"ⅈ","iiiint":"⨌","iiint":"∭","iinfin":"⧜","iiota":"℩","ijlig":"ij","imacr":"ī","image":"ℑ","imagline":"ℐ","imagpart":"ℑ","imath":"ı","imof":"⊷","imped":"Ƶ","in":"∈","incare":"℅","infin":"∞","infintie":"⧝","inodot":"ı","int":"∫","intcal":"⊺","integers":"ℤ","intercal":"⊺","intlarhk":"⨗","intprod":"⨼","iocy":"ё","iogon":"į","iopf":"𝕚","iota":"ι","iprod":"⨼","iques":"¿","iquest":"¿","iscr":"𝒾","isin":"∈","isinE":"⋹","isindot":"⋵","isins":"⋴","isinsv":"⋳","isinv":"∈","it":"","itilde":"ĩ","iukcy":"і","ium":"ï","iuml":"ï","jcirc":"ĵ","jcy":"й","jfr":"𝔧","jmath":"ȷ","jopf":"𝕛","jscr":"𝒿","jsercy":"ј","jukcy":"є","kappa":"κ","kappav":"ϰ","kcedil":"ķ","kcy":"к","kfr":"𝔨","kgreen":"ĸ","khcy":"х","kjcy":"ќ","kopf":"𝕜","kscr":"𝓀","lAarr":"⇚","lArr":"⇐","lAtail":"⤛","lBarr":"⤎","lE":"≦","lEg":"⪋","lHar":"⥢","lacute":"ĺ","laemptyv":"⦴","lagran":"ℒ","lambda":"λ","lang":"⟨","langd":"⦑","langle":"⟨","lap":"⪅","laqu":"«","laquo":"«","larr":"←","larrb":"⇤","larrbfs":"⤟","larrfs":"⤝","larrhk":"↩","larrlp":"↫","larrpl":"⤹","larrsim":"⥳","larrtl":"↢","lat":"⪫","latail":"⤙","late":"⪭","lates":"⪭︀","lbarr":"⤌","lbbrk":"❲","lbrace":"{","lbrack":"[","lbrke":"⦋","lbrksld":"⦏","lbrkslu":"⦍","lcaron":"ľ","lcedil":"ļ","lceil":"⌈","lcub":"{","lcy":"л","ldca":"⤶","ldquo":"“","ldquor":"„","ldrdhar":"⥧","ldrushar":"⥋","ldsh":"↲","le":"≤","leftarrow":"←","leftarrowtail":"↢","leftharpoondown":"↽","leftharpoonup":"↼","leftleftarrows":"⇇","leftrightarrow":"↔","leftrightarrows":"⇆","leftrightharpoons":"⇋","leftrightsquigarrow":"↭","leftthreetimes":"⋋","leg":"⋚","leq":"≤","leqq":"≦","leqslant":"⩽","les":"⩽","lescc":"⪨","lesdot":"⩿","lesdoto":"⪁","lesdotor":"⪃","lesg":"⋚︀","lesges":"⪓","lessapprox":"⪅","lessdot":"⋖","lesseqgtr":"⋚","lesseqqgtr":"⪋","lessgtr":"≶","lesssim":"≲","lfisht":"⥼","lfloor":"⌊","lfr":"𝔩","lg":"≶","lgE":"⪑","lhard":"↽","lharu":"↼","lharul":"⥪","lhblk":"▄","ljcy":"љ","ll":"≪","llarr":"⇇","llcorner":"⌞","llhard":"⥫","lltri":"◺","lmidot":"ŀ","lmoust":"⎰","lmoustache":"⎰","lnE":"≨","lnap":"⪉","lnapprox":"⪉","lne":"⪇","lneq":"⪇","lneqq":"≨","lnsim":"⋦","loang":"⟬","loarr":"⇽","lobrk":"⟦","longleftarrow":"⟵","longleftrightarrow":"⟷","longmapsto":"⟼","longrightarrow":"⟶","looparrowleft":"↫","looparrowright":"↬","lopar":"⦅","lopf":"𝕝","loplus":"⨭","lotimes":"⨴","lowast":"∗","lowbar":"_","loz":"◊","lozenge":"◊","lozf":"⧫","lpar":"(","lparlt":"⦓","lrarr":"⇆","lrcorner":"⌟","lrhar":"⇋","lrhard":"⥭","lrm":"","lrtri":"⊿","lsaquo":"‹","lscr":"𝓁","lsh":"↰","lsim":"≲","lsime":"⪍","lsimg":"⪏","lsqb":"[","lsquo":"‘","lsquor":"‚","lstrok":"ł","l":"<","lt":"<","ltcc":"⪦","ltcir":"⩹","ltdot":"⋖","lthree":"⋋","ltimes":"⋉","ltlarr":"⥶","ltquest":"⩻","ltrPar":"⦖","ltri":"◃","ltrie":"⊴","ltrif":"◂","lurdshar":"⥊","luruhar":"⥦","lvertneqq":"≨︀","lvnE":"≨︀","mDDot":"∺","mac":"¯","macr":"¯","male":"♂","malt":"✠","maltese":"✠","map":"↦","mapsto":"↦","mapstodown":"↧","mapstoleft":"↤","mapstoup":"↥","marker":"▮","mcomma":"⨩","mcy":"м","mdash":"—","measuredangle":"∡","mfr":"𝔪","mho":"℧","micr":"µ","micro":"µ","mid":"∣","midast":"*","midcir":"⫰","middo":"·","middot":"·","minus":"−","minusb":"⊟","minusd":"∸","minusdu":"⨪","mlcp":"⫛","mldr":"…","mnplus":"∓","models":"⊧","mopf":"𝕞","mp":"∓","mscr":"𝓂","mstpos":"∾","mu":"μ","multimap":"⊸","mumap":"⊸","nGg":"⋙̸","nGt":"≫⃒","nGtv":"≫̸","nLeftarrow":"⇍","nLeftrightarrow":"⇎","nLl":"⋘̸","nLt":"≪⃒","nLtv":"≪̸","nRightarrow":"⇏","nVDash":"⊯","nVdash":"⊮","nabla":"∇","nacute":"ń","nang":"∠⃒","nap":"≉","napE":"⩰̸","napid":"≋̸","napos":"ʼn","napprox":"≉","natur":"♮","natural":"♮","naturals":"ℕ","nbs":" ","nbsp":" ","nbump":"≎̸","nbumpe":"≏̸","ncap":"⩃","ncaron":"ň","ncedil":"ņ","ncong":"≇","ncongdot":"⩭̸","ncup":"⩂","ncy":"н","ndash":"–","ne":"≠","neArr":"⇗","nearhk":"⤤","nearr":"↗","nearrow":"↗","nedot":"≐̸","nequiv":"≢","nesear":"⤨","nesim":"≂̸","nexist":"∄","nexists":"∄","nfr":"𝔫","ngE":"≧̸","nge":"≱","ngeq":"≱","ngeqq":"≧̸","ngeqslant":"⩾̸","nges":"⩾̸","ngsim":"≵","ngt":"≯","ngtr":"≯","nhArr":"⇎","nharr":"↮","nhpar":"⫲","ni":"∋","nis":"⋼","nisd":"⋺","niv":"∋","njcy":"њ","nlArr":"⇍","nlE":"≦̸","nlarr":"↚","nldr":"‥","nle":"≰","nleftarrow":"↚","nleftrightarrow":"↮","nleq":"≰","nleqq":"≦̸","nleqslant":"⩽̸","nles":"⩽̸","nless":"≮","nlsim":"≴","nlt":"≮","nltri":"⋪","nltrie":"⋬","nmid":"∤","nopf":"𝕟","no":"¬","not":"¬","notin":"∉","notinE":"⋹̸","notindot":"⋵̸","notinva":"∉","notinvb":"⋷","notinvc":"⋶","notni":"∌","notniva":"∌","notnivb":"⋾","notnivc":"⋽","npar":"∦","nparallel":"∦","nparsl":"⫽⃥","npart":"∂̸","npolint":"⨔","npr":"⊀","nprcue":"⋠","npre":"⪯̸","nprec":"⊀","npreceq":"⪯̸","nrArr":"⇏","nrarr":"↛","nrarrc":"⤳̸","nrarrw":"↝̸","nrightarrow":"↛","nrtri":"⋫","nrtrie":"⋭","nsc":"⊁","nsccue":"⋡","nsce":"⪰̸","nscr":"𝓃","nshortmid":"∤","nshortparallel":"∦","nsim":"≁","nsime":"≄","nsimeq":"≄","nsmid":"∤","nspar":"∦","nsqsube":"⋢","nsqsupe":"⋣","nsub":"⊄","nsubE":"⫅̸","nsube":"⊈","nsubset":"⊂⃒","nsubseteq":"⊈","nsubseteqq":"⫅̸","nsucc":"⊁","nsucceq":"⪰̸","nsup":"⊅","nsupE":"⫆̸","nsupe":"⊉","nsupset":"⊃⃒","nsupseteq":"⊉","nsupseteqq":"⫆̸","ntgl":"≹","ntild":"ñ","ntilde":"ñ","ntlg":"≸","ntriangleleft":"⋪","ntrianglelefteq":"⋬","ntriangleright":"⋫","ntrianglerighteq":"⋭","nu":"ν","num":"#","numero":"№","numsp":" ","nvDash":"⊭","nvHarr":"⤄","nvap":"≍⃒","nvdash":"⊬","nvge":"≥⃒","nvgt":">⃒","nvinfin":"⧞","nvlArr":"⤂","nvle":"≤⃒","nvlt":"<⃒","nvltrie":"⊴⃒","nvrArr":"⤃","nvrtrie":"⊵⃒","nvsim":"∼⃒","nwArr":"⇖","nwarhk":"⤣","nwarr":"↖","nwarrow":"↖","nwnear":"⤧","oS":"Ⓢ","oacut":"ó","oacute":"ó","oast":"⊛","ocir":"ô","ocirc":"ô","ocy":"о","odash":"⊝","odblac":"ő","odiv":"⨸","odot":"⊙","odsold":"⦼","oelig":"œ","ofcir":"⦿","ofr":"𝔬","ogon":"˛","ograv":"ò","ograve":"ò","ogt":"⧁","ohbar":"⦵","ohm":"Ω","oint":"∮","olarr":"↺","olcir":"⦾","olcross":"⦻","oline":"‾","olt":"⧀","omacr":"ō","omega":"ω","omicron":"ο","omid":"⦶","ominus":"⊖","oopf":"𝕠","opar":"⦷","operp":"⦹","oplus":"⊕","or":"∨","orarr":"↻","ord":"º","order":"ℴ","orderof":"ℴ","ordf":"ª","ordm":"º","origof":"⊶","oror":"⩖","orslope":"⩗","orv":"⩛","oscr":"ℴ","oslas":"ø","oslash":"ø","osol":"⊘","otild":"õ","otilde":"õ","otimes":"⊗","otimesas":"⨶","oum":"ö","ouml":"ö","ovbar":"⌽","par":"¶","para":"¶","parallel":"∥","parsim":"⫳","parsl":"⫽","part":"∂","pcy":"п","percnt":"%","period":".","permil":"‰","perp":"⊥","pertenk":"‱","pfr":"𝔭","phi":"φ","phiv":"ϕ","phmmat":"ℳ","phone":"☎","pi":"π","pitchfork":"⋔","piv":"ϖ","planck":"ℏ","planckh":"ℎ","plankv":"ℏ","plus":"+","plusacir":"⨣","plusb":"⊞","pluscir":"⨢","plusdo":"∔","plusdu":"⨥","pluse":"⩲","plusm":"±","plusmn":"±","plussim":"⨦","plustwo":"⨧","pm":"±","pointint":"⨕","popf":"𝕡","poun":"£","pound":"£","pr":"≺","prE":"⪳","prap":"⪷","prcue":"≼","pre":"⪯","prec":"≺","precapprox":"⪷","preccurlyeq":"≼","preceq":"⪯","precnapprox":"⪹","precneqq":"⪵","precnsim":"⋨","precsim":"≾","prime":"′","primes":"ℙ","prnE":"⪵","prnap":"⪹","prnsim":"⋨","prod":"∏","profalar":"⌮","profline":"⌒","profsurf":"⌓","prop":"∝","propto":"∝","prsim":"≾","prurel":"⊰","pscr":"𝓅","psi":"ψ","puncsp":" ","qfr":"𝔮","qint":"⨌","qopf":"𝕢","qprime":"⁗","qscr":"𝓆","quaternions":"ℍ","quatint":"⨖","quest":"?","questeq":"≟","quo":"\\"","quot":"\\"","rAarr":"⇛","rArr":"⇒","rAtail":"⤜","rBarr":"⤏","rHar":"⥤","race":"∽̱","racute":"ŕ","radic":"√","raemptyv":"⦳","rang":"⟩","rangd":"⦒","range":"⦥","rangle":"⟩","raqu":"»","raquo":"»","rarr":"→","rarrap":"⥵","rarrb":"⇥","rarrbfs":"⤠","rarrc":"⤳","rarrfs":"⤞","rarrhk":"↪","rarrlp":"↬","rarrpl":"⥅","rarrsim":"⥴","rarrtl":"↣","rarrw":"↝","ratail":"⤚","ratio":"∶","rationals":"ℚ","rbarr":"⤍","rbbrk":"❳","rbrace":"}","rbrack":"]","rbrke":"⦌","rbrksld":"⦎","rbrkslu":"⦐","rcaron":"ř","rcedil":"ŗ","rceil":"⌉","rcub":"}","rcy":"р","rdca":"⤷","rdldhar":"⥩","rdquo":"”","rdquor":"”","rdsh":"↳","real":"ℜ","realine":"ℛ","realpart":"ℜ","reals":"ℝ","rect":"▭","re":"®","reg":"®","rfisht":"⥽","rfloor":"⌋","rfr":"𝔯","rhard":"⇁","rharu":"⇀","rharul":"⥬","rho":"ρ","rhov":"ϱ","rightarrow":"→","rightarrowtail":"↣","rightharpoondown":"⇁","rightharpoonup":"⇀","rightleftarrows":"⇄","rightleftharpoons":"⇌","rightrightarrows":"⇉","rightsquigarrow":"↝","rightthreetimes":"⋌","ring":"˚","risingdotseq":"≓","rlarr":"⇄","rlhar":"⇌","rlm":"","rmoust":"⎱","rmoustache":"⎱","rnmid":"⫮","roang":"⟭","roarr":"⇾","robrk":"⟧","ropar":"⦆","ropf":"𝕣","roplus":"⨮","rotimes":"⨵","rpar":")","rpargt":"⦔","rppolint":"⨒","rrarr":"⇉","rsaquo":"›","rscr":"𝓇","rsh":"↱","rsqb":"]","rsquo":"’","rsquor":"’","rthree":"⋌","rtimes":"⋊","rtri":"▹","rtrie":"⊵","rtrif":"▸","rtriltri":"⧎","ruluhar":"⥨","rx":"℞","sacute":"ś","sbquo":"‚","sc":"≻","scE":"⪴","scap":"⪸","scaron":"š","sccue":"≽","sce":"⪰","scedil":"ş","scirc":"ŝ","scnE":"⪶","scnap":"⪺","scnsim":"⋩","scpolint":"⨓","scsim":"≿","scy":"с","sdot":"⋅","sdotb":"⊡","sdote":"⩦","seArr":"⇘","searhk":"⤥","searr":"↘","searrow":"↘","sec":"§","sect":"§","semi":";","seswar":"⤩","setminus":"∖","setmn":"∖","sext":"✶","sfr":"𝔰","sfrown":"⌢","sharp":"♯","shchcy":"щ","shcy":"ш","shortmid":"∣","shortparallel":"∥","sh":"","shy":"","sigma":"σ","sigmaf":"ς","sigmav":"ς","sim":"∼","simdot":"⩪","sime":"≃","simeq":"≃","simg":"⪞","simgE":"⪠","siml":"⪝","simlE":"⪟","simne":"≆","simplus":"⨤","simrarr":"⥲","slarr":"←","smallsetminus":"∖","smashp":"⨳","smeparsl":"⧤","smid":"∣","smile":"⌣","smt":"⪪","smte":"⪬","smtes":"⪬︀","softcy":"ь","sol":"/","solb":"⧄","solbar":"⌿","sopf":"𝕤","spades":"♠","spadesuit":"♠","spar":"∥","sqcap":"⊓","sqcaps":"⊓︀","sqcup":"⊔","sqcups":"⊔︀","sqsub":"⊏","sqsube":"⊑","sqsubset":"⊏","sqsubseteq":"⊑","sqsup":"⊐","sqsupe":"⊒","sqsupset":"⊐","sqsupseteq":"⊒","squ":"□","square":"□","squarf":"▪","squf":"▪","srarr":"→","sscr":"𝓈","ssetmn":"∖","ssmile":"⌣","sstarf":"⋆","star":"☆","starf":"★","straightepsilon":"ϵ","straightphi":"ϕ","strns":"¯","sub":"⊂","subE":"⫅","subdot":"⪽","sube":"⊆","subedot":"⫃","submult":"⫁","subnE":"⫋","subne":"⊊","subplus":"⪿","subrarr":"⥹","subset":"⊂","subseteq":"⊆","subseteqq":"⫅","subsetneq":"⊊","subsetneqq":"⫋","subsim":"⫇","subsub":"⫕","subsup":"⫓","succ":"≻","succapprox":"⪸","succcurlyeq":"≽","succeq":"⪰","succnapprox":"⪺","succneqq":"⪶","succnsim":"⋩","succsim":"≿","sum":"∑","sung":"♪","sup":"⊃","sup1":"¹","sup2":"²","sup3":"³","supE":"⫆","supdot":"⪾","supdsub":"⫘","supe":"⊇","supedot":"⫄","suphsol":"⟉","suphsub":"⫗","suplarr":"⥻","supmult":"⫂","supnE":"⫌","supne":"⊋","supplus":"⫀","supset":"⊃","supseteq":"⊇","supseteqq":"⫆","supsetneq":"⊋","supsetneqq":"⫌","supsim":"⫈","supsub":"⫔","supsup":"⫖","swArr":"⇙","swarhk":"⤦","swarr":"↙","swarrow":"↙","swnwar":"⤪","szli":"ß","szlig":"ß","target":"⌖","tau":"τ","tbrk":"⎴","tcaron":"ť","tcedil":"ţ","tcy":"т","tdot":"⃛","telrec":"⌕","tfr":"𝔱","there4":"∴","therefore":"∴","theta":"θ","thetasym":"ϑ","thetav":"ϑ","thickapprox":"≈","thicksim":"∼","thinsp":" ","thkap":"≈","thksim":"∼","thor":"þ","thorn":"þ","tilde":"˜","time":"×","times":"×","timesb":"⊠","timesbar":"⨱","timesd":"⨰","tint":"∭","toea":"⤨","top":"⊤","topbot":"⌶","topcir":"⫱","topf":"𝕥","topfork":"⫚","tosa":"⤩","tprime":"‴","trade":"™","triangle":"▵","triangledown":"▿","triangleleft":"◃","trianglelefteq":"⊴","triangleq":"≜","triangleright":"▹","trianglerighteq":"⊵","tridot":"◬","trie":"≜","triminus":"⨺","triplus":"⨹","trisb":"⧍","tritime":"⨻","trpezium":"⏢","tscr":"𝓉","tscy":"ц","tshcy":"ћ","tstrok":"ŧ","twixt":"≬","twoheadleftarrow":"↞","twoheadrightarrow":"↠","uArr":"⇑","uHar":"⥣","uacut":"ú","uacute":"ú","uarr":"↑","ubrcy":"ў","ubreve":"ŭ","ucir":"û","ucirc":"û","ucy":"у","udarr":"⇅","udblac":"ű","udhar":"⥮","ufisht":"⥾","ufr":"𝔲","ugrav":"ù","ugrave":"ù","uharl":"↿","uharr":"↾","uhblk":"▀","ulcorn":"⌜","ulcorner":"⌜","ulcrop":"⌏","ultri":"◸","umacr":"ū","um":"¨","uml":"¨","uogon":"ų","uopf":"𝕦","uparrow":"↑","updownarrow":"↕","upharpoonleft":"↿","upharpoonright":"↾","uplus":"⊎","upsi":"υ","upsih":"ϒ","upsilon":"υ","upuparrows":"⇈","urcorn":"⌝","urcorner":"⌝","urcrop":"⌎","uring":"ů","urtri":"◹","uscr":"𝓊","utdot":"⋰","utilde":"ũ","utri":"▵","utrif":"▴","uuarr":"⇈","uum":"ü","uuml":"ü","uwangle":"⦧","vArr":"⇕","vBar":"⫨","vBarv":"⫩","vDash":"⊨","vangrt":"⦜","varepsilon":"ϵ","varkappa":"ϰ","varnothing":"∅","varphi":"ϕ","varpi":"ϖ","varpropto":"∝","varr":"↕","varrho":"ϱ","varsigma":"ς","varsubsetneq":"⊊︀","varsubsetneqq":"⫋︀","varsupsetneq":"⊋︀","varsupsetneqq":"⫌︀","vartheta":"ϑ","vartriangleleft":"⊲","vartriangleright":"⊳","vcy":"в","vdash":"⊢","vee":"∨","veebar":"⊻","veeeq":"≚","vellip":"⋮","verbar":"|","vert":"|","vfr":"𝔳","vltri":"⊲","vnsub":"⊂⃒","vnsup":"⊃⃒","vopf":"𝕧","vprop":"∝","vrtri":"⊳","vscr":"𝓋","vsubnE":"⫋︀","vsubne":"⊊︀","vsupnE":"⫌︀","vsupne":"⊋︀","vzigzag":"⦚","wcirc":"ŵ","wedbar":"⩟","wedge":"∧","wedgeq":"≙","weierp":"℘","wfr":"𝔴","wopf":"𝕨","wp":"℘","wr":"≀","wreath":"≀","wscr":"𝓌","xcap":"⋂","xcirc":"◯","xcup":"⋃","xdtri":"▽","xfr":"𝔵","xhArr":"⟺","xharr":"⟷","xi":"ξ","xlArr":"⟸","xlarr":"⟵","xmap":"⟼","xnis":"⋻","xodot":"⨀","xopf":"𝕩","xoplus":"⨁","xotime":"⨂","xrArr":"⟹","xrarr":"⟶","xscr":"𝓍","xsqcup":"⨆","xuplus":"⨄","xutri":"△","xvee":"⋁","xwedge":"⋀","yacut":"ý","yacute":"ý","yacy":"я","ycirc":"ŷ","ycy":"ы","ye":"¥","yen":"¥","yfr":"𝔶","yicy":"ї","yopf":"𝕪","yscr":"𝓎","yucy":"ю","yum":"ÿ","yuml":"ÿ","zacute":"ź","zcaron":"ž","zcy":"з","zdot":"ż","zeetrf":"ℨ","zeta":"ζ","zfr":"𝔷","zhcy":"ж","zigrarr":"⇝","zopf":"𝕫","zscr":"𝓏","zwj":"","zwnj":""}')},"h+e0":function(e,t,n){"use strict";var r=n("OF0j")(/[!-/:-@[-`{-~]/);e.exports=r},h3af:function(e,t,n){"use strict";var r=n("nppI");e.exports=function(e){for(var t,n,i,o=-1,u=[];++o-1&&(_.call(this,e),w.call(this,e))},link:b((function(){var e=this.stack[this.stack.length-1];f("inReference")?(e.type+="Reference",e.referenceType=f("referenceType")||"shortcut",delete e.url,delete e.title):(delete e.identifier,delete e.label,delete e.referenceType);l("referenceType")})),listItem:b(),listOrdered:b(),listUnordered:b(),paragraph:b(),referenceString:function(e){var t=this.resume();this.stack[this.stack.length-1].label=t,this.stack[this.stack.length-1].identifier=c(this.sliceSerialize(e)).toLowerCase(),l("referenceType","full")},resourceDestinationString:function(){var e=this.resume();this.stack[this.stack.length-1].url=e},resourceTitleString:function(){var e=this.resume();this.stack[this.stack.length-1].title=e},resource:function(){l("inReference")},setextHeading:b((function(){l("setextHeadingSlurpLineEnding")})),setextHeadingLineSequence:function(e){this.stack[this.stack.length-1].depth=61===this.sliceSerialize(e).charCodeAt(0)?1:2},setextHeadingText:function(){l("setextHeadingSlurpLineEnding",!0)},strong:b(),thematicBreak:b()}},t.mdastExtensions||[]),r={};return function(e){var t,r,i=[{type:"root",children:[]}],c=[],a=[],p=-1,h={stack:i,tokenStack:c,config:n,enter:y,exit:x,buffer:v,resume:k,setData:l,getData:f};for(;++pp?n(r):(e.consume(r),v):41===r?d--?(e.consume(r),v):(e.exit("chunkString"),e.exit(l),e.exit(s),e.exit(u),t(r)):null===r||i(r)?d?n(r):(e.exit("chunkString"),e.exit(l),e.exit(s),e.exit(u),t(r)):o(r)?n(r):(e.consume(r),92===r?y:v)}function y(t){return 40===t||41===t||92===t?(e.consume(t),v):v(t)}}},juNq:function(e,t,n){"use strict";var r=n("SpX7"),i=n("LzXL"),o=n("EbX1");e.exports=a;var u={}.hasOwnProperty,c=["history","path","basename","stem","extname","dirname"];function a(e){var t,n;if(e){if("string"==typeof e||o(e))e={contents:e};else if("message"in e&&"messages"in e)return e}else e={};if(!(this instanceof a))return new a(e);for(this.data={},this.messages=[],this.history=[],this.cwd=i.cwd(),n=-1;++n-1)throw new Error("`"+t+"` cannot be a path: did not expect `"+r.sep+"`")}function l(e,t){if(!e)throw new Error("`"+t+"` cannot be empty")}function f(e,t){if(!e)throw new Error("Setting `"+t+"` requires `path` to be set too")}a.prototype.toString=function(e){return(this.contents||"").toString(e)},Object.defineProperty(a.prototype,"path",{get:function(){return this.history[this.history.length-1]},set:function(e){l(e,"path"),this.path!==e&&this.history.push(e)}}),Object.defineProperty(a.prototype,"dirname",{get:function(){return"string"==typeof this.path?r.dirname(this.path):void 0},set:function(e){f(this.path,"dirname"),this.path=r.join(e||"",this.basename)}}),Object.defineProperty(a.prototype,"basename",{get:function(){return"string"==typeof this.path?r.basename(this.path):void 0},set:function(e){l(e,"basename"),s(e,"basename"),this.path=r.join(this.dirname||"",e)}}),Object.defineProperty(a.prototype,"extname",{get:function(){return"string"==typeof this.path?r.extname(this.path):void 0},set:function(e){if(s(e,"extname"),f(this.path,"extname"),e){if(46!==e.charCodeAt(0))throw new Error("`extname` must start with `.`");if(e.indexOf(".",1)>-1)throw new Error("`extname` cannot contain multiple dots")}this.path=r.join(this.dirname,this.stem+(e||""))}}),Object.defineProperty(a.prototype,"stem",{get:function(){return"string"==typeof this.path?r.basename(this.path,this.extname):void 0},set:function(e){l(e,"stem"),s(e,"stem"),this.path=r.join(this.dirname||"",e+(this.extname||""))}})},kSGr:function(e,t,n){"use strict";var r=n("W9KB"),i=n("4kIE"),o=n("7sXb"),u=n("mQVw"),c=n("j1Sy"),a=n("a7DW"),s=n("QGTt"),l=n("eOGU"),f={name:"definition",tokenize:function(e,t,n){var u,l=this;return function(t){return e.enter("definition"),a.call(l,e,f,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(t)};function f(t){return u=r(l.sliceSerialize(l.events[l.events.length-1][1]).slice(1,-1)),58===t?(e.enter("definitionMarker"),e.consume(t),e.exit("definitionMarker"),s(e,c(e,e.attempt(p,o(e,d,"whitespace"),o(e,d,"whitespace")),n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString"))):n(t)}function d(r){return null===r||i(r)?(e.exit("definition"),l.parser.defined.indexOf(u)<0&&l.parser.defined.push(u),t(r)):n(r)}}},p={tokenize:function(e,t,n){return function(t){return u(t)?s(e,r)(t):n(t)};function r(t){return 34===t||39===t||40===t?l(e,o(e,c,"whitespace"),n,"definitionTitle","definitionTitleMarker","definitionTitleString")(t):n(t)}function c(e){return null===e||i(e)?t(e):n(e)}},partial:!0};e.exports=f},kqyo:function(e,t,n){"use strict";e.exports=function(e,t,n){var r=[];"function"==typeof t&&(n=t,t=null);function i(e){var o;return t&&e.type!==t||(o=n(e,r.concat())),e.children&&!1!==o?function(e,t){var n,o=e.length,u=-1;r.push(t);for(;++u3;)n.pop()();if(n[1]-1?(c=1,v.interrupt?t(o):j(o)):l.indexOf(h.toLowerCase())>-1?(c=6,47===o?(e.consume(o),E):v.interrupt?t(o):j(o)):(c=7,v.interrupt?n(o):p?A(o):S(o)):45===o||i(o)?(e.consume(o),h+=r(o),w):n(o)}function E(r){return 62===r?(e.consume(r),v.interrupt?t:j):n(r)}function S(t){return u(t)?(e.consume(t),S):L(t)}function A(t){return 47===t?(e.consume(t),L):58===t||95===t||s(t)?(e.consume(t),C):u(t)?(e.consume(t),A):L(t)}function C(t){return 45===t||46===t||58===t||95===t||i(t)?(e.consume(t),C):q(t)}function q(t){return 61===t?(e.consume(t),T):u(t)?(e.consume(t),q):A(t)}function T(t){return null===t||60===t||61===t||62===t||96===t?n(t):34===t||39===t?(e.consume(t),g=t,O):u(t)?(e.consume(t),T):(g=void 0,F(t))}function O(t){return t===g?(e.consume(t),D):null===t||o(t)?n(t):(e.consume(t),O)}function F(t){return null===t||34===t||39===t||60===t||61===t||62===t||96===t||a(t)?q(t):(e.consume(t),F)}function D(e){return 47===e||62===e||u(e)?A(e):n(e)}function L(t){return 62===t?(e.consume(t),I):n(t)}function I(t){return u(t)?(e.consume(t),I):null===t||o(t)?j(t):n(t)}function j(t){return 45===t&&2===c?(e.consume(t),H):60===t&&1===c?(e.consume(t),B):62===t&&4===c?(e.consume(t),z):63===t&&3===c?(e.consume(t),M):93===t&&5===c?(e.consume(t),N):!o(t)||6!==c&&7!==c?null===t||o(t)?P(t):(e.consume(t),j):e.check(d,z,P)(t)}function P(t){return e.exit("htmlFlowData"),R(t)}function R(t){return null===t?V(t):o(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),R):(e.enter("htmlFlowData"),j(t))}function H(t){return 45===t?(e.consume(t),M):j(t)}function B(t){return 47===t?(e.consume(t),h="",U):j(t)}function U(t){return 62===t&&f.indexOf(h.toLowerCase())>-1?(e.consume(t),z):s(t)&&h.length<8?(e.consume(t),h+=r(t),U):j(t)}function N(t){return 93===t?(e.consume(t),M):j(t)}function M(t){return 62===t?(e.consume(t),z):j(t)}function z(t){return null===t||o(t)?(e.exit("htmlFlowData"),V(t)):(e.consume(t),z)}function V(n){return e.exit("htmlFlow"),t(n)}},resolveTo:function(e){var t=e.length;for(;t--&&("enter"!==e[t][0]||"htmlFlow"!==e[t][1].type););t>1&&"linePrefix"===e[t-2][1].type&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2));return e},concrete:!0},d={tokenize:function(e,t,n){return function(r){return e.exit("htmlFlowData"),e.enter("lineEndingBlank"),e.consume(r),e.exit("lineEndingBlank"),e.attempt(c,t,n)}},partial:!0};e.exports=p},oarT:function(e,t,n){"use strict";var r=n("6zBE"),i=n("4kIE"),o=n("pMvH"),u=n("7sXb"),c=n("mQVw"),a=n("9pEU"),s={name:"htmlText",tokenize:function(e,t,n){var s,l,f,p,d=this;return function(t){return e.enter("htmlText"),e.enter("htmlTextData"),e.consume(t),h};function h(t){return 33===t?(e.consume(t),m):47===t?(e.consume(t),q):63===t?(e.consume(t),A):a(t)?(e.consume(t),F):n(t)}function m(t){return 45===t?(e.consume(t),g):91===t?(e.consume(t),l="CDATA[",f=0,k):a(t)?(e.consume(t),S):n(t)}function g(t){return 45===t?(e.consume(t),v):n(t)}function v(t){return null===t||62===t?n(t):45===t?(e.consume(t),y):b(t)}function y(e){return null===e||62===e?n(e):b(e)}function b(t){return null===t?n(t):45===t?(e.consume(t),x):i(t)?(p=b,B(t)):(e.consume(t),b)}function x(t){return 45===t?(e.consume(t),N):b(t)}function k(t){return t===l.charCodeAt(f++)?(e.consume(t),f===l.length?_:k):n(t)}function _(t){return null===t?n(t):93===t?(e.consume(t),w):i(t)?(p=_,B(t)):(e.consume(t),_)}function w(t){return 93===t?(e.consume(t),E):_(t)}function E(t){return 62===t?N(t):93===t?(e.consume(t),E):_(t)}function S(t){return null===t||62===t?N(t):i(t)?(p=S,B(t)):(e.consume(t),S)}function A(t){return null===t?n(t):63===t?(e.consume(t),C):i(t)?(p=A,B(t)):(e.consume(t),A)}function C(e){return 62===e?N(e):A(e)}function q(t){return a(t)?(e.consume(t),T):n(t)}function T(t){return 45===t||r(t)?(e.consume(t),T):O(t)}function O(t){return i(t)?(p=O,B(t)):o(t)?(e.consume(t),O):N(t)}function F(t){return 45===t||r(t)?(e.consume(t),F):47===t||62===t||c(t)?D(t):n(t)}function D(t){return 47===t?(e.consume(t),N):58===t||95===t||a(t)?(e.consume(t),L):i(t)?(p=D,B(t)):o(t)?(e.consume(t),D):N(t)}function L(t){return 45===t||46===t||58===t||95===t||r(t)?(e.consume(t),L):I(t)}function I(t){return 61===t?(e.consume(t),j):i(t)?(p=I,B(t)):o(t)?(e.consume(t),I):D(t)}function j(t){return null===t||60===t||61===t||62===t||96===t?n(t):34===t||39===t?(e.consume(t),s=t,P):i(t)?(p=j,B(t)):o(t)?(e.consume(t),j):(e.consume(t),s=void 0,H)}function P(t){return t===s?(e.consume(t),R):null===t?n(t):i(t)?(p=P,B(t)):(e.consume(t),P)}function R(e){return 62===e||47===e||c(e)?D(e):n(e)}function H(t){return null===t||34===t||39===t||60===t||61===t||96===t?n(t):62===t||c(t)?D(t):(e.consume(t),H)}function B(t){return e.exit("htmlTextData"),e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),u(e,U,"linePrefix",d.parser.constructs.disable.null.indexOf("codeIndented")>-1?void 0:4)}function U(t){return e.enter("htmlTextData"),p(t)}function N(r){return 62===r?(e.consume(r),e.exit("htmlTextData"),e.exit("htmlText"),t):n(r)}}};e.exports=s},"ox/y":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Link=t.Match=void 0;var r=Object.assign||function(e){for(var t=1;t>>0,1)},t.prototype.render=function(e){var t=this.nextUrl||(0,o.getCurrentUrl)(),n=t.replace(/\?.+$/,"");return this.nextUrl=null,e.children({url:t,path:n,matches:!1!==(0,o.exec)(n,e.path,{})})},t}(i.Component),s=function(e){var t=e.activeClassName,n=e.path,u=function(e,t){var n={};for(var r in e)t.indexOf(r)>=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}(e,["activeClassName","path"]);return(0,i.h)(a,{path:n||u.href},(function(e){var n=e.matches;return(0,i.h)(o.Link,r({},u,{class:[u.class||u.className,n&&t].filter(Boolean).join(" ")}))}))};t.Link=s,t.default=a,a.Link=s},oyvS:function(e,t){e.exports=require("path")},pMvH:function(e,t,n){"use strict";e.exports=function(e){return-2===e||-1===e||32===e}},pRls:function(e,t,n){},"pi/J":function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r=n("4kIE"),i=n("7sXb"),o=n("A0tY"),u=function(e){var t,n,i,u=this,s=[],l=0,f={tokenize:function(e,r){var i=0;return t={},l;function l(r){return it;)u.containerState=s[o][1],s[o][0].exit.call(u,e);s.length=t}},c={tokenize:function(e,t,n){return i(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.indexOf("codeIndented")>-1?void 0:4)}},a={tokenize:function(e,t,n){return i(e,e.lazy(this.parser.constructs.flow,t,n),"linePrefix",this.parser.constructs.disable.null.indexOf("codeIndented")>-1?void 0:4)}};t.tokenize=u},qWgT:function(e,t,n){"use strict";var r=n("4kIE"),i={name:"hardBreakEscape",tokenize:function(e,t,n){return function(t){return e.enter("hardBreakEscape"),e.enter("escapeMarker"),e.consume(t),i};function i(i){return r(i)?(e.exit("escapeMarker"),e.exit("hardBreakEscape"),t(i)):n(i)}}};e.exports=i},rNCH:function(e,t,n){"use strict";e.exports=["pre","script","style","textarea"]},"sWw+":function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty,i=Object.prototype.toString,o=Object.defineProperty,u=Object.getOwnPropertyDescriptor,c=function(e){return"function"==typeof Array.isArray?Array.isArray(e):"[object Array]"===i.call(e)},a=function(e){if(!e||"[object Object]"!==i.call(e))return!1;var t,n=r.call(e,"constructor"),o=e.constructor&&e.constructor.prototype&&r.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!n&&!o)return!1;for(t in e);return void 0===t||r.call(e,t)},s=function(e,t){o&&"__proto__"===t.name?o(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,t){if("__proto__"===t){if(!r.call(e,t))return;if(u)return u(e,t).value}return e[t]};e.exports=function e(){var t,n,r,i,o,u,f=arguments[0],p=1,d=arguments.length,h=!1;for("boolean"==typeof f&&(h=f,f=arguments[1]||{},p=2),(null==f||"object"!=typeof f&&"function"!=typeof f)&&(f={});p-1?void 0:4);function u(t){return t===c?(e.consume(t),o++,u):o-1,e.enter("labelEnd"),e.enter("labelMarker"),e.consume(t),e.exit("labelMarker"),e.exit("labelEnd"),a)};function a(n){return 40===n?e.attempt(h,t,i?t:s)(n):91===n?e.attempt(m,t,i?e.attempt(g,t,s):s)(n):i?t(n):s(n)}function s(e){return r._balanced=!0,n(e)}},resolveTo:function(e,t){var n,o,a,s,l,f,p,d=e.length,h=0;for(;d--;)if(s=e[d][1],l){if("link"===s.type||"labelLink"===s.type&&s._inactive)break;"enter"===e[d][0]&&"labelLink"===s.type&&(s._inactive=!0)}else if(f){if("enter"===e[d][0]&&("labelImage"===s.type||"labelLink"===s.type)&&!s._balanced&&(l=d,"labelLink"!==s.type)){h=2;break}}else"labelEnd"===s.type&&(f=d);return n={type:"labelLink"===e[l][1].type?"link":"image",start:u(e[l][1].start),end:u(e[e.length-1][1].end)},o={type:"label",start:u(e[l][1].start),end:u(e[f][1].end)},a={type:"labelText",start:u(e[l+h+2][1].end),end:u(e[f-2][1].start)},p=i(p=[["enter",n,t],["enter",o,t]],e.slice(l+1,l+h+3)),p=i(p,[["enter",a,t]]),p=i(p,c(t.parser.constructs.insideSpan.null,e.slice(l+h+4,f-3),t)),p=i(p,[["exit",a,t],e[f-2],e[f-1],["exit",o,t]]),p=i(p,e.slice(f+1)),p=i(p,[["exit",n,t]]),r(e,l,e.length,p),e},resolveAll:function(e){var t,n=-1;for(;++n-1)return m();return e.tokenize.call(t?r({},y,t):y,v,h,m)(n)}}function h(t){return e(s,l),i}function m(e){return l.restore(),++a1&&e[m][1].end.offset-e[m][1].start.offset>1?2:1,l={type:p>1?"strongSequence":"emphasisSequence",start:a(o(e[n][1].end),-p),end:o(e[n][1].end)},f={type:p>1?"strongSequence":"emphasisSequence",start:o(e[m][1].start),end:a(o(e[m][1].start),p)},s={type:p>1?"strongText":"emphasisText",start:o(e[n][1].end),end:o(e[m][1].start)},c={type:p>1?"strong":"emphasis",start:o(l.start),end:o(f.end)},e[n][1].end=o(l.start),e[m][1].start=o(f.end),d=[],e[n][1].end.offset-e[n][1].start.offset&&(d=i(d,[["enter",e[n][1],t],["exit",e[n][1],t]])),d=i(d,[["enter",c,t],["enter",l,t],["exit",l,t],["enter",s,t]]),d=i(d,u(t.parser.constructs.insideSpan.null,e.slice(n+1,m),t)),d=i(d,[["exit",s,t],["enter",f,t],["exit",f,t],["exit",c,t]]),e[m][1].end.offset-e[m][1].start.offset?(h=2,d=i(d,[["enter",e[m][1],t],["exit",e[m][1],t]])):h=0,r(e,n-1,m-n+3,d),m=n+d.length-h-2;break}m=-1;for(;++m -1 ||\n prefixSize(self.events, 'linePrefix') < 4\n ) {\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n\n return ok(code)\n }\n}\n\nmodule.exports = content\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = function getDefinitions(tree) {\n var definitions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n visit(tree, 'definition', function (node) {\n var identifier = node.identifier.toUpperCase();\n if (identifier in definitions) return;\n definitions[identifier] = {\n href: node.url,\n title: node.title\n };\n });\n return definitions;\n};","'use strict'\n\nmodule.exports = require('./lib')\n","/* eslint-disable react/prop-types, react/no-multi-comp */\n'use strict';\n\nvar xtend = require('xtend');\n\nvar React = require('react');\n/* istanbul ignore next - Don’t crash on old React. */\n\n\nvar supportsStringRender = parseInt((React.version || '16').slice(0, 2), 10) >= 16;\nvar createElement = React.createElement;\nmodule.exports = {\n break: 'br',\n paragraph: 'p',\n emphasis: 'em',\n strong: 'strong',\n thematicBreak: 'hr',\n blockquote: 'blockquote',\n delete: 'del',\n link: 'a',\n image: 'img',\n linkReference: 'a',\n imageReference: 'img',\n table: SimpleRenderer.bind(null, 'table'),\n tableHead: SimpleRenderer.bind(null, 'thead'),\n tableBody: SimpleRenderer.bind(null, 'tbody'),\n tableRow: SimpleRenderer.bind(null, 'tr'),\n tableCell: TableCell,\n root: Root,\n text: TextRenderer,\n list: List,\n listItem: ListItem,\n definition: NullRenderer,\n heading: Heading,\n inlineCode: InlineCode,\n code: CodeBlock,\n html: Html,\n virtualHtml: VirtualHtml,\n parsedHtml: ParsedHtml\n};\n\nfunction TextRenderer(props) {\n /* istanbul ignore next - a text node w/o a value could be injected by plugins */\n var children = props.children || '';\n /* istanbul ignore next - `span` is a fallback for old React. */\n\n return supportsStringRender ? children : createElement('span', null, children);\n}\n\nfunction Root(props) {\n var className = props.className;\n var root = !className && React.Fragment || 'div';\n return createElement(root, className ? {\n className: className\n } : null, props.children);\n}\n\nfunction SimpleRenderer(tag, props) {\n return createElement(tag, getCoreProps(props), props.children);\n}\n\nfunction TableCell(props) {\n var style = props.align ? {\n textAlign: props.align\n } : undefined;\n var coreProps = getCoreProps(props);\n return createElement(props.isHeader ? 'th' : 'td', style ? xtend({\n style: style\n }, coreProps) : coreProps, props.children);\n}\n\nfunction Heading(props) {\n return createElement(\"h\".concat(props.level), getCoreProps(props), props.children);\n}\n\nfunction List(props) {\n var attrs = getCoreProps(props);\n\n if (props.start !== null && props.start !== 1 && props.start !== undefined) {\n attrs.start = props.start.toString();\n }\n\n return createElement(props.ordered ? 'ol' : 'ul', attrs, props.children);\n}\n\nfunction ListItem(props) {\n var checkbox = null;\n\n if (props.checked !== null && props.checked !== undefined) {\n var checked = props.checked;\n checkbox = createElement('input', {\n type: 'checkbox',\n checked: checked,\n readOnly: true\n });\n }\n\n return createElement('li', getCoreProps(props), checkbox, props.children);\n}\n\nfunction CodeBlock(props) {\n var className = props.language && \"language-\".concat(props.language);\n var code = createElement('code', className ? {\n className: className\n } : null, props.value);\n return createElement('pre', getCoreProps(props), code);\n}\n\nfunction InlineCode(props) {\n return createElement('code', getCoreProps(props), props.children);\n}\n\nfunction Html(props) {\n if (props.skipHtml) {\n return null;\n }\n\n var dangerous = props.allowDangerousHtml || props.escapeHtml === false;\n var tag = props.isBlock ? 'div' : 'span';\n\n if (!dangerous) {\n /* istanbul ignore next - `tag` is a fallback for old React. */\n return createElement(React.Fragment || tag, null, props.value);\n }\n\n var nodeProps = {\n dangerouslySetInnerHTML: {\n __html: props.value\n }\n };\n return createElement(tag, nodeProps);\n}\n\nfunction ParsedHtml(props) {\n /* To do: `React.cloneElement` is slow, is it really needed? */\n return props['data-sourcepos'] ? React.cloneElement(props.element, {\n 'data-sourcepos': props['data-sourcepos']\n }) : props.element;\n}\n\nfunction VirtualHtml(props) {\n return createElement(props.tag, getCoreProps(props), props.children);\n}\n\nfunction NullRenderer() {\n return null;\n}\n\nfunction getCoreProps(props) {\n var source = props['data-sourcepos'];\n /* istanbul ignore next - nodes from plugins w/o position */\n\n return source ? {\n 'data-sourcepos': source\n } : {};\n}","'use strict'\n\nvar miniflat = require('./util/miniflat.js')\nvar content = require('./initialize/content.js')\nvar document = require('./initialize/document.js')\nvar flow = require('./initialize/flow.js')\nvar text = require('./initialize/text.js')\nvar combineExtensions = require('./util/combine-extensions.js')\nvar createTokenizer = require('./util/create-tokenizer.js')\nvar constructs = require('./constructs.js')\n\nfunction parse(options) {\n var settings = options || {}\n var parser = {\n defined: [],\n constructs: combineExtensions(\n [constructs].concat(miniflat(settings.extensions))\n ),\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(text.string),\n text: create(text.text)\n }\n return parser\n\n function create(initializer) {\n return creator\n\n function creator(from) {\n return createTokenizer(parser, initializer, from)\n }\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nfunction markdownLineEnding(code) {\n return code < -2\n}\n\nmodule.exports = markdownLineEnding\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\nmodule.exports = asciiAlphanumeric\n","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = function (node) {\n visit(node, 'table', wrap);\n return node;\n};\n\nfunction wrap(table) {\n var children = table.children;\n table.children = [{\n type: 'tableHead',\n align: table.align,\n children: [children[0]],\n position: children[0].position\n }];\n\n if (children.length > 1) {\n table.children.push({\n type: 'tableBody',\n align: table.align,\n children: children.slice(1),\n position: {\n start: children[1].position.start,\n end: children[children.length - 1].position.end\n }\n });\n }\n}","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\n\nfunction spaceFactory(effects, ok, type, max) {\n var limit = max ? max - 1 : Infinity\n var size = 0\n return start\n\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n\n return ok(code)\n }\n\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n\n effects.exit(type)\n return ok(code)\n }\n}\n\nmodule.exports = spaceFactory\n","\"use strict\";\n\nvar HtmlParser = '__RMD_HTML_PARSER__';\n/* istanbul ignore next - Fallback for `Symbol`. */\n\nexports.HtmlParser = typeof Symbol === 'undefined' ? HtmlParser : Symbol(HtmlParser);","/** @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\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlpha = regexCheck(/[A-Za-z]/)\n\nmodule.exports = asciiAlpha\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nvar partialBlankLine = {\n tokenize: tokenizePartialBlankLine,\n partial: true\n}\n\nfunction tokenizePartialBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix')\n\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n\nmodule.exports = partialBlankLine\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar shallow = require('./shallow.js')\n\nfunction subtokenize(events) {\n var jumps = {}\n var index = -1\n var event\n var lineIndex\n var otherIndex\n var otherEvent\n var parameters\n var subevents\n var more\n\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n\n event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1].isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n } // Enter.\n\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n } // Exit.\n else if (event[1]._container || event[1]._movePreviousLineEndings) {\n otherIndex = index\n lineIndex = undefined\n\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n\n if (lineIndex) {\n // Fix position.\n event[1].end = shallow(events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n chunkedSplice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n\nfunction subcontent(events, eventIndex) {\n var token = events[eventIndex][1]\n var context = events[eventIndex][2]\n var startPosition = eventIndex - 1\n var startPositions = []\n var tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n var childEvents = tokenizer.events\n var jumps = []\n var gaps = {}\n var stream\n var previous\n var index\n var entered\n var end\n var adjust // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n\n while (token) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== token) {\n // Empty.\n }\n\n startPositions.push(startPosition)\n\n if (!token._tokenizer) {\n stream = context.sliceStream(token)\n\n if (!token.next) {\n stream.push(null)\n }\n\n if (previous) {\n tokenizer.defineSkip(token.start)\n }\n\n if (token.isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (token.isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n } // Unravel the next token.\n\n previous = token\n token = token.next\n } // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n\n token = previous\n index = childEvents.length\n\n while (index--) {\n // Make sure we’ve at least seen something (final eol is part of the last\n // token).\n if (childEvents[index][0] === 'enter') {\n entered = true\n } else if (\n // Find a void token that includes a break.\n entered &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n add(childEvents.slice(index + 1, end))\n // Help GC.\n token._tokenizer = token.next = undefined\n token = token.previous\n end = index + 1\n }\n }\n\n // Help GC.\n tokenizer.events = token._tokenizer = token.next = undefined // Do head:\n\n add(childEvents.slice(0, end))\n index = -1\n adjust = 0\n\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n\n return gaps\n\n function add(slice) {\n var start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n chunkedSplice(events, start, 2, slice)\n }\n}\n\nmodule.exports = subtokenize\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction safeFromInt(value, base) {\n var code = parseInt(value, base)\n\n if (\n // C0 except for HT, LF, FF, CR, space\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) || // Noncharacters.\n (code > 64975 && code < 65008) ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 || // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n\n return fromCharCode(code)\n}\n\nmodule.exports = safeFromInt\n","'use strict'\n\nmodule.exports = visit\n\nvar visitParents = require('unist-util-visit-parents')\n\nvar CONTINUE = visitParents.CONTINUE\nvar SKIP = visitParents.SKIP\nvar EXIT = visitParents.EXIT\n\nvisit.CONTINUE = CONTINUE\nvisit.SKIP = SKIP\nvisit.EXIT = EXIT\n\nfunction visit(tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n function overload(node, parents) {\n var parent = parents[parents.length - 1]\n var index = parent ? parent.children.indexOf(node) : null\n return visitor(node, index, parent)\n }\n}\n","'use strict'\n\nfunction miniflat(value) {\n return value === null || value === undefined\n ? []\n : 'length' in value\n ? value\n : [value]\n}\n\nmodule.exports = miniflat\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous: previous\n}\n\nfunction resolveCodeText(events) {\n var tailExitIndex = events.length - 4\n var headEnterIndex = 3\n var index\n var enter // If we start and end with an EOL or a space.\n\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex // And we have data.\n\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[tailExitIndex][1].type = events[headEnterIndex][1].type =\n 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n } // Merge adjacent spaces and data.\n\n index = headEnterIndex - 1\n tailExitIndex++\n\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return events\n}\n\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\nfunction tokenizeCodeText(effects, ok, nok) {\n var sizeOpen = 0\n var size\n var token\n return start\n\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return openingSequence(code)\n }\n\n function openingSequence(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return openingSequence\n }\n\n effects.exit('codeTextSequence')\n return gap(code)\n }\n\n function gap(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n } // Closing fence?\n // Could also be data.\n\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return closingSequence(code)\n } // Tabs don’t work, and virtual spaces don’t make sense.\n\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return gap\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return gap\n } // Data.\n\n effects.enter('codeTextData')\n return data(code)\n } // In code.\n\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return gap(code)\n }\n\n effects.consume(code)\n return data\n } // Closing fence.\n\n function closingSequence(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return closingSequence\n } // Done!\n\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n } // More or less accents: mark as data.\n\n token.type = 'codeTextData'\n return data(code)\n }\n}\n\nmodule.exports = codeText\n","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\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","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","'use strict'\n\nvar assign = require('../constant/assign.js')\n\nfunction shallow(object) {\n return assign({}, object)\n}\n\nmodule.exports = shallow\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit: exit\n}\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n if (code === 62) {\n if (!self.containerState.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n self.containerState.open = true\n }\n\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(blockQuote, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n\nmodule.exports = blockQuote\n","'use strict'\n\nfunction sliceChunks(chunks, token) {\n var startIndex = token.start._index\n var startBufferIndex = token.start._bufferIndex\n var endIndex = token.end._index\n var endBufferIndex = token.end._bufferIndex\n var view\n\n if (startIndex === endIndex) {\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n\n if (startBufferIndex > -1) {\n view[0] = view[0].slice(startBufferIndex)\n }\n\n if (endBufferIndex > 0) {\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n\n return view\n}\n\nmodule.exports = sliceChunks\n","\"use strict\";\n\nvar protocols = ['http', 'https', 'mailto', 'tel'];\n\nmodule.exports = function uriTransformer(uri) {\n var url = (uri || '').trim();\n var first = url.charAt(0);\n\n if (first === '#' || first === '/') {\n return url;\n }\n\n var colon = url.indexOf(':');\n\n if (colon === -1) {\n return url;\n }\n\n var length = protocols.length;\n var index = -1;\n\n while (++index < length) {\n var protocol = protocols[index];\n\n if (colon === protocol.length && url.slice(0, protocol.length).toLowerCase() === protocol) {\n return url;\n }\n }\n\n index = url.indexOf('?');\n\n if (index !== -1 && colon > index) {\n return url;\n }\n\n index = url.indexOf('#');\n\n if (index !== -1 && colon > index) {\n return url;\n } // eslint-disable-next-line no-script-url\n\n\n return 'javascript:void(0)';\n};","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\nmodule.exports = asciiAtext\n","'use strict'\n\nvar sizeChunks = require('./size-chunks.js')\n\nfunction prefixSize(events, type) {\n var tail = events[events.length - 1]\n if (!tail || tail[1].type !== type) return 0\n return sizeChunks(tail[2].sliceStream(tail[1]))\n}\n\nmodule.exports = prefixSize\n","module.exports = require(\"preact\");","'use strict'\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.\nvar unicodePunctuation = /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n\nmodule.exports = unicodePunctuation\n","'use strict'\n\nvar slice = [].slice\n\nmodule.exports = wrap\n\n// Wrap `fn`.\n// Can be sync or async; return a promise, receive a completion handler, return\n// new values and errors.\nfunction wrap(fn, callback) {\n var invoked\n\n return wrapped\n\n function wrapped() {\n var params = slice.call(arguments, 0)\n var callback = fn.length > params.length\n var result\n\n if (callback) {\n params.push(done)\n }\n\n try {\n result = fn.apply(null, params)\n } catch (error) {\n // Well, this is quite the pickle.\n // `fn` received a callback and invoked it (thus continuing the pipeline),\n // but later also threw an error.\n // We’re not about to restart the pipeline again, so the only thing left\n // to do is to throw the thing instead.\n if (callback && invoked) {\n throw error\n }\n\n return done(error)\n }\n\n if (!callback) {\n if (result && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n // Invoke `next`, only once.\n function done() {\n if (!invoked) {\n invoked = true\n\n callback.apply(null, arguments)\n }\n }\n\n // Invoke `done` with one value.\n // Tracks if an error is passed, too.\n function then(value) {\n done(null, value)\n }\n}\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n var size = 0\n var marker\n return start\n\n function start(code) {\n effects.enter('thematicBreak')\n marker = code\n return atBreak(code)\n }\n\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n return nok(code)\n }\n\n effects.exit('thematicBreak')\n return ok(code)\n }\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n\n effects.exit('thematicBreakSequence')\n return atBreak(code)\n }\n}\n\nmodule.exports = thematicBreak\n","'use strict'\n\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\n\nvar headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n\nfunction resolveHeadingAtx(events, context) {\n var contentEnd = events.length - 2\n var contentStart = 3\n var content\n var text // Prefix whitespace, part of the opening.\n\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n } // Suffix whitespace, part of the closing.\n\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: 'text'\n }\n chunkedSplice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n\n return events\n}\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n var self = this\n var size = 0\n return start\n\n function start(code) {\n effects.enter('atxHeading')\n effects.enter('atxHeadingSequence')\n return fenceOpenInside(code)\n }\n\n function fenceOpenInside(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return fenceOpenInside\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return self.interrupt ? ok(code) : headingBreak(code)\n }\n\n return nok(code)\n }\n\n function headingBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequence(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n return ok(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, headingBreak, 'whitespace')(code)\n }\n\n effects.enter('atxHeadingText')\n return data(code)\n }\n\n function sequence(code) {\n if (code === 35) {\n effects.consume(code)\n return sequence\n }\n\n effects.exit('atxHeadingSequence')\n return headingBreak(code)\n }\n\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return headingBreak(code)\n }\n\n effects.consume(code)\n return data\n }\n}\n\nmodule.exports = headingAtx\n","'use strict'\n\nvar splice = [].splice\n\nmodule.exports = splice\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar unicodeWhitespace = regexCheck(/\\s/)\n\nmodule.exports = unicodeWhitespace\n","'use strict';\n\nvar xtend = require('xtend');\n\nvar unified = require('unified');\n\nvar parse = require('remark-parse');\n\nvar PropTypes = require('prop-types');\n\nvar addListMetadata = require('mdast-add-list-metadata');\n\nvar naiveHtml = require('./plugins/naive-html');\n\nvar disallowNode = require('./plugins/disallow-node');\n\nvar astToReact = require('./ast-to-react');\n\nvar wrapTableRows = require('./wrap-table-rows');\n\nvar getDefinitions = require('./get-definitions');\n\nvar uriTransformer = require('./uri-transformer');\n\nvar defaultRenderers = require('./renderers');\n\nvar symbols = require('./symbols');\n\nvar allTypes = Object.keys(defaultRenderers);\n\nvar ReactMarkdown = function ReactMarkdown(props) {\n // To do in next major: remove `source`.\n var src = props.source || props.children || '';\n\n if (props.allowedTypes && props.disallowedTypes) {\n throw new Error('Only one of `allowedTypes` and `disallowedTypes` should be defined');\n }\n\n var renderers = xtend(defaultRenderers, props.renderers);\n var processor = unified().use(parse).use(props.plugins || []); // eslint-disable-next-line no-sync\n\n var tree = processor.runSync(processor.parse(src));\n var renderProps = xtend(props, {\n renderers: renderers,\n definitions: getDefinitions(tree)\n });\n determineAstToReactTransforms(props).forEach(function (transform) {\n tree = transform(tree, renderProps);\n });\n return tree;\n};\n\nfunction determineAstToReactTransforms(props) {\n var transforms = [wrapTableRows, addListMetadata()];\n var disallowedTypes = props.disallowedTypes;\n\n if (props.allowedTypes) {\n disallowedTypes = allTypes.filter(function (type) {\n return type !== 'root' && props.allowedTypes.indexOf(type) === -1;\n });\n }\n\n var removalMethod = props.unwrapDisallowed ? 'unwrap' : 'remove';\n\n if (disallowedTypes && disallowedTypes.length > 0) {\n transforms.push(disallowNode.ofType(disallowedTypes, removalMethod));\n }\n\n if (props.allowNode) {\n transforms.push(disallowNode.ifNotMatch(props.allowNode, removalMethod));\n } // To do in next major: remove `escapeHtml`.\n\n\n var renderHtml = (props.allowDangerousHtml || props.escapeHtml === false) && !props.skipHtml;\n var hasHtmlParser = (props.astPlugins || []).some(function (transform) {\n return transform.identity === symbols.HtmlParser;\n });\n\n if (renderHtml && !hasHtmlParser) {\n transforms.push(naiveHtml);\n }\n\n if (props.astPlugins) {\n transforms = transforms.concat(props.astPlugins);\n } // Add the final transform to turn everything into React.\n\n\n transforms.push(astToReact);\n return transforms;\n}\n\nReactMarkdown.defaultProps = {\n transformLinkUri: uriTransformer\n};\nReactMarkdown.propTypes = {\n className: PropTypes.string,\n source: PropTypes.string,\n children: PropTypes.string,\n sourcePos: PropTypes.bool,\n rawSourcePos: PropTypes.bool,\n escapeHtml: PropTypes.bool,\n allowDangerousHtml: PropTypes.bool,\n skipHtml: PropTypes.bool,\n allowNode: PropTypes.func,\n allowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n disallowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n transformImageUri: PropTypes.func,\n astPlugins: PropTypes.arrayOf(PropTypes.func),\n unwrapDisallowed: PropTypes.bool,\n renderers: PropTypes.object,\n plugins: PropTypes.array\n};\nReactMarkdown.types = allTypes;\nReactMarkdown.renderers = defaultRenderers;\nReactMarkdown.uriTransformer = uriTransformer;\nmodule.exports = ReactMarkdown;","'use strict'\n\nmodule.exports = process\n","\"use strict\";\n\nvar visit = require('unist-util-visit');\n\nvar splice = [].splice;\n\nexports.ofType = function (types, mode) {\n return ifNotMatch(allow, mode);\n\n function allow(node, index, parent) {\n return !types.includes(node.type);\n }\n};\n\nexports.ifNotMatch = ifNotMatch;\n\nfunction ifNotMatch(allow, mode) {\n return transform;\n\n function transform(tree) {\n visit(tree, filter);\n return tree;\n } // eslint-disable-next-line consistent-return\n\n\n function filter(node, index, parent) {\n if (parent && !allow(node, index, parent)) {\n var parameters = [index, 1];\n\n if (mode === 'unwrap' && node.children) {\n parameters = parameters.concat(node.children);\n }\n\n splice.apply(parent.children, parameters);\n return index;\n }\n }\n}","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar text$1 = require('./initialize/text.js')\nvar attention = require('./tokenize/attention.js')\nvar autolink = require('./tokenize/autolink.js')\nvar blockQuote = require('./tokenize/block-quote.js')\nvar characterEscape = require('./tokenize/character-escape.js')\nvar characterReference = require('./tokenize/character-reference.js')\nvar codeFenced = require('./tokenize/code-fenced.js')\nvar codeIndented = require('./tokenize/code-indented.js')\nvar codeText = require('./tokenize/code-text.js')\nvar definition = require('./tokenize/definition.js')\nvar hardBreakEscape = require('./tokenize/hard-break-escape.js')\nvar headingAtx = require('./tokenize/heading-atx.js')\nvar htmlFlow = require('./tokenize/html-flow.js')\nvar htmlText = require('./tokenize/html-text.js')\nvar labelEnd = require('./tokenize/label-end.js')\nvar labelStartImage = require('./tokenize/label-start-image.js')\nvar labelStartLink = require('./tokenize/label-start-link.js')\nvar lineEnding = require('./tokenize/line-ending.js')\nvar thematicBreak = require('./tokenize/thematic-break.js')\nvar list = require('./tokenize/list.js')\nvar setextUnderline = require('./tokenize/setext-underline.js')\n\nvar document = {\n 42: list,\n // Asterisk\n 43: list,\n // Plus sign\n 45: list,\n // Dash\n 48: list,\n // 0\n 49: list,\n // 1\n 50: list,\n // 2\n 51: list,\n // 3\n 52: list,\n // 4\n 53: list,\n // 5\n 54: list,\n // 6\n 55: list,\n // 7\n 56: list,\n // 8\n 57: list,\n // 9\n 62: blockQuote // Greater than\n}\nvar contentInitial = {\n 91: definition // Left square bracket\n}\nvar flowInitial = {\n '-2': codeIndented,\n // Horizontal tab\n '-1': codeIndented,\n // Virtual space\n 32: codeIndented // Space\n}\nvar flow = {\n 35: headingAtx,\n // Number sign\n 42: thematicBreak,\n // Asterisk\n 45: [setextUnderline, thematicBreak],\n // Dash\n 60: htmlFlow,\n // Less than\n 61: setextUnderline,\n // Equals to\n 95: thematicBreak,\n // Underscore\n 96: codeFenced,\n // Grave accent\n 126: codeFenced // Tilde\n}\nvar string = {\n 38: characterReference,\n // Ampersand\n 92: characterEscape // Backslash\n}\nvar text = {\n '-5': lineEnding,\n // Carriage return\n '-4': lineEnding,\n // Line feed\n '-3': lineEnding,\n // Carriage return + line feed\n 33: labelStartImage,\n // Exclamation mark\n 38: characterReference,\n // Ampersand\n 42: attention,\n // Asterisk\n 60: [autolink, htmlText],\n // Less than\n 91: labelStartLink,\n // Left square bracket\n 92: [hardBreakEscape, characterEscape],\n // Backslash\n 93: labelEnd,\n // Right square bracket\n 95: attention,\n // Underscore\n 96: codeText // Grave accent\n}\nvar insideSpan = {\n null: [attention, text$1.resolver]\n}\nvar disable = {\n null: []\n}\n\nexports.contentInitial = contentInitial\nexports.disable = disable\nexports.document = document\nexports.flow = flow\nexports.flowInitial = flowInitial\nexports.insideSpan = insideSpan\nexports.string = string\nexports.text = text\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction regexCheck(regex) {\n return check\n\n function check(code) {\n return regex.test(fromCharCode(code))\n }\n}\n\nmodule.exports = regexCheck\n","'use strict'\n\nmodule.exports = toString\n\n// Get the text content of a node.\n// Prefer the node’s plain-text fields, otherwise serialize its children,\n// and if the given value is an array, serialize the nodes in it.\nfunction toString(node) {\n return (\n (node &&\n (node.value ||\n node.alt ||\n node.title ||\n ('children' in node && all(node.children)) ||\n ('length' in node && all(node)))) ||\n ''\n )\n}\n\nfunction all(values) {\n var result = []\n var index = -1\n\n while (++index < values.length) {\n result[index] = toString(values[index])\n }\n\n return result.join('')\n}\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction whitespaceFactory(effects, ok) {\n var seen\n return start\n\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n\n return ok(code)\n }\n}\n\nmodule.exports = whitespaceFactory\n","import {\n\tcreateElement,\n\trender as preactRender,\n\tcloneElement as preactCloneElement,\n\tcreateRef,\n\tComponent,\n\tcreateContext,\n\tFragment\n} from 'preact';\nimport {\n\tuseState,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue\n} from 'preact/hooks';\nimport { PureComponent } from './PureComponent';\nimport { memo } from './memo';\nimport { forwardRef } from './forwardRef';\nimport { Children } from './Children';\nimport { Suspense, lazy } from './suspense';\nimport { SuspenseList } from './suspense-list';\nimport { createPortal } from './portals';\nimport {\n\thydrate,\n\trender,\n\tREACT_ELEMENT_TYPE,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n} from './render';\n\nconst version = '16.8.0'; // trick libraries to think we are react\n\n/**\n * Legacy version of createElement.\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor\n */\nfunction createFactory(type) {\n\treturn createElement.bind(null, type);\n}\n\n/**\n * Check if the passed element is a valid (p)react node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isValidElement(element) {\n\treturn !!element && element.$$typeof === REACT_ELEMENT_TYPE;\n}\n\n/**\n * Wrap `cloneElement` to abort if the passed element is not a valid element and apply\n * all vnode normalizations.\n * @param {import('./internal').VNode} element The vnode to clone\n * @param {object} props Props to add when cloning\n * @param {Array} rest Optional component children\n */\nfunction cloneElement(element) {\n\tif (!isValidElement(element)) return element;\n\treturn preactCloneElement.apply(null, arguments);\n}\n\n/**\n * Remove a component tree from the DOM, including state and event handlers.\n * @param {import('./internal').PreactElement} container\n * @returns {boolean}\n */\nfunction unmountComponentAtNode(container) {\n\tif (container._children) {\n\t\tpreactRender(null, container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Get the matching DOM node for a component\n * @param {import('./internal').Component} component\n * @returns {import('./internal').PreactElement | null}\n */\nfunction findDOMNode(component) {\n\treturn (\n\t\t(component &&\n\t\t\t(component.base || (component.nodeType === 1 && component))) ||\n\t\tnull\n\t);\n}\n\n/**\n * Deprecated way to control batched rendering inside the reconciler, but we\n * already schedule in batches inside our rendering code\n * @template Arg\n * @param {(arg: Arg) => void} callback function that triggers the updated\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n */\n// eslint-disable-next-line camelcase\nconst unstable_batchedUpdates = (callback, arg) => callback(arg);\n\n/**\n * Strict Mode is not implemented in Preact, so we provide a stand-in for it\n * that just renders its children without imposing any restrictions.\n */\nconst StrictMode = Fragment;\n\nexport * from 'preact/hooks';\nexport {\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\t// eslint-disable-next-line camelcase\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n\n// React copies the named exports to the default one.\nexport default {\n\tuseState,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n","import {h} from 'preact'\nimport {Link} from 'preact-router/match'\n\nimport style from './style.css'\n\nconst Editor = ({markdown, setMarkdown}) => (\n \n Huge link \n \n A minimalist serverless publishing tool\n that allows you to create markdown posts and\n push them to the Web by sharing the link.\n
\n \n\n \n \n Preview\n \n \n )\n\nexport default Editor\n","import {h} from 'preact'\nimport {Link} from 'preact-router/match'\nimport ReactMarkdown from 'react-markdown'\n\nimport {\n compressToEncodedURIComponent as encode,\n decompressFromEncodedURIComponent as decode\n} from 'lz-string'\n\nconst noop = _ => null\nconst ident = _ => _\n\nconst previewContorls = content => (\n \n \n \n Edit\n \n \n Publish\n \n \n )\n\nconst Post = ({mode, payload, setMarkdown}) => {\n const [controls, decodeFn, encodeFn] = {\n preview: [previewContorls, ident, encode],\n post: [noop, decode, ident]\n }[mode]\n\n const markdown = decodeFn(payload)\n const encoded = encodeFn(payload)\n\n setMarkdown(markdown)\n\n return (\n { controls(encoded) }\n\n \n \n { markdown }\n \n \n\n \n Edit post\n \n )\n}\n\nexport default Post\n","import {h} from 'preact'\nimport {useState} from 'preact/hooks'\nimport {Router} from 'preact-router'\n\nimport Editor from './routes/editor'\nimport Post from './routes/post'\n\nimport './style/typography.css'\nimport './style'\n\nconst App = () => {\n const [markdown, setMarkdown] = useState('')\n\n return (\n \n \n \n \n \n )\n}\n\nexport default App\n","'use strict'\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar unicodePunctuation = require('../character/unicode-punctuation.js')\nvar unicodeWhitespace = require('../character/unicode-whitespace.js')\n\n// Classify whether a character is unicode whitespace, unicode punctuation, or\n// anything else.\n// Used for attention (emphasis, strong), whose sequences can open or close\n// based on the class of surrounding characters.\nfunction classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n\nmodule.exports = classifyCharacter\n","'use strict'\n\nmodule.exports = require('path')\n","'use strict'\n\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAtext = require('../character/ascii-atext.js')\nvar asciiControl = require('../character/ascii-control.js')\n\nvar autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\nfunction tokenizeAutolink(effects, ok, nok) {\n var size = 1\n return start\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 function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n\n return asciiAtext(code) ? emailAtext(code) : nok(code)\n }\n\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n ? schemeInsideOrEmailAtext(code)\n : emailAtext(code)\n }\n\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n return urlInside\n }\n\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n\n return emailAtext(code)\n }\n\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n return end(code)\n }\n\n if (code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\n\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n\n return nok(code)\n }\n\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (code === 62) {\n // Exit, then change the type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n return end(code)\n }\n\n return emailValue(code)\n }\n\n function emailValue(code) {\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n effects.consume(code)\n return code === 45 ? emailValue : emailLabel\n }\n\n return nok(code)\n }\n\n function end(code) {\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n}\n\nmodule.exports = autolink\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar assign = require('../constant/assign.js')\nvar shallow = require('../util/shallow.js')\n\nvar text = initializeFactory('text')\nvar string = initializeFactory('string')\nvar resolver = {\n resolveAll: createResolver()\n}\n\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n\n function initializeText(effects) {\n var self = this\n var constructs = this.parser.constructs[field]\n var text = effects.attempt(constructs, start, notText)\n return start\n\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('data')\n effects.consume(code)\n return data\n }\n\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n\n function atBreak(code) {\n var list = constructs[code]\n var index = -1\n\n if (code === null) {\n return true\n }\n\n if (list) {\n while (++index < list.length) {\n if (\n !list[index].previous ||\n list[index].previous.call(self, self.previous)\n ) {\n return true\n }\n }\n }\n }\n }\n}\n\nfunction createResolver(extraResolver) {\n return resolveAllText\n\n function resolveAllText(events, context) {\n var index = -1\n var enter // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return extraResolver ? extraResolver(events, context) : events\n }\n} // 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\nfunction resolveAllLineSuffixes(events, context) {\n var eventIndex = -1\n var chunks\n var data\n var chunk\n var index\n var bufferIndex\n var size\n var tabs\n var token\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 data = events[eventIndex - 1][1]\n chunks = context.sliceStream(data)\n index = chunks.length\n bufferIndex = -1\n size = 0\n tabs = undefined\n\n while (index--) {\n chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n\n if (bufferIndex) break\n bufferIndex = -1\n } // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1);\n else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n 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: shallow(data.end)\n }\n data.end = shallow(token.start)\n\n if (data.start.offset === data.end.offset) {\n assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n\n eventIndex++\n }\n }\n\n return events\n}\n\nexports.resolver = resolver\nexports.string = string\nexports.text = text\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","'use strict'\n\nfunction normalizeIdentifier(value) {\n return (\n value // Collapse Markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no object method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n\nmodule.exports = normalizeIdentifier\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\nvar content = require('../tokenize/content.js')\n\nvar tokenize = initializeFlow\n\nfunction initializeFlow(effects) {\n var self = this\n var initial = effects.attempt(\n // Try to parse a blank line.\n partialBlankLine,\n atBlankEnding, // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nfunction resolveAll(constructs, events, context) {\n var called = []\n var index = -1\n var resolve\n\n while (++index < constructs.length) {\n resolve = constructs[index].resolveAll\n\n if (resolve && called.indexOf(resolve) < 0) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n\nmodule.exports = resolveAll\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n var self = this\n return start\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 function after(code) {\n /* c8 ignore next */\n return code === 94 &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? /* c8 ignore next */\n nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = labelStartLink\n","'use strict';\n\nvar React = require('react');\n\nvar xtend = require('xtend');\n\nvar ReactIs = require('react-is');\n\nfunction astToReact(node, options) {\n var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var renderer = options.renderers[node.type]; // Nodes created by plugins do not have positional info, in which case we set\n // an object that matches the positon interface.\n\n if (!node.position) {\n node.position = {\n start: {\n line: null,\n column: null,\n offset: null\n },\n end: {\n line: null,\n column: null,\n offset: null\n }\n };\n }\n\n var pos = node.position.start;\n var key = [node.type, pos.line, pos.column, index].join('-');\n\n if (!ReactIs.isValidElementType(renderer)) {\n throw new Error(\"Renderer for type `\".concat(node.type, \"` not defined or is not renderable\"));\n }\n\n var nodeProps = getNodeProps(node, key, options, renderer, parent, index);\n return React.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || undefined);\n\n function resolveChildren() {\n return node.children && node.children.map(function (childNode, i) {\n return astToReact(childNode, options, {\n node: node,\n props: nodeProps\n }, i);\n });\n }\n} // eslint-disable-next-line max-params, complexity\n\n\nfunction getNodeProps(node, key, opts, renderer, parent, index) {\n var props = {\n key: key\n };\n var isSimpleRenderer = typeof renderer === 'string' || renderer === React.Fragment; // `sourcePos` is true if the user wants source information (line/column info from markdown source)\n\n if (opts.sourcePos && node.position) {\n props['data-sourcepos'] = flattenPosition(node.position);\n }\n\n if (opts.rawSourcePos && !isSimpleRenderer) {\n props.sourcePosition = node.position;\n } // If `includeNodeIndex` is true, pass node index info to all non-tag renderers\n\n\n if (opts.includeNodeIndex && parent.node && parent.node.children && !isSimpleRenderer) {\n props.index = parent.node.children.indexOf(node);\n props.parentChildCount = parent.node.children.length;\n }\n\n var ref = node.identifier !== null && node.identifier !== undefined ?\n /* istanbul ignore next - plugins could inject an undefined reference. */\n opts.definitions[node.identifier.toUpperCase()] || {} : null;\n\n switch (node.type) {\n case 'root':\n assignDefined(props, {\n className: opts.className\n });\n break;\n\n case 'text':\n props.nodeKey = key;\n props.children = node.value;\n break;\n\n case 'heading':\n props.level = node.depth;\n break;\n\n case 'list':\n props.start = node.start;\n props.ordered = node.ordered;\n props.spread = node.spread;\n props.depth = node.depth;\n break;\n\n case 'listItem':\n props.checked = node.checked;\n props.spread = node.spread;\n props.ordered = node.ordered;\n props.index = node.index;\n props.children = getListItemChildren(node, parent).map(function (childNode, i) {\n return astToReact(childNode, opts, {\n node: node,\n props: props\n }, i);\n });\n break;\n\n case 'definition':\n assignDefined(props, {\n identifier: node.identifier,\n title: node.title,\n url: node.url\n });\n break;\n\n case 'code':\n assignDefined(props, {\n language: node.lang && node.lang.split(/\\s/, 1)[0]\n });\n break;\n\n case 'inlineCode':\n props.children = node.value;\n props.inline = true;\n break;\n\n case 'link':\n assignDefined(props, {\n title: node.title || undefined,\n target: typeof opts.linkTarget === 'function' ? opts.linkTarget(node.url, node.children, node.title) : opts.linkTarget,\n href: opts.transformLinkUri ? opts.transformLinkUri(node.url, node.children, node.title) : node.url\n });\n break;\n\n case 'image':\n assignDefined(props, {\n src: opts.transformImageUri ? opts.transformImageUri(node.url, node.children, node.title, node.alt) : node.url,\n alt: node.alt || '',\n title: node.title || undefined\n });\n break;\n\n case 'linkReference':\n assignDefined(props, xtend(ref, {\n href: opts.transformLinkUri ? opts.transformLinkUri(ref.href) : ref.href\n }));\n break;\n\n case 'imageReference':\n assignDefined(props, {\n src: opts.transformImageUri && ref.href ? opts.transformImageUri(ref.href, node.children, ref.title, node.alt) : ref.href,\n alt: node.alt || '',\n title: ref.title || undefined\n });\n break;\n\n case 'table':\n case 'tableHead':\n case 'tableBody':\n props.columnAlignment = node.align;\n break;\n\n case 'tableRow':\n props.isHeader = parent.node.type === 'tableHead';\n props.columnAlignment = parent.props.columnAlignment;\n break;\n\n case 'tableCell':\n assignDefined(props, {\n isHeader: parent.props.isHeader,\n align: parent.props.columnAlignment[index]\n });\n break;\n\n case 'virtualHtml':\n props.tag = node.tag;\n break;\n\n case 'html':\n // @todo find a better way than this\n props.isBlock = node.position.start.line !== node.position.end.line;\n props.allowDangerousHtml = opts.allowDangerousHtml;\n props.escapeHtml = opts.escapeHtml;\n props.skipHtml = opts.skipHtml;\n break;\n\n case 'parsedHtml':\n {\n var parsedChildren;\n\n if (node.children) {\n parsedChildren = node.children.map(function (child, i) {\n return astToReact(child, opts, {\n node: node,\n props: props\n }, i);\n });\n }\n\n props.allowDangerousHtml = opts.allowDangerousHtml;\n props.escapeHtml = opts.escapeHtml;\n props.skipHtml = opts.skipHtml;\n props.element = node.element ? mergeNodeChildren(node, parsedChildren) : null;\n break;\n }\n\n default:\n assignDefined(props, xtend(node, {\n type: undefined,\n position: undefined,\n children: undefined\n }));\n }\n\n if (!isSimpleRenderer && node.value) {\n props.value = node.value;\n }\n\n if (!isSimpleRenderer) {\n props.node = node;\n }\n\n return props;\n}\n\nfunction assignDefined(target, attrs) {\n for (var key in attrs) {\n if (typeof attrs[key] !== 'undefined') {\n target[key] = attrs[key];\n }\n }\n}\n\nfunction mergeNodeChildren(node, parsedChildren) {\n var el = node.element;\n\n if (Array.isArray(el)) {\n /* istanbul ignore next - `div` fallback for old React. */\n var Fragment = React.Fragment || 'div';\n return React.createElement(Fragment, null, el);\n }\n\n if (el.props.children || parsedChildren) {\n var children = React.Children.toArray(el.props.children).concat(parsedChildren);\n return React.cloneElement(el, null, children);\n }\n\n return React.cloneElement(el, null);\n}\n\nfunction flattenPosition(pos) {\n return [pos.start.line, ':', pos.start.column, '-', pos.end.line, ':', pos.end.column].map(String).join('');\n}\n\nfunction getListItemChildren(node, parent) {\n /* istanbul ignore next - list items are always in a list, but best to be sure. */\n var loose = parent && parent.node ? listLoose(parent.node) : listItemLoose(node);\n return loose ? node.children : unwrapParagraphs(node);\n}\n\nfunction unwrapParagraphs(node) {\n return node.children.reduce(function (array, child) {\n return array.concat(child.type === 'paragraph' ? child.children : [child]);\n }, []);\n}\n\nfunction listLoose(node) {\n var children = node.children;\n var loose = node.spread;\n var index = -1;\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index]);\n }\n\n return loose;\n}\n\nfunction listItemLoose(node) {\n var spread = node.spread;\n /* istanbul ignore next - spread is present from remark-parse, but maybe plugins don’t set it. */\n\n return spread === undefined || spread === null ? node.children.length > 1 : spread;\n}\n\nmodule.exports = astToReact;","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n","'use strict'\n\nvar splice = require('../constant/splice.js')\n\n// causes a stack overflow in V8 when trying to insert 100k items for instance.\n\nfunction chunkedSplice(list, start, remove, items) {\n var end = list.length\n var chunkStart = 0\n var parameters // Make start between zero and `end` (included).\n\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n\n remove = remove > 0 ? remove : 0 // No need to chunk the items if there’s only a couple (10k) items.\n\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove)\n splice.apply(list, parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.\n\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0)\n splice.apply(list, parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n\nmodule.exports = chunkedSplice\n","'use strict'\n\nvar search = /[\\0\\t\\n\\r]/g\n\nfunction preprocess() {\n var start = true\n var column = 1\n var buffer = ''\n var atCarriageReturn\n return preprocessor\n\n function preprocessor(value, encoding, end) {\n var chunks = []\n var match\n var next\n var startPosition\n var endPosition\n var code\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n\n if (start) {\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n\n start = undefined\n }\n\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition = match ? match.index : value.length\n code = value.charCodeAt(endPosition)\n\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n\n if (code === 0) {\n chunks.push(65533)\n column++\n } else if (code === 9) {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n\n while (column++ < next) chunks.push(-1)\n } else if (code === 10) {\n chunks.push(-4)\n column = 1\n } // Must be carriage return.\n else {\n atCarriageReturn = true\n column = 1\n }\n }\n\n startPosition = endPosition + 1\n }\n\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n\n return chunks\n }\n}\n\nmodule.exports = preprocess\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\nvar partialBlankLine = require('./partial-blank-line.js')\nvar sizeChunks = require('../util/size-chunks.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar asciiDigit = require('../character/ascii-digit.js')\nvar thematicBreak = require('./thematic-break.js')\n\nvar list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\nvar listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\nvar indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\nfunction tokenizeListStart(effects, ok, nok) {\n var self = this\n var initialSize = prefixSize(self.events, 'linePrefix')\n var size = 0\n return start\n\n function start(code) {\n var kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n\n return nok(code)\n }\n\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n\n return nok(code)\n }\n\n 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 partialBlankLine, // 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 function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace')\n effects.consume(code)\n effects.exit('listItemPrefixWhitespace')\n return endOfPrefix\n }\n\n return nok(code)\n }\n\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize + sizeChunks(self.sliceStream(effects.exit('listItemPrefix')))\n return ok(code)\n }\n}\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n var self = this\n self.containerState._closeFlow = undefined\n return effects.check(partialBlankLine, onBlank, notBlank)\n\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine\n return ok(code)\n }\n\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n\n self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true // As we’re closing flow, we’re no longer interrupting.\n\n self.interrupt = undefined\n return factorySpace(\n effects,\n effects.attempt(list, ok, nok),\n 'linePrefix',\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )(code)\n }\n}\n\nfunction tokenizeIndent(effects, ok, nok) {\n var self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n\n function afterPrefix(code) {\n return prefixSize(self.events, 'listItemIndent') ===\n self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n var self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4 + 1\n )\n\n function afterPrefix(code) {\n return markdownSpace(code) ||\n !prefixSize(self.events, 'listItemPrefixWhitespace')\n ? nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = list\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\n\n// eslint-disable-next-line max-params\nfunction labelFactory(effects, ok, nok, type, markerType, stringType) {\n var self = this\n var size = 0\n var data\n return start\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 function atBreak(code) {\n if (\n code === null ||\n code === 91 ||\n (code === 93 && !data) ||\n /* c8 ignore next */\n (code === 94 &&\n /* c8 ignore next */\n !size &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs) ||\n size > 999\n ) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return label(code)\n }\n\n function label(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n\n effects.consume(code)\n data = data || !markdownSpace(code)\n return code === 92 ? labelEscape : label\n }\n\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return label\n }\n\n return label(code)\n }\n}\n\nmodule.exports = labelFactory\n","'use strict'\n\nmodule.exports = bail\n\nfunction bail(err) {\n if (err) {\n throw err\n }\n}\n","'use strict'\n\nvar characterEntities = require('character-entities')\n\nmodule.exports = decodeEntity\n\nvar own = {}.hasOwnProperty\n\nfunction decodeEntity(characters) {\n return own.call(characterEntities, characters)\n ? characterEntities[characters]\n : false\n}\n","'use strict'\n\n// chunks (replacement characters, tabs, or line endings).\n\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n return point\n}\n\nmodule.exports = movePoint\n","'use strict';\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n\tvar prototype;\n\treturn toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};\n","'use strict'\n\nvar wrap = require('./wrap.js')\n\nmodule.exports = trough\n\ntrough.wrap = wrap\n\nvar slice = [].slice\n\n// Create new middleware.\nfunction trough() {\n var fns = []\n var middleware = {}\n\n middleware.run = run\n middleware.use = use\n\n return middleware\n\n // Run `fns`. Last argument must be a completion handler.\n function run() {\n var index = -1\n var input = slice.call(arguments, 0, -1)\n var done = arguments[arguments.length - 1]\n\n if (typeof done !== 'function') {\n throw new Error('Expected function as last argument, not ' + done)\n }\n\n next.apply(null, [null].concat(input))\n\n // Run the next `fn`, if any.\n function next(err) {\n var fn = fns[++index]\n var params = slice.call(arguments, 0)\n var values = params.slice(1)\n var length = input.length\n var pos = -1\n\n if (err) {\n done(err)\n return\n }\n\n // Copy non-nully input into values.\n while (++pos < length) {\n if (values[pos] === null || values[pos] === undefined) {\n values[pos] = input[pos]\n }\n }\n\n input = values\n\n // Next or done.\n if (fn) {\n wrap(fn, next).apply(null, input)\n } else {\n done.apply(null, [null].concat(input))\n }\n }\n }\n\n // Add `fn` to the list.\n function use(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Expected `fn` to be a function, not ' + fn)\n }\n\n fns.push(fn)\n\n return middleware\n }\n}\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction titleFactory(effects, ok, nok, type, markerType, stringType) {\n var marker\n return start\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return atFirstTitleBreak\n }\n\n function atFirstTitleBreak(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n return atTitleBreak(code)\n }\n\n function atTitleBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return atFirstTitleBreak(marker)\n }\n\n if (code === null) {\n return nok(code)\n } // Note: blank lines can’t exist in content.\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atTitleBreak, 'linePrefix')\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return title(code)\n }\n\n function title(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atTitleBreak(code)\n }\n\n effects.consume(code)\n return code === 92 ? titleEscape : title\n }\n\n function titleEscape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return title\n }\n\n return title(code)\n }\n}\n\nmodule.exports = titleFactory\n","'use strict'\n\nvar factorySpace = require('./factory-space.js')\n\nvar lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n\nmodule.exports = lineEnding\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiDigit = regexCheck(/\\d/)\n\nmodule.exports = asciiDigit\n","'use strict'\n\nmodule.exports = require('./dist')\n","\"use strict\";\n\n/**\n * Naive, simple plugin to match inline nodes without attributes\n * This allows say foo , but not foo \n * For proper HTML support, you'll want a different plugin\n **/\nvar visit = require('unist-util-visit');\n\nvar type = 'virtualHtml';\nvar selfClosingRe = /^<(area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)\\s*\\/?>$/i;\nvar simpleTagRe = /^<(\\/?)([a-z]+)\\s*>$/;\n\nmodule.exports = function (tree) {\n var open;\n var currentParent;\n visit(tree, 'html', function (node, index, parent) {\n if (currentParent !== parent) {\n open = [];\n currentParent = parent;\n }\n\n var selfClosing = getSelfClosing(node);\n\n if (selfClosing) {\n parent.children.splice(index, 1, {\n type: type,\n tag: selfClosing,\n position: node.position\n });\n return true;\n }\n\n var current = getSimpleTag(node, parent);\n\n if (!current) {\n return true;\n }\n\n var matching = findAndPull(open, current.tag);\n\n if (matching) {\n parent.children.splice(index, 0, virtual(current, matching, parent));\n } else if (!current.opening) {\n open.push(current);\n }\n\n return true;\n }, true // Iterate in reverse\n );\n return tree;\n};\n\nfunction findAndPull(open, matchingTag) {\n var i = open.length;\n\n while (i--) {\n if (open[i].tag === matchingTag) {\n return open.splice(i, 1)[0];\n }\n }\n\n return false;\n}\n\nfunction getSimpleTag(node, parent) {\n var match = node.value.match(simpleTagRe);\n return match ? {\n tag: match[2],\n opening: !match[1],\n node: node\n } : false;\n}\n\nfunction getSelfClosing(node) {\n var match = node.value.match(selfClosingRe);\n return match ? match[1] : false;\n}\n\nfunction virtual(fromNode, toNode, parent) {\n var fromIndex = parent.children.indexOf(fromNode.node);\n var toIndex = parent.children.indexOf(toNode.node);\n var extracted = parent.children.splice(fromIndex, toIndex - fromIndex + 1);\n var children = extracted.slice(1, -1);\n return {\n type: type,\n children: children,\n tag: fromNode.tag,\n position: {\n start: fromNode.node.position.start,\n end: toNode.node.position.end,\n indent: []\n }\n };\n}","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\nmodule.exports = asciiPunctuation\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction serializeChunks(chunks) {\n var index = -1\n var result = []\n var chunk\n var value\n var atTab\n\n while (++index < chunks.length) {\n chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n value = chunk\n } else if (chunk === -5) {\n value = '\\r'\n } else if (chunk === -4) {\n value = '\\n'\n } else if (chunk === -3) {\n value = '\\r' + '\\n'\n } else if (chunk === -2) {\n value = '\\t'\n } else if (chunk === -1) {\n if (atTab) continue\n value = ' '\n } else {\n // Currently only replacement character.\n value = fromCharCode(chunk)\n }\n\n atTab = chunk === -2\n result.push(value)\n }\n\n return result.join('')\n}\n\nmodule.exports = serializeChunks\n","'use strict'\n\n// Counts tabs based on their expanded size, and CR+LF as one character.\n\nfunction sizeChunks(chunks) {\n var index = -1\n var size = 0\n\n while (++index < chunks.length) {\n size += typeof chunks[index] === 'string' ? chunks[index].length : 1\n }\n\n return size\n}\n\nmodule.exports = sizeChunks\n","'use strict'\n\nvar VMessage = require('vfile-message')\nvar VFile = require('./core.js')\n\nmodule.exports = VFile\n\nVFile.prototype.message = message\nVFile.prototype.info = info\nVFile.prototype.fail = fail\n\n// Create a message with `reason` at `position`.\n// When an error is passed in as `reason`, copies the stack.\nfunction message(reason, position, origin) {\n var message = new VMessage(reason, position, 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// Fail: creates a vmessage, associates it with the file, and throws it.\nfunction fail() {\n var message = this.message.apply(this, arguments)\n\n message.fatal = true\n\n throw message\n}\n\n// Info: creates a vmessage, associates it with the file, and marks the fatality\n// as null.\nfunction info() {\n var message = this.message.apply(this, arguments)\n\n message.fatal = null\n\n return message\n}\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\nvar unicodePunctuationRegex = require('../constant/unicode-punctuation-regex.js')\n\n// In fact adds to the bundle size.\n\nvar unicodePunctuation = regexCheck(unicodePunctuationRegex)\n\nmodule.exports = unicodePunctuation\n","'use strict'\n\nmodule.exports = fromMarkdown\n\n// These three are compiled away in the `dist/`\n\nvar toString = require('mdast-util-to-string')\nvar assign = require('micromark/dist/constant/assign')\nvar own = require('micromark/dist/constant/has-own-property')\nvar normalizeIdentifier = require('micromark/dist/util/normalize-identifier')\nvar safeFromInt = require('micromark/dist/util/safe-from-int')\nvar parser = require('micromark/dist/parse')\nvar preprocessor = require('micromark/dist/preprocess')\nvar postprocess = require('micromark/dist/postprocess')\nvar decode = require('parse-entities/decode-entity')\nvar stringifyPosition = require('unist-util-stringify-position')\n\nfunction fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n\n return compiler(options)(\n postprocess(\n parser(options).document().write(preprocessor()(value, encoding, true))\n )\n )\n}\n\n// Note this compiler only understand complete buffering, not streaming.\nfunction compiler(options) {\n var settings = options || {}\n var config = configure(\n {\n canContainEols: [\n 'emphasis',\n 'fragment',\n 'heading',\n 'paragraph',\n 'strong'\n ],\n\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n\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\n settings.mdastExtensions || []\n )\n\n var data = {}\n\n return compile\n\n function compile(events) {\n var stack = [{type: 'root', children: []}]\n var tokenStack = []\n var listStack = []\n var index = -1\n var handler\n var listStart\n\n var context = {\n stack: stack,\n tokenStack: tokenStack,\n config: config,\n enter: enter,\n exit: exit,\n buffer: buffer,\n resume: resume,\n setData: setData,\n getData: getData\n }\n\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n listStart = listStack.pop(index)\n index = prepareList(events, listStart, index)\n }\n }\n }\n\n index = -1\n\n while (++index < events.length) {\n handler = config[events[index][0]]\n\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n assign({sliceSerialize: events[index][2].sliceSerialize}, context),\n events[index][1]\n )\n }\n }\n\n if (tokenStack.length) {\n throw new Error(\n 'Cannot close document, a token (`' +\n tokenStack[tokenStack.length - 1].type +\n '`, ' +\n stringifyPosition({\n start: tokenStack[tokenStack.length - 1].start,\n end: tokenStack[tokenStack.length - 1].end\n }) +\n ') is still open'\n )\n }\n\n // Figure out `root` position.\n stack[0].position = {\n start: point(\n events.length ? events[0][1].start : {line: 1, column: 1, offset: 0}\n ),\n\n end: point(\n events.length\n ? events[events.length - 2][1].end\n : {line: 1, column: 1, offset: 0}\n )\n }\n\n return stack[0]\n }\n\n function prepareList(events, start, length) {\n var index = start - 1\n var containerBalance = -1\n var listSpread = false\n var listItem\n var tailIndex\n var lineIndex\n var tailEvent\n var event\n var firstBlankLineIndex\n var atMarker\n\n while (++index <= length) {\n event = events[index]\n\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n tailIndex = index\n lineIndex = undefined\n\n while (tailIndex--) {\n tailEvent = events[tailIndex]\n\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = point(\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\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: point(event[1].start)\n }\n\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n\n events[start][1]._spread = listSpread\n return length\n }\n\n function setData(key, value) {\n data[key] = value\n }\n\n function getData(key) {\n return data[key]\n }\n\n function point(d) {\n return {line: d.line, column: d.column, offset: d.offset}\n }\n\n function opener(create, and) {\n return open\n\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n function buffer() {\n this.stack.push({type: 'fragment', children: []})\n }\n\n function enter(node, token) {\n this.stack[this.stack.length - 1].children.push(node)\n this.stack.push(node)\n this.tokenStack.push(token)\n node.position = {start: point(token.start)}\n return node\n }\n\n function closer(and) {\n return close\n\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n function exit(token) {\n var node = this.stack.pop()\n var open = this.tokenStack.pop()\n\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({start: token.start, end: token.end}) +\n '): it’s not open'\n )\n } else if (open.type !== token.type) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({start: token.start, end: token.end}) +\n '): a different token (`' +\n open.type +\n '`, ' +\n stringifyPosition({start: open.start, end: open.end}) +\n ') is open'\n )\n }\n\n node.position.end = point(token.end)\n return node\n }\n\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n this.stack[this.stack.length - 2].start = parseInt(\n this.sliceSerialize(token),\n 10\n )\n\n setData('expectingFirstListItemValue')\n }\n }\n\n function onexitcodefencedfenceinfo() {\n var data = this.resume()\n this.stack[this.stack.length - 1].lang = data\n }\n\n function onexitcodefencedfencemeta() {\n var data = this.resume()\n this.stack[this.stack.length - 1].meta = data\n }\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 function onexitcodefenced() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data.replace(\n /^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g,\n ''\n )\n\n setData('flowCodeInside')\n }\n\n function onexitcodeindented() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitdefinitionlabelstring(token) {\n // Discard label, use the source content instead.\n var label = this.resume()\n this.stack[this.stack.length - 1].label = label\n this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n function onexitdefinitiontitlestring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].title = data\n }\n\n function onexitdefinitiondestinationstring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].url = data\n }\n\n function onexitatxheadingsequence(token) {\n if (!this.stack[this.stack.length - 1].depth) {\n this.stack[this.stack.length - 1].depth = this.sliceSerialize(\n token\n ).length\n }\n }\n\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n function onexitsetextheadinglinesequence(token) {\n this.stack[this.stack.length - 1].depth =\n this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n function onenterdata(token) {\n var siblings = this.stack[this.stack.length - 1].children\n var tail = siblings[siblings.length - 1]\n\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n tail.position = {start: point(token.start)}\n this.stack[this.stack.length - 1].children.push(tail)\n }\n\n this.stack.push(tail)\n }\n\n function onexitdata(token) {\n var tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n function onexitlineending(token) {\n var context = this.stack[this.stack.length - 1]\n\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n context.children[context.children.length - 1].position.end = point(\n token.end\n )\n\n setData('atHardBreak')\n return\n }\n\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.indexOf(context.type) > -1\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n function onexithtmlflow() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexithtmltext() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitcodetext() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitlink() {\n var context = this.stack[this.stack.length - 1]\n\n // To do: clean.\n if (getData('inReference')) {\n context.type += 'Reference'\n context.referenceType = getData('referenceType') || 'shortcut'\n delete context.url\n delete context.title\n } else {\n delete context.identifier\n delete context.label\n delete context.referenceType\n }\n\n setData('referenceType')\n }\n\n function onexitimage() {\n var context = this.stack[this.stack.length - 1]\n\n // To do: clean.\n if (getData('inReference')) {\n context.type += 'Reference'\n context.referenceType = getData('referenceType') || 'shortcut'\n delete context.url\n delete context.title\n } else {\n delete context.identifier\n delete context.label\n delete context.referenceType\n }\n\n setData('referenceType')\n }\n\n function onexitlabeltext(token) {\n this.stack[this.stack.length - 2].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n function onexitlabel() {\n var fragment = this.stack[this.stack.length - 1]\n var value = this.resume()\n\n this.stack[this.stack.length - 1].label = value\n\n // Assume a reference.\n setData('inReference', true)\n\n if (this.stack[this.stack.length - 1].type === 'link') {\n this.stack[this.stack.length - 1].children = fragment.children\n } else {\n this.stack[this.stack.length - 1].alt = value\n }\n }\n\n function onexitresourcedestinationstring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].url = data\n }\n\n function onexitresourcetitlestring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].title = data\n }\n\n function onexitresource() {\n setData('inReference')\n }\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n function onexitreferencestring(token) {\n var label = this.resume()\n this.stack[this.stack.length - 1].label = label\n this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n function onexitcharacterreferencevalue(token) {\n var data = this.sliceSerialize(token)\n var type = getData('characterReferenceType')\n var value\n var tail\n\n if (type) {\n value = safeFromInt(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n\n setData('characterReferenceType')\n } else {\n value = decode(data)\n }\n\n tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n this.stack[this.stack.length - 1].url = this.sliceSerialize(token)\n }\n\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n this.stack[this.stack.length - 1].url =\n 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n function blockQuote() {\n return {type: 'blockquote', children: []}\n }\n\n function codeFlow() {\n return {type: 'code', lang: null, meta: null, value: ''}\n }\n\n function codeText() {\n return {type: 'inlineCode', value: ''}\n }\n\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n function emphasis() {\n return {type: 'emphasis', children: []}\n }\n\n function heading() {\n return {type: 'heading', depth: undefined, children: []}\n }\n\n function hardBreak() {\n return {type: 'break'}\n }\n\n function html() {\n return {type: 'html', value: ''}\n }\n\n function image() {\n return {type: 'image', title: null, url: '', alt: null}\n }\n\n function link() {\n return {type: 'link', title: null, url: '', children: []}\n }\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 function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n function paragraph() {\n return {type: 'paragraph', children: []}\n }\n\n function strong() {\n return {type: 'strong', children: []}\n }\n\n function text() {\n return {type: 'text', value: ''}\n }\n\n function thematicBreak() {\n return {type: 'thematicBreak'}\n }\n}\n\nfunction configure(config, extensions) {\n var index = -1\n\n while (++index < extensions.length) {\n extension(config, extensions[index])\n }\n\n return config\n}\n\nfunction extension(config, extension) {\n var key\n var left\n\n for (key in extension) {\n left = own.call(config, key) ? config[key] : (config[key] = {})\n\n if (key === 'canContainEols') {\n config[key] = [].concat(left, extension[key])\n } else {\n Object.assign(left, extension[key])\n }\n }\n}\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\n\nvar tokenize = initializeContent\n\nfunction initializeContent(effects) {\n var contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n var previous\n return contentStart\n\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n\n function lineStart(code) {\n var token = effects.enter('chunkText', {\n contentType: 'text',\n previous: previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n return data(code)\n }\n\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n } // Data.\n\n effects.consume(code)\n return data\n }\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar asciiControl = require('../character/ascii-control.js')\n\n// eslint-disable-next-line max-params\nfunction destinationFactory(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n var limit = max || Infinity\n var balance = 0\n return start\n\n function start(code) {\n if (code === 60) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return destinationEnclosedBefore\n }\n\n if (asciiControl(code)) {\n return nok(code)\n }\n\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationRaw(code)\n }\n\n function destinationEnclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationEnclosed(code)\n }\n\n function destinationEnclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return destinationEnclosedBefore(code)\n }\n\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n }\n\n function destinationEnclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return destinationEnclosed\n }\n\n return destinationEnclosed(code)\n }\n\n function destinationRaw(code) {\n if (code === 40) {\n if (++balance > limit) return nok(code)\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === 41) {\n if (!balance--) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n if (balance) return nok(code)\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n if (asciiControl(code)) return nok(code)\n effects.consume(code)\n return code === 92 ? destinationRawEscape : destinationRaw\n }\n\n function destinationRawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return destinationRaw\n }\n\n return destinationRaw(code)\n }\n}\n\nmodule.exports = destinationFactory\n","'use strict'\n\nvar p = require('./minpath')\nvar proc = require('./minproc')\nvar buffer = require('is-buffer')\n\nmodule.exports = VFile\n\nvar own = {}.hasOwnProperty\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.\nvar order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nVFile.prototype.toString = toString\n\n// Access full path (`~/index.min.js`).\nObject.defineProperty(VFile.prototype, 'path', {get: getPath, set: setPath})\n\n// Access parent path (`~`).\nObject.defineProperty(VFile.prototype, 'dirname', {\n get: getDirname,\n set: setDirname\n})\n\n// Access basename (`index.min.js`).\nObject.defineProperty(VFile.prototype, 'basename', {\n get: getBasename,\n set: setBasename\n})\n\n// Access extname (`.js`).\nObject.defineProperty(VFile.prototype, 'extname', {\n get: getExtname,\n set: setExtname\n})\n\n// Access stem (`index.min`).\nObject.defineProperty(VFile.prototype, 'stem', {get: getStem, set: setStem})\n\n// Construct a new file.\nfunction VFile(options) {\n var prop\n var index\n\n if (!options) {\n options = {}\n } else if (typeof options === 'string' || buffer(options)) {\n options = {contents: options}\n } else if ('message' in options && 'messages' in options) {\n return options\n }\n\n if (!(this instanceof VFile)) {\n return new VFile(options)\n }\n\n this.data = {}\n this.messages = []\n this.history = []\n this.cwd = proc.cwd()\n\n // Set path related properties in the correct order.\n index = -1\n\n while (++index < order.length) {\n prop = order[index]\n\n if (own.call(options, prop)) {\n this[prop] = options[prop]\n }\n }\n\n // Set non-path related properties.\n for (prop in options) {\n if (order.indexOf(prop) < 0) {\n this[prop] = options[prop]\n }\n }\n}\n\nfunction getPath() {\n return this.history[this.history.length - 1]\n}\n\nfunction setPath(path) {\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n}\n\nfunction getDirname() {\n return typeof this.path === 'string' ? p.dirname(this.path) : undefined\n}\n\nfunction setDirname(dirname) {\n assertPath(this.path, 'dirname')\n this.path = p.join(dirname || '', this.basename)\n}\n\nfunction getBasename() {\n return typeof this.path === 'string' ? p.basename(this.path) : undefined\n}\n\nfunction setBasename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = p.join(this.dirname || '', basename)\n}\n\nfunction getExtname() {\n return typeof this.path === 'string' ? p.extname(this.path) : undefined\n}\n\nfunction setExtname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.path, 'extname')\n\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.indexOf('.', 1) > -1) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = p.join(this.dirname, this.stem + (extname || ''))\n}\n\nfunction getStem() {\n return typeof this.path === 'string'\n ? p.basename(this.path, this.extname)\n : undefined\n}\n\nfunction setStem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = p.join(this.dirname || '', stem + (this.extname || ''))\n}\n\n// Get the value of the file.\nfunction toString(encoding) {\n return (this.contents || '').toString(encoding)\n}\n\n// Assert that `part` is not a path (i.e., does not contain `p.sep`).\nfunction assertPart(part, name) {\n if (part && part.indexOf(p.sep) > -1) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + p.sep + '`'\n )\n }\n}\n\n// Assert that `part` is not empty.\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n// Assert `path` exists.\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n","'use strict'\n\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\nvar factoryTitle = require('./factory-title.js')\n\nvar definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\nvar titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n}\n\nfunction tokenizeDefinition(effects, ok, nok) {\n var self = this\n var identifier\n return start\n\n function start(code) {\n effects.enter('definition')\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker') // Note: blank lines can’t exist in content.\n\n return factoryWhitespace(\n effects,\n factoryDestination(\n effects,\n effects.attempt(\n titleConstruct,\n factorySpace(effects, after, 'whitespace'),\n factorySpace(effects, after, 'whitespace')\n ),\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )\n )\n }\n\n return nok(code)\n }\n\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n if (self.parser.defined.indexOf(identifier) < 0) {\n self.parser.defined.push(identifier)\n }\n\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeTitle(effects, ok, nok) {\n return start\n\n function start(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, before)(code)\n : nok(code)\n }\n\n function before(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factorySpace(effects, after, 'whitespace'),\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n return nok(code)\n }\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n\nmodule.exports = definition\n","'use strict'\n\n/* Expose. */\nmodule.exports = visitParents\n\n/* Visit. */\nfunction visitParents(tree, type, visitor) {\n var stack = []\n\n if (typeof type === 'function') {\n visitor = type\n type = null\n }\n\n one(tree)\n\n /* Visit a single node. */\n function one(node) {\n var result\n\n if (!type || node.type === type) {\n result = visitor(node, stack.concat())\n }\n\n if (node.children && result !== false) {\n return all(node.children, node)\n }\n\n return result\n }\n\n /* Visit children in `parent`. */\n function all(children, parent) {\n var length = children.length\n var index = -1\n var child\n\n stack.push(parent)\n\n while (++index < length) {\n child = children[index]\n\n if (child && one(child) === false) {\n return false\n }\n }\n\n stack.pop()\n\n return true\n }\n}\n","'use strict'\n\nvar hasOwnProperty = require('../constant/has-own-property.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar miniflat = require('./miniflat.js')\n\nfunction combineExtensions(extensions) {\n var all = {}\n var index = -1\n\n while (++index < extensions.length) {\n extension(all, extensions[index])\n }\n\n return all\n}\n\nfunction extension(all, extension) {\n var hook\n var left\n var right\n var code\n\n for (hook in extension) {\n left = hasOwnProperty.call(all, hook) ? all[hook] : (all[hook] = {})\n right = extension[hook]\n\n for (code in right) {\n left[code] = constructs(\n miniflat(right[code]),\n hasOwnProperty.call(left, code) ? left[code] : []\n )\n }\n }\n}\n\nfunction constructs(list, existing) {\n var index = -1\n var before = []\n\n while (++index < list.length) {\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n chunkedSplice(existing, 0, 0, before)\n return existing\n}\n\nmodule.exports = combineExtensions\n","import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport function PureComponent(p) {\n\tthis.props = p;\n}\nPureComponent.prototype = new Component();\n// Some third-party libraries check if this property is present\nPureComponent.prototype.isPureReactComponent = true;\nPureComponent.prototype.shouldComponentUpdate = function(props, state) {\n\treturn shallowDiffers(this.props, props) || shallowDiffers(this.state, state);\n};\n","import { createElement } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionalComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionalComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, props);\n\t}\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n","import { options } from 'preact';\nimport { assign } from './util';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\nexport const REACT_FORWARD_SYMBOL =\n\t(typeof Symbol != 'undefined' &&\n\t\tSymbol.for &&\n\t\tSymbol.for('react.forward_ref')) ||\n\t0xf47;\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionalComponent}\n */\nexport function forwardRef(fn) {\n\t// We always have ref in props.ref, except for\n\t// mobx-react. It will call this function directly\n\t// and always pass ref as the second argument.\n\tfunction Forwarded(props, ref) {\n\t\tlet clone = assign({}, props);\n\t\tdelete clone.ref;\n\t\tref = props.ref || ref;\n\t\treturn fn(\n\t\t\tclone,\n\t\t\t!ref || (typeof ref === 'object' && !('current' in ref)) ? null : ref\n\t\t);\n\t}\n\n\t// mobx-react checks for this being present\n\tForwarded.$$typeof = REACT_FORWARD_SYMBOL;\n\t// mobx-react heavily relies on implementation details.\n\t// It expects an object here with a `render` property,\n\t// and prototype.render will fail. Without this\n\t// mobx-react throws.\n\tForwarded.render = Forwarded;\n\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n","import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (children == null) return null;\n\treturn toChildArray(toChildArray(children).map(fn));\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tconst normalized = toChildArray(children);\n\t\tif (normalized.length !== 1) throw 'Children.only';\n\t\treturn normalized[0];\n\t},\n\ttoArray: toChildArray\n};\n","import { Component, createElement, options, Fragment } from 'preact';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function(error, newVNode, oldVNode) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\tif (newVNode._dom == null) {\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t}\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode);\n};\n\nfunction detachedClone(vnode) {\n\tif (vnode) {\n\t\tif (vnode._component && vnode._component.__hooks) {\n\t\t\tvnode._component.__hooks._list.forEach(effect => {\n\t\t\t\tif (typeof effect._cleanup == 'function') effect._cleanup();\n\t\t\t});\n\n\t\t\tvnode._component.__hooks = null;\n\t\t}\n\n\t\tvnode = assign({}, vnode);\n\t\tvnode._component = null;\n\t\tvnode._children = vnode._children && vnode._children.map(detachedClone);\n\t}\n\n\treturn vnode;\n}\n\nfunction removeOriginal(vnode) {\n\tif (vnode) {\n\t\tvnode._original = null;\n\t\tvnode._children = vnode._children && vnode._children.map(removeOriginal);\n\t}\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @param {Promise} promise The thrown promise\n * @param {import('./internal').VNode} suspendingVNode The suspending component\n */\nSuspense.prototype._childDidSuspend = function(promise, suspendingVNode) {\n\tconst suspendingComponent = suspendingVNode._component;\n\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\t\tsuspendingComponent.componentWillUnmount =\n\t\t\tsuspendingComponent._suspendedComponentWillUnmount;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._suspendedComponentWillUnmount =\n\t\tsuspendingComponent.componentWillUnmount;\n\tsuspendingComponent.componentWillUnmount = () => {\n\t\tonResolved();\n\n\t\tif (suspendingComponent._suspendedComponentWillUnmount) {\n\t\t\tsuspendingComponent._suspendedComponentWillUnmount();\n\t\t}\n\t};\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\tc._vnode._children[0] = removeOriginal(c.state._suspended);\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * We do not set `suspended: true` during hydration because we want the actual markup\n\t * to remain on screen and hydrate it when the suspense actually gets resolved.\n\t * While in non-hydration cases the usual fallback -> component flow would occour.\n\t */\n\tconst wasHydrating = suspendingVNode._hydrating === true;\n\tif (!wasHydrating && !c._pendingSuspensionCount++) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.componentWillUnmount = function() {\n\tthis._suspenders = [];\n};\n\nSuspense.prototype.render = function(props, state) {\n\tif (this._detachOnNextRender) {\n\t\t// When the Suspense's _vnode was created by a call to createVNode\n\t\t// (i.e. due to a setState further up in the tree)\n\t\t// it's _children prop is null, in this case we \"forget\" about the parked vnodes to detach\n\t\tif (this._vnode._children)\n\t\t\tthis._vnode._children[0] = detachedClone(this._detachOnNextRender);\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\t// Wrap fallback tree in a VNode that prevents itself from being marked as aborting mid-hydration:\n\t/** @type {import('./internal').VNode} */\n\tconst fallback =\n\t\tstate._suspended && createElement(Fragment, null, props.fallback);\n\tif (fallback) fallback._hydrating = null;\n\n\treturn [\n\t\tcreateElement(Fragment, null, state._suspended ? null : props.children),\n\t\tfallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('./internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\t/** @type {import('./internal').Component} */\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n","import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function(child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function(props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate = SuspenseList.prototype.componentDidMount = function() {\n\t// Iterate through all children after mounting for two reasons:\n\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t// each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t// The nodes can now be completely consumed from the linked list.\n\t// 2. Handle nodes that might have gotten resolved between render and\n\t// componentDidMount.\n\tthis._map.forEach((node, child) => {\n\t\tresolve(this, child, node);\n\t});\n};\n","import { createElement, hydrate, render, __u as _unmount } from 'preact';\n\nfunction ContextProvider(props) {\n\tthis.getChildContext = () => props.context;\n\treturn props.children;\n}\n\n/**\n * Portal component\n * @param {object | null | undefined} props\n *\n * TODO: this could use the \"fake root node\" trick from the partial hydration demo\n */\nfunction Portal(props) {\n\tconst _this = this;\n\tlet container = props._container;\n\tlet wrap = createElement(\n\t\tContextProvider,\n\t\t{ context: _this.context },\n\t\tprops._vnode\n\t);\n\n\t_this.componentWillUnmount = function() {\n\t\tlet parent = _this._temp.parentNode;\n\t\tif (parent) parent.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t};\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\t_this.componentWillUnmount();\n\t\t// if (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t// _unmount(_this._wrap);\n\t\t_this._hasMounted = false;\n\t}\n\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\n\t// conditional vnode. This should not trigger a render.\n\tif (props._vnode) {\n\t\tif (!_this._hasMounted) {\n\t\t\t// Create a placeholder that we can use to insert into.\n\t\t\t_this._temp = document.createTextNode('');\n\t\t\t// temporarily store the current children of the container to restore them after render\n\t\t\t_this._children = container._children;\n\t\t\t// Hydrate existing nodes to keep the dom intact, when rendering\n\t\t\t// wrap into the container.\n\t\t\thydrate('', container);\n\t\t\t// Append to the container (this matches React's behavior)\n\t\t\tcontainer.appendChild(_this._temp);\n\t\t\t// At this point we have mounted and should set our container.\n\t\t\t_this._hasMounted = true;\n\t\t\t_this._container = container;\n\t\t\t// Render our wrapping element into temp.\n\t\t\trender(wrap, container, _this._temp);\n\t\t\t// restore the previous children of the container\n\t\t\tcontainer._children = _this._children;\n\t\t\t// store the children of the new vnode to be used in subsequent re-renders\n\t\t\t_this._children = _this._temp._children;\n\t\t} else {\n\t\t\t// When we have mounted and the vnode is present it means the\n\t\t\t// props have changed or a parent is triggering a rerender.\n\t\t\t// This implies we only need to call render. But we need to keep\n\t\t\t// the old tree around, otherwise will treat the vnodes as new and\n\t\t\t// will wrongly call `componentDidMount` on them\n\t\t\tcontainer._children = _this._children;\n\t\t\trender(wrap, container);\n\t\t\t_this._children = container._children;\n\t\t}\n\t}\n\t// When we come from a conditional render, on a mounted\n\t// portal we should clear the DOM.\n\telse if (_this._hasMounted) {\n\t\t_this.componentWillUnmount();\n\t\t// if (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t// _unmount(_this._wrap);\n\t}\n\t// Set the wrapping element for future unmounting.\n\t_this._wrap = wrap;\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\treturn createElement(Portal, { _vnode: vnode, _container: container });\n}\n","import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\n\n// Input types for which onchange should not be converted to oninput.\n// type=\"file|checkbox|radio\", plus \"range\" in IE11.\n// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches \"range\")\nconst ONCHANGE_INPUT_TYPES =\n\ttypeof Symbol != 'undefined' ? /fil|che|rad/i : /fil|che|ra/i;\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\n// `UNSAFE_*` lifecycle hooks\n// Preact only ever invokes the unprefixed methods.\n// Here we provide a base \"fallback\" implementation that calls any defined UNSAFE_ prefixed method.\n// - If a component defines its own `componentDidMount()` (including via defineProperty), use that.\n// - If a component defines `UNSAFE_componentDidMount()`, `componentDidMount` is the alias getter/setter.\n// - If anything assigns to an `UNSAFE_*` property, the assignment is forwarded to the unprefixed property.\n// See https://github.com/preactjs/preact/issues/1941\n[\n\t'componentWillMount',\n\t'componentWillReceiveProps',\n\t'componentWillUpdate'\n].forEach(key => {\n\tObject.defineProperty(Component.prototype, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn this['UNSAFE_' + key];\n\t\t},\n\t\tset(v) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: v\n\t\t\t});\n\t\t}\n\t});\n});\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\tparent.textContent = '';\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\te.persist = empty;\n\te.isPropagationStopped = isPropagationStopped;\n\te.isDefaultPrevented = isDefaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\nfunction empty() {}\n\nfunction isPropagationStopped() {\n\treturn this.cancelBubble;\n}\n\nfunction isDefaultPrevented() {\n\treturn this.defaultPrevented;\n}\n\nlet classNameDescriptor = {\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\tlet type = vnode.type;\n\tlet props = vnode.props;\n\tlet normalizedProps = props;\n\n\t// only normalize props on Element nodes\n\tif (typeof type === 'string') {\n\t\tnormalizedProps = {};\n\n\t\tfor (let i in props) {\n\t\t\tlet value = props[i];\n\n\t\t\tif (i === 'defaultValue' && 'value' in props && props.value == null) {\n\t\t\t\t// `defaultValue` is treated as a fallback `value` when a value prop is present but null/undefined.\n\t\t\t\t// `defaultValue` for Elements with no value prop is the same as the DOM defaultValue property.\n\t\t\t\ti = 'value';\n\t\t\t} else if (i === 'download' && value === true) {\n\t\t\t\t// Calling `setAttribute` with a truthy value will lead to it being\n\t\t\t\t// passed as a stringified value, e.g. `download=\"true\"`. React\n\t\t\t\t// converts it to an empty string instead, otherwise the attribute\n\t\t\t\t// value will be used as the file name and the file will be called\n\t\t\t\t// \"true\" upon downloading it.\n\t\t\t\tvalue = '';\n\t\t\t} else if (/ondoubleclick/i.test(i)) {\n\t\t\t\ti = 'ondblclick';\n\t\t\t} else if (\n\t\t\t\t/^onchange(textarea|input)/i.test(i + type) &&\n\t\t\t\t!ONCHANGE_INPUT_TYPES.test(props.type)\n\t\t\t) {\n\t\t\t\ti = 'oninput';\n\t\t\t} else if (/^on(Ani|Tra|Tou|BeforeInp)/.test(i)) {\n\t\t\t\ti = i.toLowerCase();\n\t\t\t} else if (CAMEL_PROPS.test(i)) {\n\t\t\t\ti = i.replace(/[A-Z0-9]/, '-$&').toLowerCase();\n\t\t\t} else if (value === null) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\n\t\t\tnormalizedProps[i] = value;\n\t\t}\n\n\t\t// Add support for array select values: \n\t\tif (\n\t\t\ttype == 'select' &&\n\t\t\tnormalizedProps.multiple &&\n\t\t\tArray.isArray(normalizedProps.value)\n\t\t) {\n\t\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\n\t\t\t});\n\t\t}\n\n\t\tvnode.props = normalizedProps;\n\t}\n\n\tif (type && props.class != props.className) {\n\t\tclassNameDescriptor.enumerable = 'className' in props;\n\t\tif (props.className != null) normalizedProps.class = props.className;\n\t\tObject.defineProperty(normalizedProps, 'className', classNameDescriptor);\n\t}\n\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tif (oldVNodeHook) oldVNodeHook(vnode);\n};\n\n// Only needed for react-relay\nlet currentComponent;\nconst oldBeforeRender = options._render;\noptions._render = function(vnode) {\n\tif (oldBeforeRender) {\n\t\toldBeforeRender(vnode);\n\t}\n\tcurrentComponent = vnode._component;\n};\n\n// This is a very very private internal function for React it\n// is used to sort-of do runtime dependency injection. So far\n// only `react-relay` makes use of it. It uses it to read the\n// context value.\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\n\tReactCurrentDispatcher: {\n\t\tcurrent: {\n\t\t\treadContext(context) {\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\n\t\t\t}\n\t\t}\n\t}\n};\n","'use strict'\n\nvar asciiPunctuation = require('../character/ascii-punctuation.js')\n\nvar characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return open\n }\n\n function open(code) {\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = characterEscape\n","'use strict'\n\nvar assign = Object.assign\n\nmodule.exports = assign\n","'use strict'\n\nfunction markdownLineEndingOrSpace(code) {\n return code < 0 || code === 32\n}\n\nmodule.exports = markdownLineEndingOrSpace\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\nmodule.exports = asciiHexDigit\n","'use strict'\n\n// This module is copied from .\nvar basics = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'section',\n 'source',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\nmodule.exports = basics\n","'use strict'\n\nvar fromCharCode = String.fromCharCode\n\nmodule.exports = fromCharCode\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar partialBlankLine = require('./partial-blank-line.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar htmlBlockNames = require('../constant/html-block-names.js')\nvar htmlRawNames = require('../constant/html-raw-names.js')\n\nvar htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\nvar nextBlankConstruct = {\n tokenize: tokenizeNextBlank,\n partial: true\n}\n\nfunction resolveToHtmlFlow(events) {\n var index = events.length\n\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\n }\n\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.\n\n events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n events.splice(index - 2, 2)\n }\n\n return events\n}\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n var self = this\n var kind\n var startTag\n var buffer\n var index\n var marker\n return start\n\n function start(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationStart\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n kind = 3 // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = fromCharCode(code)\n startTag = true\n return tagName\n }\n\n return nok(code)\n }\n\n function declarationStart(code) {\n if (code === 45) {\n effects.consume(code)\n kind = 2\n return commentOpenInside\n }\n\n if (code === 91) {\n effects.consume(code)\n kind = 5\n buffer = 'CDATA['\n index = 0\n return cdataOpenInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n kind = 4\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n\n function cdataOpenInside(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length\n ? self.interrupt\n ? ok\n : continuation\n : cdataOpenInside\n }\n\n return nok(code)\n }\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n if (\n code !== 47 &&\n startTag &&\n htmlRawNames.indexOf(buffer.toLowerCase()) > -1\n ) {\n kind = 1\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n if (htmlBlockNames.indexOf(buffer.toLowerCase()) > -1) {\n kind = 6\n\n if (code === 47) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n kind = 7 // Do not support complete HTML when interrupting.\n\n return self.interrupt\n ? nok(code)\n : startTag\n ? completeAttributeNameBefore(code)\n : completeClosingTagAfter(code)\n }\n\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n return self.interrupt ? ok : continuation\n }\n\n return nok(code)\n }\n\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n\n return completeEnd(code)\n }\n\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n\n return completeEnd(code)\n }\n\n function completeAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n\n return completeAttributeNameAfter(code)\n }\n\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n\n return completeAttributeNameBefore(code)\n }\n\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return completeAttributeValueQuoted\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n marker = undefined\n return completeAttributeValueUnquoted(code)\n }\n\n function completeAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return completeAttributeValueQuotedAfter\n }\n\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n\n return nok(code)\n }\n\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\n\n function completeAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n\n return code === null || markdownLineEnding(code)\n ? continuation(code)\n : nok(code)\n }\n\n function continuation(code) {\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n\n if (code === 60 && kind === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n\n if (code === 62 && kind === 4) {\n effects.consume(code)\n return continuationClose\n }\n\n if (code === 63 && kind === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n if (code === 93 && kind === 5) {\n effects.consume(code)\n return continuationCharacterDataInside\n }\n\n if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n return effects.check(\n nextBlankConstruct,\n continuationClose,\n continuationAtLineEnding\n )(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n return continuationAtLineEnding(code)\n }\n\n effects.consume(code)\n return continuation\n }\n\n function continuationAtLineEnding(code) {\n effects.exit('htmlFlowData')\n return htmlContinueStart(code)\n }\n\n function htmlContinueStart(code) {\n if (code === null) {\n return done(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return htmlContinueStart\n }\n\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n\n function continuationRawEndTag(code) {\n if (code === 62 && htmlRawNames.indexOf(buffer.toLowerCase()) > -1) {\n effects.consume(code)\n return continuationClose\n }\n\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n buffer += fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n\n function continuationCharacterDataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n return continuation(code)\n }\n\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return done(code)\n }\n\n effects.consume(code)\n return continuationClose\n }\n\n function done(code) {\n effects.exit('htmlFlow')\n return ok(code)\n }\n}\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.exit('htmlFlowData')\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n return effects.attempt(partialBlankLine, ok, nok)\n }\n}\n\nmodule.exports = htmlFlow\n","'use strict'\n\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar asciiAlpha = require('../character/ascii-alpha.js')\n\nvar htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n var self = this\n var marker\n var buffer\n var index\n var returnState\n return start\n\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n return nok(code)\n }\n\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpen\n }\n\n if (code === 91) {\n effects.consume(code)\n buffer = 'CDATA['\n index = 0\n return cdataOpen\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n\n return nok(code)\n }\n\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentStart\n }\n\n return nok(code)\n }\n\n function commentStart(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentStartDash\n }\n\n return comment(code)\n }\n\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n return comment(code)\n }\n\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = comment\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return comment\n }\n\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return end\n }\n\n return comment(code)\n }\n\n function cdataOpen(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length ? cdata : cdataOpen\n }\n\n return nok(code)\n }\n\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = cdata\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return cdata\n }\n\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = declaration\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return declaration\n }\n\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = instruction\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return instruction\n }\n\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\n\n function tagClose(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return tagCloseBetween(code)\n }\n\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n\n return end(code)\n }\n\n function tagOpen(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n\n return end(code)\n }\n\n function tagOpenAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n return tagOpenAttributeNameAfter(code)\n }\n\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n\n return tagOpenBetween(code)\n }\n\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueUnquoted\n }\n\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return tagOpenAttributeValueQuotedAfter\n }\n\n if (code === null) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n } // We can’t have blank lines in content, so no need to worry about empty\n // tokens.\n\n function atLineEnding(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(\n effects,\n afterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n }\n\n function afterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = htmlText\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.Link = exports.Match = undefined;\n\nvar _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; };\n\nvar _preact = require('preact');\n\nvar _preactRouter = require('preact-router');\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Match = exports.Match = function (_Component) {\n\t_inherits(Match, _Component);\n\n\tfunction Match() {\n\t\tvar _temp, _this, _ret;\n\n\t\t_classCallCheck(this, Match);\n\n\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\targs[_key] = arguments[_key];\n\t\t}\n\n\t\treturn _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.update = function (url) {\n\t\t\t_this.nextUrl = url;\n\t\t\t_this.setState({});\n\t\t}, _temp), _possibleConstructorReturn(_this, _ret);\n\t}\n\n\tMatch.prototype.componentDidMount = function componentDidMount() {\n\t\t_preactRouter.subscribers.push(this.update);\n\t};\n\n\tMatch.prototype.componentWillUnmount = function componentWillUnmount() {\n\t\t_preactRouter.subscribers.splice(_preactRouter.subscribers.indexOf(this.update) >>> 0, 1);\n\t};\n\n\tMatch.prototype.render = function render(props) {\n\t\tvar url = this.nextUrl || (0, _preactRouter.getCurrentUrl)(),\n\t\t path = url.replace(/\\?.+$/, '');\n\t\tthis.nextUrl = null;\n\t\treturn props.children({\n\t\t\turl: url,\n\t\t\tpath: path,\n\t\t\tmatches: (0, _preactRouter.exec)(path, props.path, {}) !== false\n\t\t});\n\t};\n\n\treturn Match;\n}(_preact.Component);\n\nvar Link = function Link(_ref) {\n\tvar activeClassName = _ref.activeClassName,\n\t path = _ref.path,\n\t props = _objectWithoutProperties(_ref, ['activeClassName', 'path']);\n\n\treturn (0, _preact.h)(\n\t\tMatch,\n\t\t{ path: path || props.href },\n\t\tfunction (_ref2) {\n\t\t\tvar matches = _ref2.matches;\n\t\t\treturn (0, _preact.h)(_preactRouter.Link, _extends({}, props, { 'class': [props.class || props.className, matches && activeClassName].filter(Boolean).join(' ') }));\n\t\t}\n\t);\n};\n\nexports.Link = Link;\nexports.default = Match;\n\nMatch.Link = Link;\n","module.exports = require(\"path\");","'use strict'\n\nfunction markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n\nmodule.exports = markdownSpace\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\n\nvar tokenize = initializeDocument\nvar containerConstruct = {\n tokenize: tokenizeContainer\n}\nvar lazyFlowConstruct = {\n tokenize: tokenizeLazyFlow\n}\n\nfunction initializeDocument(effects) {\n var self = this\n var stack = []\n var continued = 0\n var inspectConstruct = {\n tokenize: tokenizeInspect,\n partial: true\n }\n var inspectResult\n var childFlow\n var childToken\n return start\n\n function start(code) {\n if (continued < stack.length) {\n self.containerState = stack[continued][1]\n return effects.attempt(\n stack[continued][0].continuation,\n documentContinue,\n documentContinued\n )(code)\n }\n\n return documentContinued(code)\n }\n\n function documentContinue(code) {\n continued++\n return start(code)\n }\n\n function documentContinued(code) {\n // If we’re in a concrete construct (such as when expecting another line of\n // HTML, or we resulted in lazy content), we can immediately start flow.\n if (inspectResult && inspectResult.flowContinue) {\n return flowStart(code)\n }\n\n self.interrupt =\n childFlow &&\n childFlow.currentConstruct &&\n childFlow.currentConstruct.interruptible\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n\n function containerContinue(code) {\n stack.push([self.currentConstruct, self.containerState])\n self.containerState = undefined\n return documentContinued(code)\n }\n\n function flowStart(code) {\n if (code === null) {\n exitContainers(0, true)\n effects.consume(code)\n return\n }\n\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n\n function flowContinue(code) {\n if (code === null) {\n continueFlow(effects.exit('chunkFlow'))\n return flowStart(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n continueFlow(effects.exit('chunkFlow'))\n return effects.check(inspectConstruct, documentAfterPeek)\n }\n\n effects.consume(code)\n return flowContinue\n }\n\n function documentAfterPeek(code) {\n exitContainers(\n inspectResult.continued,\n inspectResult && inspectResult.flowEnd\n )\n continued = 0\n return start(code)\n }\n\n function continueFlow(token) {\n if (childToken) childToken.next = token\n childToken = token\n childFlow.lazy = inspectResult && inspectResult.lazy\n childFlow.defineSkip(token.start)\n childFlow.write(self.sliceStream(token))\n }\n\n function exitContainers(size, end) {\n var index = stack.length // Close the flow.\n\n if (childFlow && end) {\n childFlow.write([null])\n childToken = childFlow = undefined\n } // Exit open containers.\n\n while (index-- > size) {\n self.containerState = stack[index][1]\n stack[index][0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function tokenizeInspect(effects, ok) {\n var subcontinued = 0\n inspectResult = {}\n return inspectStart\n\n function inspectStart(code) {\n if (subcontinued < stack.length) {\n self.containerState = stack[subcontinued][1]\n return effects.attempt(\n stack[subcontinued][0].continuation,\n inspectContinue,\n inspectLess\n )(code)\n } // If we’re continued but in a concrete flow, we can’t have more\n // containers.\n\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n inspectResult.flowContinue = true\n return inspectDone(code)\n }\n\n self.interrupt =\n childFlow.currentConstruct && childFlow.currentConstruct.interruptible\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n inspectFlowEnd,\n inspectDone\n )(code)\n }\n\n function inspectContinue(code) {\n subcontinued++\n return self.containerState._closeFlow\n ? inspectFlowEnd(code)\n : inspectStart(code)\n }\n\n function inspectLess(code) {\n if (childFlow.currentConstruct && childFlow.currentConstruct.lazy) {\n // Maybe another container?\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n inspectFlowEnd, // Maybe flow, or a blank line?\n effects.attempt(\n lazyFlowConstruct,\n inspectFlowEnd,\n effects.check(partialBlankLine, inspectFlowEnd, inspectLazy)\n )\n )(code)\n } // Otherwise we’re interrupting.\n\n return inspectFlowEnd(code)\n }\n\n function inspectLazy(code) {\n // Act as if all containers are continued.\n subcontinued = stack.length\n inspectResult.lazy = true\n inspectResult.flowContinue = true\n return inspectDone(code)\n } // We’re done with flow if we have more containers, or an interruption.\n\n function inspectFlowEnd(code) {\n inspectResult.flowEnd = true\n return inspectDone(code)\n }\n\n function inspectDone(code) {\n inspectResult.continued = subcontinued\n self.interrupt = self.containerState = undefined\n return ok(code)\n }\n }\n}\n\nfunction tokenizeContainer(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nfunction tokenizeLazyFlow(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.lazy(this.parser.constructs.flow, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n return open\n }\n\n function open(code) {\n if (markdownLineEnding(code)) {\n effects.exit('escapeMarker')\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = hardBreakEscape\n","'use strict'\n\n// This module is copied from .\nvar raws = ['pre', 'script', 'style', 'textarea']\n\nmodule.exports = raws\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\n\nvar codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n var self = this\n var closingFenceConstruct = {\n tokenize: tokenizeClosingFence,\n partial: true\n }\n var initialPrefix = prefixSize(this.events, 'linePrefix')\n var sizeOpen = 0\n var marker\n return start\n\n function start(code) {\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n marker = code\n return sequenceOpen(code)\n }\n\n function sequenceOpen(code) {\n if (code === marker) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n\n effects.exit('codeFencedFenceSequence')\n return sizeOpen < 3\n ? nok(code)\n : factorySpace(effects, infoOpen, 'whitespace')(code)\n }\n\n function infoOpen(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n function info(code) {\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, infoAfter, 'whitespace')(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return info\n }\n\n function infoAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return openAfter(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return meta\n }\n\n function openAfter(code) {\n effects.exit('codeFencedFence')\n return self.interrupt ? ok(code) : content(code)\n }\n\n function content(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(\n closingFenceConstruct,\n after,\n initialPrefix\n ? factorySpace(effects, content, 'linePrefix', initialPrefix + 1)\n : content\n )\n }\n\n effects.enter('codeFlowValue')\n return contentContinue(code)\n }\n\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return content(code)\n }\n\n effects.consume(code)\n return contentContinue\n }\n\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n function tokenizeClosingFence(effects, ok, nok) {\n var size = 0\n return factorySpace(\n effects,\n closingSequenceStart,\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return closingSequence(code)\n }\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return closingSequence\n }\n\n if (size < sizeOpen) return nok(code)\n effects.exit('codeFencedFenceSequence')\n return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n }\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n\n return nok(code)\n }\n }\n}\n\nmodule.exports = codeFenced\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"textarea\":\"textarea__1UKFm\"};","'use strict'\n\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar chunkedPush = require('../util/chunked-push.js')\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar shallow = require('../util/shallow.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\nvar factoryTitle = require('./factory-title.js')\n\nvar labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\nvar resourceConstruct = {\n tokenize: tokenizeResource\n}\nvar fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n}\nvar collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n}\n\nfunction resolveAllLabelEnd(events) {\n var index = -1\n var token\n\n while (++index < events.length) {\n token = events[index][1]\n\n if (\n !token._used &&\n (token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd')\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n\n return events\n}\n\nfunction resolveToLabelEnd(events, context) {\n var index = events.length\n var offset = 0\n var group\n var label\n var text\n var token\n var open\n var close\n var media // Find an opening.\n\n while (index--) {\n token = events[index][1]\n\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n } // Mark other link openings as inactive, as we can’t have links in\n // links.\n\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n\n group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: shallow(events[open][1].start),\n end: shallow(events[events.length - 1][1].end)\n }\n label = {\n type: 'label',\n start: shallow(events[open][1].start),\n end: shallow(events[close][1].end)\n }\n text = {\n type: 'labelText',\n start: shallow(events[open + offset + 2][1].end),\n end: shallow(events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ] // Opening marker.\n\n media = chunkedPush(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n media = chunkedPush(media, [['enter', text, context]]) // Between.\n\n media = chunkedPush(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n ) // Text close, marker close, label close.\n\n media = chunkedPush(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ]) // Reference, resource, or so.\n\n media = chunkedPush(media, events.slice(close + 1)) // Media close.\n\n media = chunkedPush(media, [['exit', group, context]])\n chunkedSplice(events, open, events.length, media)\n return events\n}\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n var self = this\n var index = self.events.length\n var labelStart\n var defined // Find an opening.\n\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n\n return start\n\n function start(code) {\n if (!labelStart) {\n return nok(code)\n } // It’s a balanced bracket, but contains a link.\n\n if (labelStart._inactive) return balanced(code)\n defined =\n self.parser.defined.indexOf(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n ) > -1\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return afterLabelEnd\n }\n\n function afterLabelEnd(code) {\n // Resource: `[asd](fgh)`.\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n ok,\n defined ? ok : balanced\n )(code)\n } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n if (code === 91) {\n return effects.attempt(\n fullReferenceConstruct,\n ok,\n defined\n ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n : balanced\n )(code)\n } // Shortcut reference: `[asd]`?\n\n return defined ? ok(code) : balanced(code)\n }\n\n function balanced(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\nfunction tokenizeResource(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return factoryWhitespace(effects, open)\n }\n\n function open(code) {\n if (code === 41) {\n return end(code)\n }\n\n return factoryDestination(\n effects,\n destinationAfter,\n nok,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 3\n )(code)\n }\n\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, between)(code)\n : end(code)\n }\n\n function between(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factoryWhitespace(effects, end),\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n\n return end(code)\n }\n\n function end(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeFullReference(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n return factoryLabel.call(\n self,\n effects,\n afterLabel,\n nok,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n function afterLabel(code) {\n return self.parser.defined.indexOf(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n ) < 0\n ? nok(code)\n : ok(code)\n }\n}\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return open\n }\n\n function open(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = labelEnd\n","'use strict'\n\nvar stringify = require('unist-util-stringify-position')\n\nmodule.exports = VMessage\n\n// Inherit from `Error#`.\nfunction VMessagePrototype() {}\nVMessagePrototype.prototype = Error.prototype\nVMessage.prototype = new VMessagePrototype()\n\n// Message properties.\nvar proto = VMessage.prototype\n\nproto.file = ''\nproto.name = ''\nproto.reason = ''\nproto.message = ''\nproto.stack = ''\nproto.fatal = null\nproto.column = null\nproto.line = null\n\n// Construct a new VMessage.\n//\n// Note: We cannot invoke `Error` on the created context, as that adds readonly\n// `line` and `column` attributes on Safari 9, thus throwing and failing the\n// data.\nfunction VMessage(reason, position, origin) {\n var parts\n var range\n var location\n\n if (typeof position === 'string') {\n origin = position\n position = null\n }\n\n parts = parseOrigin(origin)\n range = stringify(position) || '1:1'\n\n location = {\n start: {line: null, column: null},\n end: {line: null, column: null}\n }\n\n // Node.\n if (position && position.position) {\n position = position.position\n }\n\n if (position) {\n // Position.\n if (position.start) {\n location = position\n position = position.start\n } else {\n // Point.\n location.start = position\n }\n }\n\n if (reason.stack) {\n this.stack = reason.stack\n reason = reason.message\n }\n\n this.message = reason\n this.name = range\n this.reason = reason\n this.line = position ? position.line : null\n this.column = position ? position.column : null\n this.location = location\n this.source = parts[0]\n this.ruleId = parts[1]\n}\n\nfunction parseOrigin(origin) {\n var result = [null, null]\n var index\n\n if (typeof origin === 'string') {\n index = origin.indexOf(':')\n\n if (index === -1) {\n result[1] = origin\n } else {\n result[0] = origin.slice(0, index)\n result[1] = origin.slice(index + 1)\n }\n }\n\n return result\n}\n","var visitWithParents = require('unist-util-visit-parents');\n\nfunction addListMetadata() {\n return function (ast) {\n visitWithParents(ast, 'list', function (listNode, parents) {\n var depth = 0, i, n;\n for (i = 0, n = parents.length; i < n; i++) {\n if (parents[i].type === 'list') depth += 1;\n }\n for (i = 0, n = listNode.children.length; i < n; i++) {\n var child = listNode.children[i];\n child.index = i;\n child.ordered = listNode.ordered;\n }\n listNode.depth = depth;\n });\n return ast;\n };\n}\n\nmodule.exports = addListMetadata;\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar chunkedPush = require('./chunked-push.js')\nvar miniflat = require('./miniflat.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar shallow = require('./shallow.js')\nvar resolveAll = require('./resolve-all.js')\nvar serializeChunks = require('./serialize-chunks.js')\nvar sliceChunks = require('./slice-chunks.js')\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`.\nfunction createTokenizer(parser, initialize, from) {\n var point = from\n ? shallow(from)\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n var columnStart = {}\n var resolveAllConstructs = []\n var chunks = []\n var stack = []\n\n var effects = {\n consume: consume,\n enter: enter,\n exit: exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n }),\n lazy: constructFactory(onsuccessfulcheck, {\n lazy: true\n })\n } // State and tools for resolving and serializing.\n\n var context = {\n previous: null,\n events: [],\n parser: parser,\n sliceStream: sliceStream,\n sliceSerialize: sliceSerialize,\n now: now,\n defineSkip: skip,\n write: write\n } // The state function.\n\n var state = initialize.tokenize.call(context, effects) // Track which character we expect to be consumed, to catch bugs.\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n } // Store where we are in the input stream.\n\n point._index = 0\n point._bufferIndex = -1\n return context\n\n function write(slice) {\n chunks = chunkedPush(chunks, slice)\n main() // Exit if we’re not done, resolve might change stuff.\n\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n\n addResult(initialize, 0) // Otherwise, resolve, and exit.\n\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n } //\n // Tools.\n //\n\n function sliceSerialize(token) {\n return serializeChunks(sliceStream(token))\n }\n\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n\n function now() {\n return shallow(point)\n }\n\n function skip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n } //\n // State management.\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 function main() {\n var chunkIndex\n var chunk\n\n while (point._index < chunks.length) {\n chunk = chunks[point._index] // If we’re in a buffer chunk, loop through it.\n\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n } // Deal with one code.\n\n function go(code) {\n state = state(code)\n } // Move a character forward.\n\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n } // Not in a string chunk.\n\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++ // At end of string chunk.\n\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n } // Expose the previous character.\n\n context.previous = code // Mark as consumed.\n } // Start a token.\n\n function enter(type, fields) {\n var 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 } // Stop a token.\n\n function exit(type) {\n var token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n } // Use results.\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n } // Discard results.\n\n function onsuccessfulcheck(construct, info) {\n info.restore()\n } // Factory to attempt/check/interrupt.\n\n function constructFactory(onreturn, fields) {\n return hook // Handle either an object mapping codes to constructs, a list of\n // constructs, or a single construct.\n\n function hook(constructs, returnState, bogusState) {\n var listOfConstructs\n var constructIndex\n var currentConstruct\n var info\n return constructs.tokenize || 'length' in constructs\n ? handleListOfConstructs(miniflat(constructs))\n : handleMapOfConstructs\n\n function handleMapOfConstructs(code) {\n if (code in constructs || null in constructs) {\n return handleListOfConstructs(\n constructs.null\n ? /* c8 ignore next */\n miniflat(constructs[code]).concat(miniflat(constructs.null))\n : constructs[code]\n )(code)\n }\n\n return bogusState(code)\n }\n\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n return handleConstruct(list[constructIndex])\n }\n\n function handleConstruct(construct) {\n return start\n\n function start(code) {\n // To do: not nede to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.indexOf(construct.name) > -1\n ) {\n return nok()\n }\n\n return construct.tokenize.call(\n fields ? assign({}, context, fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n\n function ok(code) {\n onreturn(currentConstruct, info)\n return returnState\n }\n\n function nok(code) {\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n\n function addResult(construct, from) {\n if (construct.resolveAll && resolveAllConstructs.indexOf(construct) < 0) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n chunkedSplice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n\n function store() {\n var startPoint = now()\n var startPrevious = context.previous\n var startCurrentConstruct = context.currentConstruct\n var startEventsIndex = context.events.length\n var startStack = Array.from(stack)\n return {\n restore: restore,\n from: startEventsIndex\n }\n\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n\n 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\nmodule.exports = createTokenizer\n","'use strict'\n\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar chunkedPush = require('../util/chunked-push.js')\nvar shallow = require('../util/shallow.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar classifyCharacter = require('../util/classify-character.js')\nvar movePoint = require('../util/move-point.js')\n\nvar attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\nfunction resolveAllAttention(events, context) {\n var index = -1\n var open\n var group\n var text\n var openingSequence\n var closingSequence\n var use\n var nextEvents\n var offset // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index // Now walk back to find an opener.\n\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open && // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n } // Number of markers to use from the sequence.\n\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: movePoint(shallow(events[open][1].end), -use),\n end: shallow(events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: shallow(events[index][1].start),\n end: movePoint(shallow(events[index][1].start), use)\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: shallow(events[open][1].end),\n end: shallow(events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: shallow(openingSequence.start),\n end: shallow(closingSequence.end)\n }\n events[open][1].end = shallow(openingSequence.start)\n events[index][1].start = shallow(closingSequence.end)\n nextEvents = [] // If there are more markers in the opening, add them before.\n\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = chunkedPush(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n } // Opening.\n\n nextEvents = chunkedPush(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ]) // Between.\n\n nextEvents = chunkedPush(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n ) // Closing.\n\n nextEvents = chunkedPush(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ]) // If there are more markers in the closing, add them after.\n\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = chunkedPush(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n\n chunkedSplice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n } // Remove remaining sequences.\n\n index = -1\n\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n}\n\nfunction tokenizeAttention(effects, ok) {\n var before = classifyCharacter(this.previous)\n var marker\n return start\n\n function start(code) {\n effects.enter('attentionSequence')\n marker = code\n return sequence(code)\n }\n\n function sequence(code) {\n var token\n var after\n var open\n var close\n\n if (code === marker) {\n effects.consume(code)\n return sequence\n }\n\n token = effects.exit('attentionSequence')\n after = classifyCharacter(code)\n open = !after || (after === 2 && before)\n close = !before || (before === 2 && after)\n token._open = marker === 42 ? open : open && (before || !close)\n token._close = marker === 42 ? close : close && (after || !open)\n return ok(code)\n }\n}\n\nmodule.exports = attention\n","'use strict'\n\nvar bail = require('bail')\nvar buffer = require('is-buffer')\nvar extend = require('extend')\nvar plain = require('is-plain-obj')\nvar trough = require('trough')\nvar vfile = require('vfile')\n\n// Expose a frozen processor.\nmodule.exports = unified().freeze()\n\nvar slice = [].slice\nvar own = {}.hasOwnProperty\n\n// Process pipeline.\nvar pipeline = trough()\n .use(pipelineParse)\n .use(pipelineRun)\n .use(pipelineStringify)\n\nfunction pipelineParse(p, ctx) {\n ctx.tree = p.parse(ctx.file)\n}\n\nfunction pipelineRun(p, ctx, next) {\n p.run(ctx.tree, ctx.file, done)\n\n function done(err, tree, file) {\n if (err) {\n next(err)\n } else {\n ctx.tree = tree\n ctx.file = file\n next()\n }\n }\n}\n\nfunction pipelineStringify(p, ctx) {\n var result = p.stringify(ctx.tree, ctx.file)\n var file = ctx.file\n\n if (result === undefined || result === null) {\n // Empty.\n } else if (typeof result === 'string' || buffer(result)) {\n file.contents = result\n } else {\n file.result = result\n }\n}\n\n// Function to create the first processor.\nfunction unified() {\n var attachers = []\n var transformers = trough()\n var namespace = {}\n var frozen = false\n var freezeIndex = -1\n\n // Data management.\n processor.data = data\n\n // Lock.\n processor.freeze = freeze\n\n // Plugins.\n processor.attachers = attachers\n processor.use = use\n\n // API.\n processor.parse = parse\n processor.stringify = stringify\n processor.run = run\n processor.runSync = runSync\n processor.process = process\n processor.processSync = processSync\n\n // Expose.\n return processor\n\n // Create a new processor based on the processor in the current scope.\n function processor() {\n var destination = unified()\n var length = attachers.length\n var index = -1\n\n while (++index < length) {\n destination.use.apply(null, attachers[index])\n }\n\n destination.data(extend(true, {}, namespace))\n\n return destination\n }\n\n // Freeze: used to signal a processor that has finished configuration.\n //\n // For example, take unified itself: it’s frozen.\n // Plugins should not be added to it.\n // Rather, it should be extended, by invoking it, before modifying it.\n //\n // In essence, always invoke this when exporting a processor.\n function freeze() {\n var values\n var plugin\n var options\n var transformer\n\n if (frozen) {\n return processor\n }\n\n while (++freezeIndex < attachers.length) {\n values = attachers[freezeIndex]\n plugin = values[0]\n options = values[1]\n transformer = null\n\n if (options === false) {\n continue\n }\n\n if (options === true) {\n values[1] = undefined\n }\n\n transformer = plugin.apply(processor, values.slice(1))\n\n if (typeof transformer === 'function') {\n transformers.use(transformer)\n }\n }\n\n frozen = true\n freezeIndex = Infinity\n\n return processor\n }\n\n // Data management.\n // Getter / setter for processor-specific informtion.\n function data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen)\n\n namespace[key] = value\n\n return processor\n }\n\n // Get `key`.\n return (own.call(namespace, key) && namespace[key]) || null\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', frozen)\n namespace = key\n return processor\n }\n\n // Get space.\n return namespace\n }\n\n // Plugin management.\n //\n // Pass it:\n // * an attacher and options,\n // * a preset,\n // * a list of presets, attachers, and arguments (list of attachers and\n // options).\n function use(value) {\n var settings\n\n assertUnfrozen('use', frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin.apply(null, arguments)\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`')\n }\n\n if (settings) {\n namespace.settings = extend(namespace.settings || {}, settings)\n }\n\n return processor\n\n function addPreset(result) {\n addList(result.plugins)\n\n if (result.settings) {\n settings = extend(settings || {}, result.settings)\n }\n }\n\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value)\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addPlugin.apply(null, value)\n } else {\n addPreset(value)\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`')\n }\n }\n\n function addList(plugins) {\n var length\n var index\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (typeof plugins === 'object' && 'length' in plugins) {\n length = plugins.length\n index = -1\n\n while (++index < length) {\n add(plugins[index])\n }\n } else {\n throw new Error('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n function addPlugin(plugin, value) {\n var entry = find(plugin)\n\n if (entry) {\n if (plain(entry[1]) && plain(value)) {\n value = extend(entry[1], value)\n }\n\n entry[1] = value\n } else {\n attachers.push(slice.call(arguments))\n }\n }\n }\n\n function find(plugin) {\n var length = attachers.length\n var index = -1\n var entry\n\n while (++index < length) {\n entry = attachers[index]\n\n if (entry[0] === plugin) {\n return entry\n }\n }\n }\n\n // Parse a file (in string or vfile representation) into a unist node using\n // the `Parser` on the processor.\n function parse(doc) {\n var file = vfile(doc)\n var Parser\n\n freeze()\n Parser = processor.Parser\n assertParser('parse', Parser)\n\n if (newable(Parser, 'parse')) {\n return new Parser(String(file), file).parse()\n }\n\n return Parser(String(file), file) // eslint-disable-line new-cap\n }\n\n // Run transforms on a unist node representation of a file (in string or\n // vfile representation), async.\n function run(node, file, cb) {\n assertNode(node)\n freeze()\n\n if (!cb && typeof file === 'function') {\n cb = file\n file = null\n }\n\n if (!cb) {\n return new Promise(executor)\n }\n\n executor(null, cb)\n\n function executor(resolve, reject) {\n transformers.run(node, vfile(file), done)\n\n function done(err, tree, file) {\n tree = tree || node\n if (err) {\n reject(err)\n } else if (resolve) {\n resolve(tree)\n } else {\n cb(null, tree, file)\n }\n }\n }\n }\n\n // Run transforms on a unist node representation of a file (in string or\n // vfile representation), sync.\n function runSync(node, file) {\n var complete = false\n var result\n\n run(node, file, done)\n\n assertDone('runSync', 'run', complete)\n\n return result\n\n function done(err, tree) {\n complete = true\n bail(err)\n result = tree\n }\n }\n\n // Stringify a unist node representation of a file (in string or vfile\n // representation) into a string using the `Compiler` on the processor.\n function stringify(node, doc) {\n var file = vfile(doc)\n var Compiler\n\n freeze()\n Compiler = processor.Compiler\n assertCompiler('stringify', Compiler)\n assertNode(node)\n\n if (newable(Compiler, 'compile')) {\n return new Compiler(node, file).compile()\n }\n\n return Compiler(node, file) // eslint-disable-line new-cap\n }\n\n // Parse a file (in string or vfile representation) into a unist node using\n // the `Parser` on the processor, then run transforms on that node, and\n // compile the resulting node using the `Compiler` on the processor, and\n // store that result on the vfile.\n function process(doc, cb) {\n freeze()\n assertParser('process', processor.Parser)\n assertCompiler('process', processor.Compiler)\n\n if (!cb) {\n return new Promise(executor)\n }\n\n executor(null, cb)\n\n function executor(resolve, reject) {\n var file = vfile(doc)\n\n pipeline.run(processor, {file: file}, done)\n\n function done(err) {\n if (err) {\n reject(err)\n } else if (resolve) {\n resolve(file)\n } else {\n cb(null, file)\n }\n }\n }\n }\n\n // Process the given document (in string or vfile representation), sync.\n function processSync(doc) {\n var complete = false\n var file\n\n freeze()\n assertParser('processSync', processor.Parser)\n assertCompiler('processSync', processor.Compiler)\n file = vfile(doc)\n\n process(file, done)\n\n assertDone('processSync', 'process', complete)\n\n return file\n\n function done(err) {\n complete = true\n bail(err)\n }\n }\n}\n\n// Check if `value` is a constructor.\nfunction newable(value, name) {\n return (\n typeof value === 'function' &&\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 (keys(value.prototype) || name in value.prototype)\n )\n}\n\n// Check if `value` is an object with keys.\nfunction keys(value) {\n var key\n for (key in value) {\n return true\n }\n\n return false\n}\n\n// Assert a parser is available.\nfunction assertParser(name, Parser) {\n if (typeof Parser !== 'function') {\n throw new Error('Cannot `' + name + '` without `Parser`')\n }\n}\n\n// Assert a compiler is available.\nfunction assertCompiler(name, Compiler) {\n if (typeof Compiler !== 'function') {\n throw new Error('Cannot `' + name + '` without `Compiler`')\n }\n}\n\n// Assert the processor is not frozen.\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot invoke `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n// Assert `node` is a unist node.\nfunction assertNode(node) {\n if (!node || typeof node.type !== 'string') {\n throw new Error('Expected node, got `' + node + '`')\n }\n}\n\n// Assert that `complete` is `true`.\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n","'use strict'\n\nvar chunkedSplice = require('./chunked-splice.js')\n\nfunction chunkedPush(list, items) {\n if (list.length) {\n chunkedSplice(list, list.length, 0, items)\n return list\n }\n\n return items\n}\n\nmodule.exports = chunkedPush\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","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = own\n","'use strict'\n\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\nvar prefixSize = require('../util/prefix-size.js')\n\nvar codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented,\n resolve: resolveCodeIndented\n}\nvar indentedContentConstruct = {\n tokenize: tokenizeIndentedContent,\n partial: true\n}\n\nfunction resolveCodeIndented(events, context) {\n var code = {\n type: 'codeIndented',\n start: events[0][1].start,\n end: events[events.length - 1][1].end\n }\n chunkedSplice(events, 0, 0, [['enter', code, context]])\n chunkedSplice(events, events.length, 0, [['exit', code, context]])\n return events\n}\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n return effects.attempt(indentedContentConstruct, afterPrefix, nok)\n\n function afterPrefix(code) {\n if (code === null) {\n return ok(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContentConstruct, afterPrefix, ok)(code)\n }\n\n effects.enter('codeFlowValue')\n return content(code)\n }\n\n function content(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return afterPrefix(code)\n }\n\n effects.consume(code)\n return content\n }\n}\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n var self = this\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n\n function afterPrefix(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n }\n\n return prefixSize(self.events, 'linePrefix') < 4 ? nok(code) : ok(code)\n }\n}\n\nmodule.exports = codeIndented\n","'use strict'\n\nmodule.exports = parse\n\nvar fromMarkdown = require('mdast-util-from-markdown')\n\nfunction parse(options) {\n var self = this\n\n this.Parser = parse\n\n function parse(doc) {\n return fromMarkdown(\n doc,\n Object.assign({}, self.data('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: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n )\n }\n}\n","'use strict'\n\n// Note: EOF is seen as ASCII control here, because `null < 32 == true`.\nfunction asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code < 32 || code === 127\n )\n}\n\nmodule.exports = asciiControl\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = stringify\n\nfunction stringify(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if (own.call(value, 'position') || own.call(value, 'type')) {\n return position(value.position)\n }\n\n // Position.\n if (own.call(value, 'start') || own.call(value, 'end')) {\n return position(value)\n }\n\n // Point.\n if (own.call(value, 'line') || own.call(value, 'column')) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\nfunction point(point) {\n if (!point || typeof point !== 'object') {\n point = {}\n }\n\n return index(point.line) + ':' + index(point.column)\n}\n\nfunction position(pos) {\n if (!pos || typeof pos !== 'object') {\n pos = {}\n }\n\n return point(pos.start) + '-' + point(pos.end)\n}\n\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\nvar shallow = require('../util/shallow.js')\n\nvar setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n\nfunction resolveToSetextUnderline(events, context) {\n var index = events.length\n var content\n var text\n var definition\n var heading // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index\n break\n }\n\n if (events[index][1].type === 'paragraph') {\n text = index\n }\n } // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1)\n }\n\n if (!definition && events[index][1].type === 'definition') {\n definition = index\n }\n }\n }\n\n heading = {\n type: 'setextHeading',\n start: shallow(events[text][1].start),\n end: shallow(events[events.length - 1][1].end)\n } // Change the paragraph to setext heading text.\n\n events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n\n if (definition) {\n events.splice(text, 0, ['enter', heading, context])\n events.splice(definition + 1, 0, ['exit', events[content][1], context])\n events[content][1].end = shallow(events[definition][1].end)\n } else {\n events[content][1] = heading\n } // Add the heading exit at the end.\n\n events.push(['exit', heading, context])\n return events\n}\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n var self = this\n var index = self.events.length\n var marker\n var paragraph // Find an opening.\n\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n return start\n\n function start(code) {\n if (!self.lazy && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n effects.enter('setextHeadingLineSequence')\n marker = code\n return closingSequence(code)\n }\n\n return nok(code)\n }\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n return closingSequence\n }\n\n effects.exit('setextHeadingLineSequence')\n return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n }\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = setextUnderline\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n var self = this\n return start\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 function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n /* c8 ignore next */\n return code === 94 &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? /* c8 ignore next */\n nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = labelStartImage\n","'use strict'\n\nvar subtokenize = require('./util/subtokenize.js')\n\nfunction postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n\n return events\n}\n\nmodule.exports = postprocess\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///../node_modules/micromark/dist/tokenize/character-reference.js","webpack:///../node_modules/micromark/dist/tokenize/content.js","webpack:///../node_modules/xtend/immutable.js","webpack:///../node_modules/react-markdown/lib/get-definitions.js","webpack:///../node_modules/vfile/index.js","webpack:///../node_modules/react-markdown/lib/renderers.js","webpack:///../node_modules/micromark/dist/parse.js","webpack:///../node_modules/micromark/dist/character/markdown-line-ending.js","webpack:///../node_modules/micromark/dist/character/ascii-alphanumeric.js","webpack:///../node_modules/react-markdown/lib/wrap-table-rows.js","webpack:///../node_modules/micromark/dist/tokenize/factory-space.js","webpack:///../node_modules/react-markdown/lib/symbols.js","webpack:///../node_modules/react-is/cjs/react-is.production.min.js","webpack:///../node_modules/micromark/dist/character/ascii-alpha.js","webpack:///../node_modules/micromark/dist/tokenize/partial-blank-line.js","webpack:///../node_modules/micromark/dist/util/subtokenize.js","webpack:///../node_modules/micromark/dist/util/safe-from-int.js","webpack:///../node_modules/unist-util-visit/index.js","webpack:///../node_modules/micromark/dist/util/miniflat.js","webpack:///../node_modules/micromark/dist/tokenize/code-text.js","webpack:///../node_modules/lz-string/libs/lz-string.js","webpack:///../node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///../node_modules/is-buffer/index.js","webpack:///../node_modules/micromark/dist/util/shallow.js","webpack:///../node_modules/micromark/dist/tokenize/block-quote.js","webpack:///../node_modules/micromark/dist/util/slice-chunks.js","webpack:///../node_modules/react-markdown/lib/uri-transformer.js","webpack:///../node_modules/micromark/dist/character/ascii-atext.js","webpack:///../node_modules/micromark/dist/util/prefix-size.js","webpack:///external \"preact\"","webpack:///../node_modules/micromark/dist/constant/unicode-punctuation-regex.js","webpack:///../node_modules/trough/wrap.js","webpack:///../node_modules/micromark/dist/tokenize/thematic-break.js","webpack:///../node_modules/micromark/dist/tokenize/heading-atx.js","webpack:///../node_modules/micromark/dist/constant/splice.js","webpack:///../node_modules/micromark/dist/character/unicode-whitespace.js","webpack:///../node_modules/react-markdown/lib/react-markdown.js","webpack:///../node_modules/vfile/lib/minproc.js","webpack:///../node_modules/react-markdown/lib/plugins/disallow-node.js","webpack:///../node_modules/micromark/dist/constructs.js","webpack:///../node_modules/prop-types/factoryWithThrowingShims.js","webpack:///../node_modules/micromark/dist/util/regex-check.js","webpack:///../node_modules/mdast-util-to-string/index.js","webpack:///../node_modules/micromark/dist/tokenize/factory-whitespace.js","webpack:///../src/index.js","webpack:///./routes/editor/index.js","webpack:///./routes/post/index.js","webpack:///./index.js","webpack:///../node_modules/micromark/dist/util/classify-character.js","webpack:///../node_modules/vfile/lib/minpath.js","webpack:///../node_modules/micromark/dist/tokenize/autolink.js","webpack:///../node_modules/micromark/dist/initialize/text.js","webpack:///../node_modules/prop-types/index.js","webpack:///../node_modules/micromark/dist/util/normalize-identifier.js","webpack:///../node_modules/micromark/dist/initialize/flow.js","webpack:///../node_modules/micromark/dist/util/resolve-all.js","webpack:///../node_modules/micromark/dist/tokenize/label-start-link.js","webpack:///../node_modules/react-markdown/lib/ast-to-react.js","webpack:///../src/util.js","webpack:///../node_modules/micromark/dist/util/chunked-splice.js","webpack:///../node_modules/micromark/dist/preprocess.js","webpack:///../node_modules/micromark/dist/tokenize/list.js","webpack:///../node_modules/micromark/dist/tokenize/factory-label.js","webpack:///../node_modules/bail/index.js","webpack:///../node_modules/parse-entities/decode-entity.js","webpack:///../node_modules/micromark/dist/util/move-point.js","webpack:///../node_modules/is-plain-obj/index.js","webpack:///../node_modules/trough/index.js","webpack:///../node_modules/micromark/dist/tokenize/factory-title.js","webpack:///../node_modules/micromark/dist/tokenize/line-ending.js","webpack:///../node_modules/micromark/dist/character/ascii-digit.js","webpack:///../node_modules/mdast-util-from-markdown/index.js","webpack:///../node_modules/react-markdown/lib/plugins/naive-html.js","webpack:///../node_modules/micromark/dist/character/ascii-punctuation.js","webpack:///../node_modules/micromark/dist/util/serialize-chunks.js","webpack:///../node_modules/micromark/dist/util/size-chunks.js","webpack:///../node_modules/vfile/lib/index.js","webpack:///../node_modules/micromark/dist/character/unicode-punctuation.js","webpack:///../node_modules/mdast-util-from-markdown/dist/index.js","webpack:///../node_modules/micromark/dist/initialize/content.js","webpack:///../node_modules/micromark/dist/tokenize/factory-destination.js","webpack:///../node_modules/vfile/lib/core.js","webpack:///../node_modules/micromark/dist/tokenize/definition.js","webpack:///../node_modules/unist-util-visit-parents/index.js","webpack:///../node_modules/micromark/dist/util/combine-extensions.js","webpack:///../src/PureComponent.js","webpack:///../src/memo.js","webpack:///../src/forwardRef.js","webpack:///../src/Children.js","webpack:///../src/suspense.js","webpack:///../src/suspense-list.js","webpack:///../src/portals.js","webpack:///../src/render.js","webpack:///../node_modules/micromark/dist/tokenize/character-escape.js","webpack:///../node_modules/micromark/dist/constant/assign.js","webpack:///../node_modules/micromark/dist/character/markdown-line-ending-or-space.js","webpack:///../node_modules/micromark/dist/character/ascii-hex-digit.js","webpack:///../node_modules/micromark/dist/constant/html-block-names.js","webpack:///../node_modules/micromark/dist/constant/from-char-code.js","webpack:///../node_modules/micromark/dist/tokenize/html-flow.js","webpack:///../node_modules/micromark/dist/tokenize/html-text.js","webpack:///../node_modules/preact-router/match.js","webpack:///external \"path\"","webpack:///../node_modules/micromark/dist/character/markdown-space.js","webpack:///../node_modules/micromark/dist/initialize/document.js","webpack:///../node_modules/micromark/dist/tokenize/hard-break-escape.js","webpack:///../node_modules/micromark/dist/constant/html-raw-names.js","webpack:///../node_modules/extend/index.js","webpack:///../node_modules/micromark/dist/tokenize/code-fenced.js","webpack:///./routes/editor/style.css","webpack:///../node_modules/micromark/dist/tokenize/label-end.js","webpack:///../node_modules/vfile-message/index.js","webpack:///../node_modules/mdast-add-list-metadata/index.js","webpack:///../node_modules/micromark/dist/util/create-tokenizer.js","webpack:///../node_modules/micromark/dist/tokenize/attention.js","webpack:///../node_modules/unified/index.js","webpack:///../node_modules/micromark/dist/util/chunked-push.js","webpack:///../node_modules/react-is/index.js","webpack:///../node_modules/micromark/dist/constant/has-own-property.js","webpack:///../node_modules/micromark/dist/tokenize/code-indented.js","webpack:///../node_modules/remark-parse/index.js","webpack:///../node_modules/micromark/dist/character/ascii-control.js","webpack:///../node_modules/unist-util-stringify-position/index.js","webpack:///../node_modules/micromark/dist/tokenize/setext-underline.js","webpack:///../node_modules/micromark/dist/tokenize/label-start-image.js","webpack:///../node_modules/micromark/dist/postprocess.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","decodeEntity","require","asciiAlphanumeric","asciiDigit","asciiHexDigit","_interopDefaultLegacy","e","default","decodeEntity__default","characterReference","tokenize","effects","ok","nok","max","test","self","this","size","code","enter","consume","exit","open","numeric","token","sliceSerialize","markdownLineEnding","factorySpace","prefixSize","subtokenize","content","previous","contentType","data","contentEnd","check","continuationConstruct","contentContinue","next","resolve","events","interruptible","lazy","prefixed","parser","constructs","disable","null","indexOf","interrupt","flow","partial","target","arguments","length","source","visit","tree","definitions","undefined","node","identifier","toUpperCase","href","url","title","xtend","React","supportsStringRender","parseInt","version","slice","createElement","SimpleRenderer","tag","props","getCoreProps","children","break","paragraph","emphasis","strong","thematicBreak","blockquote","delete","link","image","linkReference","imageReference","table","tableHead","tableBody","tableRow","tableCell","style","align","textAlign","coreProps","isHeader","root","className","Fragment","text","list","attrs","start","toString","ordered","listItem","checkbox","checked","type","readOnly","definition","heading","concat","level","inlineCode","language","html","skipHtml","dangerous","allowDangerousHtml","escapeHtml","isBlock","nodeProps","dangerouslySetInnerHTML","__html","virtualHtml","parsedHtml","cloneElement","element","miniflat","document","combineExtensions","createTokenizer","options","defined","extensions","string","initializer","from","regexCheck","wrap","position","push","end","markdownSpace","limit","Infinity","prefix","HtmlParser","b","for","f","g","h","k","q","v","w","x","y","z","a","u","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","ForwardRef","Lazy","Memo","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isMemo","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","asciiAlpha","partialBlankLine","assign","chunkedSplice","shallow","subcontent","eventIndex","stream","index","entered","adjust","context","startPosition","startPositions","tokenizer","_tokenizer","childEvents","jumps","gaps","sliceStream","defineSkip","isInFirstContentOfListItem","_gfmTasklistFirstContentOfListItem","write","line","add","pop","unshift","event","lineIndex","otherIndex","otherEvent","parameters","subevents","more","_container","_movePreviousLineEndings","fromCharCode","base","visitParents","CONTINUE","SKIP","EXIT","visitor","reverse","parents","parent","codeText","sizeOpen","openingSequence","gap","closingSequence","tailExitIndex","headEnterIndex","splice","LZString","String","keyStrBase64","keyStrUriSafe","baseReverseDic","getBaseValue","alphabet","character","charAt","compressToBase64","input","res","_compress","decompressFromBase64","_decompress","compressToUTF16","decompressFromUTF16","compressed","charCodeAt","compressToUint8Array","uncompressed","compress","buf","Uint8Array","TotalLen","current_value","decompressFromUint8Array","decompress","Array","result","forEach","join","compressToEncodedURIComponent","decompressFromEncodedURIComponent","replace","bitsPerChar","getCharFromInt","ii","context_dictionary","context_dictionaryToCreate","context_c","context_wc","context_w","context_enlargeIn","context_dictSize","context_numBits","context_data","context_data_val","context_data_position","Math","pow","resetValue","getNextValue","bits","resb","maxpower","power","dictionary","enlargeIn","dictSize","numBits","entry","val","define","isBuffer","obj","constructor","readFloatLE","isSlowBuffer","_isBuffer","blockQuote","containerState","after","continuation","attempt","chunks","view","startIndex","_index","startBufferIndex","_bufferIndex","endIndex","endBufferIndex","protocols","uri","trim","first","colon","protocol","toLowerCase","asciiAtext","sizeChunks","tail","fn","callback","invoked","params","done","apply","error","then","Error","marker","atBreak","sequence","markdownLineEndingOrSpace","headingAtx","fenceOpenInside","headingBreak","contentStart","unicodeWhitespace","unified","parse","PropTypes","addListMetadata","naiveHtml","disallowNode","astToReact","wrapTableRows","getDefinitions","uriTransformer","defaultRenderers","symbols","allTypes","keys","ReactMarkdown","src","allowedTypes","disallowedTypes","renderers","processor","use","plugins","runSync","renderProps","transforms","filter","removalMethod","unwrapDisallowed","ofType","allowNode","ifNotMatch","renderHtml","hasHtmlParser","astPlugins","some","transform","identity","determineAstToReactTransforms","defaultProps","transformLinkUri","propTypes","sourcePos","bool","rawSourcePos","func","arrayOf","oneOf","oneOfType","linkTarget","transformImageUri","array","types","process","allow","includes","text$1","attention","autolink","characterEscape","codeFenced","codeIndented","hardBreakEscape","htmlFlow","htmlText","labelEnd","labelStartImage","labelStartLink","lineEnding","setextUnderline","42","43","45","48","49","50","51","52","53","54","55","56","57","62","contentInitial","91","flowInitial","32","35","60","61","95","96","126","38","92","33","93","insideSpan","resolver","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","err","getShim","isRequired","ReactPropTypes","number","symbol","any","elementType","instanceOf","objectOf","shape","exact","checkPropTypes","regex","alt","all","values","seen","currentIndex","currentComponent","prevRaf","currentHook","afterPaintEffects","oldBeforeDiff","oldBeforeRender","oldAfterDiff","diffed","oldCommit","oldBeforeUnmount","unmount","getHookState","hooks","useState","initialState","useReducer","invokeOrReturn","reducer","init","hookState","_reducer","nextValue","action","setState","useEffect","args","state","argsChanged","useLayoutEffect","useRef","initialValue","useMemo","current","useImperativeHandle","ref","createHandle","factory","useCallback","useContext","provider","sub","useDebugValue","formatter","useErrorBoundary","cb","errState","componentDidCatch","flushAfterPaintEffects","component","invokeCleanup","invokeEffect","vnode","requestAnimationFrame","raf","clearTimeout","timeout","HAS_RAF","cancelAnimationFrame","setTimeout","commitQueue","hook","comp","oldArgs","newArgs","arg","Editor","markdown","setMarkdown","class","textarea","placeholder","onInput","noop","_","ident","previewContorls","Post","payload","preview","encode","post","decode","controls","decodeFn","encodeFn","encoded","App","path","unicodePunctuation","asciiControl","schemeOrEmailAtext","emailAtext","schemeInsideOrEmailAtext","urlInside","emailAtSignOrDot","emailLabel","emailValue","initializeFactory","resolveAll","createResolver","field","notText","resolveAllLineSuffixes","extraResolver","chunk","bufferIndex","tabs","column","offset","initial","currentConstruct","afterConstruct","called","ReactIs","renderer","pos","getNodeProps","resolveChildren","map","childNode","opts","isSimpleRenderer","sourcePosition","includeNodeIndex","parentChildCount","assignDefined","nodeKey","depth","spread","loose","listItemLoose","listLoose","reduce","child","unwrapParagraphs","getListItemChildren","lang","split","inline","columnAlignment","parsedChildren","el","isArray","Children","toArray","mergeNodeChildren","EMPTY","let","super","const","remove","items","chunkStart","search","atCarriageReturn","buffer","encoding","match","endPosition","lastIndex","exec","ceil","initialSize","kind","atMarker","inside","onBlank","listItemPrefixWhitespaceConstruct","endOfPrefix","otherPrefix","initialBlankLine","_closeFlow","furtherBlankLines","notInCurrentItem","indentConstruct","markerType","stringType","label","labelEscape","characterEntities","characters","own","point","getPrototypeOf","trough","fns","middleware","atFirstTitleBreak","atTitleBreak","titleEscape","selfClosingRe","simpleTagRe","currentParent","selfClosing","getSelfClosing","opening","getSimpleTag","matching","matchingTag","findAndPull","fromNode","toNode","fromIndex","toIndex","indent","virtual","asciiPunctuation","atTab","VMessage","VFile","message","reason","origin","file","fatal","messages","info","fail","settings","config","extension","configure","canContainEols","opener","autolinkProtocol","onenterdata","autolinkEmail","atxHeading","codeFlow","codeFencedFenceInfo","codeFencedFenceMeta","codeTextData","codeFlowValue","definitionDestinationString","definitionLabelString","definitionTitleString","hardBreak","hardBreakTrailing","htmlFlowData","htmlTextData","_spread","listItemValue","getData","stack","setData","listOrdered","listUnordered","reference","referenceString","resourceDestinationString","resourceTitleString","setextHeading","closer","atxHeadingSequence","onexitdata","characterEscapeValue","characterReferenceMarkerHexadecimal","onexitcharacterreferencemarker","characterReferenceMarkerNumeric","characterReferenceValue","safeFromInt","resume","codeFencedFence","meta","normalizeIdentifier","onexithardbreak","referenceType","fragment","labelText","resource","setextHeadingLineSequence","setextHeadingText","mdastExtensions","handler","listStart","tokenStack","listStack","prepareList","stringifyPosition","tailIndex","tailEvent","firstBlankLineIndex","containerBalance","listSpread","and","siblings","compiler","postprocess","preprocessor","left","lineStart","literalType","literalMarkerType","rawType","balance","destinationEnclosedBefore","destinationRaw","destinationEnclosed","destinationEnclosedEscape","destinationRawEscape","proc","order","prop","contents","history","cwd","assertPart","part","sep","assertNonEmpty","assertPath","set","dirname","basename","extname","stem","factoryDestination","factoryLabel","factoryWhitespace","factoryTitle","labelAfter","titleConstruct","before","one","right","existing","shallowDiffers","PureComponent","memo","comparer","shouldUpdate","nextProps","updateRef","Memoed","shouldComponentUpdate","displayName","isReactComponent","Component","isPureReactComponent","oldDiffHook","REACT_FORWARD_SYMBOL","forwardRef","Forwarded","clone","render","mapFn","toChildArray","count","only","normalized","oldCatchError","detachedClone","effect","removeOriginal","_suspenders","suspended","loader","prom","SuspenseList","_next","_map","newVNode","oldVNode","promise","suspendingVNode","suspendingComponent","resolved","onResolved","componentWillUnmount","onSuspensionComplete","forceUpdate","fallback","revealOrder","getChildContext","_this","container","_temp","parentNode","removeChild","_unmount","_wrap","_hasMounted","createTextNode","hydrate","appendChild","createPortal","delegated","wrappedUnsuspend","unsuspend","Map","componentDidUpdate","componentDidMount","REACT_ELEMENT_TYPE","CAMEL_PROPS","ONCHANGE_INPUT_TYPES","textContent","preactRender","preactHydrate","configurable","writable","oldEventHook","empty","isPropagationStopped","cancelBubble","isDefaultPrevented","defaultPrevented","persist","nativeEvent","classNameDescriptor","oldVNodeHook","normalizedProps","multiple","selected","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentDispatcher","readContext","createFactory","isValidElement","preactCloneElement","unmountComponentAtNode","findDOMNode","nodeType","unstable_batchedUpdates","createContext","createRef","htmlBlockNames","htmlRawNames","startTag","declarationStart","tagCloseStart","continuationDeclarationInside","tagName","commentOpenInside","cdataOpenInside","basicSelfClosing","completeAttributeNameBefore","completeClosingTagAfter","completeEnd","completeAttributeName","completeAttributeNameAfter","completeAttributeValueBefore","completeAttributeValueQuoted","completeAttributeValueUnquoted","completeAttributeValueQuotedAfter","completeAfter","continuationCommentInside","continuationRawTagOpen","continuationClose","continuationCharacterDataInside","continuationAtLineEnding","nextBlankConstruct","htmlContinueStart","continuationRawEndTag","resolveTo","concrete","returnState","declarationOpen","instruction","tagOpen","commentOpen","cdataOpen","declaration","commentStart","commentStartDash","comment","commentClose","atLineEnding","cdata","cdataClose","cdataEnd","instructionClose","tagClose","tagCloseBetween","tagOpenBetween","tagOpenAttributeName","tagOpenAttributeNameAfter","tagOpenAttributeValueBefore","tagOpenAttributeValueQuoted","tagOpenAttributeValueUnquoted","tagOpenAttributeValueQuotedAfter","afterPrefix","Link","Match","_extends","_preact","_preactRouter","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","ReferenceError","_Component","_len","_key","update","nextUrl","subClass","superClass","setPrototypeOf","__proto__","_inherits","subscribers","getCurrentUrl","matches","_ref","activeClassName","_objectWithoutProperties","_ref2","Boolean","inspectResult","childFlow","childToken","continued","inspectConstruct","subcontinued","inspectStart","inspectContinue","inspectLess","flowContinue","inspectDone","containerConstruct","inspectFlowEnd","lazyFlowConstruct","inspectLazy","flowEnd","documentContinue","documentContinued","flowStart","containerContinue","exitContainers","now","continueFlow","documentAfterPeek","hasOwn","toStr","gOPD","getOwnPropertyDescriptor","arr","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","newValue","getProperty","extend","copy","copyIsArray","deep","closingFenceConstruct","closingSequenceEnd","initialPrefix","sequenceOpen","infoOpen","openAfter","infoAfter","chunkedPush","labelStart","_balanced","_inactive","balanced","afterLabelEnd","resourceConstruct","fullReferenceConstruct","collapsedReferenceConstruct","group","close","media","_used","destinationAfter","between","afterLabel","stringify","VMessagePrototype","proto","parts","range","parseOrigin","ruleId","visitWithParents","ast","listNode","serializeChunks","sliceChunks","initialize","columnStart","resolveAllConstructs","accountForPotentialSkip","fields","constructFactory","construct","addResult","onsuccessfulcheck","main","chunkIndex","go","restore","onreturn","bogusState","listOfConstructs","constructIndex","handleListOfConstructs","handleConstruct","startPoint","startPrevious","startCurrentConstruct","startEventsIndex","startStack","store","classifyCharacter","movePoint","_open","_close","nextEvents","bail","plain","vfile","attachers","transformers","namespace","frozen","freezeIndex","assertUnfrozen","freeze","addPlugin","addList","addPreset","plugin","find","doc","Parser","assertParser","newable","Compiler","assertCompiler","assertNode","compile","run","complete","assertDone","processSync","destination","transformer","Promise","executor","reject","pipeline","ctx","asyncName","indentedContentConstruct","fromMarkdown"],"mappings":"2BACE,IAAIA,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUC,QAGnC,IAAIC,EAASJ,EAAiBE,GAAY,CACzCG,EAAGH,EACHI,GAAG,EACHH,QAAS,IAUV,OANAI,EAAQL,GAAUM,KAAKJ,EAAOD,QAASC,EAAQA,EAAOD,QAASF,GAG/DG,EAAOE,GAAI,EAGJF,EAAOD,QA0Df,OArDAF,EAAoBQ,EAAIF,EAGxBN,EAAoBS,EAAIV,EAGxBC,EAAoBU,EAAI,SAASR,EAASS,EAAMC,GAC3CZ,EAAoBa,EAAEX,EAASS,IAClCG,OAAOC,eAAeb,EAASS,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEZ,EAAoBkB,EAAI,SAAShB,GACX,oBAAXiB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAeb,EAASiB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAeb,EAAS,aAAc,CAAEmB,OAAO,KAQvDrB,EAAoBsB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQrB,EAAoBqB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFA1B,EAAoBkB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOrB,EAAoBU,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRzB,EAAoB6B,EAAI,SAAS1B,GAChC,IAAIS,EAAST,GAAUA,EAAOqB,WAC7B,WAAwB,OAAOrB,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAH,EAAoBU,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRZ,EAAoBa,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG/B,EAAoBkC,EAAI,cAIjBlC,EAAoBA,EAAoBmC,EAAI,Q,sCChFrD,IAAIC,EAAeC,EAAQ,QACvBC,EAAoBD,EAAQ,QAC5BE,EAAaF,EAAQ,QACrBG,EAAgBH,EAAQ,QAE5B,SAASI,EAAsBC,GAC7B,OAAOA,GAAkB,iBAANA,GAAkB,YAAaA,EAAIA,EAAI,CAACC,QAASD,GAGtE,IAAIE,EAAsCH,EAAsBL,GAE5DS,EAAqB,CACvBlC,KAAM,qBACNmC,SAGF,SAAoCC,EAASC,EAAIC,GAC/C,IAEIC,EACAC,EAHAC,EAAOC,KACPC,EAAO,EAGX,OAEA,SAAeC,GAKb,OAJAR,EAAQS,MAAM,sBACdT,EAAQS,MAAM,4BACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,4BACNC,GAGT,SAASA,EAAKJ,GACZ,OAAa,KAATA,GACFR,EAAQS,MAAM,mCACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,mCACNE,IAGTb,EAAQS,MAAM,2BACdN,EAAM,GACNC,EAAOb,EACAjB,EAAMkC,IAGf,SAASK,EAAQL,GACf,OAAa,KAATA,GAAwB,MAATA,GACjBR,EAAQS,MAAM,uCACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,uCACbX,EAAQS,MAAM,2BACdN,EAAM,EACNC,EAAOX,EACAnB,IAGT0B,EAAQS,MAAM,2BACdN,EAAM,EACNC,EAAOZ,EACAlB,EAAMkC,IAGf,SAASlC,EAAMkC,GACb,IAAIM,EAEJ,OAAa,KAATN,GAAeD,GACjBO,EAAQd,EAAQW,KAAK,2BAGnBP,IAASb,GACRM,EAAqB,QAAYQ,EAAKU,eAAeD,KAKxDd,EAAQS,MAAM,4BACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,4BACbX,EAAQW,KAAK,sBACNV,GAPEC,EAAIM,IAUXJ,EAAKI,IAASD,IAASJ,GACzBH,EAAQU,QAAQF,GACTlC,GAGF4B,EAAIM,MAIfpD,EAAOD,QAAU2C,G,oCC3FjB,IAAIkB,EAAqB1B,EAAQ,QAC7B2B,EAAe3B,EAAQ,QACvB4B,EAAa5B,EAAQ,QACrB6B,EAAc7B,EAAQ,QAGtB8B,EAAU,CACZrB,SAgBF,SAAyBC,EAASC,GAChC,IAAIoB,EACJ,OAEA,SAAeb,GAKb,OAJAR,EAAQS,MAAM,WACdY,EAAWrB,EAAQS,MAAM,eAAgB,CACvCa,YAAa,YAERC,EAAKf,IAGd,SAASe,EAAKf,GACZ,OAAa,OAATA,EACKgB,EAAWhB,GAGhBQ,EAAmBR,GACdR,EAAQyB,MACbC,EACAC,EACAH,EAHKxB,CAILQ,IAGJR,EAAQU,QAAQF,GACTe,GAGT,SAASC,EAAWhB,GAGlB,OAFAR,EAAQW,KAAK,gBACbX,EAAQW,KAAK,WACNV,EAAGO,GAGZ,SAASmB,EAAgBnB,GAOvB,OANAR,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,gBACbU,EAAWA,EAASO,KAAO5B,EAAQS,MAAM,eAAgB,CACvDa,YAAa,UACbD,SAAUA,IAELE,IAzDTM,QAUF,SAAwBC,GAEtB,OADAX,EAAYW,GACLA,GAXPC,eAAe,EACfC,MAAM,GAEJN,EAAwB,CAC1B3B,SAwDF,SAA8BC,EAASC,EAAIC,GACzC,IAAIG,EAAOC,KACX,OAEA,SAAwBE,GAItB,OAHAR,EAAQS,MAAM,cACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,cACNM,EAAajB,EAASiC,EAAU,eAGzC,SAASA,EAASzB,GAChB,OAAa,OAATA,GAAiBQ,EAAmBR,GAC/BN,EAAIM,GAIXH,EAAK6B,OAAOC,WAAWC,QAAQC,KAAKC,QAAQ,iBAAmB,GAC/DpB,EAAWb,EAAKyB,OAAQ,cAAgB,EAEjC9B,EAAQuC,UAAUlC,EAAK6B,OAAOC,WAAWK,KAAMtC,EAAKD,EAApDD,CAAwDQ,GAG1DP,EAAGO,KA9EZiC,SAAS,GAkFXrF,EAAOD,QAAUiE,G,qBClGjBhE,EAAOD,QAIP,WAGI,IAFA,IAAIuF,EAAS,GAEJrF,EAAI,EAAGA,EAAIsF,UAAUC,OAAQvF,IAAK,CACvC,IAAIwF,EAASF,UAAUtF,GAEvB,IAAK,IAAIuB,KAAOiE,EACR3D,EAAe1B,KAAKqF,EAAQjE,KAC5B8D,EAAO9D,GAAOiE,EAAOjE,IAKjC,OAAO8D,GAfX,IAAIxD,EAAiBnB,OAAOkB,UAAUC,gB,oCCAtC,IAAI4D,EAAQxD,EAAQ,QAEpBlC,EAAOD,QAAU,SAAwB4F,GACvC,IAAIC,EAAcL,UAAUC,OAAS,QAAsBK,IAAjBN,UAAU,GAAmBA,UAAU,GAAK,GAStF,OARAG,EAAMC,EAAM,cAAc,SAAUG,GAClC,IAAIC,EAAaD,EAAKC,WAAWC,cAC7BD,KAAcH,IAClBA,EAAYG,GAAc,CACxBE,KAAMH,EAAKI,IACXC,MAAOL,EAAKK,WAGTP,I,oCCZT5F,EAAOD,QAAUmC,EAAQ,S,oCCCzB,IAAIkE,EAAQlE,EAAQ,QAEhBmE,EAAQnE,EAAQ,QAIhBoE,EAAuBC,UAAUF,EAAMG,SAAW,MAAMC,MAAM,EAAG,GAAI,KAAO,GAC5EC,EAAgBL,EAAMK,cA+C1B,SAASC,EAAeC,EAAKC,GAC3B,OAAOH,EAAcE,EAAKE,EAAaD,GAAQA,EAAME,UA0FvD,SAASD,EAAaD,GACpB,IAAIpB,EAASoB,EAAM,kBAGnB,OAAOpB,EAAS,CACd,iBAAkBA,GAChB,GA/INzF,EAAOD,QAAU,CACfiH,MAAO,KACPC,UAAW,IACXC,SAAU,KACVC,OAAQ,SACRC,cAAe,KACfC,WAAY,aACZC,OAAQ,MACRC,KAAM,IACNC,MAAO,MACPC,cAAe,IACfC,eAAgB,MAChBC,MAAOhB,EAAelF,KAAK,KAAM,SACjCmG,UAAWjB,EAAelF,KAAK,KAAM,SACrCoG,UAAWlB,EAAelF,KAAK,KAAM,SACrCqG,SAAUnB,EAAelF,KAAK,KAAM,MACpCsG,UAkCF,SAAmBlB,GACjB,IAAImB,EAAQnB,EAAMoB,MAAQ,CACxBC,UAAWrB,EAAMoB,YACfpC,EACAsC,EAAYrB,EAAaD,GAC7B,OAAOH,EAAcG,EAAMuB,SAAW,KAAO,KAAMJ,EAAQ5B,EAAM,CAC/D4B,MAAOA,GACNG,GAAaA,EAAWtB,EAAME,WAxCjCsB,KAqBF,SAAcxB,GACZ,IAAIyB,EAAYzB,EAAMyB,UAClBD,GAAQC,GAAajC,EAAMkC,UAAY,MAC3C,OAAO7B,EAAc2B,EAAMC,EAAY,CACrCA,UAAWA,GACT,KAAMzB,EAAME,WAzBhByB,KAYF,SAAsB3B,GAEpB,IAAIE,EAAWF,EAAME,UAAY,GAGjC,OAAOT,EAAuBS,EAAWL,EAAc,OAAQ,KAAMK,IAhBrE0B,KA6CF,SAAc5B,GACZ,IAAI6B,EAAQ5B,EAAaD,GAEL,OAAhBA,EAAM8B,OAAkC,IAAhB9B,EAAM8B,YAA+B9C,IAAhBgB,EAAM8B,QACrDD,EAAMC,MAAQ9B,EAAM8B,MAAMC,YAG5B,OAAOlC,EAAcG,EAAMgC,QAAU,KAAO,KAAMH,EAAO7B,EAAME,WAnD/D+B,SAsDF,SAAkBjC,GAChB,IAAIkC,EAAW,KAEf,GAAsB,OAAlBlC,EAAMmC,cAAsCnD,IAAlBgB,EAAMmC,QAAuB,CACzD,IAAIA,EAAUnC,EAAMmC,QACpBD,EAAWrC,EAAc,QAAS,CAChCuC,KAAM,WACND,QAASA,EACTE,UAAU,IAId,OAAOxC,EAAc,KAAMI,EAAaD,GAAQkC,EAAUlC,EAAME,WAjEhEoC,WAgHF,WACE,OAAO,MAhHPC,QAsCF,SAAiBvC,GACf,OAAOH,EAAc,IAAI2C,OAAOxC,EAAMyC,OAAQxC,EAAaD,GAAQA,EAAME,WAtCzEwC,WA0EF,SAAoB1C,GAClB,OAAOH,EAAc,OAAQI,EAAaD,GAAQA,EAAME,WA1ExD3D,KAiEF,SAAmByD,GACjB,IAAIyB,EAAYzB,EAAM2C,UAAY,YAAYH,OAAOxC,EAAM2C,UACvDpG,EAAOsD,EAAc,OAAQ4B,EAAY,CAC3CA,UAAWA,GACT,KAAMzB,EAAM3F,OAChB,OAAOwF,EAAc,MAAOI,EAAaD,GAAQzD,IArEjDqG,KA4EF,SAAc5C,GACZ,GAAIA,EAAM6C,SACR,OAAO,KAGT,IAAIC,EAAY9C,EAAM+C,qBAA2C,IAArB/C,EAAMgD,WAC9CjD,EAAMC,EAAMiD,QAAU,MAAQ,OAElC,IAAKH,EAEH,OAAOjD,EAAcL,EAAMkC,UAAY3B,EAAK,KAAMC,EAAM3F,OAG1D,IAAI6I,EAAY,CACdC,wBAAyB,CACvBC,OAAQpD,EAAM3F,QAGlB,OAAOwF,EAAcE,EAAKmD,IA7F1BG,YAuGF,SAAqBrD,GACnB,OAAOH,EAAcG,EAAMD,IAAKE,EAAaD,GAAQA,EAAME,WAvG3DoD,WA+FF,SAAoBtD,GAElB,OAAOA,EAAM,kBAAoBR,EAAM+D,aAAavD,EAAMwD,QAAS,CACjE,iBAAkBxD,EAAM,oBACrBA,EAAMwD,W,oCCvIb,IAAIC,EAAWpI,EAAQ,QACnB8B,EAAU9B,EAAQ,QAClBqI,EAAWrI,EAAQ,QACnBkD,EAAOlD,EAAQ,QACfsG,EAAOtG,EAAQ,QACfsI,EAAoBtI,EAAQ,QAC5BuI,EAAkBvI,EAAQ,QAC1B6C,EAAa7C,EAAQ,QA0BzBlC,EAAOD,QAxBP,SAAe2K,GACb,IACI5F,EAAS,CACX6F,QAAS,GACT5F,WAAYyF,EACV,CAACzF,GAAYsE,OAAOiB,GAJTI,GAAW,IAIgBE,cAExC5G,QAASzC,EAAOyC,GAChBuG,SAAUhJ,EAAOgJ,GACjBnF,KAAM7D,EAAO6D,GACbyF,OAAQtJ,EAAOiH,EAAKqC,QACpBrC,KAAMjH,EAAOiH,EAAKA,OAEpB,OAAO1D,EAEP,SAASvD,EAAOuJ,GACd,OAEA,SAAiBC,GACf,OAAON,EAAgB3F,EAAQgG,EAAaC,O,oCCxBlD/K,EAAOD,QAJP,SAA4BqD,GAC1B,OAAOA,GAAQ,I,oCCDjB,IAEIjB,EAFaD,EAAQ,OAED8I,CAAW,cAEnChL,EAAOD,QAAUoC,G,oCCJjB,IAAIuD,EAAQxD,EAAQ,QAOpB,SAAS+I,EAAKtD,GACZ,IAAIZ,EAAWY,EAAMZ,SACrBY,EAAMZ,SAAW,CAAC,CAChBkC,KAAM,YACNhB,MAAON,EAAMM,MACblB,SAAU,CAACA,EAAS,IACpBmE,SAAUnE,EAAS,GAAGmE,WAGpBnE,EAASvB,OAAS,GACpBmC,EAAMZ,SAASoE,KAAK,CAClBlC,KAAM,YACNhB,MAAON,EAAMM,MACblB,SAAUA,EAASN,MAAM,GACzByE,SAAU,CACRvC,MAAO5B,EAAS,GAAGmE,SAASvC,MAC5ByC,IAAKrE,EAASA,EAASvB,OAAS,GAAG0F,SAASE,OArBpDpL,EAAOD,QAAU,SAAU+F,GAEzB,OADAJ,EAAMI,EAAM,QAASmF,GACdnF,I,oCCJT,IAAIuF,EAAgBnJ,EAAQ,QA2B5BlC,EAAOD,QAzBP,SAAsB6C,EAASC,EAAIoG,EAAMlG,GACvC,IAAIuI,EAAQvI,EAAMA,EAAM,EAAIwI,IACxBpI,EAAO,EACX,OAEA,SAAeC,GACb,GAAIiI,EAAcjI,GAEhB,OADAR,EAAQS,MAAM4F,GACPuC,EAAOpI,GAGhB,OAAOP,EAAGO,IAGZ,SAASoI,EAAOpI,GACd,OAAIiI,EAAcjI,IAASD,IAASmI,GAClC1I,EAAQU,QAAQF,GACToI,IAGT5I,EAAQW,KAAK0F,GACNpG,EAAGO,O,oCCpBdrD,EAAQ0L,WAA+B,oBAAXzK,OAHX,sBAGiDA,OAHjD,wB;;;;;;;;GCOJ,IAAI0K,EAAE,mBAAoB1K,QAAQA,OAAO2K,IAAIrL,EAAEoL,EAAE1K,OAAO2K,IAAI,iBAAiB,MAAMpL,EAAEmL,EAAE1K,OAAO2K,IAAI,gBAAgB,MAAMpJ,EAAEmJ,EAAE1K,OAAO2K,IAAI,kBAAkB,MAAMC,EAAEF,EAAE1K,OAAO2K,IAAI,qBAAqB,MAAME,EAAEH,EAAE1K,OAAO2K,IAAI,kBAAkB,MAAMG,EAAEJ,EAAE1K,OAAO2K,IAAI,kBAAkB,MAAMI,EAAEL,EAAE1K,OAAO2K,IAAI,iBAAiB,MAAMzL,EAAEwL,EAAE1K,OAAO2K,IAAI,oBAAoB,MAAMtL,EAAEqL,EAAE1K,OAAO2K,IAAI,yBAAyB,MAAMjK,EAAEgK,EAAE1K,OAAO2K,IAAI,qBAAqB,MAAM5J,EAAE2J,EAAE1K,OAAO2K,IAAI,kBAAkB,MAAMK,EAAEN,EACpf1K,OAAO2K,IAAI,uBAAuB,MAAM5K,EAAE2K,EAAE1K,OAAO2K,IAAI,cAAc,MAAMxK,EAAEuK,EAAE1K,OAAO2K,IAAI,cAAc,MAAMM,EAAEP,EAAE1K,OAAO2K,IAAI,eAAe,MAAMO,EAAER,EAAE1K,OAAO2K,IAAI,qBAAqB,MAAMQ,EAAET,EAAE1K,OAAO2K,IAAI,mBAAmB,MAAMS,EAAEV,EAAE1K,OAAO2K,IAAI,eAAe,MAClQ,SAASU,EAAEC,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIC,EAAED,EAAEE,SAAS,OAAOD,GAAG,KAAKjM,EAAE,OAAOgM,EAAEA,EAAErD,MAAQ,KAAK/I,EAAE,KAAKG,EAAE,KAAKkC,EAAE,KAAKsJ,EAAE,KAAKD,EAAE,KAAK7J,EAAE,OAAOuK,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEE,UAAY,KAAKT,EAAE,KAAKrK,EAAE,KAAKP,EAAE,KAAKJ,EAAE,KAAK+K,EAAE,OAAOQ,EAAE,QAAQ,OAAOC,GAAG,KAAKhM,EAAE,OAAOgM,IAAI,SAASE,EAAEH,GAAG,OAAOD,EAAEC,KAAKjM,EAAEN,EAAQ2M,UAAUxM,EAAEH,EAAQ4M,eAAetM,EAAEN,EAAQ6M,gBAAgBb,EAAEhM,EAAQ8M,gBAAgBf,EAAE/L,EAAQ+M,QAAQxM,EAAEP,EAAQgN,WAAWrL,EAAE3B,EAAQwI,SAAShG,EAAExC,EAAQiN,KAAK7L,EAAEpB,EAAQkN,KAAKlM,EAAEhB,EAAQmN,OAAO3M,EAChfR,EAAQoN,SAAStB,EAAE9L,EAAQqN,WAAWxB,EAAE7L,EAAQsN,SAAStL,EAAEhC,EAAQuN,YAAY,SAAShB,GAAG,OAAOG,EAAEH,IAAID,EAAEC,KAAKpM,GAAGH,EAAQwN,iBAAiBd,EAAE1M,EAAQyN,kBAAkB,SAASlB,GAAG,OAAOD,EAAEC,KAAKP,GAAGhM,EAAQ0N,kBAAkB,SAASnB,GAAG,OAAOD,EAAEC,KAAKR,GAAG/L,EAAQ2N,UAAU,SAASpB,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAEE,WAAWlM,GAAGP,EAAQ4N,aAAa,SAASrB,GAAG,OAAOD,EAAEC,KAAK5K,GAAG3B,EAAQ6N,WAAW,SAAStB,GAAG,OAAOD,EAAEC,KAAK/J,GAAGxC,EAAQ8N,OAAO,SAASvB,GAAG,OAAOD,EAAEC,KAAKnL,GACzdpB,EAAQ+N,OAAO,SAASxB,GAAG,OAAOD,EAAEC,KAAKvL,GAAGhB,EAAQgO,SAAS,SAASzB,GAAG,OAAOD,EAAEC,KAAK/L,GAAGR,EAAQiO,WAAW,SAAS1B,GAAG,OAAOD,EAAEC,KAAKT,GAAG9L,EAAQkO,aAAa,SAAS3B,GAAG,OAAOD,EAAEC,KAAKV,GAAG7L,EAAQmO,WAAW,SAAS5B,GAAG,OAAOD,EAAEC,KAAKvK,GACzOhC,EAAQoO,mBAAmB,SAAS7B,GAAG,MAAM,iBAAkBA,GAAG,mBAAoBA,GAAGA,IAAI/J,GAAG+J,IAAIjM,GAAGiM,IAAIT,GAAGS,IAAIV,GAAGU,IAAIvK,GAAGuK,IAAIN,GAAG,iBAAkBM,GAAG,OAAOA,IAAIA,EAAEE,WAAWrL,GAAGmL,EAAEE,WAAWzL,GAAGuL,EAAEE,WAAWV,GAAGQ,EAAEE,WAAWT,GAAGO,EAAEE,WAAW9K,GAAG4K,EAAEE,WAAWN,GAAGI,EAAEE,WAAWL,GAAGG,EAAEE,WAAWJ,GAAGE,EAAEE,WAAWP,IAAIlM,EAAQqO,OAAO/B,G,oCCZnU,IAEIgC,EAFanM,EAAQ,OAER8I,CAAW,YAE5BhL,EAAOD,QAAUsO,G,kCCJjB,IAAIzK,EAAqB1B,EAAQ,QAC7B2B,EAAe3B,EAAQ,QAEvBoM,EAAmB,CACrB3L,SAIF,SAAkCC,EAASC,EAAIC,GAC7C,OAAOe,EAAajB,GAEpB,SAAyBQ,GACvB,OAAgB,OAATA,GAAiBQ,EAAmBR,GAAQP,EAAGO,GAAQN,EAAIM,KAHtB,eAJ9CiC,SAAS,GAWXrF,EAAOD,QAAUuO,G,kCChBjB,IAAIC,EAASrM,EAAQ,QACjBsM,EAAgBtM,EAAQ,QACxBuM,EAAUvM,EAAQ,QAkGtB,SAASwM,EAAWhK,EAAQiK,GAkB1B,IAjBA,IASIC,EACA3K,EACA4K,EACAC,EACA1D,EACA2D,EAdArL,EAAQgB,EAAOiK,GAAY,GAC3BK,EAAUtK,EAAOiK,GAAY,GAC7BM,EAAgBN,EAAa,EAC7BO,EAAiB,GACjBC,EACFzL,EAAM0L,YAAcJ,EAAQlK,OAAOpB,EAAMQ,aAAaR,EAAMiF,OAC1D0G,EAAcF,EAAUzK,OACxB4K,EAAQ,GACRC,EAAO,GASJ7L,GAAO,CAEZ,KAAOgB,IAASuK,GAAe,KAAOvL,IAItCwL,EAAe/D,KAAK8D,GAEfvL,EAAM0L,aACTR,EAASI,EAAQQ,YAAY9L,GAExBA,EAAMc,MACToK,EAAOzD,KAAK,MAGVlH,GACFkL,EAAUM,WAAW/L,EAAMiF,OAGzBjF,EAAMgM,6BACRP,EAAUQ,oCAAqC,GAGjDR,EAAUS,MAAMhB,GAEZlL,EAAMgM,6BACRP,EAAUQ,wCAAqC9J,IAInD5B,EAAWP,EACXA,EAAQA,EAAMc,KAOhB,IAHAd,EAAQO,EACR4K,EAAQQ,EAAY7J,OAEbqJ,KAGyB,UAA1BQ,EAAYR,GAAO,GACrBC,GAAU,EAGVA,GACAO,EAAYR,GAAO,GAAG5F,OAASoG,EAAYR,EAAQ,GAAG,GAAG5F,MACzDoG,EAAYR,GAAO,GAAGlG,MAAMkH,OAASR,EAAYR,GAAO,GAAGzD,IAAIyE,OAE/DC,EAAIT,EAAY5I,MAAMoI,EAAQ,EAAGzD,IAEjC1H,EAAM0L,WAAa1L,EAAMc,UAAOqB,EAChCnC,EAAQA,EAAMO,SACdmH,EAAMyD,EAAQ,GAWlB,IANAM,EAAUzK,OAAShB,EAAM0L,WAAa1L,EAAMc,UAAOqB,EAEnDiK,EAAIT,EAAY5I,MAAM,EAAG2E,IACzByD,GAAS,EACTE,EAAS,IAEAF,EAAQS,EAAM9J,QACrB+J,EAAKR,EAASO,EAAMT,GAAO,IAAME,EAASO,EAAMT,GAAO,GACvDE,GAAUO,EAAMT,GAAO,GAAKS,EAAMT,GAAO,GAAK,EAGhD,OAAOU,EAEP,SAASO,EAAIrJ,GACX,IAAIkC,EAAQuG,EAAea,MAC3BT,EAAMU,QAAQ,CAACrH,EAAOA,EAAQlC,EAAMjB,OAAS,IAC7CgJ,EAAc9J,EAAQiE,EAAO,EAAGlC,IAIpCzG,EAAOD,QAhMP,SAAqB2E,GAWnB,IAVA,IAEIuL,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EARAjB,EAAQ,GACRT,GAAS,IASJA,EAAQnK,EAAOc,QAAQ,CAC9B,KAAOqJ,KAASS,GACdT,EAAQS,EAAMT,GAMhB,GAHAoB,EAAQvL,EAAOmK,GAIbA,GACkB,cAAlBoB,EAAM,GAAGhH,MACqB,mBAA9BvE,EAAOmK,EAAQ,GAAG,GAAG5F,QAGrBkH,EAAa,IADbG,EAAYL,EAAM,GAAGb,WAAW1K,QAIPc,QACW,oBAAlC8K,EAAUH,GAAY,GAAGlH,OAEzBkH,GAAc,GAIdA,EAAaG,EAAU9K,QACW,YAAlC8K,EAAUH,GAAY,GAAGlH,MAEzB,OAASkH,EAAaG,EAAU9K,QACQ,YAAlC8K,EAAUH,GAAY,GAAGlH,MAIS,cAAlCqH,EAAUH,GAAY,GAAGlH,OAC3BqH,EAAUH,GAAY,GAAGT,4BAA6B,EACtDS,KAMR,GAAiB,UAAbF,EAAM,GACJA,EAAM,GAAG/L,cACXqK,EAAOe,EAAOZ,EAAWhK,EAAQmK,IACjCA,EAAQS,EAAMT,GACd0B,GAAO,QAGN,GAAIN,EAAM,GAAGO,YAAcP,EAAM,GAAGQ,yBAA0B,CAIjE,IAHAN,EAAatB,EACbqB,OAAYrK,EAELsK,MAIoB,gBAHzBC,EAAa1L,EAAOyL,IAGP,GAAGlH,MACS,oBAAvBmH,EAAW,GAAGnH,OAEQ,UAAlBmH,EAAW,KACTF,IACFxL,EAAOwL,GAAW,GAAGjH,KAAO,mBAG9BmH,EAAW,GAAGnH,KAAO,aACrBiH,EAAYC,GAOdD,IAEFD,EAAM,GAAG7E,IAAMqD,EAAQ/J,EAAOwL,GAAW,GAAGvH,QAE5C0H,EAAa3L,EAAO+B,MAAMyJ,EAAWrB,IAC1BmB,QAAQC,GACnBzB,EAAc9J,EAAQwL,EAAWrB,EAAQqB,EAAY,EAAGG,KAK9D,OAAQE,I,kCCjGV,IAAIG,EAAexO,EAAQ,QAuB3BlC,EAAOD,QArBP,SAAqBmB,EAAOyP,GAC1B,IAAIvN,EAAOmD,SAASrF,EAAOyP,GAE3B,OAEEvN,EAAO,GACE,KAATA,GACCA,EAAO,IAAMA,EAAO,IACpBA,EAAO,KAAOA,EAAO,KACrBA,EAAO,OAASA,EAAO,OACvBA,EAAO,OAASA,EAAO,OACL,QAAX,MAAPA,IACkB,QAAX,MAAPA,IACDA,EAAO,QAEA,IAGFsN,EAAatN,K,kCCpBtBpD,EAAOD,QAAU2F,EAEjB,IAAIkL,EAAe1O,EAAQ,QAEvB2O,EAAWD,EAAaC,SACxBC,EAAOF,EAAaE,KACpBC,EAAOH,EAAaG,KAMxB,SAASrL,EAAMC,EAAM3C,EAAMgO,EAASC,GACd,mBAATjO,GAA0C,mBAAZgO,IACvCC,EAAUD,EACVA,EAAUhO,EACVA,EAAO,MAGT4N,EAAajL,EAAM3C,GAEnB,SAAkB8C,EAAMoL,GACtB,IAAIC,EAASD,EAAQA,EAAQ1L,OAAS,GAClCqJ,EAAQsC,EAASA,EAAOpK,SAAS7B,QAAQY,GAAQ,KACrD,OAAOkL,EAAQlL,EAAM+I,EAAOsC,KALKF,GAXrCvL,EAAMmL,SAAWA,EACjBnL,EAAMoL,KAAOA,EACbpL,EAAMqL,KAAOA,G,kCCFb/Q,EAAOD,QARP,SAAkBmB,GAChB,OAAOA,QACH,GACA,WAAYA,EACZA,EACA,CAACA,K,kCCLP,IAAI0C,EAAqB1B,EAAQ,QAE7BkP,EAAW,CACb5Q,KAAM,WACNmC,SAmEF,SAA0BC,EAASC,EAAIC,GACrC,IACIK,EACAO,EAFA2N,EAAW,EAGf,OAEA,SAAejO,GAGb,OAFAR,EAAQS,MAAM,YACdT,EAAQS,MAAM,oBACPiO,EAAgBlO,IAGzB,SAASkO,EAAgBlO,GACvB,OAAa,KAATA,GACFR,EAAQU,QAAQF,GAChBiO,IACOC,IAGT1O,EAAQW,KAAK,oBACNgO,EAAInO,IAGb,SAASmO,EAAInO,GAEX,OAAa,OAATA,EACKN,EAAIM,GAIA,KAATA,GACFM,EAAQd,EAAQS,MAAM,oBACtBF,EAAO,EACAqO,EAAgBpO,IAGZ,KAATA,GACFR,EAAQS,MAAM,SACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,SACNgO,GAGL3N,EAAmBR,IACrBR,EAAQS,MAAM,cACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,cACNgO,IAGT3O,EAAQS,MAAM,gBACPc,EAAKf,IAGd,SAASe,EAAKf,GACZ,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACAQ,EAAmBR,IAEnBR,EAAQW,KAAK,gBACNgO,EAAInO,KAGbR,EAAQU,QAAQF,GACTe,GAGT,SAASqN,EAAgBpO,GAEvB,OAAa,KAATA,GACFR,EAAQU,QAAQF,GAChBD,IACOqO,GAGLrO,IAASkO,GACXzO,EAAQW,KAAK,oBACbX,EAAQW,KAAK,YACNV,EAAGO,KAGZM,EAAMuF,KAAO,eACN9E,EAAKf,MAtJdqB,QAIF,SAAyBC,GACvB,IAEImK,EACAxL,EAHAoO,EAAgB/M,EAAOc,OAAS,EAChCkM,EAAiB,EAIrB,KACsC,eAAnChN,EAAOgN,GAAgB,GAAGzI,MACU,UAAnCvE,EAAOgN,GAAgB,GAAGzI,MACO,eAAlCvE,EAAO+M,GAAe,GAAGxI,MACU,UAAlCvE,EAAO+M,GAAe,GAAGxI,MAI3B,IAFA4F,EAAQ6C,IAEC7C,EAAQ4C,GACf,GAA8B,iBAA1B/M,EAAOmK,GAAO,GAAG5F,KAAyB,CAE5CvE,EAAO+M,GAAe,GAAGxI,KAAOvE,EAAOgN,GAAgB,GAAGzI,KACxD,kBACFyI,GAAkB,EAClBD,GAAiB,EACjB,MAKN5C,EAAQ6C,EAAiB,EACzBD,IAEA,OAAS5C,GAAS4C,QACF5L,IAAVxC,EACEwL,IAAU4C,GAA2C,eAA1B/M,EAAOmK,GAAO,GAAG5F,OAC9C5F,EAAQwL,GAGVA,IAAU4C,GACgB,eAA1B/M,EAAOmK,GAAO,GAAG5F,OAEjBvE,EAAOrB,GAAO,GAAG4F,KAAO,eAEpB4F,IAAUxL,EAAQ,IACpBqB,EAAOrB,GAAO,GAAG+H,IAAM1G,EAAOmK,EAAQ,GAAG,GAAGzD,IAC5C1G,EAAOiN,OAAOtO,EAAQ,EAAGwL,EAAQxL,EAAQ,GACzCoO,GAAiB5C,EAAQxL,EAAQ,EACjCwL,EAAQxL,EAAQ,GAGlBA,OAAQwC,GAIZ,OAAOnB,GAtDPT,SAyDF,SAAkBb,GAEhB,OACW,KAATA,GACgD,oBAAhDF,KAAKwB,OAAOxB,KAAKwB,OAAOc,OAAS,GAAG,GAAGyD,OA4F3CjJ,EAAOD,QAAUqR,G,uBCjKjB,MASIQ,EAAY,WAGhB,IAAIhG,EAAIiG,OAAOnB,aACXoB,EAAe,oEACfC,EAAgB,oEAChBC,EAAiB,GAErB,SAASC,EAAaC,EAAUC,GAC9B,IAAKH,EAAeE,GAAW,CAC7BF,EAAeE,GAAY,GAC3B,IAAK,IAAIjS,EAAE,EAAIA,EAAEiS,EAAS1M,OAASvF,IACjC+R,EAAeE,GAAUA,EAASE,OAAOnS,IAAMA,EAGnD,OAAO+R,EAAeE,GAAUC,GAGlC,IAAIP,EAAW,CACbS,iBAAmB,SAAUC,GAC3B,GAAa,MAATA,EAAe,MAAO,GAC1B,IAAIC,EAAMX,EAASY,UAAUF,EAAO,GAAG,SAAShG,GAAG,OAAOwF,EAAaM,OAAO9F,MAC9E,OAAQiG,EAAI/M,OAAS,GACrB,QACA,KAAK,EAAI,OAAO+M,EAChB,KAAK,EAAI,OAAOA,EAAI,MACpB,KAAK,EAAI,OAAOA,EAAI,KACpB,KAAK,EAAI,OAAOA,EAAI,MAItBE,qBAAuB,SAAUH,GAC/B,OAAa,MAATA,EAAsB,GACb,IAATA,EAAoB,KACjBV,EAASc,YAAYJ,EAAM9M,OAAQ,IAAI,SAASqJ,GAAS,OAAOoD,EAAaH,EAAcQ,EAAMF,OAAOvD,QAGjH8D,gBAAkB,SAAUL,GAC1B,OAAa,MAATA,EAAsB,GACnBV,EAASY,UAAUF,EAAO,IAAI,SAAShG,GAAG,OAAOV,EAAEU,EAAE,OAAS,KAGvEsG,oBAAqB,SAAUC,GAC7B,OAAkB,MAAdA,EAA2B,GACb,IAAdA,EAAyB,KACtBjB,EAASc,YAAYG,EAAWrN,OAAQ,OAAO,SAASqJ,GAAS,OAAOgE,EAAWC,WAAWjE,GAAS,OAIhHkE,qBAAsB,SAAUC,GAI9B,IAHA,IAAIH,EAAajB,EAASqB,SAASD,GAC/BE,EAAI,IAAIC,WAA6B,EAAlBN,EAAWrN,QAEzBvF,EAAE,EAAGmT,EAASP,EAAWrN,OAAQvF,EAAEmT,EAAUnT,IAAK,CACzD,IAAIoT,EAAgBR,EAAWC,WAAW7S,GAC1CiT,EAAM,EAAFjT,GAAOoT,IAAkB,EAC7BH,EAAM,EAAFjT,EAAI,GAAKoT,EAAgB,IAE/B,OAAOH,GAITI,yBAAyB,SAAUT,GACjC,GAAIA,QACA,OAAOjB,EAAS2B,WAAWV,GAG3B,IADA,IAAIK,EAAI,IAAIM,MAAMX,EAAWrN,OAAO,GAC3BvF,EAAE,EAAGmT,EAASF,EAAI1N,OAAQvF,EAAEmT,EAAUnT,IAC7CiT,EAAIjT,GAAmB,IAAhB4S,EAAa,EAAF5S,GAAS4S,EAAa,EAAF5S,EAAI,GAG5C,IAAIwT,EAAS,GAIb,OAHAP,EAAIQ,SAAQ,SAAUpT,GACpBmT,EAAOtI,KAAKS,EAAEtL,OAETsR,EAAS2B,WAAWE,EAAOE,KAAK,MAQ7CC,8BAA+B,SAAUtB,GACvC,OAAa,MAATA,EAAsB,GACnBV,EAASY,UAAUF,EAAO,GAAG,SAAShG,GAAG,OAAOyF,EAAcK,OAAO9F,OAI9EuH,kCAAkC,SAAUvB,GAC1C,OAAa,MAATA,EAAsB,GACb,IAATA,EAAoB,MACxBA,EAAQA,EAAMwB,QAAQ,KAAM,KACrBlC,EAASc,YAAYJ,EAAM9M,OAAQ,IAAI,SAASqJ,GAAS,OAAOoD,EAAaF,EAAeO,EAAMF,OAAOvD,SAGlHoE,SAAU,SAAUD,GAClB,OAAOpB,EAASY,UAAUQ,EAAc,IAAI,SAAS1G,GAAG,OAAOV,EAAEU,OAEnEkG,UAAW,SAAUQ,EAAce,EAAaC,GAC9C,GAAoB,MAAhBhB,EAAsB,MAAO,GACjC,IAAI/S,EAAGiB,EAYH+S,EAXAC,EAAoB,GACpBC,EAA4B,GAC5BC,EAAU,GACVC,EAAW,GACXC,EAAU,GACVC,EAAmB,EACnBC,EAAkB,EAClBC,EAAiB,EACjBC,EAAa,GACbC,EAAiB,EACjBC,EAAsB,EAG1B,IAAKX,EAAK,EAAGA,EAAKjB,EAAaxN,OAAQyO,GAAM,EAQ3C,GAPAG,EAAYpB,EAAaZ,OAAO6B,GAC3BtT,OAAOkB,UAAUC,eAAe1B,KAAK8T,EAAmBE,KAC3DF,EAAmBE,GAAaI,IAChCL,EAA2BC,IAAa,GAG1CC,EAAaC,EAAYF,EACrBzT,OAAOkB,UAAUC,eAAe1B,KAAK8T,EAAmBG,GAC1DC,EAAYD,MACP,CACL,GAAI1T,OAAOkB,UAAUC,eAAe1B,KAAK+T,EAA2BG,GAAY,CAC9E,GAAIA,EAAUxB,WAAW,GAAG,IAAK,CAC/B,IAAK7S,EAAE,EAAIA,EAAEwU,EAAkBxU,IAC7B0U,IAAwC,EACpCC,GAAyBb,EAAY,GACvCa,EAAwB,EACxBF,EAAavJ,KAAK6I,EAAeW,IACjCA,EAAmB,GAEnBC,IAIJ,IADA1T,EAAQoT,EAAUxB,WAAW,GACxB7S,EAAE,EAAIA,EAAE,EAAIA,IACf0U,EAAoBA,GAAoB,EAAY,EAANzT,EAC1C0T,GAAyBb,EAAY,GACvCa,EAAwB,EACxBF,EAAavJ,KAAK6I,EAAeW,IACjCA,EAAmB,GAEnBC,IAEF1T,IAAiB,MAEd,CAEL,IADAA,EAAQ,EACHjB,EAAE,EAAIA,EAAEwU,EAAkBxU,IAC7B0U,EAAoBA,GAAoB,EAAKzT,EACzC0T,GAAwBb,EAAY,GACtCa,EAAwB,EACxBF,EAAavJ,KAAK6I,EAAeW,IACjCA,EAAmB,GAEnBC,IAEF1T,EAAQ,EAGV,IADAA,EAAQoT,EAAUxB,WAAW,GACxB7S,EAAE,EAAIA,EAAE,GAAKA,IAChB0U,EAAoBA,GAAoB,EAAY,EAANzT,EAC1C0T,GAAyBb,EAAY,GACvCa,EAAwB,EACxBF,EAAavJ,KAAK6I,EAAeW,IACjCA,EAAmB,GAEnBC,IAEF1T,IAAiB,EAII,KADzBqT,IAEEA,EAAoBM,KAAKC,IAAI,EAAGL,GAChCA,YAEKN,EAA2BG,QAGlC,IADApT,EAAQgT,EAAmBI,GACtBrU,EAAE,EAAIA,EAAEwU,EAAkBxU,IAC7B0U,EAAoBA,GAAoB,EAAY,EAANzT,EAC1C0T,GAAyBb,EAAY,GACvCa,EAAwB,EACxBF,EAAavJ,KAAK6I,EAAeW,IACjCA,EAAmB,GAEnBC,IAEF1T,IAAiB,EAMI,KADzBqT,IAEEA,EAAoBM,KAAKC,IAAI,EAAGL,GAChCA,KAGFP,EAAmBG,GAAcG,IACjCF,EAAYzC,OAAOuC,GAKvB,GAAkB,KAAdE,EAAkB,CACpB,GAAI3T,OAAOkB,UAAUC,eAAe1B,KAAK+T,EAA2BG,GAAY,CAC9E,GAAIA,EAAUxB,WAAW,GAAG,IAAK,CAC/B,IAAK7S,EAAE,EAAIA,EAAEwU,EAAkBxU,IAC7B0U,IAAwC,EACpCC,GAAyBb,EAAY,GACvCa,EAAwB,EACxBF,EAAavJ,KAAK6I,EAAeW,IACjCA,EAAmB,GAEnBC,IAIJ,IADA1T,EAAQoT,EAAUxB,WAAW,GACxB7S,EAAE,EAAIA,EAAE,EAAIA,IACf0U,EAAoBA,GAAoB,EAAY,EAANzT,EAC1C0T,GAAyBb,EAAY,GACvCa,EAAwB,EACxBF,EAAavJ,KAAK6I,EAAeW,IACjCA,EAAmB,GAEnBC,IAEF1T,IAAiB,MAEd,CAEL,IADAA,EAAQ,EACHjB,EAAE,EAAIA,EAAEwU,EAAkBxU,IAC7B0U,EAAoBA,GAAoB,EAAKzT,EACzC0T,GAAyBb,EAAY,GACvCa,EAAwB,EACxBF,EAAavJ,KAAK6I,EAAeW,IACjCA,EAAmB,GAEnBC,IAEF1T,EAAQ,EAGV,IADAA,EAAQoT,EAAUxB,WAAW,GACxB7S,EAAE,EAAIA,EAAE,GAAKA,IAChB0U,EAAoBA,GAAoB,EAAY,EAANzT,EAC1C0T,GAAyBb,EAAY,GACvCa,EAAwB,EACxBF,EAAavJ,KAAK6I,EAAeW,IACjCA,EAAmB,GAEnBC,IAEF1T,IAAiB,EAII,KADzBqT,IAEEA,EAAoBM,KAAKC,IAAI,EAAGL,GAChCA,YAEKN,EAA2BG,QAGlC,IADApT,EAAQgT,EAAmBI,GACtBrU,EAAE,EAAIA,EAAEwU,EAAkBxU,IAC7B0U,EAAoBA,GAAoB,EAAY,EAANzT,EAC1C0T,GAAyBb,EAAY,GACvCa,EAAwB,EACxBF,EAAavJ,KAAK6I,EAAeW,IACjCA,EAAmB,GAEnBC,IAEF1T,IAAiB,EAMI,KADzBqT,IAEEA,EAAoBM,KAAKC,IAAI,EAAGL,GAChCA,KAMJ,IADAvT,EAAQ,EACHjB,EAAE,EAAIA,EAAEwU,EAAkBxU,IAC7B0U,EAAoBA,GAAoB,EAAY,EAANzT,EAC1C0T,GAAyBb,EAAY,GACvCa,EAAwB,EACxBF,EAAavJ,KAAK6I,EAAeW,IACjCA,EAAmB,GAEnBC,IAEF1T,IAAiB,EAInB,OAAa,CAEX,GADAyT,IAAwC,EACpCC,GAAyBb,EAAY,EAAG,CAC1CW,EAAavJ,KAAK6I,EAAeW,IACjC,MAEGC,IAEP,OAAOF,EAAaf,KAAK,KAG3BJ,WAAY,SAAUV,GACpB,OAAkB,MAAdA,EAA2B,GACb,IAAdA,EAAyB,KACtBjB,EAASc,YAAYG,EAAWrN,OAAQ,OAAO,SAASqJ,GAAS,OAAOgE,EAAWC,WAAWjE,OAGvG6D,YAAa,SAAUlN,EAAQuP,EAAYC,GACzC,IAOI/U,EACAiM,EACA+I,EAAMC,EAAMC,EAAUC,EACtB9U,EAVA+U,EAAa,GAEbC,EAAY,EACZC,EAAW,EACXC,EAAU,EACVC,EAAQ,GACRhC,EAAS,GAKTtP,EAAO,CAACuR,IAAIV,EAAa,GAAI9J,SAAS6J,EAAYlG,MAAM,GAE5D,IAAK5O,EAAI,EAAGA,EAAI,EAAGA,GAAK,EACtBoV,EAAWpV,GAAKA,EAMlB,IAHAgV,EAAO,EACPE,EAAWN,KAAKC,IAAI,EAAE,GACtBM,EAAM,EACCA,GAAOD,GACZD,EAAO/Q,EAAKuR,IAAMvR,EAAK+G,SACvB/G,EAAK+G,WAAa,EACG,GAAjB/G,EAAK+G,WACP/G,EAAK+G,SAAW6J,EAChB5Q,EAAKuR,IAAMV,EAAa7Q,EAAK0K,UAE/BoG,IAASC,EAAK,EAAI,EAAI,GAAKE,EAC3BA,IAAU,EAGZ,OAAeH,GACb,KAAK,EAID,IAHAA,EAAO,EACPE,EAAWN,KAAKC,IAAI,EAAE,GACtBM,EAAM,EACCA,GAAOD,GACZD,EAAO/Q,EAAKuR,IAAMvR,EAAK+G,SACvB/G,EAAK+G,WAAa,EACG,GAAjB/G,EAAK+G,WACP/G,EAAK+G,SAAW6J,EAChB5Q,EAAKuR,IAAMV,EAAa7Q,EAAK0K,UAE/BoG,IAASC,EAAK,EAAI,EAAI,GAAKE,EAC3BA,IAAU,EAEd9U,EAAIsL,EAAEqJ,GACN,MACF,KAAK,EAID,IAHAA,EAAO,EACPE,EAAWN,KAAKC,IAAI,EAAE,IACtBM,EAAM,EACCA,GAAOD,GACZD,EAAO/Q,EAAKuR,IAAMvR,EAAK+G,SACvB/G,EAAK+G,WAAa,EACG,GAAjB/G,EAAK+G,WACP/G,EAAK+G,SAAW6J,EAChB5Q,EAAKuR,IAAMV,EAAa7Q,EAAK0K,UAE/BoG,IAASC,EAAK,EAAI,EAAI,GAAKE,EAC3BA,IAAU,EAEd9U,EAAIsL,EAAEqJ,GACN,MACF,KAAK,EACH,MAAO,GAKX,IAHAI,EAAW,GAAK/U,EAChB4L,EAAI5L,EACJmT,EAAOtI,KAAK7K,KACC,CACX,GAAI6D,EAAK0K,MAAQrJ,EACf,MAAO,GAMT,IAHAyP,EAAO,EACPE,EAAWN,KAAKC,IAAI,EAAEU,GACtBJ,EAAM,EACCA,GAAOD,GACZD,EAAO/Q,EAAKuR,IAAMvR,EAAK+G,SACvB/G,EAAK+G,WAAa,EACG,GAAjB/G,EAAK+G,WACP/G,EAAK+G,SAAW6J,EAChB5Q,EAAKuR,IAAMV,EAAa7Q,EAAK0K,UAE/BoG,IAASC,EAAK,EAAI,EAAI,GAAKE,EAC3BA,IAAU,EAGZ,OAAQ9U,EAAI2U,GACV,KAAK,EAIH,IAHAA,EAAO,EACPE,EAAWN,KAAKC,IAAI,EAAE,GACtBM,EAAM,EACCA,GAAOD,GACZD,EAAO/Q,EAAKuR,IAAMvR,EAAK+G,SACvB/G,EAAK+G,WAAa,EACG,GAAjB/G,EAAK+G,WACP/G,EAAK+G,SAAW6J,EAChB5Q,EAAKuR,IAAMV,EAAa7Q,EAAK0K,UAE/BoG,IAASC,EAAK,EAAI,EAAI,GAAKE,EAC3BA,IAAU,EAGZC,EAAWE,KAAc3J,EAAEqJ,GAC3B3U,EAAIiV,EAAS,EACbD,IACA,MACF,KAAK,EAIH,IAHAL,EAAO,EACPE,EAAWN,KAAKC,IAAI,EAAE,IACtBM,EAAM,EACCA,GAAOD,GACZD,EAAO/Q,EAAKuR,IAAMvR,EAAK+G,SACvB/G,EAAK+G,WAAa,EACG,GAAjB/G,EAAK+G,WACP/G,EAAK+G,SAAW6J,EAChB5Q,EAAKuR,IAAMV,EAAa7Q,EAAK0K,UAE/BoG,IAASC,EAAK,EAAI,EAAI,GAAKE,EAC3BA,IAAU,EAEZC,EAAWE,KAAc3J,EAAEqJ,GAC3B3U,EAAIiV,EAAS,EACbD,IACA,MACF,KAAK,EACH,OAAO7B,EAAOE,KAAK,IAQvB,GALiB,GAAb2B,IACFA,EAAYT,KAAKC,IAAI,EAAGU,GACxBA,KAGEH,EAAW/U,GACbmV,EAAQJ,EAAW/U,OACd,CACL,GAAIA,IAAMiV,EAGR,OAAO,KAFPE,EAAQvJ,EAAIA,EAAEkG,OAAO,GAKzBqB,EAAOtI,KAAKsK,GAGZJ,EAAWE,KAAcrJ,EAAIuJ,EAAMrD,OAAO,GAG1ClG,EAAIuJ,EAEa,KAJjBH,IAKEA,EAAYT,KAAKC,IAAI,EAAGU,GACxBA,QAMN,OAAO5D,EApeO,QAweR,KAAN+D,aAAqB,OAAO/D,GAAtB,+B,kCCteR5R,EAAOD,QAFoB,gD,mBCI3B,SAAS6V,EAAUC,GACjB,QAASA,EAAIC,aAAmD,mBAA7BD,EAAIC,YAAYF,UAA2BC,EAAIC,YAAYF,SAASC;;;;;;;AALzG7V,EAAOD,QAAU,SAAU8V,GACzB,OAAc,MAAPA,IAAgBD,EAASC,IAQlC,SAAuBA,GACrB,MAAkC,mBAApBA,EAAIE,aAAmD,mBAAdF,EAAIpP,OAAwBmP,EAASC,EAAIpP,MAAM,EAAG,IATjEuP,CAAaH,MAAUA,EAAII,a,kCCRrE,IAAI1H,EAASrM,EAAQ,QAMrBlC,EAAOD,QAJP,SAAiB4B,GACf,OAAO4M,EAAO,GAAI5M,K,kCCHpB,IAAI0J,EAAgBnJ,EAAQ,QACxB2B,EAAe3B,EAAQ,QAEvBgU,EAAa,CACf1V,KAAM,aACNmC,SAOF,SAAiCC,EAASC,EAAIC,GAC5C,IAAIG,EAAOC,KACX,OAEA,SAAeE,GACb,GAAa,KAATA,EAYF,OAXKH,EAAKkT,eAAe3S,OACvBZ,EAAQS,MAAM,aAAc,CAC1BmN,YAAY,IAEdvN,EAAKkT,eAAe3S,MAAO,GAG7BZ,EAAQS,MAAM,oBACdT,EAAQS,MAAM,oBACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,oBACN6S,EAGT,OAAOtT,EAAIM,IAGb,SAASgT,EAAMhT,GACb,OAAIiI,EAAcjI,IAChBR,EAAQS,MAAM,8BACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,8BACbX,EAAQW,KAAK,oBACNV,IAGTD,EAAQW,KAAK,oBACNV,EAAGO,MAvCZiT,aAAc,CACZ1T,SA0CJ,SAAwCC,EAASC,EAAIC,GACnD,OAAOe,EACLjB,EACAA,EAAQ0T,QAAQJ,EAAYrT,EAAIC,GAChC,aACAI,KAAK4B,OAAOC,WAAWC,QAAQC,KAAKC,QAAQ,iBAAmB,OAC3DW,EACA,KA/CNtC,KAmDF,SAAcX,GACZA,EAAQW,KAAK,gBAGfvD,EAAOD,QAAUmW,G,kCCxCjBlW,EAAOD,QAxBP,SAAqBwW,EAAQ7S,GAC3B,IAII8S,EAJAC,EAAa/S,EAAMiF,MAAM+N,OACzBC,EAAmBjT,EAAMiF,MAAMiO,aAC/BC,EAAWnT,EAAM0H,IAAIsL,OACrBI,EAAiBpT,EAAM0H,IAAIwL,aAiB/B,OAdIH,IAAeI,EACjBL,EAAO,CAACD,EAAOE,GAAYhQ,MAAMkQ,EAAkBG,KAEnDN,EAAOD,EAAO9P,MAAMgQ,EAAYI,GAE5BF,GAAoB,IACtBH,EAAK,GAAKA,EAAK,GAAG/P,MAAMkQ,IAGtBG,EAAiB,GACnBN,EAAKrL,KAAKoL,EAAOM,GAAUpQ,MAAM,EAAGqQ,KAIjCN,I,yDCrBT,IAAIO,EAAY,CAAC,OAAQ,QAAS,SAAU,OAE5C/W,EAAOD,QAAU,SAAwBiX,GACvC,IAAI9Q,GAAO8Q,GAAO,IAAIC,OAClBC,EAAQhR,EAAIkM,OAAO,GAEvB,GAAc,MAAV8E,GAA2B,MAAVA,EACnB,OAAOhR,EAGT,IAAIiR,EAAQjR,EAAIhB,QAAQ,KAExB,IAAe,IAAXiS,EACF,OAAOjR,EAMT,IAHA,IAAIV,EAASuR,EAAUvR,OACnBqJ,GAAS,IAEJA,EAAQrJ,GAAQ,CACvB,IAAI4R,EAAWL,EAAUlI,GAEzB,GAAIsI,IAAUC,EAAS5R,QAAUU,EAAIO,MAAM,EAAG2Q,EAAS5R,QAAQ6R,gBAAkBD,EAC/E,OAAOlR,EAMX,OAAe,KAFf2I,EAAQ3I,EAAIhB,QAAQ,OAEAiS,EAAQtI,IAMb,KAFfA,EAAQ3I,EAAIhB,QAAQ,OAEAiS,EAAQtI,EALnB3I,EAUF,uB,kCCxCT,IAEIoR,EAFapV,EAAQ,OAER8I,CAAW,uBAE5BhL,EAAOD,QAAUuX,G,kCCJjB,IAAIC,EAAarV,EAAQ,QAQzBlC,EAAOD,QANP,SAAoB2E,EAAQuE,GAC1B,IAAIuO,EAAO9S,EAAOA,EAAOc,OAAS,GAClC,OAAKgS,GAAQA,EAAK,GAAGvO,OAASA,EACvBsO,EAAWC,EAAK,GAAGhI,YAAYgI,EAAK,KADA,I,mBCN7CxX,EAAOD,QAAUmC,QAAQ,W,kCCUzBlC,EAAOD,QAFkB,ovC,kCCNzB,IAAI0G,EAAQ,GAAGA,MAEfzG,EAAOD,QAKP,SAAc0X,EAAIC,GAChB,IAAIC,EAEJ,OAEA,WACE,IAEIlE,EAFAmE,EAASnR,EAAMrG,KAAKmF,UAAW,GAC/BmS,EAAWD,EAAGjS,OAASoS,EAAOpS,OAG9BkS,GACFE,EAAOzM,KAAK0M,GAGd,IACEpE,EAASgE,EAAGK,MAAM,KAAMF,GACxB,MAAOG,GAMP,GAAIL,GAAYC,EACd,MAAMI,EAGR,OAAOF,EAAKE,GAGTL,IACCjE,GAAiC,mBAAhBA,EAAOuE,KAC1BvE,EAAOuE,KAAKA,EAAMH,GACTpE,aAAkBwE,MAC3BJ,EAAKpE,GAELuE,EAAKvE,KAMX,SAASoE,IACFF,IACHA,GAAU,EAEVD,EAASI,MAAM,KAAMvS,YAMzB,SAASyS,EAAK9W,GACZ2W,EAAK,KAAM3W,M,kCC3Df,IAAI0C,EAAqB1B,EAAQ,QAC7BmJ,EAAgBnJ,EAAQ,QACxB2B,EAAe3B,EAAQ,QAEvBkF,EAAgB,CAClB5G,KAAM,gBACNmC,SAGF,SAA+BC,EAASC,EAAIC,GAC1C,IACIoV,EADA/U,EAAO,EAEX,OAEA,SAAeC,GAGb,OAFAR,EAAQS,MAAM,iBACd6U,EAAS9U,EACF+U,EAAQ/U,IAGjB,SAAS+U,EAAQ/U,GACf,OAAIA,IAAS8U,GACXtV,EAAQS,MAAM,yBACP+U,EAAShV,IAGdiI,EAAcjI,GACTS,EAAajB,EAASuV,EAAS,aAA/BtU,CAA6CT,GAGlDD,EAAO,GAAe,OAATC,IAAkBQ,EAAmBR,GAC7CN,EAAIM,IAGbR,EAAQW,KAAK,iBACNV,EAAGO,IAGZ,SAASgV,EAAShV,GAChB,OAAIA,IAAS8U,GACXtV,EAAQU,QAAQF,GAChBD,IACOiV,IAGTxV,EAAQW,KAAK,yBACN4U,EAAQ/U,OAInBpD,EAAOD,QAAUqH,G,kCClDjB,IAAIoH,EAAgBtM,EAAQ,QACxB0B,EAAqB1B,EAAQ,QAC7BmJ,EAAgBnJ,EAAQ,QACxB2B,EAAe3B,EAAQ,QACvBmW,EAA4BnW,EAAQ,QAEpCoW,EAAa,CACf9X,KAAM,aACNmC,SAqDF,SAA4BC,EAASC,EAAIC,GACvC,IAAIG,EAAOC,KACPC,EAAO,EACX,OAEA,SAAeC,GAGb,OAFAR,EAAQS,MAAM,cACdT,EAAQS,MAAM,sBACPkV,EAAgBnV,IAGzB,SAASmV,EAAgBnV,GACvB,OAAa,KAATA,GAAeD,IAAS,GAC1BP,EAAQU,QAAQF,GACTmV,GAGI,OAATnV,GAAiBiV,EAA0BjV,IAC7CR,EAAQW,KAAK,sBACNN,EAAKkC,UAAYtC,EAAGO,GAAQoV,EAAapV,IAG3CN,EAAIM,GAGb,SAASoV,EAAapV,GACpB,OAAa,KAATA,GACFR,EAAQS,MAAM,sBACP+U,EAAShV,IAGL,OAATA,GAAiBQ,EAAmBR,IACtCR,EAAQW,KAAK,cACNV,EAAGO,IAGRiI,EAAcjI,GACTS,EAAajB,EAAS4V,EAAc,aAApC3U,CAAkDT,IAG3DR,EAAQS,MAAM,kBACPc,EAAKf,IAGd,SAASgV,EAAShV,GAChB,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACTgV,IAGTxV,EAAQW,KAAK,sBACNiV,EAAapV,IAGtB,SAASe,EAAKf,GACZ,OAAa,OAATA,GAA0B,KAATA,GAAeiV,EAA0BjV,IAC5DR,EAAQW,KAAK,kBACNiV,EAAapV,KAGtBR,EAAQU,QAAQF,GACTe,KAjHTM,QAGF,SAA2BC,EAAQsK,GACjC,IAEIhL,EACAwE,EAHApE,EAAaM,EAAOc,OAAS,EAC7BiT,EAAe,EAIkB,eAAjC/T,EAAO+T,GAAc,GAAGxP,OAC1BwP,GAAgB,GAIhBrU,EAAa,EAAIqU,GACc,eAA/B/T,EAAON,GAAY,GAAG6E,OAEtB7E,GAAc,GAIiB,uBAA/BM,EAAON,GAAY,GAAG6E,OACrBwP,IAAiBrU,EAAa,GAC5BA,EAAa,EAAIqU,GACmB,eAAnC/T,EAAON,EAAa,GAAG,GAAG6E,QAE9B7E,GAAcqU,EAAe,IAAMrU,EAAa,EAAI,GAGlDA,EAAaqU,IACfzU,EAAU,CACRiF,KAAM,iBACNN,MAAOjE,EAAO+T,GAAc,GAAG9P,MAC/ByC,IAAK1G,EAAON,GAAY,GAAGgH,KAE7B5C,EAAO,CACLS,KAAM,YACNN,MAAOjE,EAAO+T,GAAc,GAAG9P,MAC/ByC,IAAK1G,EAAON,GAAY,GAAGgH,IAC3BlH,YAAa,QAEfsK,EAAc9J,EAAQ+T,EAAcrU,EAAaqU,EAAe,EAAG,CACjE,CAAC,QAASzU,EAASgL,GACnB,CAAC,QAASxG,EAAMwG,GAChB,CAAC,OAAQxG,EAAMwG,GACf,CAAC,OAAQhL,EAASgL,MAItB,OAAOtK,IAoET1E,EAAOD,QAAUuY,G,kCC9HjB,IAAI3G,EAAS,GAAGA,OAEhB3R,EAAOD,QAAU4R,G,kCCFjB,IAEI+G,EAFaxW,EAAQ,OAED8I,CAAW,MAEnChL,EAAOD,QAAU2Y,G,kCCJjB,IAAItS,EAAQlE,EAAQ,QAEhByW,EAAUzW,EAAQ,QAElB0W,EAAQ1W,EAAQ,QAEhB2W,EAAY3W,EAAQ,QAEpB4W,EAAkB5W,EAAQ,QAE1B6W,EAAY7W,EAAQ,QAEpB8W,EAAe9W,EAAQ,QAEvB+W,EAAa/W,EAAQ,QAErBgX,EAAgBhX,EAAQ,QAExBiX,EAAiBjX,EAAQ,QAEzBkX,EAAiBlX,EAAQ,QAEzBmX,EAAmBnX,EAAQ,QAE3BoX,EAAUpX,EAAQ,QAElBqX,EAAW5Y,OAAO6Y,KAAKH,GAEvBI,EAAgB,SAAuB5S,GAEzC,IAAI6S,EAAM7S,EAAMpB,QAAUoB,EAAME,UAAY,GAE5C,GAAIF,EAAM8S,cAAgB9S,EAAM+S,gBAC9B,MAAM,IAAI3B,MAAM,sEAGlB,IAAI4B,EAAYzT,EAAMiT,EAAkBxS,EAAMgT,WAC1CC,EAAYnB,IAAUoB,IAAInB,GAAOmB,IAAIlT,EAAMmT,SAAW,IAEtDrU,EAAOmU,EAAUG,QAAQH,EAAUlB,MAAMc,IACzCQ,EAAc9T,EAAMS,EAAO,CAC7BgT,UAAWA,EACXjU,YAAauT,EAAexT,KAK9B,OAGF,SAAuCkB,GACrC,IAAIsT,EAAa,CAACjB,EAAeJ,KAC7Bc,EAAkB/S,EAAM+S,gBAExB/S,EAAM8S,eACRC,EAAkBL,EAASa,QAAO,SAAUnR,GAC1C,MAAgB,SAATA,IAAyD,IAAtCpC,EAAM8S,aAAazU,QAAQ+D,OAIzD,IAAIoR,EAAgBxT,EAAMyT,iBAAmB,SAAW,SAEpDV,GAAmBA,EAAgBpU,OAAS,GAC9C2U,EAAWhP,KAAK6N,EAAauB,OAAOX,EAAiBS,IAGnDxT,EAAM2T,WACRL,EAAWhP,KAAK6N,EAAayB,WAAW5T,EAAM2T,UAAWH,IAI3D,IAAIK,GAAc7T,EAAM+C,qBAA2C,IAArB/C,EAAMgD,cAA0BhD,EAAM6C,SAChFiR,GAAiB9T,EAAM+T,YAAc,IAAIC,MAAK,SAAUC,GAC1D,OAAOA,EAAUC,WAAazB,EAAQ7N,cAGpCiP,IAAeC,GACjBR,EAAWhP,KAAK4N,GAGdlS,EAAM+T,aACRT,EAAaA,EAAW9Q,OAAOxC,EAAM+T,aAKvC,OADAT,EAAWhP,KAAK8N,GACTkB,EA1CPa,CAA8BnU,GAAO6M,SAAQ,SAAUoH,GACrDnV,EAAOmV,EAAUnV,EAAMuU,MAElBvU,GA0CT8T,EAAcwB,aAAe,CAC3BC,iBAAkB9B,GAEpBK,EAAc0B,UAAY,CACxB7S,UAAWuQ,EAAUhO,OACrBpF,OAAQoT,EAAUhO,OAClB9D,SAAU8R,EAAUhO,OACpBuQ,UAAWvC,EAAUwC,KACrBC,aAAczC,EAAUwC,KACxBxR,WAAYgP,EAAUwC,KACtBzR,mBAAoBiP,EAAUwC,KAC9B3R,SAAUmP,EAAUwC,KACpBb,UAAW3B,EAAU0C,KACrB5B,aAAcd,EAAU2C,QAAQ3C,EAAU4C,MAAMlC,IAChDK,gBAAiBf,EAAU2C,QAAQ3C,EAAU4C,MAAMlC,IACnD2B,iBAAkBrC,EAAU6C,UAAU,CAAC7C,EAAU0C,KAAM1C,EAAUwC,OACjEM,WAAY9C,EAAU6C,UAAU,CAAC7C,EAAU0C,KAAM1C,EAAUhO,SAC3D+Q,kBAAmB/C,EAAU0C,KAC7BX,WAAY/B,EAAU2C,QAAQ3C,EAAU0C,MACxCjB,iBAAkBzB,EAAUwC,KAC5BxB,UAAWhB,EAAUlX,OACrBqY,QAASnB,EAAUgD,OAErBpC,EAAcqC,MAAQvC,EACtBE,EAAcI,UAAYR,EAC1BI,EAAcL,eAAiBA,EAC/BpZ,EAAOD,QAAU0Z,G,kCCnHjBzZ,EAAOD,QAAUgc,S,oCCAjB,IAAIrW,EAAQxD,EAAQ,QAEhByP,EAAS,GAAGA,OAYhB,SAAS8I,EAAWuB,EAAO5a,GACzB,OAEA,SAAmBuE,GAEjB,OADAD,EAAMC,EAAMyU,GACLzU,GAIT,SAASyU,EAAOtU,EAAM+I,EAAOsC,GAC3B,GAAIA,IAAW6K,EAAMlW,EAAM+I,EAAOsC,GAAS,CACzC,IAAId,EAAa,CAACxB,EAAO,GAOzB,MALa,WAATzN,GAAqB0E,EAAKiB,WAC5BsJ,EAAaA,EAAWhH,OAAOvD,EAAKiB,WAGtC4K,EAAOmG,MAAM3G,EAAOpK,SAAUsJ,GACvBxB,IA5Bb9O,EAAQwa,OAAS,SAAUuB,EAAO1a,GAChC,OAAOqZ,GAEP,SAAe3U,EAAM+I,EAAOsC,GAC1B,OAAQ2K,EAAMG,SAASnW,EAAKmD,QAHL7H,IAO3BrB,EAAQ0a,WAAaA,G,kCCZrB9Z,OAAOC,eAAeb,EAAS,aAAc,CAACmB,OAAO,IAErD,IAAIgb,EAASha,EAAQ,QACjBia,EAAYja,EAAQ,QACpBka,EAAWla,EAAQ,QACnBgU,EAAahU,EAAQ,QACrBma,EAAkBna,EAAQ,QAC1BQ,EAAqBR,EAAQ,QAC7Boa,EAAapa,EAAQ,QACrBqa,EAAera,EAAQ,QACvBkP,EAAWlP,EAAQ,QACnBiH,EAAajH,EAAQ,QACrBsa,EAAkBta,EAAQ,QAC1BoW,EAAapW,EAAQ,QACrBua,EAAWva,EAAQ,QACnBwa,EAAWxa,EAAQ,QACnBya,EAAWza,EAAQ,QACnB0a,EAAkB1a,EAAQ,QAC1B2a,EAAiB3a,EAAQ,QACzB4a,EAAa5a,EAAQ,QACrBkF,EAAgBlF,EAAQ,QACxBuG,EAAOvG,EAAQ,QACf6a,EAAkB7a,EAAQ,QAE1BqI,EAAW,CACbyS,GAAIvU,EAEJwU,GAAIxU,EAEJyU,GAAIzU,EAEJ0U,GAAI1U,EAEJ2U,GAAI3U,EAEJ4U,GAAI5U,EAEJ6U,GAAI7U,EAEJ8U,GAAI9U,EAEJ+U,GAAI/U,EAEJgV,GAAIhV,EAEJiV,GAAIjV,EAEJkV,GAAIlV,EAEJmV,GAAInV,EAEJoV,GAAI3H,GAEF4H,EAAiB,CACnBC,GAAI5U,GAEF6U,EAAc,CAChB,KAAMzB,EAEN,KAAMA,EAEN0B,GAAI1B,GAEFnX,EAAO,CACT8Y,GAAI5F,EAEJ0E,GAAI5V,EAEJ8V,GAAI,CAACH,EAAiB3V,GAEtB+W,GAAI1B,EAEJ2B,GAAIrB,EAEJsB,GAAIjX,EAEJkX,GAAIhC,EAEJiC,IAAKjC,GAEHzR,EAAS,CACX2T,GAAI9b,EAEJ+b,GAAIpC,GAEF7T,EAAO,CACT,KAAMsU,EAEN,KAAMA,EAEN,KAAMA,EAEN4B,GAAI9B,EAEJ4B,GAAI9b,EAEJsa,GAAIb,EAEJgC,GAAI,CAAC/B,EAAUM,GAEfqB,GAAIlB,EAEJ4B,GAAI,CAACjC,EAAiBH,GAEtBsC,GAAIhC,EAEJ0B,GAAIlC,EAEJmC,GAAIlN,GAEFwN,EAAa,CACf3Z,KAAM,CAACkX,EAAWD,EAAO2C,WAM3B9e,EAAQ+d,eAAiBA,EACzB/d,EAAQiF,QALM,CACZC,KAAM,IAKRlF,EAAQwK,SAAWA,EACnBxK,EAAQqF,KAAOA,EACfrF,EAAQie,YAAcA,EACtBje,EAAQ6e,WAAaA,EACrB7e,EAAQ8K,OAASA,EACjB9K,EAAQyI,KAAOA,G,kCCrHf,IAAIsW,EAAuB5c,EAAQ,QAEnC,SAAS6c,KACT,SAASC,KACTA,EAAuBC,kBAAoBF,EAE3C/e,EAAOD,QAAU,WACf,SAASmf,EAAKrY,EAAOsY,EAAUC,EAAeC,EAAUC,EAAcC,GACpE,GAAIA,IAAWT,EAAf,CAIA,IAAIU,EAAM,IAAIvH,MACZ,mLAKF,MADAuH,EAAIhf,KAAO,sBACLgf,GAGR,SAASC,IACP,OAAOP,EAFTA,EAAKQ,WAAaR,EAMlB,IAAIS,EAAiB,CACnB9D,MAAOqD,EACP7D,KAAM6D,EACN3D,KAAM2D,EACNU,OAAQV,EACRvd,OAAQud,EACRrU,OAAQqU,EACRW,OAAQX,EAERY,IAAKZ,EACL1D,QAASiE,EACTpV,QAAS6U,EACTa,YAAab,EACbc,WAAYP,EACZ3Z,KAAMoZ,EACNe,SAAUR,EACVhE,MAAOgE,EACP/D,UAAW+D,EACXS,MAAOT,EACPU,MAAOV,EAEPW,eAAgBpB,EAChBC,kBAAmBF,GAKrB,OAFAY,EAAe9G,UAAY8G,EAEpBA,I,kCC5DT,IAAIjP,EAAexO,EAAQ,QAU3BlC,EAAOD,QARP,SAAoBsgB,GAClB,OAEA,SAAejd,GACb,OAAOid,EAAMrd,KAAK0N,EAAatN,O,kCCDnC,SAASwF,EAAS9C,GAChB,OACGA,IACEA,EAAK5E,OACJ4E,EAAKwa,KACLxa,EAAKK,OACJ,aAAcL,GAAQya,EAAIza,EAAKiB,WAC/B,WAAYjB,GAAQya,EAAIza,KAC7B,GAIJ,SAASya,EAAIC,GAIX,IAHA,IAAI/M,EAAS,GACT5E,GAAS,IAEJA,EAAQ2R,EAAOhb,QACtBiO,EAAO5E,GAASjG,EAAS4X,EAAO3R,IAGlC,OAAO4E,EAAOE,KAAK,IAzBrB3T,EAAOD,QAAU6I,G,kCCAjB,IAAIhF,EAAqB1B,EAAQ,QAC7BmJ,EAAgBnJ,EAAQ,QACxB2B,EAAe3B,EAAQ,QA2B3BlC,EAAOD,QAzBP,SAA2B6C,EAASC,GAClC,IAAI4d,EACJ,OAEA,SAAS9X,EAAMvF,GACb,GAAIQ,EAAmBR,GAKrB,OAJAR,EAAQS,MAAM,cACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,cACbkd,GAAO,EACA9X,EAGT,GAAI0C,EAAcjI,GAChB,OAAOS,EACLjB,EACA+F,EACA8X,EAAO,aAAe,aAHjB5c,CAILT,GAGJ,OAAOP,EAAGO,M,4ZCxBVsd,EAGAC,EAsBAC,E,YAZAC,EAAc,EAGdC,EAAoB,GAEpBC,EAAgBrW,cAChBsW,EAAkBtW,cAClBuW,EAAevW,UAAQwW,OACvBC,EAAYzW,cACZ0W,EAAmB1W,UAAQ2W,QAwE/B,SAASC,EAAazS,EAAO5F,GACxByB,eACHA,cAAciW,EAAkB9R,EAAOgS,GAAe5X,GAEvD4X,EAAc,MAORU,EACLZ,QACCA,MAA2B,IACpB,OACU,YAGf9R,GAAS0S,KAAY/b,QACxB+b,KAAYpW,KAAK,IAEXoW,KAAY1S,GAMb,SAAS2S,EAASC,UACxBZ,EAAc,EACPa,EAAWC,EAAgBF,GASnC,SAAgBC,EAAWE,EAASH,EAAcI,OAE3CC,EAAYR,EAAaZ,IAAgB,UAC/CoB,EAAUC,EAAWH,EAChBE,QACJA,KAAmB,CACjBD,EAAiDA,EAAKJ,GAA/CE,SAA0BF,GAElC,gBACOO,EAAYF,EAAUC,EAASD,KAAiB,GAAIG,GACtDH,KAAiB,KAAOE,IAC3BF,KAAmB,CAACE,EAAWF,KAAiB,IAChDA,MAAqBI,SAAS,OAKjCJ,MAAuBnB,GAGjBmB,KAOD,SAASK,EAAUzK,EAAU0K,OAE7BC,EAAQf,EAAaZ,IAAgB,IACtChW,eAAwB4X,EAAYD,MAAaD,KACrDC,KAAe3K,EACf2K,MAAcD,EAEdzB,UAAyCxV,KAAKkX,IAQzC,SAASE,EAAgB7K,EAAU0K,OAEnCC,EAAQf,EAAaZ,IAAgB,IACtChW,eAAwB4X,EAAYD,MAAaD,KACrDC,KAAe3K,EACf2K,MAAcD,EAEdzB,MAAkCxV,KAAKkX,IAIlC,SAASG,EAAOC,UACtB5B,EAAc,EACP6B,GAAQ,iBAAO,CAAEC,QAASF,KAAiB,IAQnD,SAAgBG,EAAoBC,EAAKC,EAAcV,GACtDvB,EAAc,EACd0B,GACC,WACmB,mBAAPM,EAAmBA,EAAIC,KACzBD,IAAKA,EAAIF,QAAUG,OAErB,MAARV,EAAeA,EAAOA,EAAK/Y,OAAOwZ,IAQ7B,SAASH,EAAQK,EAASX,OAE1BC,EAAQf,EAAaZ,IAAgB,UACvC4B,EAAYD,MAAaD,KAC5BC,KAAeU,IACfV,MAAcD,EACdC,MAAiBU,GAGXV,KAOD,SAASW,EAAYtL,EAAU0K,UACrCvB,EAAc,EACP6B,GAAQ,kBAAMhL,IAAU0K,GAMzB,SAASa,EAAWjU,OACpBkU,EAAWvC,EAAiB3R,QAAQA,OAIpCqT,EAAQf,EAAaZ,IAAgB,UAI3C2B,MAAiBrT,EACZkU,GAEe,MAAhBb,OACHA,QACAa,EAASC,IAAIxC,IAEPuC,EAASrc,MAAM3F,OANA8N,KAahB,SAASoU,EAAcliB,EAAOmiB,GAChC3Y,UAAQ0Y,eACX1Y,UAAQ0Y,cAAcC,EAAYA,EAAUniB,GAASA,GAIhD,SAASoiB,EAAiBC,OAC1BlB,EAAQf,EAAaZ,IAAgB,IACrC8C,EAAWhC,WACjBa,KAAekB,EACV5C,EAAiB8C,oBACrB9C,EAAiB8C,kBAAoB,YAChCpB,MAAcA,KAAa7C,GAC/BgE,EAAS,GAAGhE,KAGP,CACNgE,EAAS,GACT,WACCA,EAAS,aAQZ,SAASE,IACR5C,EAAkBpN,SAAQ,eACrBiQ,UAEFA,UAAkCjQ,QAAQkQ,GAC1CD,UAAkCjQ,QAAQmQ,GAC1CF,UAAoC,GACnC,MAAOphB,GACRohB,UAAoC,GACpCjZ,cAAoBnI,EAAGohB,WAI1B7C,EAAoB,GA9QrBpW,cAAgB,YACfiW,EAAmB,KACfI,GAAeA,EAAc+C,IAGlCpZ,cAAkB,YACbsW,GAAiBA,EAAgB8C,GAGrCpD,EAAe,MAETa,GAHNZ,EAAmBmD,WAIfvC,IACHA,MAAsB7N,QAAQkQ,GAC9BrC,MAAsB7N,QAAQmQ,GAC9BtC,MAAwB,KAI1B7W,UAAQwW,OAAS,YACZD,GAAcA,EAAa6C,OAEzBxjB,EAAIwjB,MACNxjB,GAAKA,OAAaA,UAA0BkF,SA4RzB,IA3RXsb,EAAkB3V,KAAK7K,IA2RPsgB,IAAYlW,UAAQqZ,yBAC/CnD,EAAUlW,UAAQqZ,wBAvBpB,SAAwBrM,OAQnBsM,EAPEnM,EAAO,WACZoM,aAAaC,GACTC,GAASC,qBAAqBJ,GAClCK,WAAW3M,IAENwM,EAAUG,WAAWxM,EAtSR,KAySfsM,IACHH,EAAMD,sBAAsBlM,MAcA6L,IA3R7B/C,UAGDjW,cAAkB,SAACoZ,EAAOQ,GACzBA,EAAYzJ,MAAK,gBAEf8I,MAA2BjQ,QAAQkQ,GACnCD,MAA6BA,MAA2BvJ,QAAO,mBAC9DmJ,MAAYM,EAAaN,MAEzB,MAAOhhB,GACR+hB,EAAYzJ,MAAK,YACZva,QAAoBA,MAAqB,OAE9CgkB,EAAc,GACd5Z,cAAoBnI,EAAGohB,WAIrBxC,GAAWA,EAAU2C,EAAOQ,IAGjC5Z,UAAQ2W,QAAU,YACbD,GAAkBA,EAAiB0C,OAEjCxjB,EAAIwjB,SACNxjB,GAAKA,UAEPA,SAAgBoT,QAAQkQ,GACvB,MAAOrhB,GACRmI,cAAoBnI,EAAGjC,SAyN1B,IAAI6jB,EAA0C,mBAAzBJ,sBA2CrB,SAASH,EAAcW,OAGhBC,EAAO7D,EACe,mBAAjB4D,OAA6BA,QACxC5D,EAAmB6D,EAOpB,SAASX,EAAaU,OAGfC,EAAO7D,EACb4D,MAAgBA,OAChB5D,EAAmB6D,EAOpB,SAASlC,EAAYmC,EAASC,UAE3BD,GACDA,EAAQjf,SAAWkf,EAAQlf,QAC3Bkf,EAAQ7J,MAAK,SAAC8J,EAAK9V,UAAU8V,IAAQF,EAAQ5V,MAI/C,SAAS8S,EAAegD,EAAK/Y,SACT,mBAALA,EAAkBA,EAAE+Y,GAAO/Y,I,kHChW3BgZ,EAtBA,SAAC,GAAD,IAAEC,EAAF,EAAEA,SAAUC,EAAZ,EAAYA,YAAZ,OACb,2BACE,mCACA,uJAKA,wBACEC,MAAQ/c,IAAMgd,SACdC,YAAY,gDACZC,QAAU,gBAAE5f,EAAF,EAAEA,OAAF,OAAcwf,EAAYxf,EAAOpE,SACvC2jB,GAGN,uBACE,YAAC,OAAD,CAAM5e,KAAK,YAAX,c,iCCZAkf,EAAO,SAAAC,GAAC,OAAI,MACZC,EAAQ,SAAAD,GAAC,OAAIA,GAEbE,EAAkB,SAAAthB,GAAO,OAC7B,0BAAQ,uBACN,sBACE,sBAAI,YAAC,OAAD,CAAMiC,KAAK,KAAX,SAGJ,sBAAI,YAAC,OAAD,CAAMA,KAAI,MAASjC,GAAnB,gBAgCKuhB,EA1BF,SAAC,GAAiC,IAAhCnkB,EAAgC,EAAhCA,KAAMokB,EAA0B,EAA1BA,QAASV,EAAiB,EAAjBA,YAAiB,EACN,CACrCW,QAAS,CAACH,EAAiBD,EAAOK,iCAClCC,KAAM,CAACR,EAAMS,oCAAQP,IACrBjkB,GAHKykB,EADsC,KAC5BC,EAD4B,KAClBC,EADkB,KAMvClB,EAAWiB,EAASN,GACpBQ,EAAUD,EAASP,GAIzB,OAFAV,EAAYD,GAEJ,2BACFgB,EAASG,GAEX,2BACE,YAAC,IAAD,KACInB,IAIN,YAAC,OAAD,CAAM5e,KAAK,KAAX,e,mOCZSggB,UAtBH,WAAM,MACgBzE,YAAS,IAAlCqD,EADS,KACCC,EADD,KAGhB,OAAQ,wBACN,YAAC,SAAD,KACE,YAAC,EAAD,GACEoB,KAAK,cACLrB,SAAWA,GACN,CAACC,iBACR,YAAC,EAAD,GACEoB,KAAK,sBACL9kB,KAAK,UACLokB,QAAUX,GACL,CAACC,iBACR,YAAC,EAAD,GACEoB,KAAK,wBACL9kB,KAAK,QACA,CAAC0jB,qB,kCCzBd,IAAIzM,EAA4BnW,EAAQ,QACpCikB,EAAqBjkB,EAAQ,QAC7BwW,EAAoBxW,EAAQ,QAoBhClC,EAAOD,QAdP,SAA2BqD,GACzB,OACW,OAATA,GACAiV,EAA0BjV,IAC1BsV,EAAkBtV,GAEX,EAGL+iB,EAAmB/iB,GACd,OADT,I,kCCjBFpD,EAAOD,QAAUmC,EAAQ,S,kCCAzB,IAAIC,EAAoBD,EAAQ,QAC5BmM,EAAanM,EAAQ,QACrBoV,EAAapV,EAAQ,QACrBkkB,EAAelkB,EAAQ,QAEvBka,EAAW,CACb5b,KAAM,WACNmC,SAGF,SAA0BC,EAASC,EAAIC,GACrC,IAAIK,EAAO,EACX,OAEA,SAAeC,GAMb,OALAR,EAAQS,MAAM,YACdT,EAAQS,MAAM,kBACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,kBACbX,EAAQS,MAAM,oBACPG,GAGT,SAASA,EAAKJ,GACZ,OAAIiL,EAAWjL,IACbR,EAAQU,QAAQF,GACTijB,GAGF/O,EAAWlU,GAAQkjB,EAAWljB,GAAQN,EAAIM,GAGnD,SAASijB,EAAmBjjB,GAC1B,OAAgB,KAATA,GAAwB,KAATA,GAAwB,KAATA,GAAejB,EAAkBiB,GAClEmjB,EAAyBnjB,GACzBkjB,EAAWljB,GAGjB,SAASmjB,EAAyBnjB,GAChC,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACTojB,IAIG,KAATpjB,GAAwB,KAATA,GAAwB,KAATA,GAAejB,EAAkBiB,KAChED,IAAS,IAETP,EAAQU,QAAQF,GACTmjB,GAGFD,EAAWljB,GAGpB,SAASojB,EAAUpjB,GACjB,OAAa,KAATA,GACFR,EAAQW,KAAK,oBACN6H,EAAIhI,IAGA,KAATA,GAAwB,KAATA,GAAegjB,EAAahjB,GACtCN,EAAIM,IAGbR,EAAQU,QAAQF,GACTojB,GAGT,SAASF,EAAWljB,GAClB,OAAa,KAATA,GACFR,EAAQU,QAAQF,GAChBD,EAAO,EACAsjB,GAGLnP,EAAWlU,IACbR,EAAQU,QAAQF,GACTkjB,GAGFxjB,EAAIM,GAGb,SAASqjB,EAAiBrjB,GACxB,OAAOjB,EAAkBiB,GAAQsjB,EAAWtjB,GAAQN,EAAIM,GAG1D,SAASsjB,EAAWtjB,GAClB,OAAa,KAATA,GACFR,EAAQU,QAAQF,GAChBD,EAAO,EACAsjB,GAGI,KAATrjB,GAEFR,EAAQW,KAAK,oBAAoB0F,KAAO,gBACjCmC,EAAIhI,IAGNujB,EAAWvjB,GAGpB,SAASujB,EAAWvjB,GAClB,OAAc,KAATA,GAAejB,EAAkBiB,KAAUD,IAAS,IACvDP,EAAQU,QAAQF,GACA,KAATA,EAAcujB,EAAaD,GAG7B5jB,EAAIM,GAGb,SAASgI,EAAIhI,GAKX,OAJAR,EAAQS,MAAM,kBACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,kBACbX,EAAQW,KAAK,YACNV,KAIX7C,EAAOD,QAAUqc,G,kCC1HjBzb,OAAOC,eAAeb,EAAS,aAAc,CAACmB,OAAO,IAErD,IAAIqN,EAASrM,EAAQ,QACjBuM,EAAUvM,EAAQ,QAElBsG,EAAOoe,EAAkB,QACzB/b,EAAS+b,EAAkB,UAC3B/H,EAAW,CACbgI,WAAYC,KAGd,SAASF,EAAkBG,GACzB,MAAO,CACLpkB,SAMF,SAAwBC,GACtB,IAAIK,EAAOC,KACP6B,EAAa7B,KAAK4B,OAAOC,WAAWgiB,GACpCve,EAAO5F,EAAQ0T,QAAQvR,EAAY4D,EAAOqe,GAC9C,OAAOre,EAEP,SAASA,EAAMvF,GACb,OAAO+U,EAAQ/U,GAAQoF,EAAKpF,GAAQ4jB,EAAQ5jB,GAG9C,SAAS4jB,EAAQ5jB,GACf,GAAa,OAATA,EAOJ,OAFAR,EAAQS,MAAM,QACdT,EAAQU,QAAQF,GACTe,EANLvB,EAAQU,QAAQF,GASpB,SAASe,EAAKf,GACZ,OAAI+U,EAAQ/U,IACVR,EAAQW,KAAK,QACNiF,EAAKpF,KAGdR,EAAQU,QAAQF,GACTe,GAGT,SAASgU,EAAQ/U,GACf,IAAIqF,EAAO1D,EAAW3B,GAClByL,GAAS,EAEb,GAAa,OAATzL,EACF,OAAO,EAGT,GAAIqF,EACF,OAASoG,EAAQpG,EAAKjD,QACpB,IACGiD,EAAKoG,GAAO5K,UACbwE,EAAKoG,GAAO5K,SAAS7D,KAAK6C,EAAMA,EAAKgB,UAErC,OAAO,IAlDf4iB,WAAYC,EACA,SAAVC,EAAmBE,OAAyBphB,IAyDlD,SAASihB,EAAeI,GACtB,OAEA,SAAwBxiB,EAAQsK,GAC9B,IACI3L,EADAwL,GAAS,EAIb,OAASA,GAASnK,EAAOc,aACTK,IAAVxC,EACEqB,EAAOmK,IAAoC,SAA1BnK,EAAOmK,GAAO,GAAG5F,OACpC5F,EAAQwL,EACRA,KAEQnK,EAAOmK,IAAoC,SAA1BnK,EAAOmK,GAAO,GAAG5F,OAExC4F,IAAUxL,EAAQ,IACpBqB,EAAOrB,GAAO,GAAG+H,IAAM1G,EAAOmK,EAAQ,GAAG,GAAGzD,IAC5C1G,EAAOiN,OAAOtO,EAAQ,EAAGwL,EAAQxL,EAAQ,GACzCwL,EAAQxL,EAAQ,GAGlBA,OAAQwC,GAIZ,OAAOqhB,EAAgBA,EAAcxiB,EAAQsK,GAAWtK,GAU5D,SAASuiB,EAAuBviB,EAAQsK,GAWtC,IAVA,IACIuH,EACApS,EACAgjB,EACAtY,EACAuY,EACAjkB,EACAkkB,EACA3jB,EARAiL,GAAc,IAUTA,GAAcjK,EAAOc,QAC5B,IACGmJ,IAAejK,EAAOc,QACU,eAA/Bd,EAAOiK,GAAY,GAAG1F,OACW,SAAnCvE,EAAOiK,EAAa,GAAG,GAAG1F,KAC1B,CAQA,IAPA9E,EAAOO,EAAOiK,EAAa,GAAG,GAE9BE,GADA0H,EAASvH,EAAQQ,YAAYrL,IACdqB,OACf4hB,GAAe,EACfjkB,EAAO,EACPkkB,OAAOxhB,EAEAgJ,KAGL,GAAqB,iBAFrBsY,EAAQ5Q,EAAO1H,IAEgB,CAG7B,IAFAuY,EAAcD,EAAM3hB,OAEyB,KAAtC2hB,EAAMrU,WAAWsU,EAAc,IACpCjkB,IACAikB,IAGF,GAAIA,EAAa,MACjBA,GAAe,OAEZ,IAAe,IAAXD,EACPE,GAAO,EACPlkB,SACK,IAAe,IAAXgkB,EACN,CAEHtY,IACA,MAIA1L,IACFO,EAAQ,CACNuF,KACE0F,IAAejK,EAAOc,QAAU6hB,GAAQlkB,EAAO,EAC3C,aACA,oBACNwF,MAAO,CACLkH,KAAM1L,EAAKiH,IAAIyE,KACfyX,OAAQnjB,EAAKiH,IAAIkc,OAASnkB,EAC1BokB,OAAQpjB,EAAKiH,IAAImc,OAASpkB,EAC1BuT,OAAQvS,EAAKwE,MAAM+N,OAAS7H,EAC5B+H,aAAc/H,EACVuY,EACAjjB,EAAKwE,MAAMiO,aAAewQ,GAEhChc,IAAKqD,EAAQtK,EAAKiH,MAEpBjH,EAAKiH,IAAMqD,EAAQ/K,EAAMiF,OAErBxE,EAAKwE,MAAM4e,SAAWpjB,EAAKiH,IAAImc,OACjChZ,EAAOpK,EAAMT,IAEbgB,EAAOiN,OACLhD,EACA,EACA,CAAC,QAASjL,EAAOsL,GACjB,CAAC,OAAQtL,EAAOsL,IAElBL,GAAc,IAIlBA,IAIJ,OAAOjK,EAGT3E,EAAQ8e,SAAWA,EACnB9e,EAAQ8K,OAASA,EACjB9K,EAAQyI,KAAOA,G,qBCvLbxI,EAAOD,QAAUmC,EAAQ,OAARA,I,kCCAnBlC,EAAOD,QAfP,SAA6BmB,GAC3B,OACEA,EACG4S,QAAQ,cAAe,KACvBA,QAAQ,SAAU,IAMlBuD,cACArR,gB,kCCXPrF,OAAOC,eAAeb,EAAS,aAAc,CAACmB,OAAO,IAErD,IAAI2C,EAAe3B,EAAQ,QACvBoM,EAAmBpM,EAAQ,QAC3B8B,EAAU9B,EAAQ,QAElBS,EAEJ,SAAwBC,GACtB,IAAIK,EAAOC,KACPskB,EAAU5kB,EAAQ0T,QAEpBhI,GAkBF,SAAuBlL,GACrB,GAAa,OAATA,EAEF,YADAR,EAAQU,QAAQF,GAQlB,OAJAR,EAAQS,MAAM,mBACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,mBACbN,EAAKwkB,sBAAmB5hB,EACjB2hB,IA1BP5kB,EAAQ0T,QACNpT,KAAK4B,OAAOC,WAAWiZ,YACvB0J,EACA7jB,EACEjB,EACAA,EAAQ0T,QACNpT,KAAK4B,OAAOC,WAAWK,KACvBsiB,EACA9kB,EAAQ0T,QAAQtS,EAAS0jB,IAE3B,gBAIN,OAAOF,EAeP,SAASE,EAAetkB,GACtB,GAAa,OAATA,EASJ,OAJAR,EAAQS,MAAM,cACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,cACbN,EAAKwkB,sBAAmB5hB,EACjB2hB,EARL5kB,EAAQU,QAAQF,KAYtBrD,EAAQ4C,SAAWA,G,oCCxCnB3C,EAAOD,QAjBP,SAAoBgF,EAAYL,EAAQsK,GAKtC,IAJA,IAEIvK,EAFAkjB,EAAS,GACT9Y,GAAS,IAGJA,EAAQ9J,EAAWS,SAC1Bf,EAAUM,EAAW8J,GAAOgY,aAEbc,EAAOziB,QAAQT,GAAW,IACvCC,EAASD,EAAQC,EAAQsK,GACzB2Y,EAAOxc,KAAK1G,IAIhB,OAAOC,I,kCCdT,IAEImY,EAAiB,CACnBrc,KAAM,iBACNmC,SAIF,SAAgCC,EAASC,EAAIC,GAC3C,IAAIG,EAAOC,KACX,OAEA,SAAeE,GAMb,OALAR,EAAQS,MAAM,aACdT,EAAQS,MAAM,eACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,eACbX,EAAQW,KAAK,aACN6S,GAGT,SAASA,EAAMhT,GAEb,OAAgB,KAATA,GAEL,2BAA4BH,EAAK6B,OAAOC,WAEtCjC,EAAIM,GACJP,EAAGO,KAvBTyjB,WALa3kB,EAAQ,QAKA2kB,YA2BvB7mB,EAAOD,QAAU8c,G,kCChCjB,IAAIxW,EAAQnE,EAAQ,QAEhBkE,EAAQlE,EAAQ,QAEhB0lB,EAAU1lB,EAAQ,QAEtB,SAAS+W,EAAWnT,EAAM4E,GACxB,IAAIyG,EAAS5L,UAAUC,OAAS,QAAsBK,IAAjBN,UAAU,GAAmBA,UAAU,GAAK,GAC7EsJ,EAAQtJ,UAAUC,OAAS,QAAsBK,IAAjBN,UAAU,GAAmBA,UAAU,GAAK,EAC5EsiB,EAAWnd,EAAQmP,UAAU/T,EAAKmD,MAGjCnD,EAAKoF,WACRpF,EAAKoF,SAAW,CACdvC,MAAO,CACLkH,KAAM,KACNyX,OAAQ,KACRC,OAAQ,MAEVnc,IAAK,CACHyE,KAAM,KACNyX,OAAQ,KACRC,OAAQ,QAKd,IAAIO,EAAMhiB,EAAKoF,SAASvC,MACpBnH,EAAM,CAACsE,EAAKmD,KAAM6e,EAAIjY,KAAMiY,EAAIR,OAAQzY,GAAO8E,KAAK,KAExD,IAAKiU,EAAQzZ,mBAAmB0Z,GAC9B,MAAM,IAAI5P,MAAM,sBAAsB5O,OAAOvD,EAAKmD,KAAM,uCAG1D,IAAIc,EAAYge,EAAajiB,EAAMtE,EAAKkJ,EAASmd,EAAU1W,EAAQtC,GACnE,OAAOxI,EAAMK,cAAcmhB,EAAU9d,EAAWA,EAAUhD,UAAYihB,UAAqBniB,GAE3F,SAASmiB,IACP,OAAOliB,EAAKiB,UAAYjB,EAAKiB,SAASkhB,KAAI,SAAUC,EAAWjoB,GAC7D,OAAOgZ,EAAWiP,EAAWxd,EAAS,CACpC5E,KAAMA,EACNe,MAAOkD,GACN9J,OAMT,SAAS8nB,EAAajiB,EAAMtE,EAAK2mB,EAAMN,EAAU1W,EAAQtC,GACvD,IA0MuBiZ,EA1MnBjhB,EAAQ,CACVrF,IAAKA,GAEH4mB,EAAuC,iBAAbP,GAAyBA,IAAaxhB,EAAMkC,SAEtE4f,EAAK/M,WAAatV,EAAKoF,WACzBrE,EAAM,kBAqMD,EADgBihB,EApMqBhiB,EAAKoF,UAqMrCvC,MAAMkH,KAAM,IAAKiY,EAAInf,MAAM2e,OAAQ,IAAKQ,EAAI1c,IAAIyE,KAAM,IAAKiY,EAAI1c,IAAIkc,QAAQW,IAAIpW,QAAQ8B,KAAK,KAlMpGwU,EAAK7M,eAAiB8M,IACxBvhB,EAAMwhB,eAAiBviB,EAAKoF,UAI1Bid,EAAKG,kBAAoBnX,EAAOrL,MAAQqL,EAAOrL,KAAKiB,WAAaqhB,IACnEvhB,EAAMgI,MAAQsC,EAAOrL,KAAKiB,SAAS7B,QAAQY,GAC3Ce,EAAM0hB,iBAAmBpX,EAAOrL,KAAKiB,SAASvB,QAGhD,IAAIqd,EAA0B,OAApB/c,EAAKC,iBAA2CF,IAApBC,EAAKC,WAE3CoiB,EAAKviB,YAAYE,EAAKC,WAAWC,gBAAkB,GAAK,KAExD,OAAQF,EAAKmD,MACX,IAAK,OACHuf,EAAc3hB,EAAO,CACnByB,UAAW6f,EAAK7f,YAElB,MAEF,IAAK,OACHzB,EAAM4hB,QAAUjnB,EAChBqF,EAAME,SAAWjB,EAAK5E,MACtB,MAEF,IAAK,UACH2F,EAAMyC,MAAQxD,EAAK4iB,MACnB,MAEF,IAAK,OACH7hB,EAAM8B,MAAQ7C,EAAK6C,MACnB9B,EAAMgC,QAAU/C,EAAK+C,QACrBhC,EAAM8hB,OAAS7iB,EAAK6iB,OACpB9hB,EAAM6hB,MAAQ5iB,EAAK4iB,MACnB,MAEF,IAAK,WACH7hB,EAAMmC,QAAUlD,EAAKkD,QACrBnC,EAAM8hB,OAAS7iB,EAAK6iB,OACpB9hB,EAAMgC,QAAU/C,EAAK+C,QACrBhC,EAAMgI,MAAQ/I,EAAK+I,MACnBhI,EAAME,SA2JZ,SAA6BjB,EAAMqL,GAGjC,OADYA,GAAUA,EAAOrL,KAU/B,SAAmBA,GACjB,IAAIiB,EAAWjB,EAAKiB,SAChB6hB,EAAQ9iB,EAAK6iB,OACb9Z,GAAS,EAEb,MAAQ+Z,KAAW/Z,EAAQ9H,EAASvB,QAClCojB,EAAQC,EAAc9hB,EAAS8H,IAGjC,OAAO+Z,EAnB6BE,CAAU3X,EAAOrL,MAAQ+iB,EAAc/iB,IAC5DA,EAAKiB,SAGtB,SAA0BjB,GACxB,OAAOA,EAAKiB,SAASgiB,QAAO,SAAUlN,EAAOmN,GAC3C,OAAOnN,EAAMxS,OAAsB,cAAf2f,EAAM/f,KAAuB+f,EAAMjiB,SAAW,CAACiiB,MAClE,IAN4BC,CAAiBnjB,GA9J3BojB,CAAoBpjB,EAAMqL,GAAQ8W,KAAI,SAAUC,EAAWjoB,GAC1E,OAAOgZ,EAAWiP,EAAWC,EAAM,CACjCriB,KAAMA,EACNe,MAAOA,GACN5G,MAEL,MAEF,IAAK,aACHuoB,EAAc3hB,EAAO,CACnBd,WAAYD,EAAKC,WACjBI,MAAOL,EAAKK,MACZD,IAAKJ,EAAKI,MAEZ,MAEF,IAAK,OACHsiB,EAAc3hB,EAAO,CACnB2C,SAAU1D,EAAKqjB,MAAQrjB,EAAKqjB,KAAKC,MAAM,KAAM,GAAG,KAElD,MAEF,IAAK,aACHviB,EAAME,SAAWjB,EAAK5E,MACtB2F,EAAMwiB,QAAS,EACf,MAEF,IAAK,OACHb,EAAc3hB,EAAO,CACnBV,MAAOL,EAAKK,YAASN,EACrBP,OAAmC,mBAApB6iB,EAAKxM,WAA4BwM,EAAKxM,WAAW7V,EAAKI,IAAKJ,EAAKiB,SAAUjB,EAAKK,OAASgiB,EAAKxM,WAC5G1V,KAAMkiB,EAAKjN,iBAAmBiN,EAAKjN,iBAAiBpV,EAAKI,IAAKJ,EAAKiB,SAAUjB,EAAKK,OAASL,EAAKI,MAElG,MAEF,IAAK,QACHsiB,EAAc3hB,EAAO,CACnB6S,IAAKyO,EAAKvM,kBAAoBuM,EAAKvM,kBAAkB9V,EAAKI,IAAKJ,EAAKiB,SAAUjB,EAAKK,MAAOL,EAAKwa,KAAOxa,EAAKI,IAC3Goa,IAAKxa,EAAKwa,KAAO,GACjBna,MAAOL,EAAKK,YAASN,IAEvB,MAEF,IAAK,gBACH2iB,EAAc3hB,EAAOT,EAAMyc,EAAK,CAC9B5c,KAAMkiB,EAAKjN,iBAAmBiN,EAAKjN,iBAAiB2H,EAAI5c,MAAQ4c,EAAI5c,QAEtE,MAEF,IAAK,iBACHuiB,EAAc3hB,EAAO,CACnB6S,IAAKyO,EAAKvM,mBAAqBiH,EAAI5c,KAAOkiB,EAAKvM,kBAAkBiH,EAAI5c,KAAMH,EAAKiB,SAAU8b,EAAI1c,MAAOL,EAAKwa,KAAOuC,EAAI5c,KACrHqa,IAAKxa,EAAKwa,KAAO,GACjBna,MAAO0c,EAAI1c,YAASN,IAEtB,MAEF,IAAK,QACL,IAAK,YACL,IAAK,YACHgB,EAAMyiB,gBAAkBxjB,EAAKmC,MAC7B,MAEF,IAAK,WACHpB,EAAMuB,SAAgC,cAArB+I,EAAOrL,KAAKmD,KAC7BpC,EAAMyiB,gBAAkBnY,EAAOtK,MAAMyiB,gBACrC,MAEF,IAAK,YACHd,EAAc3hB,EAAO,CACnBuB,SAAU+I,EAAOtK,MAAMuB,SACvBH,MAAOkJ,EAAOtK,MAAMyiB,gBAAgBza,KAEtC,MAEF,IAAK,cACHhI,EAAMD,IAAMd,EAAKc,IACjB,MAEF,IAAK,OAEHC,EAAMiD,QAAUhE,EAAKoF,SAASvC,MAAMkH,OAAS/J,EAAKoF,SAASE,IAAIyE,KAC/DhJ,EAAM+C,mBAAqBue,EAAKve,mBAChC/C,EAAMgD,WAAase,EAAKte,WACxBhD,EAAM6C,SAAWye,EAAKze,SACtB,MAEF,IAAK,aAED,IAAI6f,EAEAzjB,EAAKiB,WACPwiB,EAAiBzjB,EAAKiB,SAASkhB,KAAI,SAAUe,EAAO/oB,GAClD,OAAOgZ,EAAW+P,EAAOb,EAAM,CAC7BriB,KAAMA,EACNe,MAAOA,GACN5G,OAIP4G,EAAM+C,mBAAqBue,EAAKve,mBAChC/C,EAAMgD,WAAase,EAAKte,WACxBhD,EAAM6C,SAAWye,EAAKze,SACtB7C,EAAMwD,QAAUvE,EAAKuE,QA+B7B,SAA2BvE,EAAMyjB,GAC/B,IAAIC,EAAK1jB,EAAKuE,QAEd,GAAImJ,MAAMiW,QAAQD,GAAK,CAErB,IAAIjhB,EAAWlC,EAAMkC,UAAY,MACjC,OAAOlC,EAAMK,cAAc6B,EAAU,KAAMihB,GAG7C,GAAIA,EAAG3iB,MAAME,UAAYwiB,EAAgB,CACvC,IAAIxiB,EAAWV,EAAMqjB,SAASC,QAAQH,EAAG3iB,MAAME,UAAUsC,OAAOkgB,GAChE,OAAOljB,EAAM+D,aAAaof,EAAI,KAAMziB,GAGtC,OAAOV,EAAM+D,aAAaof,EAAI,MA7COI,CAAkB9jB,EAAMyjB,GAAkB,KACzE,MAGJ,QACEf,EAAc3hB,EAAOT,EAAMN,EAAM,CAC/BmD,UAAMpD,EACNqF,cAAUrF,EACVkB,cAAUlB,KAYhB,OARKuiB,GAAoBtiB,EAAK5E,QAC5B2F,EAAM3F,MAAQ4E,EAAK5E,OAGhBknB,IACHvhB,EAAMf,KAAOA,GAGRe,EAGT,SAAS2hB,EAAcljB,EAAQoD,GAC7B,IAAK,IAAIlH,KAAOkH,OACY,IAAfA,EAAMlH,KACf8D,EAAO9D,GAAOkH,EAAMlH,IAkD1B,SAASqnB,EAAc/iB,GACrB,IAAI6iB,EAAS7iB,EAAK6iB,OAGlB,OAAOA,QAA0C7iB,EAAKiB,SAASvB,OAAS,EAAImjB,EAG9E3oB,EAAOD,QAAUkZ,G,gVC/RX4Q,EAAQ,GAEd,SAAgB,EAAO,EAAK,GAE3B,IAAKC,IAAI,KAAK,EACb,EAAI,GAAK,EAAM,GAEhB,OAAO,EAGR,SAAgB,EAAK,EAAK,EAAO,GAChCA,IAGC,EAHG,EAAM,wBACT,EAAI,EAAI,MAAM,GACd,EAAU,GAEX,GAAI,GAAK,EAAE,GAEV,IADAA,IAAI,EAAI,EAAE,GAAG,MAAM,KACV,EAAE,EAAG,EAAE,EAAE,OAAQ,IAAK,CAC9BA,IAAI,EAAI,EAAE,GAAG,MAAM,KACnB,EAAQ,mBAAmB,EAAE,KAAO,mBAAmB,EAAE,MAAM,GAAG,KAAK,MAGzE,EAAM,EAAW,EAAI,QAAQ,EAAK,KAClC,EAAQ,EAAW,GAAS,IAE5B,IADAA,IAAI,EAAM,KAAK,IAAI,EAAI,OAAQ,EAAM,QAC5B7pB,EAAE,EAAGA,EAAE,EAAKA,IACpB,GAAI,EAAMA,IAA2B,MAArB,EAAMA,GAAG,OAAO,GAAU,CACzC6pB,IAAI,EAAQ,EAAM7pB,GAAG,QAAQ,gBAAiB,IAC7C,GAAS,EAAMA,GAAG,MAAM,YAAc4pB,GAAO,IAAM,GACnD,GAAQ,EAAM,QAAQ,KACtB,GAAQ,EAAM,QAAQ,KACtB,EAAM,EAAI5pB,IAAM,GACjB,IAAK,IAAQ,IAAS,EAAM,QAAQ,KAAK,GAAK,GAAO,CACpD,GAAM,EACN,MAGD,GADA,EAAQ,GAAS,mBAAmB,GAChC,GAAQ,EAAM,CACjB,EAAQ,GAAS,EAAI,MAAMA,GAAG,IAAI,oBAAoB,KAAK,KAC3D,YAGG,GAAI,EAAMA,KAAK,EAAIA,GAAI,CAC3B,GAAM,EACN,MAGF,QAAmB,IAAf,EAAK,UAAwB,IAAN,IACpB,EAGR,SAAgB,EAAa,EAAG,GAC/B,OACE,EAAE,KAAO,EAAE,KAAQ,EAClB,EAAE,KAAO,EAAE,MAAS,EACnB,EAAE,MAAQ,EAAE,MAKjB,SAAgB,EAAuB,EAAO,GAG7C,OAFA,EAAM,MAAQ,EACd,EAAM,KAgBP,SAAmB,GAClB,OAAO,EAAM,MAAM,QAAU,GALT,EAKkB,EAAM,MAAM,KAJ3C,EAAW,GAAM,IAAI,GAAa,KAAK,KAD/C,IAAqB,EAZP,CAAU,GAChB,EAAM,MAGd,SAAgB,EAAW,GAC1B,OAAO,EAAI,QAAQ,eAAgB,IAAI,MAAM,KAG9C,SAAgB,EAAY,GAC3B,MAA0B,KAAnB,EAAQ,OAAO,GAAW,EAAI,MAAM,QAAQ,EAAQ,OAAO,EAAQ,OAAO,KAAQ,EAAI,EdrE9F6pB,IAAI,EAAgB,KAEd,EAAU,GAEV,EAAc,GAEd,EAAQ,GAYd,SAAS,IACRA,IAAI,EAUJ,MAAO,KARN,EADG,GAAiB,EAAc,SAC5B,EAAc,SAEZ,GAAiB,EAAc,mBACjC,EAAc,qBAGI,oBAAX,SAAyB,SAAW,GAEpC,UAAY,KAAK,EAAI,QAAU,IAK9C,SAAS,EAAM,EAAK,GAWnB,Y,WAX2B,GACV,iBAAN,GAAkB,EAAI,MAChC,EAAU,EAAI,QACd,EAAM,EAAI,KAaZ,SAAkB,GACjB,IAAKA,IAAI,EAAE,EAAQ,OAAQ,KAC1B,GAAI,EAAQ,GAAG,SAAS,GAAM,OAAO,EAEtC,OAAO,EAbH,CAAS,IAjCd,SAAgB,EAAK,Q,UAAK,QACrB,GAAiB,EAAc,GAClC,EAAc,GAAM,GAEK,oBAAV,SAAyB,QAAQ,EAAK,UACrD,QAAQ,EAAK,SAAS,KAAM,KAAM,GA6BlC,CAAO,EAAK,EAAU,UAAY,QAG5B,EAAQ,GAchB,SAAS,EAAQ,GAEhB,IADAA,IAAI,GAAW,EACN,EAAE,EAAG,EAAE,EAAQ,OAAQ,KACD,IAA1B,EAAQ,GAAG,QAAQ,KACtB,GAAW,GAGb,IAAKA,IAAI7pB,EAAE,EAAY,OAAQA,KAC9B,EAAYA,GAAG,GAEhB,OAAO,EAIR,SAAS,EAAc,GAEtB,GAAK,GAAS,EAAK,aAAnB,CAEA6pB,IAAI,EAAO,EAAK,aAAa,QAC5B,EAAS,EAAK,aAAa,UAG5B,GAAK,GAAS,EAAK,MAAM,WAAY,GAAW,EAAO,MAAM,cAG7D,OAAO,EAAM,IAId,SAAS,EAAgB,GACxB,KAAI,EAAE,SAAW,EAAE,SAAW,EAAE,QAAU,EAAE,UAAuB,IAAX,EAAE,QAE1D,OADA,EAAc,EAAE,eAAiBvnB,EAAE,QAAU,MACtC,EAAQ,GAIhB,SAAS,EAAQ,GAMhB,OALI,IACC,EAAE,0BAA0B,EAAE,2BAC9B,EAAE,iBAAiB,EAAE,kBACzB,EAAE,mBAEI,EAIR,SAAS,EAAoB,GAE5B,KAAI,EAAE,SAAW,EAAE,SAAW,EAAE,QAAU,EAAE,UAAuB,IAAX,EAAE,QAA1D,CAEAunB,IAAI,EAAI,EAAE,OACV,GACC,GAAuC,MAAnC,OAAO,EAAE,UAAU,eAAuB,EAAE,aAAa,QAAS,CACrE,GAAI,EAAE,aAAa,UAAW,OAE9B,GAAI,EAAc,GACjB,OAAO,EAAQ,UAGR,EAAE,EAAE,aAIfA,IAAI,GAA4B,EAiBhC,IAAM,EAAM,YAAmB,WAClB,GACXC,EAAK,KAAC,QACF,EAAM,UACT,EAAgB,EAAM,SAGvB,KAAK,MAAQ,CACZ,IAAK,EAAM,KAAO,KAtBhB,IAE0B,mBAAnB,mBACL,GACJ,iBAAiB,YAAY,WAC5B,EAAQ,QAGV,iBAAiB,QAAS,IAE3B,GAA4B,G,4FAgB3B,EAED,kCAAqB,SAAC,GACrB,OAAmB,IAAf,EAAM,SACH,EAAM,MAAM,KAAK,MAAM,KAAO,EAAM,WAAW,KAAK,MAAM,WAIlE,qBAAQ,SAAC,GACRC,IAAM,EAAW,uBAAa,KAAK,MAAM,UACzC,OAAO,KAAK,oBAAoB,EAAU,GAAK,GAAO,OAAS,GAIhE,oBAAO,SAAC,GACP,KAAK,SAAS,CAAE,QAEhBA,IAAM,EAAW,KAAK,SAAS,GAK/B,OAFK,KAAK,UAAU,KAAK,cAElB,GAGR,+BAAkB,WACjB,EAAQ,KAAK,MACb,KAAK,UAAW,GAGjB,8BAAiB,W,WACZ,IACH,KAAK,SAAW,EAAc,QAAO,SAAC,GACrC9mB,EAAK,QAAQ,IAAG,EAAS,UAAY,KAAK,EAAS,QAAU,SAG/D,KAAK,UAAW,GAGjB,iCAAoB,WACQ,mBAAhB,KAAK,UAAuB,KAAK,WAC5C,EAAQ,OAAO,EAAQ,QAAQ,MAAO,IAGvC,gCAAmB,WAClB,KAAK,UAAW,GAGjB,+BAAkB,WACjB,KAAK,UAAW,GAGjB,gCAAmB,SAAC,EAAU,EAAK,GAClC,OAAO,EACL,OAAO,GACP,KAAK,GACL,KAAK,YACL4mB,IAAI,EAAU,EAAK,EAAK,EAAM,MAAM,KAAM,EAAM,OAChD,GAAI,EAAS,CACZ,IAAe,IAAX,EAAkB,CACrBA,IAAI,EAAW,CAAE,MAAK,WAItB,OAHA,EAAO,EAAU,UACV,EAAS,WACT,EAAS,IACT,uBAAa,EAAO,GAE5B,OAAO,MAEN,OAAO,UAGZ,mBAAM,SAAC,EAAwB,G,IAAtB,EAAQ,WAAE,EAAQ,WAAM,EAAG,MAC/B,EAAS,KAAK,oBAAoB,uBAAa,GAAW,GAAK,GAE/D,EAAU,EAAO,IAAM,KAEvB,EAAW,KAAK,YAcpB,OAbI,IAAM,IACT,KAAK,YAAc,EACG,mBAAX,GACV,EAAS,CACR,OAAQ,KACR,MACA,WACA,SACA,aAKI,G,EAtGG,CAAS,aA0Gf,EAAO,SAAC,GAAO,OACpB,wBAAc,IAAK,EAAO,CAAE,QAAS,GAAmB,KAGnD,EAAQ,YAAM,OAAG,wBAAc,EAAM,UAAW,IAEtD,EAAO,YAAc,EACrB,EAAO,cAAgB,EACvB,EAAO,MAAQ,EACf,EAAO,OAAS,EAChB,EAAO,MAAQ,EACf,EAAO,KAAO,EACd,EAAO,KAAO,E,+CelQd,IAAInY,EAASzP,EAAQ,QAmCrBlC,EAAOD,QA/BP,SAAuB0I,EAAME,EAAOshB,EAAQC,GAC1C,IAEI7Z,EAFAjF,EAAM3C,EAAKjD,OACX2kB,EAAa,EAWjB,GAPExhB,EADEA,EAAQ,GACDA,EAAQyC,EAAM,EAAIA,EAAMzC,EAEzBA,EAAQyC,EAAMA,EAAMzC,EAG9BshB,EAASA,EAAS,EAAIA,EAAS,EAE3BC,EAAM1kB,OAAS,KACjB6K,EAAamD,MAAMzI,KAAKmf,IACbla,QAAQrH,EAAOshB,GAC1BtY,EAAOmG,MAAMrP,EAAM4H,QAKnB,IAFI4Z,GAAQtY,EAAOmG,MAAMrP,EAAM,CAACE,EAAOshB,IAEhCE,EAAaD,EAAM1kB,SACxB6K,EAAa6Z,EAAMzjB,MAAM0jB,EAAYA,EAAa,MACvCna,QAAQrH,EAAO,GAC1BgJ,EAAOmG,MAAMrP,EAAM4H,GACnB8Z,GAAc,IACdxhB,GAAS,M,kCC9Bf,IAAIyhB,EAAS,cAoFbpqB,EAAOD,QAlFP,WACE,IAGIsqB,EAHA1hB,GAAQ,EACR2e,EAAS,EACTgD,EAAS,GAEb,OAEA,SAAsBppB,EAAOqpB,EAAUnf,GACrC,IACIof,EACAhmB,EACAyK,EACAwb,EACArnB,EALAmT,EAAS,GAMbrV,EAAQopB,EAASppB,EAAM0H,SAAS2hB,GAChCtb,EAAgB,EAChBqb,EAAS,GAEL3hB,IAC0B,QAAxBzH,EAAM4R,WAAW,IACnB7D,IAGFtG,OAAQ9C,GAGV,KAAOoJ,EAAgB/N,EAAMsE,QAAQ,CAMnC,GALA4kB,EAAOM,UAAYzb,EACnBub,EAAQJ,EAAOO,KAAKzpB,GACpBupB,EAAcD,EAAQA,EAAM3b,MAAQ3N,EAAMsE,OAC1CpC,EAAOlC,EAAM4R,WAAW2X,IAEnBD,EAAO,CACVF,EAASppB,EAAMuF,MAAMwI,GACrB,MAGF,GAAa,KAAT7L,GAAe6L,IAAkBwb,GAAeJ,EAClD9T,EAAOpL,MAAM,GACbkf,OAAmBxkB,OAYnB,GAVIwkB,IACF9T,EAAOpL,MAAM,GACbkf,OAAmBxkB,GAGjBoJ,EAAgBwb,IAClBlU,EAAOpL,KAAKjK,EAAMuF,MAAMwI,EAAewb,IACvCnD,GAAUmD,EAAcxb,GAGb,IAAT7L,EACFmT,EAAOpL,KAAK,OACZmc,SACK,GAAa,IAATlkB,EAIT,IAHAoB,EAA+B,EAAxBqQ,KAAK+V,KAAKtD,EAAS,GAC1B/Q,EAAOpL,MAAM,GAENmc,IAAW9iB,GAAM+R,EAAOpL,MAAM,QACnB,KAAT/H,GACTmT,EAAOpL,MAAM,GACbmc,EAAS,IAGT+C,GAAmB,EACnB/C,EAAS,GAIbrY,EAAgBwb,EAAc,EAG5Brf,IACEif,GAAkB9T,EAAOpL,MAAM,GAC/Bmf,GAAQ/T,EAAOpL,KAAKmf,GACxB/T,EAAOpL,KAAK,OAGd,OAAOoL,K,kCChFX,IAAIlL,EAAgBnJ,EAAQ,QACxB2B,EAAe3B,EAAQ,QACvBoM,EAAmBpM,EAAQ,QAC3BqV,EAAarV,EAAQ,QACrB4B,EAAa5B,EAAQ,QACrBE,EAAaF,EAAQ,QACrBkF,EAAgBlF,EAAQ,QAExBuG,EAAO,CACTjI,KAAM,OACNmC,SAeF,SAA2BC,EAASC,EAAIC,GACtC,IAAIG,EAAOC,KACP2nB,EAAc/mB,EAAWb,EAAKyB,OAAQ,cACtCvB,EAAO,EACX,OAEA,SAAeC,GACb,IAAI0nB,EACF7nB,EAAKkT,eAAelN,OACV,KAAT7F,GAAwB,KAATA,GAAwB,KAATA,EAC3B,gBACA,eAEN,GACW,kBAAT0nB,GACK7nB,EAAKkT,eAAe+B,QAAU9U,IAASH,EAAKkT,eAAe+B,OAC5D9V,EAAWgB,GACf,CAQA,GAPKH,EAAKkT,eAAelN,OACvBhG,EAAKkT,eAAelN,KAAO6hB,EAC3BloB,EAAQS,MAAMynB,EAAM,CAClBta,YAAY,KAIH,kBAATsa,EAEF,OADAloB,EAAQS,MAAM,kBACE,KAATD,GAAwB,KAATA,EAClBR,EAAQyB,MAAM+C,EAAetE,EAAKioB,EAAlCnoB,CAA4CQ,GAC5C2nB,EAAS3nB,GAGf,IAAKH,EAAKkC,WAAsB,KAAT/B,EAGrB,OAFAR,EAAQS,MAAM,kBACdT,EAAQS,MAAM,iBACP2nB,EAAO5nB,GAIlB,OAAON,EAAIM,IAGb,SAAS4nB,EAAO5nB,GACd,OAAIhB,EAAWgB,MAAWD,EAAO,IAC/BP,EAAQU,QAAQF,GACT4nB,KAIL/nB,EAAKkC,WAAahC,EAAO,KAC1BF,EAAKkT,eAAe+B,OACjB9U,IAASH,EAAKkT,eAAe+B,OACpB,KAAT9U,GAAwB,KAATA,IAEnBR,EAAQW,KAAK,iBACNwnB,EAAS3nB,IAGXN,EAAIM,GAGb,SAAS2nB,EAAS3nB,GAKhB,OAJAR,EAAQS,MAAM,kBACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,kBACbN,EAAKkT,eAAe+B,OAASjV,EAAKkT,eAAe+B,QAAU9U,EACpDR,EAAQyB,MACbiK,EACArL,EAAKkC,UAAYrC,EAAMmoB,EACvBroB,EAAQ0T,QACN4U,EACAC,EACAC,IAKN,SAASH,EAAQ7nB,GAGf,OAFAH,EAAKkT,eAAekV,kBAAmB,EACvCR,IACOM,EAAY/nB,GAGrB,SAASgoB,EAAYhoB,GACnB,OAAIiI,EAAcjI,IAChBR,EAAQS,MAAM,4BACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,4BACN4nB,GAGFroB,EAAIM,GAGb,SAAS+nB,EAAY/nB,GAGnB,OAFAH,EAAKkT,eAAehT,KAClB0nB,EAActT,EAAWtU,EAAKuM,YAAY5M,EAAQW,KAAK,oBAClDV,EAAGO,KA/GZiT,aAAc,CACZ1T,SAkHJ,SAAkCC,EAASC,EAAIC,GAC7C,IAAIG,EAAOC,KAEX,OADAD,EAAKkT,eAAemV,gBAAazlB,EAC1BjD,EAAQyB,MAAMiK,GAErB,SAAiBlL,GAIf,OAHAH,EAAKkT,eAAeoV,kBAClBtoB,EAAKkT,eAAeoV,mBACpBtoB,EAAKkT,eAAekV,iBACfxoB,EAAGO,MAGZ,SAAkBA,GAChB,GAAIH,EAAKkT,eAAeoV,oBAAsBlgB,EAAcjI,GAE1D,OADAH,EAAKkT,eAAeoV,kBAAoBtoB,EAAKkT,eAAekV,sBAAmBxlB,EACxE2lB,EAAiBpoB,GAI1B,OADAH,EAAKkT,eAAeoV,kBAAoBtoB,EAAKkT,eAAekV,sBAAmBxlB,EACxEjD,EAAQ0T,QAAQmV,EAAiB5oB,EAAI2oB,EAArC5oB,CAAuDQ,MAGhE,SAASooB,EAAiBpoB,GAKxB,OAHAH,EAAKkT,eAAemV,YAAa,EAEjCroB,EAAKkC,eAAYU,EACVhC,EACLjB,EACAA,EAAQ0T,QAAQ7N,EAAM5F,EAAIC,GAC1B,aACAG,EAAK6B,OAAOC,WAAWC,QAAQC,KAAKC,QAAQ,iBAAmB,OAC3DW,EACA,EANChC,CAOLT,MAlJJG,KAuKF,SAAyBX,GACvBA,EAAQW,KAAKL,KAAKiT,eAAelN,QAtK/BiiB,EAAoC,CACtCvoB,SAwKF,SAA0CC,EAASC,EAAIC,GACrD,IAAIG,EAAOC,KACX,OAAOW,EACLjB,GAQF,SAAqBQ,GACnB,OAAOiI,EAAcjI,KAClBU,EAAWb,EAAKyB,OAAQ,4BACvB5B,EAAIM,GACJP,EAAGO,KAVP,2BACAH,EAAK6B,OAAOC,WAAWC,QAAQC,KAAKC,QAAQ,iBAAmB,OAC3DW,EACA,IA/KNR,SAAS,GAEPomB,EAAkB,CACpB9oB,SA+IF,SAAwBC,EAASC,EAAIC,GACnC,IAAIG,EAAOC,KACX,OAAOW,EACLjB,GAMF,SAAqBQ,GACnB,OAAOU,EAAWb,EAAKyB,OAAQ,oBAC7BzB,EAAKkT,eAAehT,KAClBN,EAAGO,GACHN,EAAIM,KARR,iBACAH,EAAKkT,eAAehT,KAAO,IApJ7BkC,SAAS,GAsLXrF,EAAOD,QAAU0I,G,kCC5MjB,IAAI7E,EAAqB1B,EAAQ,QAC7BmJ,EAAgBnJ,EAAQ,QAoF5BlC,EAAOD,QAjFP,SAAsB6C,EAASC,EAAIC,EAAKmG,EAAMyiB,EAAYC,GACxD,IAEIxnB,EAFAlB,EAAOC,KACPC,EAAO,EAEX,OAEA,SAAeC,GAMb,OALAR,EAAQS,MAAM4F,GACdrG,EAAQS,MAAMqoB,GACd9oB,EAAQU,QAAQF,GAChBR,EAAQW,KAAKmoB,GACb9oB,EAAQS,MAAMsoB,GACPxT,GAGT,SAASA,EAAQ/U,GACf,OACW,OAATA,GACS,KAATA,GACU,KAATA,IAAgBe,GAEP,KAATf,IAEED,GAED,2BAA4BF,EAAK6B,OAAOC,YAC1C5B,EAAO,IAEAL,EAAIM,GAGA,KAATA,GACFR,EAAQW,KAAKooB,GACb/oB,EAAQS,MAAMqoB,GACd9oB,EAAQU,QAAQF,GAChBR,EAAQW,KAAKmoB,GACb9oB,EAAQW,KAAK0F,GACNpG,GAGLe,EAAmBR,IACrBR,EAAQS,MAAM,cACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,cACN4U,IAGTvV,EAAQS,MAAM,cAAe,CAC3Ba,YAAa,WAER0nB,EAAMxoB,IAGf,SAASwoB,EAAMxoB,GACb,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACAQ,EAAmBR,IACnBD,IAAS,KAETP,EAAQW,KAAK,eACN4U,EAAQ/U,KAGjBR,EAAQU,QAAQF,GAChBe,EAAOA,IAASkH,EAAcjI,GACd,KAATA,EAAcyoB,EAAcD,GAGrC,SAASC,EAAYzoB,GACnB,OAAa,KAATA,GAAwB,KAATA,GAAwB,KAATA,GAChCR,EAAQU,QAAQF,GAChBD,IACOyoB,GAGFA,EAAMxoB,M,kCCjFjBpD,EAAOD,QAEP,SAAcyf,GACZ,GAAIA,EACF,MAAMA,I,kCCJV,IAAIsM,EAAoB5pB,EAAQ,QAEhClC,EAAOD,QAIP,SAAsBgsB,GACpB,QAAOC,EAAI5rB,KAAK0rB,EAAmBC,IAC/BD,EAAkBC,IAJxB,IAAIC,EAAM,GAAGlqB,gB,kCCKb9B,EAAOD,QAPP,SAAmBksB,EAAO1E,GAIxB,OAHA0E,EAAM3E,QAAUC,EAChB0E,EAAM1E,QAAUA,EAChB0E,EAAMrV,cAAgB2Q,EACf0E,I,kCCPT,IAAIrjB,EAAWjI,OAAOkB,UAAU+G,SAEhC5I,EAAOD,QAAU,SAAUoM,GAC1B,IAAItK,EACJ,MAA4B,oBAArB+G,EAASxI,KAAK+L,KAAiF,QAApDtK,EAAYlB,OAAOurB,eAAe/f,KAA0BtK,IAAclB,OAAOurB,eAAe,O,kCCHnJ,IAAIjhB,EAAO/I,EAAQ,QAEnBlC,EAAOD,QAAUosB,EAEjBA,EAAOlhB,KAAOA,EAEd,IAAIxE,EAAQ,GAAGA,MAGf,SAAS0lB,IACP,IAAIC,EAAM,GACNC,EAAa,CAEjBA,IAMA,WACE,IAAIxd,GAAS,EACTyD,EAAQ7L,EAAMrG,KAAKmF,UAAW,GAAI,GAClCsS,EAAOtS,UAAUA,UAAUC,OAAS,GAExC,GAAoB,mBAATqS,EACT,MAAM,IAAII,MAAM,2CAA6CJ,GAM/D,SAASrT,EAAKgb,GACZ,IAAI/H,EAAK2U,IAAMvd,GACX+I,EAASnR,EAAMrG,KAAKmF,UAAW,GAC/Bib,EAAS5I,EAAOnR,MAAM,GACtBjB,EAAS8M,EAAM9M,OACfsiB,GAAO,EAEX,GAAItI,EACF3H,EAAK2H,OADP,CAMA,OAASsI,EAAMtiB,GACO,OAAhBgb,EAAOsH,SAAiCjiB,IAAhB2a,EAAOsH,KACjCtH,EAAOsH,GAAOxV,EAAMwV,IAIxBxV,EAAQkO,EAGJ/I,EACFxM,EAAKwM,EAAIjT,GAAMsT,MAAM,KAAMxF,GAE3BuF,EAAKC,MAAM,KAAM,CAAC,MAAMzO,OAAOiJ,KA5BnC9N,EAAKsT,MAAM,KAAM,CAAC,MAAMzO,OAAOiJ,KAdjC+Z,IAgDA,SAAa5U,GACX,GAAkB,mBAAPA,EACT,MAAM,IAAIQ,MAAM,uCAAyCR,GAK3D,OAFA2U,EAAIjhB,KAAKsM,GAEF4U,IArDT,OAAOA,I,kCChBT,IAAIzoB,EAAqB1B,EAAQ,QAC7B2B,EAAe3B,EAAQ,QAuE3BlC,EAAOD,QArEP,SAAsB6C,EAASC,EAAIC,EAAKmG,EAAMyiB,EAAYC,GACxD,IAAIzT,EACJ,OAEA,SAAe9U,GAMb,OALAR,EAAQS,MAAM4F,GACdrG,EAAQS,MAAMqoB,GACd9oB,EAAQU,QAAQF,GAChBR,EAAQW,KAAKmoB,GACbxT,EAAkB,KAAT9U,EAAc,GAAKA,EACrBkpB,GAGT,SAASA,EAAkBlpB,GACzB,OAAIA,IAAS8U,GACXtV,EAAQS,MAAMqoB,GACd9oB,EAAQU,QAAQF,GAChBR,EAAQW,KAAKmoB,GACb9oB,EAAQW,KAAK0F,GACNpG,IAGTD,EAAQS,MAAMsoB,GACPY,EAAanpB,IAGtB,SAASmpB,EAAanpB,GACpB,OAAIA,IAAS8U,GACXtV,EAAQW,KAAKooB,GACNW,EAAkBpU,IAGd,OAAT9U,EACKN,EAAIM,GAGTQ,EAAmBR,IACrBR,EAAQS,MAAM,cACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,cACNM,EAAajB,EAAS2pB,EAAc,gBAG7C3pB,EAAQS,MAAM,cAAe,CAC3Ba,YAAa,WAERiC,EAAM/C,IAGf,SAAS+C,EAAM/C,GACb,OAAIA,IAAS8U,GAAmB,OAAT9U,GAAiBQ,EAAmBR,IACzDR,EAAQW,KAAK,eACNgpB,EAAanpB,KAGtBR,EAAQU,QAAQF,GACA,KAATA,EAAcopB,EAAcrmB,GAGrC,SAASqmB,EAAYppB,GACnB,OAAIA,IAAS8U,GAAmB,KAAT9U,GACrBR,EAAQU,QAAQF,GACT+C,GAGFA,EAAM/C,M,kCCpEjB,IAAIS,EAAe3B,EAAQ,QAEvB4a,EAAa,CACftc,KAAM,aACNmC,SAGF,SAA4BC,EAASC,GACnC,OAEA,SAAeO,GAIb,OAHAR,EAAQS,MAAM,cACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,cACNM,EAAajB,EAASC,EAAI,iBAIrC7C,EAAOD,QAAU+c,G,kCClBjB,IAEI1a,EAFaF,EAAQ,OAER8I,CAAW,MAE5BhL,EAAOD,QAAUqC,G,kCCJjBpC,EAAOD,QAAUmC,EAAQ,S,kCCKzB,IAAIwD,EAAQxD,EAAQ,QAGhBuqB,EAAgB,2FAChBC,EAAc,uBAElB1sB,EAAOD,QAAU,SAAU4F,GACzB,IAAInC,EACAmpB,EAmCJ,OAlCAjnB,EAAMC,EAAM,QAAQ,SAAUG,EAAM+I,EAAOsC,GACrCwb,IAAkBxb,IACpB3N,EAAO,GACPmpB,EAAgBxb,GAGlB,IAAIyb,EAoDR,SAAwB9mB,GACtB,IAAI0kB,EAAQ1kB,EAAK5E,MAAMspB,MAAMiC,GAC7B,QAAOjC,GAAQA,EAAM,GAtDDqC,CAAe/mB,GAEjC,GAAI8mB,EAMF,OALAzb,EAAOpK,SAAS4K,OAAO9C,EAAO,EAAG,CAC/B5F,KAjBG,cAkBHrC,IAAKgmB,EACL1hB,SAAUpF,EAAKoF,YAEV,EAGT,IAAIyX,EAgCR,SAAsB7c,EAAMqL,GAC1B,IAAIqZ,EAAQ1kB,EAAK5E,MAAMspB,MAAMkC,GAC7B,QAAOlC,GAAQ,CACb5jB,IAAK4jB,EAAM,GACXsC,SAAUtC,EAAM,GAChB1kB,KAAMA,GArCQinB,CAAajnB,GAE3B,IAAK6c,EACH,OAAO,EAGT,IAAIqK,EAcR,SAAqBxpB,EAAMypB,GACzB,IAAIhtB,EAAIuD,EAAKgC,OAEb,KAAOvF,KACL,GAAIuD,EAAKvD,GAAG2G,MAAQqmB,EAClB,OAAOzpB,EAAKmO,OAAO1R,EAAG,GAAG,GAI7B,OAAO,EAvBUitB,CAAY1pB,EAAMmf,EAAQ/b,KAQzC,OANIomB,EACF7b,EAAOpK,SAAS4K,OAAO9C,EAAO,EAqCpC,SAAiBse,EAAUC,EAAQjc,GACjC,IAAIkc,EAAYlc,EAAOpK,SAAS7B,QAAQioB,EAASrnB,MAC7CwnB,EAAUnc,EAAOpK,SAAS7B,QAAQkoB,EAAOtnB,MAEzCiB,EADYoK,EAAOpK,SAAS4K,OAAO0b,EAAWC,EAAUD,EAAY,GAC/C5mB,MAAM,GAAI,GACnC,MAAO,CACLwC,KA5EO,cA6EPlC,SAAUA,EACVH,IAAKumB,EAASvmB,IACdsE,SAAU,CACRvC,MAAOwkB,EAASrnB,KAAKoF,SAASvC,MAC9ByC,IAAKgiB,EAAOtnB,KAAKoF,SAASE,IAC1BmiB,OAAQ,KAjDyBC,CAAQ7K,EAASqK,EAAU7b,IAClDwR,EAAQmK,SAClBtpB,EAAK2H,KAAKwX,IAGL,KACN,GAEIhd,I,ij7BChDT,IAEI8nB,EAFavrB,EAAQ,OAEF8I,CAAW,kBAElChL,EAAOD,QAAU0tB,G,kCCJjB,IAAI/c,EAAexO,EAAQ,QAqC3BlC,EAAOD,QAnCP,SAAyBwW,GAOvB,IANA,IAEI4Q,EACAjmB,EACAwsB,EAJA7e,GAAS,EACT4E,EAAS,KAKJ5E,EAAQ0H,EAAO/Q,QAAQ,CAG9B,GAAqB,iBAFrB2hB,EAAQ5Q,EAAO1H,IAGb3N,EAAQimB,OACH,IAAe,IAAXA,EACTjmB,EAAQ,UACH,IAAe,IAAXimB,EACTjmB,EAAQ,UACH,IAAe,IAAXimB,EACTjmB,EAAQ,YACH,IAAe,IAAXimB,EACTjmB,EAAQ,UACH,IAAe,IAAXimB,EAAc,CACvB,GAAIuG,EAAO,SACXxsB,EAAQ,SAGRA,EAAQwP,EAAayW,GAGvBuG,GAAmB,IAAXvG,EACR1T,EAAOtI,KAAKjK,GAGd,OAAOuS,EAAOE,KAAK,M,kCCrBrB3T,EAAOD,QAXP,SAAoBwW,GAIlB,IAHA,IAAI1H,GAAS,EACT1L,EAAO,IAEF0L,EAAQ0H,EAAO/Q,QACtBrC,GAAiC,iBAAlBoT,EAAO1H,GAAsB0H,EAAO1H,GAAOrJ,OAAS,EAGrE,OAAOrC,I,kCCVT,IAAIwqB,EAAWzrB,EAAQ,QACnB0rB,EAAQ1rB,EAAQ,QAEpBlC,EAAOD,QAAU6tB,EAEjBA,EAAM/rB,UAAUgsB,QAMhB,SAAiBC,EAAQ5iB,EAAU6iB,GACjC,IAAIF,EAAU,IAAIF,EAASG,EAAQ5iB,EAAU6iB,GAEzC7qB,KAAKgjB,OACP2H,EAAQrtB,KAAO0C,KAAKgjB,KAAO,IAAM2H,EAAQrtB,KACzCqtB,EAAQG,KAAO9qB,KAAKgjB,MAOtB,OAJA2H,EAAQI,OAAQ,EAEhB/qB,KAAKgrB,SAAS/iB,KAAK0iB,GAEZA,GAjBTD,EAAM/rB,UAAUssB,KA+BhB,WACE,IAAIN,EAAU3qB,KAAK2qB,QAAQ/V,MAAM5U,KAAMqC,WAIvC,OAFAsoB,EAAQI,MAAQ,KAETJ,GAnCTD,EAAM/rB,UAAUusB,KAoBhB,WACE,IAAIP,EAAU3qB,KAAK2qB,QAAQ/V,MAAM5U,KAAMqC,WAIvC,MAFAsoB,EAAQI,OAAQ,EAEVJ,I,kCChCR,IAKI1H,EALajkB,EAAQ,OAKA8I,CAJK9I,EAAQ,SAMtClC,EAAOD,QAAUomB,G,iPCPjBnmB,EAAOD,QAeP,SAAsBmB,EAAOqpB,EAAU7f,GACb,iBAAb6f,IACT7f,EAAU6f,EACVA,OAAW1kB,GAGb,OAQF,SAAkB6E,GAChB,IAAI2jB,EAAW3jB,GAAW,GACtB4jB,EAuvBN,SAAmBA,EAAQ1jB,GACzB,IAAIiE,GAAS,EAEb,OAASA,EAAQjE,EAAWpF,QAC1B+oB,EAAUD,EAAQ1jB,EAAWiE,IAG/B,OAAOyf,EA9vBME,CACX,CACEC,eAAgB,CACd,WACA,WACA,UACA,YACA,UAGFprB,MAAO,CACL+Y,SAAUsS,EAAOnnB,GACjBonB,iBAAkBC,EAClBC,cAAeD,EACfE,WAAYJ,EAAOtlB,GACnB8M,WAAYwY,GAspBlB,WACE,MAAO,CAACzlB,KAAM,aAAclC,SAAU,OAtpBlCsV,gBAAiBuS,EACjBlsB,mBAAoBksB,EACpBtS,WAAYoS,EAAOK,GACnBC,oBAAqB1E,EACrB2E,oBAAqB3E,EACrB/N,aAAcmS,EAAOK,EAAUzE,GAC/BlZ,SAAUsd,GAupBhB,WACE,MAAO,CAACzlB,KAAM,aAAc/H,MAAO,MAxpBJopB,GAC3B4E,aAAcN,EACdzqB,KAAMyqB,EACNO,cAAeP,EACfzlB,WAAYulB,GAupBlB,WACE,MAAO,CACLzlB,KAAM,aACNlD,WAAY,GACZ6lB,MAAO,KACPzlB,MAAO,KACPD,IAAK,OA5pBHkpB,4BAA6B9E,EAC7B+E,sBAAuB/E,EACvBgF,sBAAuBhF,EACvBpjB,SAAUwnB,GA6pBhB,WACE,MAAO,CAACzlB,KAAM,WAAYlC,SAAU,OA7pBhCyV,gBAAiBkS,EAAOa,GACxBC,kBAAmBd,EAAOa,GAC1B9S,SAAUiS,EAAOjlB,EAAM6gB,GACvBmF,aAAcb,EACdlS,SAAUgS,EAAOjlB,EAAM6gB,GACvBoF,aAAcd,EACdpnB,MAAOknB,GAsqBb,WACE,MAAO,CAACzlB,KAAM,QAAS9C,MAAO,KAAMD,IAAK,GAAIoa,IAAK,SAtqB9CsL,MAAOtB,EACP/iB,KAAMmnB,EAAOnnB,GACbuB,SAAU4lB,GAqrBhB,SAAkBhrB,GAChB,MAAO,CACLuF,KAAM,WACN0f,OAAQjlB,EAAMisB,QACd3mB,QAAS,KACTjC,SAAU,OAzrBR6oB,cA8WN,SAA8BlsB,GACxBmsB,EAAQ,iCACV3sB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGmD,MAAQpC,SACxCrD,KAAKS,eAAeD,GACpB,IAGFqsB,EAAQ,iCApXNC,YAAatB,EAAOjmB,GAyW1B,WACEsnB,EAAQ,+BAA+B,MAzWnCE,cAAevB,EAAOjmB,GACtBxB,UAAWynB,GA0rBjB,WACE,MAAO,CAACzlB,KAAM,YAAalC,SAAU,OA1rBjCmpB,UAkkBN,WACEH,EAAQ,gBAAiB,cAlkBrBI,gBAAiB7F,EACjB8F,0BAA2B9F,EAC3B+F,oBAAqB/F,EACrBgG,cAAe5B,EAAOtlB,GACtBjC,OAAQunB,GAwrBd,WACE,MAAO,CAACzlB,KAAM,SAAUlC,SAAU,OAxrB9BK,cAAesnB,GA+rBrB,WACE,MAAO,CAACzlB,KAAM,qBA7rBZ1F,KAAM,CACJurB,WAAYyB,IACZC,mBA6ZN,SAAkC9sB,GAC3BR,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGkjB,QACrCxlB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGkjB,MAAQxlB,KAAKS,eAC7CD,GACA8B,SAhaA4W,SAAUmU,IACV1B,cAimBN,SAA6BnrB,GAC3B+sB,EAAWrwB,KAAK8C,KAAMQ,GACtBR,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGU,IAChC,UAAYhD,KAAKS,eAAeD,IAnmB9BirB,iBA2lBN,SAAgCjrB,GAC9B+sB,EAAWrwB,KAAK8C,KAAMQ,GACtBR,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGU,IAAMhD,KAAKS,eAAeD,IA5lBxDwS,WAAYqa,IACZG,qBAAsBD,EACtBE,oCAAqCC,EACrCC,gCAAiCD,EACjCE,wBAgkBN,SAAuCptB,GACrC,IAEIxC,EACAsW,EAHArT,EAAOjB,KAAKS,eAAeD,GAC3BuF,EAAO4mB,EAAQ,0BAIf5mB,GACF/H,EAAQ6vB,EACN5sB,EACS,oCAAT8E,EAA6C,GAAK,IAGpD8mB,EAAQ,2BAER7uB,EAAQ0kB,EAAOzhB,IAGjBqT,EAAOtU,KAAK4sB,MAAM/f,OACb7O,OAASA,EACdsW,EAAKtM,SAASE,IAAM6gB,EAAMvoB,EAAM0H,MAllB5BkR,WAAYiU,GAkXlB,WACE,IAAIpsB,EAAOjB,KAAK8tB,SAChB9tB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGtE,MAAQiD,EAAK2P,QAC7C,2BACA,IAGFic,EAAQ,qBAxXJkB,gBA0WN,WAEE,GAAIpB,EAAQ,kBAAmB,OAC/B3sB,KAAKonB,SACLyF,EAAQ,kBAAkB,IA7WtBf,oBA+VN,WACE,IAAI7qB,EAAOjB,KAAK8tB,SAChB9tB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAG2jB,KAAOhlB,GAhWrC8qB,oBAmWN,WACE,IAAI9qB,EAAOjB,KAAK8tB,SAChB9tB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAG0rB,KAAO/sB,GApWrCgrB,cAAesB,EACflU,aAAcgU,GAuXpB,WACE,IAAIpsB,EAAOjB,KAAK8tB,SAChB9tB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGtE,MAAQiD,KAxXtCiN,SAAUmf,GA2dhB,WACE,IAAIpsB,EAAOjB,KAAK8tB,SAChB9tB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGtE,MAAQiD,KA5dtC+qB,aAAcuB,EACdtsB,KAAMssB,EACNtnB,WAAYonB,IACZnB,4BAqYN,WACE,IAAIjrB,EAAOjB,KAAK8tB,SAChB9tB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGU,IAAM/B,GAtYpCkrB,sBAsXN,SAAqC3rB,GAEnC,IAAIkoB,EAAQ1oB,KAAK8tB,SACjB9tB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGomB,MAAQA,EAC1C1oB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGO,WAAaorB,EAC7CjuB,KAAKS,eAAeD,IACpB2T,eA3XEiY,sBA8XN,WACE,IAAInrB,EAAOjB,KAAK8tB,SAChB9tB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGW,MAAQhC,GA/XtC+C,SAAUqpB,IACV/T,gBAAiB+T,EAAOa,GACxB5B,kBAAmBe,EAAOa,GAC1B3U,SAAU8T,GAuchB,WACE,IAAIpsB,EAAOjB,KAAK8tB,SAChB9tB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGtE,MAAQiD,KAxctCsrB,aAAcgB,EACd/T,SAAU6T,GA0chB,WACE,IAAIpsB,EAAOjB,KAAK8tB,SAChB9tB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGtE,MAAQiD,KA3ctCurB,aAAce,EACdjpB,MAAO+oB,GAoeb,WACE,IAAIvhB,EAAU9L,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAGzCqqB,EAAQ,gBACV7gB,EAAQ/F,MAAQ,YAChB+F,EAAQqiB,cAAgBxB,EAAQ,kBAAoB,kBAC7C7gB,EAAQ9I,WACR8I,EAAQ7I,eAER6I,EAAQjJ,kBACRiJ,EAAQ4c,aACR5c,EAAQqiB,eAGjBtB,EAAQ,oBAlfJnE,MA2fN,WACE,IAAI0F,EAAWpuB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAC1CtE,EAAQgC,KAAK8tB,SAEjB9tB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGomB,MAAQ1qB,EAG1C6uB,EAAQ,eAAe,GAEwB,SAA3C7sB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGyD,KACpC/F,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGuB,SAAWuqB,EAASvqB,SAEtD7D,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAG8a,IAAMpf,GAtgBtCqwB,UAofN,SAAyB7tB,GACvBR,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGO,WAAaorB,EAC7CjuB,KAAKS,eAAeD,IACpB2T,eAtfEyF,WAsaN,SAA0BpZ,GACxB,IAAIsL,EAAU9L,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAG7C,GAAIqqB,EAAQ,eAMV,OALA7gB,EAAQjI,SAASiI,EAAQjI,SAASvB,OAAS,GAAG0F,SAASE,IAAM6gB,EAC3DvoB,EAAM0H,UAGR2kB,EAAQ,gBAKPF,EAAQ,iCACTvB,EAAOG,eAAevpB,QAAQ8J,EAAQ/F,OAAS,IAE/C2lB,EAAYxuB,KAAK8C,KAAMQ,GACvB+sB,EAAWrwB,KAAK8C,KAAMQ,KAvbpB6D,KAAMgpB,GA8cZ,WACE,IAAIvhB,EAAU9L,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAGzCqqB,EAAQ,gBACV7gB,EAAQ/F,MAAQ,YAChB+F,EAAQqiB,cAAgBxB,EAAQ,kBAAoB,kBAC7C7gB,EAAQ9I,WACR8I,EAAQ7I,eAER6I,EAAQjJ,kBACRiJ,EAAQ4c,aACR5c,EAAQqiB,eAGjBtB,EAAQ,oBA5dJjnB,SAAUynB,IACVP,YAAaO,IACbN,cAAeM,IACftpB,UAAWspB,IACXJ,gBAqhBN,SAA+BzsB,GAC7B,IAAIkoB,EAAQ1oB,KAAK8tB,SACjB9tB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGomB,MAAQA,EAC1C1oB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGO,WAAaorB,EAC7CjuB,KAAKS,eAAeD,IACpB2T,cACF0Y,EAAQ,gBAAiB,SA1hBrBK,0BAkgBN,WACE,IAAIjsB,EAAOjB,KAAK8tB,SAChB9tB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGU,IAAM/B,GAngBpCksB,oBAsgBN,WACE,IAAIlsB,EAAOjB,KAAK8tB,SAChB9tB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGW,MAAQhC,GAvgBtCqtB,SA0gBN,WACEzB,EAAQ,gBA1gBJO,cAAeC,GAoYrB,WACER,EAAQ,mCApYJ0B,0BA8XN,SAAyC/tB,GACvCR,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGkjB,MACa,KAA7CxlB,KAAKS,eAAeD,GAAOoP,WAAW,GAAY,EAAI,GA/XpD4e,kBAyXN,WACE3B,EAAQ,gCAAgC,IAzXpC5oB,OAAQopB,IACRnpB,cAAempB,MAInBlC,EAASsD,iBAAmB,IAG1BxtB,EAAO,GAEX,OAEA,SAAiBO,GACf,IAIIktB,EACAC,EALA/B,EAAQ,CAAC,CAAC7mB,KAAM,OAAQlC,SAAU,KAClC+qB,EAAa,GACbC,EAAY,GACZljB,GAAS,EAITG,EAAU,CACZ8gB,MAAOA,EACPgC,WAAYA,EACZxD,OAAQA,EACRjrB,MAAOA,EACPE,KAAMA,EACN+mB,OAAQA,EACR0G,OAAQA,EACRjB,QAASA,EACTF,QAASA,GAGX,OAAShhB,EAAQnK,EAAOc,QAIM,gBAA1Bd,EAAOmK,GAAO,GAAG5F,MACS,kBAA1BvE,EAAOmK,GAAO,GAAG5F,OAEQ,UAArBvE,EAAOmK,GAAO,GAChBkjB,EAAU5mB,KAAK0D,IAEfgjB,EAAYE,EAAUhiB,IAAIlB,GAC1BA,EAAQmjB,EAAYttB,EAAQmtB,EAAWhjB,KAK7CA,GAAS,EAET,OAASA,EAAQnK,EAAOc,QACtBosB,EAAUtD,EAAO5pB,EAAOmK,GAAO,IAE3Bmd,EAAI5rB,KAAKwxB,EAASltB,EAAOmK,GAAO,GAAG5F,OACrC2oB,EAAQltB,EAAOmK,GAAO,GAAG5F,MAAM7I,KAC7BmO,EAAO,CAAC5K,eAAgBe,EAAOmK,GAAO,GAAGlL,gBAAiBqL,GAC1DtK,EAAOmK,GAAO,IAKpB,GAAIijB,EAAWtsB,OACb,MAAM,IAAIyS,MACR,oCACE6Z,EAAWA,EAAWtsB,OAAS,GAAGyD,KAClC,MACAgpB,EAAkB,CAChBtpB,MAAOmpB,EAAWA,EAAWtsB,OAAS,GAAGmD,MACzCyC,IAAK0mB,EAAWA,EAAWtsB,OAAS,GAAG4F,MAEzC,mBAiBN,OAZA0kB,EAAM,GAAG5kB,SAAW,CAClBvC,MAAOsjB,EACLvnB,EAAOc,OAASd,EAAO,GAAG,GAAGiE,MAAQ,CAACkH,KAAM,EAAGyX,OAAQ,EAAGC,OAAQ,IAGpEnc,IAAK6gB,EACHvnB,EAAOc,OACHd,EAAOA,EAAOc,OAAS,GAAG,GAAG4F,IAC7B,CAACyE,KAAM,EAAGyX,OAAQ,EAAGC,OAAQ,KAI9BuI,EAAM,IAGf,SAASkC,EAAYttB,EAAQiE,EAAOnD,GAYlC,IAXA,IAGIsD,EACAopB,EACAhiB,EACAiiB,EACAliB,EACAmiB,EACArH,EATAlc,EAAQlG,EAAQ,EAChB0pB,GAAoB,EACpBC,GAAa,IASRzjB,GAASrJ,GAwChB,GApCoB,mBAHpByK,EAAQvL,EAAOmK,IAGP,GAAG5F,MACS,gBAAlBgH,EAAM,GAAGhH,MACS,eAAlBgH,EAAM,GAAGhH,MAEQ,UAAbgH,EAAM,GACRoiB,IAEAA,IAGFtH,OAAWllB,GACgB,oBAAlBoK,EAAM,GAAGhH,KACD,UAAbgH,EAAM,MAENnH,GACCiiB,GACAsH,GACAD,IAEDA,EAAsBvjB,GAGxBkc,OAAWllB,GAGK,eAAlBoK,EAAM,GAAGhH,MACS,kBAAlBgH,EAAM,GAAGhH,MACS,mBAAlBgH,EAAM,GAAGhH,MACS,mBAAlBgH,EAAM,GAAGhH,MACS,6BAAlBgH,EAAM,GAAGhH,OAIT8hB,OAAWllB,IAITwsB,GACa,UAAbpiB,EAAM,IACY,mBAAlBA,EAAM,GAAGhH,OACY,IAAtBopB,GACc,SAAbpiB,EAAM,KACa,kBAAlBA,EAAM,GAAGhH,MACU,gBAAlBgH,EAAM,GAAGhH,MACb,CACA,GAAIH,EAAU,CAIZ,IAHAopB,EAAYrjB,EACZqB,OAAYrK,EAELqsB,KAGL,GACwB,gBAHxBC,EAAYztB,EAAOwtB,IAGP,GAAGjpB,MACS,oBAAtBkpB,EAAU,GAAGlpB,KACb,CACA,GAAqB,SAAjBkpB,EAAU,GAAe,SAEzBjiB,IACFxL,EAAOwL,GAAW,GAAGjH,KAAO,kBAC5BqpB,GAAa,GAGfH,EAAU,GAAGlpB,KAAO,aACpBiH,EAAYgiB,OACP,GACiB,eAAtBC,EAAU,GAAGlpB,MACS,qBAAtBkpB,EAAU,GAAGlpB,MACS,+BAAtBkpB,EAAU,GAAGlpB,MACS,qBAAtBkpB,EAAU,GAAGlpB,MACS,mBAAtBkpB,EAAU,GAAGlpB,KAIb,MAKFmpB,KACEliB,GAAakiB,EAAsBliB,KAErCpH,EAAS6mB,SAAU,GAIrB7mB,EAASsC,IAAM6gB,EACb/b,EAAYxL,EAAOwL,GAAW,GAAGvH,MAAQsH,EAAM,GAAG7E,KAGpD1G,EAAOiN,OAAOzB,GAAarB,EAAO,EAAG,CAAC,OAAQ/F,EAAUmH,EAAM,KAC9DpB,IACArJ,IAIoB,mBAAlByK,EAAM,GAAGhH,OACXH,EAAW,CACTG,KAAM,WACN0mB,SAAS,EACThnB,MAAOsjB,EAAMhc,EAAM,GAAGtH,QAGxBjE,EAAOiN,OAAO9C,EAAO,EAAG,CAAC,QAAS/F,EAAUmH,EAAM,KAClDpB,IACArJ,IACA4sB,OAAsBvsB,EACtBklB,GAAW,GAMjB,OADArmB,EAAOiE,GAAO,GAAGgnB,QAAU2C,EACpB9sB,EAGT,SAASuqB,EAAQvuB,EAAKN,GACpBiD,EAAK3C,GAAON,EAGd,SAAS2uB,EAAQruB,GACf,OAAO2C,EAAK3C,GAGd,SAASyqB,EAAM1rB,GACb,MAAO,CAACsP,KAAMtP,EAAEsP,KAAMyX,OAAQ/mB,EAAE+mB,OAAQC,OAAQhnB,EAAEgnB,QAGpD,SAASmH,EAAOntB,EAAQgxB,GACtB,OAEA,SAAc7uB,GACZL,EAAMjD,KAAK8C,KAAM3B,EAAOmC,GAAQA,GAC5B6uB,GAAKA,EAAInyB,KAAK8C,KAAMQ,IAI5B,SAAS4mB,IACPpnB,KAAK4sB,MAAM3kB,KAAK,CAAClC,KAAM,WAAYlC,SAAU,KAG/C,SAAS1D,EAAMyC,EAAMpC,GAKnB,OAJAR,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGuB,SAASoE,KAAKrF,GAChD5C,KAAK4sB,MAAM3kB,KAAKrF,GAChB5C,KAAK4uB,WAAW3mB,KAAKzH,GACrBoC,EAAKoF,SAAW,CAACvC,MAAOsjB,EAAMvoB,EAAMiF,QAC7B7C,EAGT,SAASyqB,EAAOgC,GACd,OAEA,SAAe7uB,GACT6uB,GAAKA,EAAInyB,KAAK8C,KAAMQ,GACxBH,EAAKnD,KAAK8C,KAAMQ,IAIpB,SAASH,EAAKG,GACZ,IAAIoC,EAAO5C,KAAK4sB,MAAM/f,MAClBvM,EAAON,KAAK4uB,WAAW/hB,MAE3B,IAAKvM,EACH,MAAM,IAAIyU,MACR,iBACEvU,EAAMuF,KACN,MACAgpB,EAAkB,CAACtpB,MAAOjF,EAAMiF,MAAOyC,IAAK1H,EAAM0H,MAClD,oBAEC,GAAI5H,EAAKyF,OAASvF,EAAMuF,KAC7B,MAAM,IAAIgP,MACR,iBACEvU,EAAMuF,KACN,MACAgpB,EAAkB,CAACtpB,MAAOjF,EAAMiF,MAAOyC,IAAK1H,EAAM0H,MAClD,0BACA5H,EAAKyF,KACL,MACAgpB,EAAkB,CAACtpB,MAAOnF,EAAKmF,MAAOyC,IAAK5H,EAAK4H,MAChD,aAKN,OADAtF,EAAKoF,SAASE,IAAM6gB,EAAMvoB,EAAM0H,KACzBtF,EAGT,SAASkrB,IACP,OAAOpoB,EAAS1F,KAAK4sB,MAAM/f,OA8F7B,SAAS6e,EAAYlrB,GACnB,IAAI8uB,EAAWtvB,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGuB,SAC7CyQ,EAAOgb,EAASA,EAAShtB,OAAS,GAEjCgS,GAAsB,SAAdA,EAAKvO,QAEhBuO,EA+PK,CAACvO,KAAM,OAAQ/H,MAAO,KA9PtBgK,SAAW,CAACvC,MAAOsjB,EAAMvoB,EAAMiF,QACpCzF,KAAK4sB,MAAM5sB,KAAK4sB,MAAMtqB,OAAS,GAAGuB,SAASoE,KAAKqM,IAGlDtU,KAAK4sB,MAAM3kB,KAAKqM,GAGlB,SAASiZ,EAAW/sB,GAClB,IAAI8T,EAAOtU,KAAK4sB,MAAM/f,MACtByH,EAAKtW,OAASgC,KAAKS,eAAeD,GAClC8T,EAAKtM,SAASE,IAAM6gB,EAAMvoB,EAAM0H,KAyBlC,SAASgmB,IACPrB,EAAQ,eAAe,GAuGzB,SAASa,EAA+BltB,GACtCqsB,EAAQ,yBAA0BrsB,EAAMuF,MA4C1C,SAAS8lB,IACP,MAAO,CAAC9lB,KAAM,OAAQkgB,KAAM,KAAM+H,KAAM,KAAMhwB,MAAO,IAqBvD,SAASkI,IACP,MAAO,CAACH,KAAM,UAAWyf,WAAO7iB,EAAWkB,SAAU,IAGvD,SAASwoB,IACP,MAAO,CAACtmB,KAAM,SAGhB,SAASQ,IACP,MAAO,CAACR,KAAM,OAAQ/H,MAAO,IAO/B,SAASqG,IACP,MAAO,CAAC0B,KAAM,OAAQ9C,MAAO,KAAMD,IAAK,GAAIa,SAAU,IAGxD,SAAS0B,EAAK/E,GACZ,MAAO,CACLuF,KAAM,OACNJ,QAAwB,gBAAfnF,EAAMuF,KACfN,MAAO,KACPggB,OAAQjlB,EAAMisB,QACd5oB,SAAU,KAnuBP0rB,CAAS/nB,EAAT+nB,CACLC,EACE5tB,EAAO4F,GAASH,WAAWqF,MAAM+iB,IAAezxB,EAAOqpB,GAAU,OAnBvE,IAAI3hB,EAAW1G,EAAQ,QACnBqM,EAASrM,EAAQ,QACjB8pB,EAAM9pB,EAAQ,QACdivB,EAAsBjvB,EAAQ,QAC9B6uB,EAAc7uB,EAAQ,QACtB4C,EAAS5C,EAAQ,QACjBywB,EAAezwB,EAAQ,QACvBwwB,EAAcxwB,EAAQ,QACtB0jB,EAAS1jB,EAAQ,QACjB+vB,EAAoB/vB,EAAQ,QAmxBhC,SAASqsB,EAAUD,EAAQC,GACzB,IAAI/sB,EACAoxB,EAEJ,IAAKpxB,KAAO+sB,EACVqE,EAAO5G,EAAI5rB,KAAKkuB,EAAQ9sB,GAAO8sB,EAAO9sB,GAAQ8sB,EAAO9sB,GAAO,GAEhD,mBAARA,EACF8sB,EAAO9sB,GAAO,GAAG6H,OAAOupB,EAAMrE,EAAU/sB,IAExC,EAAcoxB,EAAMrE,EAAU/sB,M,kCC1yBpCb,OAAOC,eAAeb,EAAS,aAAc,CAACmB,OAAO,IAErD,IAAI0C,EAAqB1B,EAAQ,QAC7B2B,EAAe3B,EAAQ,QAEvBS,EAEJ,SAA2BC,GACzB,IAKIqB,EALAwU,EAAe7V,EAAQ0T,QACzBpT,KAAK4B,OAAOC,WAAW+Y,gBAOzB,SAAoC1a,GAClC,GAAa,OAATA,EAEF,YADAR,EAAQU,QAAQF,GAOlB,OAHAR,EAAQS,MAAM,cACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,cACNM,EAAajB,EAAS6V,EAAc,iBAG7C,SAA0BrV,GAExB,OADAR,EAAQS,MAAM,aACPwvB,EAAUzvB,MAhBnB,OAAOqV,EAmBP,SAASoa,EAAUzvB,GACjB,IAAIM,EAAQd,EAAQS,MAAM,YAAa,CACrCa,YAAa,OACbD,SAAUA,IAQZ,OALIA,IACFA,EAASO,KAAOd,GAGlBO,EAAWP,EACJS,EAAKf,GAGd,SAASe,EAAKf,GACZ,OAAa,OAATA,GACFR,EAAQW,KAAK,aACbX,EAAQW,KAAK,kBACbX,EAAQU,QAAQF,IAIdQ,EAAmBR,IACrBR,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,aACNsvB,IAGTjwB,EAAQU,QAAQF,GACTe,KAIXpE,EAAQ4C,SAAWA,G,kCClEnB,IAAIiB,EAAqB1B,EAAQ,QAC7BmW,EAA4BnW,EAAQ,QACpCkkB,EAAelkB,EAAQ,QA8H3BlC,EAAOD,QA3HP,SACE6C,EACAC,EACAC,EACAmG,EACA6pB,EACAC,EACAC,EACArH,EACA5oB,GAEA,IAAIuI,EAAQvI,GAAOwI,IACf0nB,EAAU,EACd,OAEA,SAAe7vB,GACb,GAAa,KAATA,EAMF,OALAR,EAAQS,MAAM4F,GACdrG,EAAQS,MAAMyvB,GACdlwB,EAAQS,MAAM0vB,GACdnwB,EAAQU,QAAQF,GAChBR,EAAQW,KAAKwvB,GACNG,EAGT,GAAI9M,EAAahjB,GACf,OAAON,EAAIM,GASb,OANAR,EAAQS,MAAM4F,GACdrG,EAAQS,MAAM2vB,GACdpwB,EAAQS,MAAMsoB,GACd/oB,EAAQS,MAAM,cAAe,CAC3Ba,YAAa,WAERivB,EAAe/vB,IAGxB,SAAS8vB,EAA0B9vB,GACjC,OAAa,KAATA,GACFR,EAAQS,MAAM0vB,GACdnwB,EAAQU,QAAQF,GAChBR,EAAQW,KAAKwvB,GACbnwB,EAAQW,KAAKuvB,GACblwB,EAAQW,KAAK0F,GACNpG,IAGTD,EAAQS,MAAMsoB,GACd/oB,EAAQS,MAAM,cAAe,CAC3Ba,YAAa,WAERkvB,EAAoBhwB,IAG7B,SAASgwB,EAAoBhwB,GAC3B,OAAa,KAATA,GACFR,EAAQW,KAAK,eACbX,EAAQW,KAAKooB,GACNuH,EAA0B9vB,IAGtB,OAATA,GAA0B,KAATA,GAAeQ,EAAmBR,GAC9CN,EAAIM,IAGbR,EAAQU,QAAQF,GACA,KAATA,EAAciwB,EAA4BD,GAGnD,SAASC,EAA0BjwB,GACjC,OAAa,KAATA,GAAwB,KAATA,GAAwB,KAATA,GAChCR,EAAQU,QAAQF,GACTgwB,GAGFA,EAAoBhwB,GAG7B,SAAS+vB,EAAe/vB,GACtB,OAAa,KAATA,IACI6vB,EAAU3nB,EAAcxI,EAAIM,IAClCR,EAAQU,QAAQF,GACT+vB,GAGI,KAAT/vB,EACG6vB,KAQLrwB,EAAQU,QAAQF,GACT+vB,IARLvwB,EAAQW,KAAK,eACbX,EAAQW,KAAKooB,GACb/oB,EAAQW,KAAKyvB,GACbpwB,EAAQW,KAAK0F,GACNpG,EAAGO,IAOD,OAATA,GAAiBiV,EAA0BjV,GACzC6vB,EAAgBnwB,EAAIM,IACxBR,EAAQW,KAAK,eACbX,EAAQW,KAAKooB,GACb/oB,EAAQW,KAAKyvB,GACbpwB,EAAQW,KAAK0F,GACNpG,EAAGO,IAGRgjB,EAAahjB,GAAcN,EAAIM,IACnCR,EAAQU,QAAQF,GACA,KAATA,EAAckwB,EAAuBH,GAG9C,SAASG,EAAqBlwB,GAC5B,OAAa,KAATA,GAAwB,KAATA,GAAwB,KAATA,GAChCR,EAAQU,QAAQF,GACT+vB,GAGFA,EAAe/vB,M,kCC5H1B,IAAIrB,EAAIG,EAAQ,QACZqxB,EAAOrxB,EAAQ,QACfooB,EAASpoB,EAAQ,QAErBlC,EAAOD,QAAU6tB,EAEjB,IAAI5B,EAAM,GAAGlqB,eAKT0xB,EAAQ,CAAC,UAAW,OAAQ,WAAY,OAAQ,UAAW,WA6B/D,SAAS5F,EAAMljB,GACb,IAAI+oB,EACA5kB,EAEJ,GAAKnE,GAEE,GAAuB,iBAAZA,GAAwB4f,EAAO5f,GAC/CA,EAAU,CAACgpB,SAAUhpB,QAChB,GAAI,YAAaA,GAAW,aAAcA,EAC/C,OAAOA,OAJPA,EAAU,GAOZ,KAAMxH,gBAAgB0qB,GACpB,OAAO,IAAIA,EAAMljB,GAWnB,IARAxH,KAAKiB,KAAO,GACZjB,KAAKgrB,SAAW,GAChBhrB,KAAKywB,QAAU,GACfzwB,KAAK0wB,IAAML,EAAKK,MAGhB/kB,GAAS,IAEAA,EAAQ2kB,EAAMhuB,QACrBiuB,EAAOD,EAAM3kB,GAETmd,EAAI5rB,KAAKsK,EAAS+oB,KACpBvwB,KAAKuwB,GAAQ/oB,EAAQ+oB,IAKzB,IAAKA,KAAQ/oB,EACP8oB,EAAMtuB,QAAQuuB,GAAQ,IACxBvwB,KAAKuwB,GAAQ/oB,EAAQ+oB,IA2E3B,SAASI,EAAWC,EAAMtzB,GACxB,GAAIszB,GAAQA,EAAK5uB,QAAQnD,EAAEgyB,MAAQ,EACjC,MAAM,IAAI9b,MACR,IAAMzX,EAAO,uCAAyCuB,EAAEgyB,IAAM,KAMpE,SAASC,EAAeF,EAAMtzB,GAC5B,IAAKszB,EACH,MAAM,IAAI7b,MAAM,IAAMzX,EAAO,qBAKjC,SAASyzB,EAAW/N,EAAM1lB,GACxB,IAAK0lB,EACH,MAAM,IAAIjO,MAAM,YAAczX,EAAO,mCA3JzCotB,EAAM/rB,UAAU+G,SAoIhB,SAAkB2hB,GAChB,OAAQrnB,KAAKwwB,UAAY,IAAI9qB,SAAS2hB,IAlIxC5pB,OAAOC,eAAegtB,EAAM/rB,UAAW,OAAQ,CAACf,IAgEhD,WACE,OAAOoC,KAAKywB,QAAQzwB,KAAKywB,QAAQnuB,OAAS,IAjEkB0uB,IAoE9D,SAAiBhO,GACf8N,EAAe9N,EAAM,QAEjBhjB,KAAKgjB,OAASA,GAChBhjB,KAAKywB,QAAQxoB,KAAK+a,MArEtBvlB,OAAOC,eAAegtB,EAAM/rB,UAAW,UAAW,CAChDf,IAwEF,WACE,MAA4B,iBAAdoC,KAAKgjB,KAAoBnkB,EAAEoyB,QAAQjxB,KAAKgjB,WAAQrgB,GAxE9DquB,IA2EF,SAAoBC,GAClBF,EAAW/wB,KAAKgjB,KAAM,WACtBhjB,KAAKgjB,KAAOnkB,EAAE4R,KAAKwgB,GAAW,GAAIjxB,KAAKkxB,aAzEzCzzB,OAAOC,eAAegtB,EAAM/rB,UAAW,WAAY,CACjDf,IA2EF,WACE,MAA4B,iBAAdoC,KAAKgjB,KAAoBnkB,EAAEqyB,SAASlxB,KAAKgjB,WAAQrgB,GA3E/DquB,IA8EF,SAAqBE,GACnBJ,EAAeI,EAAU,YACzBP,EAAWO,EAAU,YACrBlxB,KAAKgjB,KAAOnkB,EAAE4R,KAAKzQ,KAAKixB,SAAW,GAAIC,MA7EzCzzB,OAAOC,eAAegtB,EAAM/rB,UAAW,UAAW,CAChDf,IA+EF,WACE,MAA4B,iBAAdoC,KAAKgjB,KAAoBnkB,EAAEsyB,QAAQnxB,KAAKgjB,WAAQrgB,GA/E9DquB,IAkFF,SAAoBG,GAIlB,GAHAR,EAAWQ,EAAS,WACpBJ,EAAW/wB,KAAKgjB,KAAM,WAElBmO,EAAS,CACX,GAA8B,KAA1BA,EAAQvhB,WAAW,GACrB,MAAM,IAAImF,MAAM,iCAGlB,GAAIoc,EAAQnvB,QAAQ,IAAK,IAAM,EAC7B,MAAM,IAAI+S,MAAM,0CAIpB/U,KAAKgjB,KAAOnkB,EAAE4R,KAAKzQ,KAAKixB,QAASjxB,KAAKoxB,MAAQD,GAAW,QA5F3D1zB,OAAOC,eAAegtB,EAAM/rB,UAAW,OAAQ,CAACf,IA+FhD,WACE,MAA4B,iBAAdoC,KAAKgjB,KACfnkB,EAAEqyB,SAASlxB,KAAKgjB,KAAMhjB,KAAKmxB,cAC3BxuB,GAlGwDquB,IAqG9D,SAAiBI,GACfN,EAAeM,EAAM,QACrBT,EAAWS,EAAM,QACjBpxB,KAAKgjB,KAAOnkB,EAAE4R,KAAKzQ,KAAKixB,SAAW,GAAIG,GAAQpxB,KAAKmxB,SAAW,S,kCC7IjE,IAAIlD,EAAsBjvB,EAAQ,QAC9B0B,EAAqB1B,EAAQ,QAC7B2B,EAAe3B,EAAQ,QACvBmW,EAA4BnW,EAAQ,QACpCqyB,EAAqBryB,EAAQ,QAC7BsyB,EAAetyB,EAAQ,QACvBuyB,EAAoBvyB,EAAQ,QAC5BwyB,EAAexyB,EAAQ,QAEvBiH,EAAa,CACf3I,KAAM,aACNmC,SAOF,SAA4BC,EAASC,EAAIC,GACvC,IACIiD,EADA9C,EAAOC,KAEX,OAEA,SAAeE,GAEb,OADAR,EAAQS,MAAM,cACPmxB,EAAap0B,KAClB6C,EACAL,EACA+xB,EACA7xB,EACA,kBACA,wBACA,wBAPK0xB,CAQLpxB,IAGJ,SAASuxB,EAAWvxB,GAKlB,OAJA2C,EAAaorB,EACXluB,EAAKU,eAAeV,EAAKyB,OAAOzB,EAAKyB,OAAOc,OAAS,GAAG,IAAIiB,MAAM,GAAI,IAG3D,KAATrD,GACFR,EAAQS,MAAM,oBACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,oBAENkxB,EACL7xB,EACA2xB,EACE3xB,EACAA,EAAQ0T,QACNse,EACA/wB,EAAajB,EAASwT,EAAO,cAC7BvS,EAAajB,EAASwT,EAAO,eAE/BtT,EACA,wBACA,+BACA,qCACA,2BACA,iCAKCA,EAAIM,GAGb,SAASgT,EAAMhT,GACb,OAAa,OAATA,GAAiBQ,EAAmBR,IACtCR,EAAQW,KAAK,cAETN,EAAK6B,OAAO6F,QAAQzF,QAAQa,GAAc,GAC5C9C,EAAK6B,OAAO6F,QAAQQ,KAAKpF,GAGpBlD,EAAGO,IAGLN,EAAIM,MAlEXwxB,EAAiB,CACnBjyB,SAqEF,SAAuBC,EAASC,EAAIC,GAClC,OAEA,SAAeM,GACb,OAAOiV,EAA0BjV,GAC7BqxB,EAAkB7xB,EAASiyB,EAA3BJ,CAAmCrxB,GACnCN,EAAIM,IAGV,SAASyxB,EAAOzxB,GACd,OAAa,KAATA,GAAwB,KAATA,GAAwB,KAATA,EACzBsxB,EACL9xB,EACAiB,EAAajB,EAASwT,EAAO,cAC7BtT,EACA,kBACA,wBACA,wBANK4xB,CAOLtxB,GAGGN,EAAIM,GAGb,SAASgT,EAAMhT,GACb,OAAgB,OAATA,GAAiBQ,EAAmBR,GAAQP,EAAGO,GAAQN,EAAIM,KA7FpEiC,SAAS,GAiGXrF,EAAOD,QAAUoJ,G,kCC/GjBnJ,EAAOD,QAGP,SAAsB4F,EAAMsD,EAAM+H,GAChC,IAAI8e,EAAQ,GAEQ,mBAAT7mB,IACT+H,EAAU/H,EACVA,EAAO,MAMT,SAAS6rB,EAAIhvB,GACX,IAAI2N,EAMJ,OAJKxK,GAAQnD,EAAKmD,OAASA,IACzBwK,EAASzC,EAAQlL,EAAMgqB,EAAMzmB,WAG3BvD,EAAKiB,WAAuB,IAAX0M,EAQvB,SAAa1M,EAAUoK,GACrB,IAEI6X,EAFAxjB,EAASuB,EAASvB,OAClBqJ,GAAS,EAGbihB,EAAM3kB,KAAKgG,GAEX,OAAStC,EAAQrJ,GAGf,IAFAwjB,EAAQjiB,EAAS8H,MAEW,IAAfimB,EAAI9L,GACf,OAAO,EAMX,OAFA8G,EAAM/f,OAEC,EAxBEwQ,CAAIza,EAAKiB,SAAUjB,GAGrB2N,EAdTqhB,EAAInvB,K,kCCZN,IAAI7D,EAAiBI,EAAQ,QACzBsM,EAAgBtM,EAAQ,QACxBoI,EAAWpI,EAAQ,QAavB,SAASqsB,EAAUhO,EAAKgO,GACtB,IAAIhK,EACAqO,EACAmC,EACA3xB,EAEJ,IAAKmhB,KAAQgK,EAIX,IAAKnrB,KAHLwvB,EAAO9wB,EAAe1B,KAAKmgB,EAAKgE,GAAQhE,EAAIgE,GAAShE,EAAIgE,GAAQ,GACjEwQ,EAAQxG,EAAUhK,GAGhBqO,EAAKxvB,GAAQ2B,EACXuF,EAASyqB,EAAM3xB,IACftB,EAAe1B,KAAKwyB,EAAMxvB,GAAQwvB,EAAKxvB,GAAQ,IAMvD,SAAS2B,EAAW0D,EAAMusB,GAIxB,IAHA,IAAInmB,GAAS,EACTgmB,EAAS,KAEJhmB,EAAQpG,EAAKjD,SACE,UAApBiD,EAAKoG,GAAOiB,IAAkBklB,EAAWH,GAAQ1pB,KAAK1C,EAAKoG,IAI/D,OADAL,EAAcwmB,EAAU,EAAG,EAAGH,GACvBG,EAGTh1B,EAAOD,QA1CP,SAA2B6K,GAIzB,IAHA,IAAI2V,EAAM,GACN1R,GAAS,IAEJA,EAAQjE,EAAWpF,QAC1B+oB,EAAUhO,EAAK3V,EAAWiE,IAG5B,OAAO0R,I,+6C1BPF,SAAShS,EAAOsH,EAAKhP,OACtB,IAAI5G,KAAK4G,EAAOgP,EAAI5V,GAAK4G,EAAM5G,YAU9B,SAASg1B,EAAe3oB,EAAGZ,OAC5B,IAAIzL,KAAKqM,KAAa,aAANrM,KAAsBA,KAAKyL,GAAI,OAAO,MACtD,IAAIzL,KAAKyL,KAAa,aAANzL,GAAoBqM,EAAErM,KAAOyL,EAAEzL,GAAI,OAAO,W2BdzD,SAASi1B,EAAcnzB,QACxB8E,MAAQ9E,ECGP,SAASozB,EAAK70B,EAAG80B,YACdC,EAAaC,OACjBzS,EAAM3f,KAAK2D,MAAMgc,IACjB0S,EAAY1S,GAAOyS,EAAUzS,WAC5B0S,GAAa1S,IACjBA,EAAIziB,KAAOyiB,EAAI,MAASA,EAAIF,QAAU,MAGlCyS,GAIGA,EAASlyB,KAAK2D,MAAOyuB,KAAeC,EAHpCN,EAAe/xB,KAAK2D,MAAOyuB,YAM3BE,EAAO3uB,eACV4uB,sBAAwBJ,EACtB3uB,wBAAcpG,EAAGuG,UAEzB2uB,EAAOE,YAAc,SAAWp1B,EAAEo1B,aAAep1B,EAAEE,MAAQ,IAC3Dg1B,EAAO3zB,UAAU8zB,oBACjBH,SACOA,E,mRDvBRN,EAAcrzB,UAAY,IAAI+zB,aAENC,wBACxBX,EAAcrzB,UAAU4zB,sBAAwB,SAAS5uB,EAAOwb,UACxD4S,EAAe/xB,KAAK2D,MAAOA,IAAUouB,EAAe/xB,KAAKmf,MAAOA,IEVxE,IAAIyT,EAAcprB,cAClBA,cAAgB,YACXoZ,EAAM7a,MAAQ6a,EAAM7a,UAAmB6a,EAAMjB,MAChDiB,EAAMjd,MAAMgc,IAAMiB,EAAMjB,IACxBiB,EAAMjB,IAAM,MAETiT,GAAaA,EAAYhS,IAG9B,IAAaiS,EACM,oBAAV/0B,QACPA,OAAO2K,KACP3K,OAAO2K,IAAI,sBACZ,KASM,SAASqqB,EAAWve,YAIjBwe,EAAUpvB,EAAOgc,OACrBqT,EAAQ3nB,EAAO,GAAI1H,iBAChBqvB,EAAMrT,IAENpL,EACNye,GAFDrT,EAAMhc,EAAMgc,KAAOA,KAGM,iBAARA,GAAsB,YAAaA,GAAeA,EAAP,aAK7DoT,EAAUzpB,SAAWupB,EAKrBE,EAAUE,OAASF,EAEnBA,EAAUp0B,UAAU8zB,iBAAmBM,SACvCA,EAAUP,YAAc,eAAiBje,EAAGie,aAAeje,EAAGjX,MAAQ,IAC/Dy1B,MC/CFG,EAAQ,SAACrvB,EAAU0Q,UACR,MAAZ1Q,EAAyB,KACtBsvB,uBAAaA,uBAAatvB,GAAUkhB,IAAIxQ,KAInCiS,EAAW,CACvBzB,IAAKmO,EACL1iB,QAAS0iB,EACTE,eAAMvvB,UACEA,EAAWsvB,uBAAatvB,GAAUvB,OAAS,GAEnD+wB,cAAKxvB,OACEyvB,EAAaH,uBAAatvB,MACN,IAAtByvB,EAAWhxB,OAAc,KAAM,uBAC5BgxB,EAAW,IAEnB7M,QAAS0M,gBChBJI,EAAgB/rB,cAqBtB,SAASgsB,EAAc5S,UAClBA,IACCA,OAAoBA,YACvBA,aAA+BpQ,SAAQ,YACR,mBAAnBijB,OAA+BA,WAG3C7S,UAA2B,OAG5BA,EAAQvV,EAAO,GAAIuV,QACA,KACnBA,MAAkBA,OAAmBA,MAAgBmE,IAAIyO,IAGnD5S,EAGR,SAAS8S,EAAe9S,UACnBA,IACHA,MAAkB,KAClBA,MAAkBA,OAAmBA,MAAgBmE,IAAI2O,IAEnD9S,EAIR,SAAgBzW,aAEgB,OAC1BwpB,EAAc,cACQ,KAqHrB,SAASC,EAAUhT,OAErBH,EAAYG,gBACTH,GAAaA,OAAwBA,MAAqBG,GAG3D,SAASlf,EAAKmyB,OAChBC,EACArT,EACA5L,WAEK/K,EAAKnG,MACRmwB,IACJA,EAAOD,KACF/e,MACJ,YACC2L,EAAY5jB,EAAQyC,SAAWzC,KAEhC,YACCgY,EAAQxV,KAKPwV,QACGA,MAGF4L,QACEqT,SAGAtwB,wBAAcid,EAAW9c,UAGjCmG,EAAK0oB,YAAc,OACnB1oB,SACOA,ECxMR,SAAgBiqB,SACVC,EAAQ,UACRC,EAAO,KDPbzsB,cAAsB,SAASqN,EAAOqf,EAAUC,MAC3Ctf,EAAMC,aAEL2L,EACAG,EAAQsT,EAEJtT,EAAQA,UACVH,EAAYG,QAAqBH,aAChB,MAAjByT,QACHA,MAAgBC,MAChBD,MAAqBC,OAGf1T,MAA2B5L,EAAOqf,GAI5CX,EAAc1e,EAAOqf,EAAUC,KAwChChqB,EAASxL,UAAY,IAAI+zB,iBAMa,SAAS0B,EAASC,OACjDC,EAAsBD,MAGtBj3B,EAAI4C,KAEW,MAAjB5C,EAAEu2B,IACLv2B,EAAEu2B,EAAc,IAEjBv2B,EAAEu2B,EAAY1rB,KAAKqsB,OAEb/yB,EAAUqyB,EAAUx2B,OAEtBm3B,KACEC,EAAa,WACdD,IAEJA,KACAD,EAAoBG,qBACnBH,MAEG/yB,EACHA,EAAQmzB,GAERA,MAIFJ,MACCA,EAAoBG,qBACrBH,EAAoBG,qBAAuB,WAC1CD,IAEIF,OACHA,aAIII,EAAuB,eAKvBd,QAJEx2B,UACNA,UAAmB,GAAKs2B,EAAet2B,EAAE+hB,WACzC/hB,EAAE4hB,SAAS,KAAe5hB,MAAwB,OAG1Cw2B,EAAYx2B,EAAEu2B,EAAY9mB,OACjC+mB,EAAUe,oBAUQN,OACCj3B,SACrBA,EAAE4hB,SAAS,KAAe5hB,MAAwBA,UAAmB,KAEtEg3B,EAAQtf,KAAK0f,EAAYA,IAG1BrqB,EAASxL,UAAU81B,qBAAuB,gBACpCd,EAAc,IAGpBxpB,EAASxL,UAAUs0B,OAAS,SAAStvB,EAAOwb,GACvCnf,WAICA,KAAKA,IAALA,MACHA,KAAKA,IAALA,IAAsB,GAAKwzB,EAAcxzB,KAAKA,MAALA,KAAKA,IACpB,UAKtB40B,EACLzV,OAAoB3b,wBAAc6B,WAAU,KAAM1B,EAAMixB,iBACrDA,IAAUA,MAAsB,MAE7B,CACNpxB,wBAAc6B,WAAU,KAAM8Z,MAAmB,KAAOxb,EAAME,UAC9D+wB,ICrIF,IAAMrzB,EAAU,SAACgE,EAAMugB,EAAOljB,QACvBA,EAdgB,KAcSA,EAfR,IAqBtB2C,EAAK0uB,EAAK7vB,OAAO0hB,GAQhBvgB,EAAK5B,MAAMkxB,cACmB,MAA9BtvB,EAAK5B,MAAMkxB,YAAY,KAActvB,EAAK0uB,EAAKh0B,UAQjD2C,EAAO2C,EAAKyuB,EACLpxB,GAAM,MACLA,EAAKN,OAAS,GACpBM,aAEGA,EA1CiB,GA0CMA,EA3CL,SA8CtB2C,EAAKyuB,EAAQpxB,EAAOA,EA5CJ,KCJlB,SAAS+G,EAAgBhG,eACnBmxB,gBAAkB,kBAAMnxB,EAAMmI,SAC5BnI,EAAME,SASd,SAASmG,EAAOrG,OACToxB,EAAQ/0B,KACVg1B,EAAYrxB,EAAM2J,EAClBvF,EAAOvE,wBACVmG,EACA,CAAEmC,QAASipB,EAAMjpB,SACjBnI,OAGDoxB,EAAMN,qBAAuB,eACxBxmB,EAAS8mB,EAAME,EAAMC,WACrBjnB,GAAQA,EAAOknB,YAAYJ,EAAME,GACrCG,cAASL,EAAMM,IAKZN,EAAMznB,GAAcynB,EAAMznB,IAAe0nB,IAC5CD,EAAMN,uBAGNM,EAAMO,MAKH3xB,MACEoxB,EAAMO,GAyBVN,MAAsBD,MACtB9B,iBAAOlrB,EAAMitB,GACbD,MAAkBC,QAzBlBD,EAAME,EAAQ5tB,SAASkuB,eAAe,IAEtCR,MAAkBC,MAGlBQ,kBAAQ,GAAIR,GAEZA,EAAUS,YAAYV,EAAME,GAE5BF,EAAMO,KACNP,EAAMznB,EAAa0nB,EAEnB/B,iBAAOlrB,EAAMitB,EAAWD,EAAME,GAE9BD,MAAsBD,MAEtBA,MAAkBA,EAAME,OAcjBF,EAAMO,GACdP,EAAMN,uBAKPM,EAAMM,EAAQttB,EAQR,SAAS2tB,EAAa9U,EAAOoU,UAC5BxxB,wBAAcwG,EAAQ,KAAU4W,EAAOtT,EAAY0nB,KD9B3DjB,EAAap1B,UAAY,IAAI+zB,iBAEO,SAAS5M,OACtCvgB,EAAOvF,KACP21B,EAAY/B,EAAUruB,OAExB3C,EAAO2C,EAAK0uB,EAAKr2B,IAAIkoB,UACzBljB,EA5DuB,KA8DhB,SAAAyG,GAAA,IACAusB,EAAmB,WACnBrwB,EAAK5B,MAAMkxB,aAKfjyB,EAAKqF,KAAK4tB,GACVt0B,EAAQgE,EAAMugB,EAAOljB,IAHrBizB,KAMEF,EACHA,EAAUC,GAEVA,MAKH7B,EAAap1B,UAAUs0B,OAAS,SAAStvB,QACnCqwB,EAAQ,UACRC,EAAO,IAAI6B,QAEVjyB,EAAWsvB,uBAAaxvB,EAAME,UAChCF,EAAMkxB,aAAwC,MAAzBlxB,EAAMkxB,YAAY,IAI1ChxB,EAASkK,cAIL,IAAIhR,EAAI8G,EAASvB,OAAQvF,UAYxBk3B,EAAKjD,IAAIntB,EAAS9G,GAAKiD,KAAKg0B,EAAQ,CAAC,EAAG,EAAGh0B,KAAKg0B,WAE/CrwB,EAAME,UAGdkwB,EAAap1B,UAAUo3B,mBAAqBhC,EAAap1B,UAAUq3B,kBAAoB,2BAOjF/B,EAAKzjB,SAAQ,SAAC5N,EAAMkjB,GACxBvkB,EAAQwzB,EAAMjP,EAAOljB,WEnHVqzB,EACM,oBAAVn4B,QAAyBA,OAAO2K,KAAO3K,OAAO2K,IAAI,kBAC1D,MAEKytB,EAAc,mOAKdC,EACY,oBAAVr4B,OAAwB,eAAiB,cAuCjD,SAAgBm1B,EAAOrS,EAAO3S,EAAQuG,UAGb,MAApBvG,QACHA,EAAOmoB,YAAc,IAGtBC,iBAAazV,EAAO3S,GACG,mBAAZuG,GAAwBA,IAE5BoM,EAAQA,MAAmB,KAGnC,SAAgB4U,EAAQ5U,EAAO3S,EAAQuG,UACtC8hB,kBAAc1V,EAAO3S,GACE,mBAAZuG,GAAwBA,IAE5BoM,EAAQA,MAAmB,KArDnC8R,YAAU/zB,UAAU8zB,iBAAmB,GASvC,CACC,qBACA,4BACA,uBACCjiB,SAAQ,YACT/S,OAAOC,eAAeg1B,YAAU/zB,UAAWL,EAAK,CAC/Ci4B,gBACA34B,sBACQoC,KAAK,UAAY1B,IAEzB0yB,aAAIjoB,GACHtL,OAAOC,eAAesC,KAAM1B,EAAK,CAChCi4B,gBACAC,YACAx4B,MAAO+K,UAiCX,IAAI0tB,EAAejvB,UAAQuF,MAS3B,SAAS2pB,KAET,SAASC,WACD32B,KAAK42B,aAGb,SAASC,WACD72B,KAAK82B,iBAfbtvB,UAAQuF,MAAQ,mBACX0pB,IAAcp3B,EAAIo3B,EAAap3B,IACnCA,EAAE03B,QAAUL,EACZr3B,EAAEs3B,qBAAuBA,EACzBt3B,EAAEw3B,mBAAqBA,EACfx3B,EAAE23B,YAAc33B,GAazB,IA6EIoe,EA7EAwZ,EAAsB,CACzBV,gBACA34B,sBACQoC,KAAK6hB,QAIVqV,EAAe1vB,UAAQoZ,MAC3BpZ,UAAQoZ,MAAQ,gBACX7a,EAAO6a,EAAM7a,KACbpC,EAAQid,EAAMjd,MACdwzB,EAAkBxzB,KAGF,iBAAToC,EAAmB,KAGxB,IAAIhJ,KAFTo6B,EAAkB,GAEJxzB,EAAO,KAChB3F,EAAQ2F,EAAM5G,GAER,iBAANA,GAAwB,UAAW4G,GAAwB,MAAfA,EAAM3F,MAGrDjB,EAAI,QACY,aAANA,QAAoBiB,EAM9BA,EAAQ,GACE,iBAAiB8B,KAAK/C,GAChCA,EAAI,aAEJ,6BAA6B+C,KAAK/C,EAAIgJ,KACrCowB,EAAqBr2B,KAAK6D,EAAMoC,MAEjChJ,EAAI,UACM,6BAA6B+C,KAAK/C,GAC5CA,EAAIA,EAAEoX,cACI+hB,EAAYp2B,KAAK/C,GAC3BA,EAAIA,EAAE6T,QAAQ,WAAY,OAAOuD,cACb,OAAVnW,IACVA,UAGDm5B,EAAgBp6B,GAAKiB,EAKb,UAAR+H,GACAoxB,EAAgBC,UAChB9mB,MAAMiW,QAAQ4Q,EAAgBn5B,SAG9Bm5B,EAAgBn5B,MAAQm1B,uBAAaxvB,EAAME,UAAU2M,SAAQ,YAC5DsV,EAAMniB,MAAM0zB,UAC0C,GAArDF,EAAgBn5B,MAAMgE,QAAQ8jB,EAAMniB,MAAM3F,WAI7C4iB,EAAMjd,MAAQwzB,EAGXpxB,GAAQpC,EAAMke,OAASle,EAAMyB,YAChC6xB,EAAoBt5B,WAAa,cAAegG,EACzB,MAAnBA,EAAMyB,YAAmB+xB,EAAgBtV,MAAQle,EAAMyB,WAC3D3H,OAAOC,eAAey5B,EAAiB,YAAaF,IAGrDrW,EAAMtX,SAAW2sB,EAEbiB,GAAcA,EAAatW,IAKhC,IAAM9C,EAAkBtW,cACxBA,cAAkB,SAASoZ,GACtB9C,GACHA,EAAgB8C,GAEjBnD,EAAmBmD,OAOpB,IAAa0W,EAAqD,CACjEC,uBAAwB,CACvB9X,QAAS,CACR+X,qBAAY1rB,UACJ2R,MAAgC3R,OAAanI,MAAM3F,UhD3JxDsF,EAAU,SAMhB,SAASm0B,EAAc1xB,UACfvC,gBAAcjF,KAAK,KAAMwH,GAQjC,SAAS2xB,EAAevwB,WACdA,GAAWA,EAAQmC,WAAa2sB,EAU1C,SAAS/uB,EAAaC,UAChBuwB,EAAevwB,GACbwwB,eAAmB/iB,MAAM,KAAMvS,WADD8E,EAStC,SAASywB,EAAuB5C,WAC3BA,QACHqB,iBAAa,KAAMrB,OAWrB,SAAS6C,EAAYpX,UAElBA,IACCA,EAAUhT,MAAgC,IAAvBgT,EAAUqX,UAAkBrX,IACjD,KAYF,IAAMsX,EAA0B,SAACvjB,EAAUiN,UAAQjN,EAASiN,IAMtDvX,EAAa7E,WAgCJ,WACdiZ,aACAE,eACAS,cACAI,oBACAC,WACAI,wBACAF,YACAM,gBACAC,eACAG,kBACA5c,QAlHe,SAmHfkjB,WACAyM,SACAuC,UACAoC,yBACAlC,eACAlyB,8BACAw0B,8BACAP,gBACAvwB,eACA+wB,sBACA5yB,oBACAqyB,iBACAG,cACAnF,sBACAV,gBACAC,OACAa,aACAiF,0BACA7tB,WA9DkB7E,WA+DlB8E,WACA4pB,eACAryB,OACA41B,uD,oCiD1KD,IAAI/M,EAAmBvrB,EAAQ,QAE3Bma,EAAkB,CACpB7b,KAAM,kBACNmC,SAGF,SAAiCC,EAASC,EAAIC,GAC5C,OAEA,SAAeM,GAKb,OAJAR,EAAQS,MAAM,mBACdT,EAAQS,MAAM,gBACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,gBACNC,GAGT,SAASA,EAAKJ,GACZ,OAAIqqB,EAAiBrqB,IACnBR,EAAQS,MAAM,wBACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,wBACbX,EAAQW,KAAK,mBACNV,GAGFC,EAAIM,MAIfpD,EAAOD,QAAUsc,G,kCC/BjB,IAAI9N,EAAS5N,OAAO4N,OAEpBvO,EAAOD,QAAUwO,G,kCCEjBvO,EAAOD,QAJP,SAAmCqD,GACjC,OAAOA,EAAO,GAAc,KAATA,I,kCCDrB,IAEIf,EAFaH,EAAQ,OAEL8I,CAAW,cAE/BhL,EAAOD,QAAUsC,G,kCC8DjBrC,EAAOD,QAjEM,CACX,UACA,UACA,QACA,OACA,WACA,aACA,OACA,UACA,SACA,MACA,WACA,KACA,UACA,SACA,MACA,MACA,KACA,KACA,WACA,aACA,SACA,SACA,OACA,QACA,WACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,KACA,OACA,SACA,SACA,KACA,OACA,OACA,OACA,WACA,MACA,WACA,KACA,WACA,SACA,IACA,QACA,UACA,SACA,UACA,QACA,QACA,KACA,QACA,KACA,QACA,QACA,KACA,QACA,O,kCC/DF,IAAI2Q,EAAemB,OAAOnB,aAE1B1Q,EAAOD,QAAU2Q,G,kCCFjB,IAAIA,EAAexO,EAAQ,QACvBC,EAAoBD,EAAQ,QAC5B0B,EAAqB1B,EAAQ,QAC7BmJ,EAAgBnJ,EAAQ,QACxBoM,EAAmBpM,EAAQ,QAC3BmW,EAA4BnW,EAAQ,QACpCmM,EAAanM,EAAQ,QACrBk5B,EAAiBl5B,EAAQ,QACzBm5B,EAAen5B,EAAQ,QAEvBua,EAAW,CACbjc,KAAM,WACNmC,SA8BF,SAA0BC,EAASC,EAAIC,GACrC,IACIgoB,EACAwQ,EACAhR,EACAzb,EACAqJ,EALAjV,EAAOC,KAMX,OAEA,SAAeE,GAIb,OAHAR,EAAQS,MAAM,YACdT,EAAQS,MAAM,gBACdT,EAAQU,QAAQF,GACTI,GAGT,SAASA,EAAKJ,GACZ,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACTm4B,GAGI,KAATn4B,GACFR,EAAQU,QAAQF,GACTo4B,GAGI,KAATp4B,GACFR,EAAQU,QAAQF,GAChB0nB,EAAO,EAGA7nB,EAAKkC,UAAYtC,EAAK44B,GAG3BptB,EAAWjL,IACbR,EAAQU,QAAQF,GAChBknB,EAAS5Z,EAAatN,GACtBk4B,GAAW,EACJI,GAGF54B,EAAIM,GAGb,SAASm4B,EAAiBn4B,GACxB,OAAa,KAATA,GACFR,EAAQU,QAAQF,GAChB0nB,EAAO,EACA6Q,GAGI,KAATv4B,GACFR,EAAQU,QAAQF,GAChB0nB,EAAO,EACPR,EAAS,SACTzb,EAAQ,EACD+sB,GAGLvtB,EAAWjL,IACbR,EAAQU,QAAQF,GAChB0nB,EAAO,EACA7nB,EAAKkC,UAAYtC,EAAK44B,GAGxB34B,EAAIM,GAGb,SAASu4B,EAAkBv4B,GACzB,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACTH,EAAKkC,UAAYtC,EAAK44B,GAGxB34B,EAAIM,GAGb,SAASw4B,EAAgBx4B,GACvB,OAAIA,IAASknB,EAAOxX,WAAWjE,MAC7BjM,EAAQU,QAAQF,GACTyL,IAAUyb,EAAO9kB,OACpBvC,EAAKkC,UACHtC,EACAwT,EACFulB,GAGC94B,EAAIM,GAGb,SAASo4B,EAAcp4B,GACrB,OAAIiL,EAAWjL,IACbR,EAAQU,QAAQF,GAChBknB,EAAS5Z,EAAatN,GACfs4B,GAGF54B,EAAIM,GAGb,SAASs4B,EAAQt4B,GACf,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACAiV,EAA0BjV,GAGf,KAATA,GACAk4B,GACAD,EAAan2B,QAAQolB,EAAOjT,gBAAkB,GAE9CyT,EAAO,EACA7nB,EAAKkC,UAAYtC,EAAGO,GAAQiT,EAAajT,IAG9Cg4B,EAAel2B,QAAQolB,EAAOjT,gBAAkB,GAClDyT,EAAO,EAEM,KAAT1nB,GACFR,EAAQU,QAAQF,GACTy4B,GAGF54B,EAAKkC,UAAYtC,EAAGO,GAAQiT,EAAajT,KAGlD0nB,EAAO,EAEA7nB,EAAKkC,UACRrC,EAAIM,GACJk4B,EACAQ,EAA4B14B,GAC5B24B,EAAwB34B,IAGjB,KAATA,GAAejB,EAAkBiB,IACnCR,EAAQU,QAAQF,GAChBknB,GAAU5Z,EAAatN,GAChBs4B,GAGF54B,EAAIM,GAGb,SAASy4B,EAAiBz4B,GACxB,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACTH,EAAKkC,UAAYtC,EAAKwT,GAGxBvT,EAAIM,GAGb,SAAS24B,EAAwB34B,GAC/B,OAAIiI,EAAcjI,IAChBR,EAAQU,QAAQF,GACT24B,GAGFC,EAAY54B,GAGrB,SAAS04B,EAA4B14B,GACnC,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACT44B,GAGI,KAAT54B,GAAwB,KAATA,GAAeiL,EAAWjL,IAC3CR,EAAQU,QAAQF,GACT64B,GAGL5wB,EAAcjI,IAChBR,EAAQU,QAAQF,GACT04B,GAGFE,EAAY54B,GAGrB,SAAS64B,EAAsB74B,GAC7B,OACW,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACAjB,EAAkBiB,IAElBR,EAAQU,QAAQF,GACT64B,GAGFC,EAA2B94B,GAGpC,SAAS84B,EAA2B94B,GAClC,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACT+4B,GAGL9wB,EAAcjI,IAChBR,EAAQU,QAAQF,GACT84B,GAGFJ,EAA4B14B,GAGrC,SAAS+4B,EAA6B/4B,GACpC,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,EAEON,EAAIM,GAGA,KAATA,GAAwB,KAATA,GACjBR,EAAQU,QAAQF,GAChB8U,EAAS9U,EACFg5B,GAGL/wB,EAAcjI,IAChBR,EAAQU,QAAQF,GACT+4B,IAGTjkB,OAASrS,EACFw2B,EAA+Bj5B,IAGxC,SAASg5B,EAA6Bh5B,GACpC,OAAIA,IAAS8U,GACXtV,EAAQU,QAAQF,GACTk5B,GAGI,OAATl5B,GAAiBQ,EAAmBR,GAC/BN,EAAIM,IAGbR,EAAQU,QAAQF,GACTg5B,GAGT,SAASC,EAA+Bj5B,GACtC,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACAiV,EAA0BjV,GAEnB84B,EAA2B94B,IAGpCR,EAAQU,QAAQF,GACTi5B,GAGT,SAASC,EAAkCl5B,GACzC,OAAa,KAATA,GAAwB,KAATA,GAAeiI,EAAcjI,GACvC04B,EAA4B14B,GAG9BN,EAAIM,GAGb,SAAS44B,EAAY54B,GACnB,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACTm5B,GAGFz5B,EAAIM,GAGb,SAASm5B,EAAcn5B,GACrB,OAAIiI,EAAcjI,IAChBR,EAAQU,QAAQF,GACTm5B,GAGO,OAATn5B,GAAiBQ,EAAmBR,GACvCiT,EAAajT,GACbN,EAAIM,GAGV,SAASiT,EAAajT,GACpB,OAAa,KAATA,GAAwB,IAAT0nB,GACjBloB,EAAQU,QAAQF,GACTo5B,GAGI,KAATp5B,GAAwB,IAAT0nB,GACjBloB,EAAQU,QAAQF,GACTq5B,GAGI,KAATr5B,GAAwB,IAAT0nB,GACjBloB,EAAQU,QAAQF,GACTs5B,GAGI,KAATt5B,GAAwB,IAAT0nB,GACjBloB,EAAQU,QAAQF,GACTq4B,GAGI,KAATr4B,GAAwB,IAAT0nB,GACjBloB,EAAQU,QAAQF,GACTu5B,IAGL/4B,EAAmBR,IAAmB,IAAT0nB,GAAuB,IAATA,EAQlC,OAAT1nB,GAAiBQ,EAAmBR,GAC/Bw5B,EAAyBx5B,IAGlCR,EAAQU,QAAQF,GACTiT,GAZEzT,EAAQyB,MACbw4B,EACAH,EACAE,EAHKh6B,CAILQ,GAWN,SAASw5B,EAAyBx5B,GAEhC,OADAR,EAAQW,KAAK,gBACNu5B,EAAkB15B,GAG3B,SAAS05B,EAAkB15B,GACzB,OAAa,OAATA,EACKyU,EAAKzU,GAGVQ,EAAmBR,IACrBR,EAAQS,MAAM,cACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,cACNu5B,IAGTl6B,EAAQS,MAAM,gBACPgT,EAAajT,IAGtB,SAASo5B,EAA0Bp5B,GACjC,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACTq4B,GAGFplB,EAAajT,GAGtB,SAASq5B,EAAuBr5B,GAC9B,OAAa,KAATA,GACFR,EAAQU,QAAQF,GAChBknB,EAAS,GACFyS,GAGF1mB,EAAajT,GAGtB,SAAS25B,EAAsB35B,GAC7B,OAAa,KAATA,GAAei4B,EAAan2B,QAAQolB,EAAOjT,gBAAkB,GAC/DzU,EAAQU,QAAQF,GACTs5B,GAGLruB,EAAWjL,IAASknB,EAAO9kB,OAAS,GACtC5C,EAAQU,QAAQF,GAChBknB,GAAU5Z,EAAatN,GAChB25B,GAGF1mB,EAAajT,GAGtB,SAASu5B,EAAgCv5B,GACvC,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACTq4B,GAGFplB,EAAajT,GAGtB,SAASq4B,EAA8Br4B,GACrC,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACTs5B,GAGFrmB,EAAajT,GAGtB,SAASs5B,EAAkBt5B,GACzB,OAAa,OAATA,GAAiBQ,EAAmBR,IACtCR,EAAQW,KAAK,gBACNsU,EAAKzU,KAGdR,EAAQU,QAAQF,GACTs5B,GAGT,SAAS7kB,EAAKzU,GAEZ,OADAR,EAAQW,KAAK,YACNV,EAAGO,KAtcZ45B,UAQF,SAA2Bt4B,GACzB,IAAImK,EAAQnK,EAAOc,OAEnB,KAAOqJ,MACoB,UAArBnK,EAAOmK,GAAO,IAA4C,aAA1BnK,EAAOmK,GAAO,GAAG5F,QAKnD4F,EAAQ,GAAmC,eAA9BnK,EAAOmK,EAAQ,GAAG,GAAG5F,OAEpCvE,EAAOmK,GAAO,GAAGlG,MAAQjE,EAAOmK,EAAQ,GAAG,GAAGlG,MAE9CjE,EAAOmK,EAAQ,GAAG,GAAGlG,MAAQjE,EAAOmK,EAAQ,GAAG,GAAGlG,MAElDjE,EAAOiN,OAAO9C,EAAQ,EAAG,IAG3B,OAAOnK,GAzBPu4B,UAAU,GAERJ,EAAqB,CACvBl6B,SAscF,SAA2BC,EAASC,EAAIC,GACtC,OAEA,SAAeM,GAKb,OAJAR,EAAQW,KAAK,gBACbX,EAAQS,MAAM,mBACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,mBACNX,EAAQ0T,QAAQhI,EAAkBzL,EAAIC,KA7c/CuC,SAAS,GAidXrF,EAAOD,QAAU0c,G,kCCnejB,IAAIta,EAAoBD,EAAQ,QAC5B0B,EAAqB1B,EAAQ,QAC7BmJ,EAAgBnJ,EAAQ,QACxB2B,EAAe3B,EAAQ,QACvBmW,EAA4BnW,EAAQ,QACpCmM,EAAanM,EAAQ,QAErBwa,EAAW,CACblc,KAAM,WACNmC,SAGF,SAA0BC,EAASC,EAAIC,GACrC,IACIoV,EACAoS,EACAzb,EACAquB,EAJAj6B,EAAOC,KAKX,OAEA,SAAeE,GAIb,OAHAR,EAAQS,MAAM,YACdT,EAAQS,MAAM,gBACdT,EAAQU,QAAQF,GACTI,GAGT,SAASA,EAAKJ,GACZ,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACT+5B,GAGI,KAAT/5B,GACFR,EAAQU,QAAQF,GACTo4B,GAGI,KAATp4B,GACFR,EAAQU,QAAQF,GACTg6B,GAGL/uB,EAAWjL,IACbR,EAAQU,QAAQF,GACTi6B,GAGFv6B,EAAIM,GAGb,SAAS+5B,EAAgB/5B,GACvB,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACTk6B,GAGI,KAATl6B,GACFR,EAAQU,QAAQF,GAChBknB,EAAS,SACTzb,EAAQ,EACD0uB,GAGLlvB,EAAWjL,IACbR,EAAQU,QAAQF,GACTo6B,GAGF16B,EAAIM,GAGb,SAASk6B,EAAYl6B,GACnB,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACTq6B,GAGF36B,EAAIM,GAGb,SAASq6B,EAAar6B,GACpB,OAAa,OAATA,GAA0B,KAATA,EACZN,EAAIM,GAGA,KAATA,GACFR,EAAQU,QAAQF,GACTs6B,GAGFC,EAAQv6B,GAGjB,SAASs6B,EAAiBt6B,GACxB,OAAa,OAATA,GAA0B,KAATA,EACZN,EAAIM,GAGNu6B,EAAQv6B,GAGjB,SAASu6B,EAAQv6B,GACf,OAAa,OAATA,EACKN,EAAIM,GAGA,KAATA,GACFR,EAAQU,QAAQF,GACTw6B,GAGLh6B,EAAmBR,IACrB85B,EAAcS,EACPE,EAAaz6B,KAGtBR,EAAQU,QAAQF,GACTu6B,GAGT,SAASC,EAAax6B,GACpB,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACTgI,GAGFuyB,EAAQv6B,GAGjB,SAASm6B,EAAUn6B,GACjB,OAAIA,IAASknB,EAAOxX,WAAWjE,MAC7BjM,EAAQU,QAAQF,GACTyL,IAAUyb,EAAO9kB,OAASs4B,EAAQP,GAGpCz6B,EAAIM,GAGb,SAAS06B,EAAM16B,GACb,OAAa,OAATA,EACKN,EAAIM,GAGA,KAATA,GACFR,EAAQU,QAAQF,GACT26B,GAGLn6B,EAAmBR,IACrB85B,EAAcY,EACPD,EAAaz6B,KAGtBR,EAAQU,QAAQF,GACT06B,GAGT,SAASC,EAAW36B,GAClB,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACT46B,GAGFF,EAAM16B,GAGf,SAAS46B,EAAS56B,GAChB,OAAa,KAATA,EACKgI,EAAIhI,GAGA,KAATA,GACFR,EAAQU,QAAQF,GACT46B,GAGFF,EAAM16B,GAGf,SAASo6B,EAAYp6B,GACnB,OAAa,OAATA,GAA0B,KAATA,EACZgI,EAAIhI,GAGTQ,EAAmBR,IACrB85B,EAAcM,EACPK,EAAaz6B,KAGtBR,EAAQU,QAAQF,GACTo6B,GAGT,SAASJ,EAAYh6B,GACnB,OAAa,OAATA,EACKN,EAAIM,GAGA,KAATA,GACFR,EAAQU,QAAQF,GACT66B,GAGLr6B,EAAmBR,IACrB85B,EAAcE,EACPS,EAAaz6B,KAGtBR,EAAQU,QAAQF,GACTg6B,GAGT,SAASa,EAAiB76B,GACxB,OAAgB,KAATA,EAAcgI,EAAIhI,GAAQg6B,EAAYh6B,GAG/C,SAASo4B,EAAcp4B,GACrB,OAAIiL,EAAWjL,IACbR,EAAQU,QAAQF,GACT86B,GAGFp7B,EAAIM,GAGb,SAAS86B,EAAS96B,GAChB,OAAa,KAATA,GAAejB,EAAkBiB,IACnCR,EAAQU,QAAQF,GACT86B,GAGFC,EAAgB/6B,GAGzB,SAAS+6B,EAAgB/6B,GACvB,OAAIQ,EAAmBR,IACrB85B,EAAciB,EACPN,EAAaz6B,IAGlBiI,EAAcjI,IAChBR,EAAQU,QAAQF,GACT+6B,GAGF/yB,EAAIhI,GAGb,SAASi6B,EAAQj6B,GACf,OAAa,KAATA,GAAejB,EAAkBiB,IACnCR,EAAQU,QAAQF,GACTi6B,GAGI,KAATj6B,GAAwB,KAATA,GAAeiV,EAA0BjV,GACnDg7B,EAAeh7B,GAGjBN,EAAIM,GAGb,SAASg7B,EAAeh7B,GACtB,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACTgI,GAGI,KAAThI,GAAwB,KAATA,GAAeiL,EAAWjL,IAC3CR,EAAQU,QAAQF,GACTi7B,GAGLz6B,EAAmBR,IACrB85B,EAAckB,EACPP,EAAaz6B,IAGlBiI,EAAcjI,IAChBR,EAAQU,QAAQF,GACTg7B,GAGFhzB,EAAIhI,GAGb,SAASi7B,EAAqBj7B,GAC5B,OACW,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACAjB,EAAkBiB,IAElBR,EAAQU,QAAQF,GACTi7B,GAGFC,EAA0Bl7B,GAGnC,SAASk7B,EAA0Bl7B,GACjC,OAAa,KAATA,GACFR,EAAQU,QAAQF,GACTm7B,GAGL36B,EAAmBR,IACrB85B,EAAcoB,EACPT,EAAaz6B,IAGlBiI,EAAcjI,IAChBR,EAAQU,QAAQF,GACTk7B,GAGFF,EAAeh7B,GAGxB,SAASm7B,EAA4Bn7B,GACnC,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,EAEON,EAAIM,GAGA,KAATA,GAAwB,KAATA,GACjBR,EAAQU,QAAQF,GAChB8U,EAAS9U,EACFo7B,GAGL56B,EAAmBR,IACrB85B,EAAcqB,EACPV,EAAaz6B,IAGlBiI,EAAcjI,IAChBR,EAAQU,QAAQF,GACTm7B,IAGT37B,EAAQU,QAAQF,GAChB8U,OAASrS,EACF44B,GAGT,SAASD,EAA4Bp7B,GACnC,OAAIA,IAAS8U,GACXtV,EAAQU,QAAQF,GACTs7B,GAGI,OAATt7B,EACKN,EAAIM,GAGTQ,EAAmBR,IACrB85B,EAAcsB,EACPX,EAAaz6B,KAGtBR,EAAQU,QAAQF,GACTo7B,GAGT,SAASE,EAAiCt7B,GACxC,OAAa,KAATA,GAAwB,KAATA,GAAeiV,EAA0BjV,GACnDg7B,EAAeh7B,GAGjBN,EAAIM,GAGb,SAASq7B,EAA8Br7B,GACrC,OACW,OAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,GACS,KAATA,EAEON,EAAIM,GAGA,KAATA,GAAeiV,EAA0BjV,GACpCg7B,EAAeh7B,IAGxBR,EAAQU,QAAQF,GACTq7B,GAIT,SAASZ,EAAaz6B,GAKpB,OAJAR,EAAQW,KAAK,gBACbX,EAAQS,MAAM,cACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,cACNM,EACLjB,EACA+7B,EACA,aACA17B,EAAK6B,OAAOC,WAAWC,QAAQC,KAAKC,QAAQ,iBAAmB,OAC3DW,EACA,GAIR,SAAS84B,EAAYv7B,GAEnB,OADAR,EAAQS,MAAM,gBACP65B,EAAY95B,GAGrB,SAASgI,EAAIhI,GACX,OAAa,KAATA,GACFR,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,gBACbX,EAAQW,KAAK,YACNV,GAGFC,EAAIM,MAIfpD,EAAOD,QAAU2c,G,oCChbjB/b,OAAOC,eAAeb,EAAS,aAAc,CAC5CmB,OAAO,IAERnB,EAAQ6+B,KAAO7+B,EAAQ8+B,WAAQh5B,EAE/B,IAAIi5B,EAAWn+B,OAAO4N,QAAU,SAAUjJ,GAAU,IAAK,IAAIrF,EAAI,EAAGA,EAAIsF,UAAUC,OAAQvF,IAAK,CAAE,IAAIwF,EAASF,UAAUtF,GAAI,IAAK,IAAIuB,KAAOiE,EAAc9E,OAAOkB,UAAUC,eAAe1B,KAAKqF,EAAQjE,KAAQ8D,EAAO9D,GAAOiE,EAAOjE,IAAY,OAAO8D,GAEnPy5B,EAAU78B,EAAQ,QAElB88B,EAAgB98B,EAAQ,QAI5B,SAAS+8B,EAAgBC,EAAUC,GAAe,KAAMD,aAAoBC,GAAgB,MAAM,IAAIC,UAAU,qCAEhH,SAASC,EAA2Bp8B,EAAM7C,GAAQ,IAAK6C,EAAQ,MAAM,IAAIq8B,eAAe,6DAAgE,OAAOl/B,GAAyB,iBAATA,GAAqC,mBAATA,EAA8B6C,EAAP7C,EAIlO,IAAIy+B,EAAQ9+B,EAAQ8+B,MAAQ,SAAUU,GAGrC,SAASV,IACR,IAAI1G,EAAOF,EAEXgH,EAAgB/7B,KAAM27B,GAEtB,IAAK,IAAIW,EAAOj6B,UAAUC,OAAQ4c,EAAO5O,MAAMgsB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC5Erd,EAAKqd,GAAQl6B,UAAUk6B,GAGxB,OAAetH,EAASF,EAAQoH,EAA2Bn8B,KAAMq8B,EAAWn/B,KAAK0X,MAAMynB,EAAY,CAACr8B,MAAMmG,OAAO+Y,KAAiB6V,EAAMyH,OAAS,SAAUx5B,GAC1J+xB,EAAM0H,QAAUz5B,EAChB+xB,EAAM/V,SAAS,KACLmd,EAA2BpH,EAAnCE,GAsBJ,OAvCD,SAAmByH,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIT,UAAU,kEAAoES,GAAeD,EAAS/9B,UAAYlB,OAAOY,OAAOs+B,GAAcA,EAAWh+B,UAAW,CAAEiU,YAAa,CAAE5U,MAAO0+B,EAAU/+B,YAAY,EAAO64B,UAAU,EAAMD,cAAc,KAAeoG,IAAYl/B,OAAOm/B,eAAiBn/B,OAAOm/B,eAAeF,EAAUC,GAAcD,EAASG,UAAYF,GAGheG,CAAUnB,EAAOU,GAiBjBV,EAAMh9B,UAAUq3B,kBAAoB,WACnC8F,EAAciB,YAAY90B,KAAKjI,KAAKw8B,SAGrCb,EAAMh9B,UAAU81B,qBAAuB,WACtCqH,EAAciB,YAAYtuB,OAAOqtB,EAAciB,YAAY/6B,QAAQhC,KAAKw8B,UAAY,EAAG,IAGxFb,EAAMh9B,UAAUs0B,OAAS,SAAgBtvB,GACxC,IAAIX,EAAMhD,KAAKy8B,UAAW,EAAIX,EAAckB,iBACxCha,EAAOhgB,EAAI4N,QAAQ,QAAS,IAEhC,OADA5Q,KAAKy8B,QAAU,KACR94B,EAAME,SAAS,CACrBb,IAAKA,EACLggB,KAAMA,EACNia,SAA2D,KAAlD,EAAInB,EAAcrU,MAAMzE,EAAMrf,EAAMqf,KAAM,OAI9C2Y,EArCoB,CAsC1BE,EAAQnJ,WAENgJ,EAAO,SAAcwB,GACxB,IAAIC,EAAkBD,EAAKC,gBACvBna,EAAOka,EAAKla,KACZrf,EAnDL,SAAkCgP,EAAK2D,GAAQ,IAAIlU,EAAS,GAAI,IAAK,IAAIrF,KAAK4V,EAAW2D,EAAKtU,QAAQjF,IAAM,GAAkBU,OAAOkB,UAAUC,eAAe1B,KAAKyV,EAAK5V,KAAcqF,EAAOrF,GAAK4V,EAAI5V,IAAM,OAAOqF,EAmDtMg7B,CAAyBF,EAAM,CAAC,kBAAmB,SAE/D,OAAO,EAAIrB,EAAQjzB,GAClB+yB,EACA,CAAE3Y,KAAMA,GAAQrf,EAAMZ,OACtB,SAAUs6B,GACT,IAAIJ,EAAUI,EAAMJ,QACpB,OAAO,EAAIpB,EAAQjzB,GAAGkzB,EAAcJ,KAAME,EAAS,GAAIj4B,EAAO,CAAE,MAAS,CAACA,EAAMke,OAASle,EAAMyB,UAAW63B,GAAWE,GAAiBjmB,OAAOomB,SAAS7sB,KAAK,YAK9J5T,EAAQ6+B,KAAOA,EACf7+B,EAAQyC,QAAUq8B,EAElBA,EAAMD,KAAOA,G,mBC/Eb5+B,EAAOD,QAAUmC,QAAQ,S,kCCMzBlC,EAAOD,QAJP,SAAuBqD,GACrB,OAAiB,IAAVA,IAAyB,IAAVA,GAAwB,KAATA,I,2DCDvCzC,OAAOC,eAAeb,EAAS,aAAc,CAACmB,OAAO,IAErD,IAAI0C,EAAqB1B,EAAQ,QAC7B2B,EAAe3B,EAAQ,QACvBoM,EAAmBpM,EAAQ,QAE3BS,EAQJ,SAA4BC,GAC1B,IAOI69B,EACAC,EACAC,EATA19B,EAAOC,KACP4sB,EAAQ,GACR8Q,EAAY,EACZC,EAAmB,CACrBl+B,SAoHF,SAAyBC,EAASC,GAChC,IAAIi+B,EAAe,EAEnB,OADAL,EAAgB,GACTM,EAEP,SAASA,EAAa39B,GACpB,OAAI09B,EAAehR,EAAMtqB,QACvBvC,EAAKkT,eAAiB2Z,EAAMgR,GAAc,GACnCl+B,EAAQ0T,QACbwZ,EAAMgR,GAAc,GAAGzqB,aACvB2qB,EACAC,EAHKr+B,CAILQ,IAIAs9B,EAAUjZ,kBAAoBiZ,EAAUjZ,iBAAiBwV,UAC3DwD,EAAcS,cAAe,EACtBC,EAAY/9B,KAGrBH,EAAKkC,UACHu7B,EAAUjZ,kBAAoBiZ,EAAUjZ,iBAAiB9iB,cAC3D1B,EAAKkT,eAAiB,GACfvT,EAAQ0T,QACb8qB,EACAC,EACAF,EAHKv+B,CAILQ,IAGJ,SAAS49B,EAAgB59B,GAEvB,OADA09B,IACO79B,EAAKkT,eAAemV,WACvB+V,EAAej+B,GACf29B,EAAa39B,GAGnB,SAAS69B,EAAY79B,GACnB,OAAIs9B,EAAUjZ,kBAAoBiZ,EAAUjZ,iBAAiB7iB,MAE3D3B,EAAKkT,eAAiB,GACfvT,EAAQ0T,QACb8qB,EACAC,EACAz+B,EAAQ0T,QACNgrB,EACAD,EACAz+B,EAAQyB,MAAMiK,EAAkB+yB,EAAgBE,IAN7C3+B,CAQLQ,IAGGi+B,EAAej+B,GAGxB,SAASm+B,EAAYn+B,GAKnB,OAHA09B,EAAehR,EAAMtqB,OACrBi7B,EAAc77B,MAAO,EACrB67B,EAAcS,cAAe,EACtBC,EAAY/9B,GAGrB,SAASi+B,EAAej+B,GAEtB,OADAq9B,EAAce,SAAU,EACjBL,EAAY/9B,GAGrB,SAAS+9B,EAAY/9B,GAGnB,OAFAq9B,EAAcG,UAAYE,EAC1B79B,EAAKkC,UAAYlC,EAAKkT,oBAAiBtQ,EAChChD,EAAGO,KA3LZiC,SAAS,GAKX,OAAOsD,EAEP,SAASA,EAAMvF,GACb,OAAIw9B,EAAY9Q,EAAMtqB,QACpBvC,EAAKkT,eAAiB2Z,EAAM8Q,GAAW,GAChCh+B,EAAQ0T,QACbwZ,EAAM8Q,GAAW,GAAGvqB,aACpBorB,EACAC,EAHK9+B,CAILQ,IAGGs+B,EAAkBt+B,GAG3B,SAASq+B,EAAiBr+B,GAExB,OADAw9B,IACOj4B,EAAMvF,GAGf,SAASs+B,EAAkBt+B,GAGzB,OAAIq9B,GAAiBA,EAAcS,aAC1BS,EAAUv+B,IAGnBH,EAAKkC,UACHu7B,GACAA,EAAUjZ,kBACViZ,EAAUjZ,iBAAiB9iB,cAC7B1B,EAAKkT,eAAiB,GACfvT,EAAQ0T,QACb8qB,EACAQ,EACAD,EAHK/+B,CAILQ,IAGJ,SAASw+B,EAAkBx+B,GAGzB,OAFA0sB,EAAM3kB,KAAK,CAAClI,EAAKwkB,iBAAkBxkB,EAAKkT,iBACxClT,EAAKkT,oBAAiBtQ,EACf67B,EAAkBt+B,GAG3B,SAASu+B,EAAUv+B,GACjB,OAAa,OAATA,GACFy+B,EAAe,GAAG,QAClBj/B,EAAQU,QAAQF,KAIlBs9B,EAAYA,GAAaz9B,EAAK6B,OAAOM,KAAKnC,EAAK6+B,OAC/Cl/B,EAAQS,MAAM,YAAa,CACzBa,YAAa,OACbD,SAAU08B,EACVvxB,WAAYsxB,IAEPQ,EAAa99B,IAGtB,SAAS89B,EAAa99B,GACpB,OAAa,OAATA,GACF2+B,EAAan/B,EAAQW,KAAK,cACnBo+B,EAAUv+B,IAGfQ,EAAmBR,IACrBR,EAAQU,QAAQF,GAChB2+B,EAAan/B,EAAQW,KAAK,cACnBX,EAAQyB,MAAMw8B,EAAkBmB,KAGzCp/B,EAAQU,QAAQF,GACT89B,GAGT,SAASc,EAAkB5+B,GAMzB,OALAy+B,EACEpB,EAAcG,UACdH,GAAiBA,EAAce,SAEjCZ,EAAY,EACLj4B,EAAMvF,GAGf,SAAS2+B,EAAar+B,GAChBi9B,IAAYA,EAAWn8B,KAAOd,GAClCi9B,EAAaj9B,EACbg9B,EAAU97B,KAAO67B,GAAiBA,EAAc77B,KAChD87B,EAAUjxB,WAAW/L,EAAMiF,OAC3B+3B,EAAU9wB,MAAM3M,EAAKuM,YAAY9L,IAGnC,SAASm+B,EAAe1+B,EAAMiI,GAC5B,IAAIyD,EAAQihB,EAAMtqB,OAOlB,IALIk7B,GAAat1B,IACfs1B,EAAU9wB,MAAM,CAAC,OACjB+wB,EAAaD,OAAY76B,GAGpBgJ,KAAU1L,GACfF,EAAKkT,eAAiB2Z,EAAMjhB,GAAO,GACnCihB,EAAMjhB,GAAO,GAAGtL,KAAKnD,KAAK6C,EAAML,GAGlCktB,EAAMtqB,OAASrC,IA7Hfi+B,EAAqB,CACvBz+B,SA4MF,SAA2BC,EAASC,EAAIC,GACtC,OAAOe,EACLjB,EACAA,EAAQ0T,QAAQpT,KAAK4B,OAAOC,WAAWwF,SAAU1H,EAAIC,GACrD,aACAI,KAAK4B,OAAOC,WAAWC,QAAQC,KAAKC,QAAQ,iBAAmB,OAC3DW,EACA,KAjNJy7B,EAAoB,CACtB3+B,SAoNF,SAA0BC,EAASC,EAAIC,GACrC,OAAOe,EACLjB,EACAA,EAAQgC,KAAK1B,KAAK4B,OAAOC,WAAWK,KAAMvC,EAAIC,GAC9C,aACAI,KAAK4B,OAAOC,WAAWC,QAAQC,KAAKC,QAAQ,iBAAmB,OAC3DW,EACA,KAIR9F,EAAQ4C,SAAWA,G,kCC1OnB,IAAIiB,EAAqB1B,EAAQ,QAE7Bsa,EAAkB,CACpBhc,KAAM,kBACNmC,SAGF,SAAiCC,EAASC,EAAIC,GAC5C,OAEA,SAAeM,GAIb,OAHAR,EAAQS,MAAM,mBACdT,EAAQS,MAAM,gBACdT,EAAQU,QAAQF,GACTI,GAGT,SAASA,EAAKJ,GACZ,OAAIQ,EAAmBR,IACrBR,EAAQW,KAAK,gBACbX,EAAQW,KAAK,mBACNV,EAAGO,IAGLN,EAAIM,MAIfpD,EAAOD,QAAUyc,G,kCCzBjBxc,EAAOD,QAFI,CAAC,MAAO,SAAU,QAAS,a,oCCDtC,IAAIkiC,EAASthC,OAAOkB,UAAUC,eAC1BogC,EAAQvhC,OAAOkB,UAAU+G,SACzBhI,EAAiBD,OAAOC,eACxBuhC,EAAOxhC,OAAOyhC,yBAEd3Y,EAAU,SAAiB4Y,GAC9B,MAA6B,mBAAlB7uB,MAAMiW,QACTjW,MAAMiW,QAAQ4Y,GAGK,mBAApBH,EAAM9hC,KAAKiiC,IAGfC,EAAgB,SAAuBzsB,GAC1C,IAAKA,GAA2B,oBAApBqsB,EAAM9hC,KAAKyV,GACtB,OAAO,EAGR,IASIrU,EATA+gC,EAAoBN,EAAO7hC,KAAKyV,EAAK,eACrC2sB,EAAmB3sB,EAAIC,aAAeD,EAAIC,YAAYjU,WAAaogC,EAAO7hC,KAAKyV,EAAIC,YAAYjU,UAAW,iBAE9G,GAAIgU,EAAIC,cAAgBysB,IAAsBC,EAC7C,OAAO,EAMR,IAAKhhC,KAAOqU,GAEZ,YAAsB,IAARrU,GAAuBygC,EAAO7hC,KAAKyV,EAAKrU,IAInDihC,EAAc,SAAqBn9B,EAAQoF,GAC1C9J,GAAmC,cAAjB8J,EAAQlK,KAC7BI,EAAe0E,EAAQoF,EAAQlK,KAAM,CACpCK,YAAY,EACZ44B,cAAc,EACdv4B,MAAOwJ,EAAQg4B,SACfhJ,UAAU,IAGXp0B,EAAOoF,EAAQlK,MAAQkK,EAAQg4B,UAK7BC,EAAc,SAAqB9sB,EAAKrV,GAC3C,GAAa,cAATA,EAAsB,CACzB,IAAKyhC,EAAO7hC,KAAKyV,EAAKrV,GACrB,OACM,GAAI2hC,EAGV,OAAOA,EAAKtsB,EAAKrV,GAAMU,MAIzB,OAAO2U,EAAIrV,IAGZR,EAAOD,QAAU,SAAS6iC,IACzB,IAAIl4B,EAASlK,EAAMkZ,EAAKmpB,EAAMC,EAAa5M,EACvC5wB,EAASC,UAAU,GACnBtF,EAAI,EACJuF,EAASD,UAAUC,OACnBu9B,GAAO,EAaX,IAVsB,kBAAXz9B,IACVy9B,EAAOz9B,EACPA,EAASC,UAAU,IAAM,GAEzBtF,EAAI,IAES,MAAVqF,GAAqC,iBAAXA,GAAyC,mBAAXA,KAC3DA,EAAS,IAGHrF,EAAIuF,IAAUvF,EAGpB,GAAe,OAFfyK,EAAUnF,UAAUtF,IAInB,IAAKO,KAAQkK,EACZgP,EAAMipB,EAAYr9B,EAAQ9E,GAItB8E,KAHJu9B,EAAOF,EAAYj4B,EAASlK,MAKvBuiC,GAAQF,IAASP,EAAcO,KAAUC,EAAcrZ,EAAQoZ,MAC9DC,GACHA,GAAc,EACd5M,EAAQxc,GAAO+P,EAAQ/P,GAAOA,EAAM,IAEpCwc,EAAQxc,GAAO4oB,EAAc5oB,GAAOA,EAAM,GAI3C+oB,EAAYn9B,EAAQ,CAAE9E,KAAMA,EAAMkiC,SAAUE,EAAOG,EAAM7M,EAAO2M,WAGtC,IAATA,GACjBJ,EAAYn9B,EAAQ,CAAE9E,KAAMA,EAAMkiC,SAAUG,KAQjD,OAAOv9B,I,oCCjHR,IAAI1B,EAAqB1B,EAAQ,QAC7B2B,EAAe3B,EAAQ,QACvB4B,EAAa5B,EAAQ,QACrBmW,EAA4BnW,EAAQ,QAEpCoa,EAAa,CACf9b,KAAM,aACNmC,SAIF,SAA4BC,EAASC,EAAIC,GACvC,IAOIoV,EAPAjV,EAAOC,KACP8/B,EAAwB,CAC1BrgC,SAuHF,SAA8BC,EAASC,EAAIC,GACzC,IAAIK,EAAO,EACX,OAAOU,EACLjB,GAQF,SAA8BQ,GAG5B,OAFAR,EAAQS,MAAM,mBACdT,EAAQS,MAAM,2BACPmO,EAAgBpO,KATvB,aACAF,KAAK4B,OAAOC,WAAWC,QAAQC,KAAKC,QAAQ,iBAAmB,OAC3DW,EACA,GASN,SAAS2L,EAAgBpO,GACvB,OAAIA,IAAS8U,GACXtV,EAAQU,QAAQF,GAChBD,IACOqO,GAGLrO,EAAOkO,EAAiBvO,EAAIM,IAChCR,EAAQW,KAAK,2BACNM,EAAajB,EAASqgC,EAAoB,aAA1Cp/B,CAAwDT,IAGjE,SAAS6/B,EAAmB7/B,GAC1B,OAAa,OAATA,GAAiBQ,EAAmBR,IACtCR,EAAQW,KAAK,mBACNV,EAAGO,IAGLN,EAAIM,KAzJbiC,SAAS,GAEP69B,EAAgBp/B,EAAWZ,KAAKwB,OAAQ,cACxC2M,EAAW,EAEf,OAEA,SAAejO,GAKb,OAJAR,EAAQS,MAAM,cACdT,EAAQS,MAAM,mBACdT,EAAQS,MAAM,2BACd6U,EAAS9U,EACF+/B,EAAa//B,IAGtB,SAAS+/B,EAAa//B,GACpB,OAAIA,IAAS8U,GACXtV,EAAQU,QAAQF,GAChBiO,IACO8xB,IAGTvgC,EAAQW,KAAK,2BACN8N,EAAW,EACdvO,EAAIM,GACJS,EAAajB,EAASwgC,EAAU,aAAhCv/B,CAA8CT,IAGpD,SAASggC,EAAShgC,GAChB,OAAa,OAATA,GAAiBQ,EAAmBR,GAC/BigC,EAAUjgC,IAGnBR,EAAQS,MAAM,uBACdT,EAAQS,MAAM,cAAe,CAC3Ba,YAAa,WAERiqB,EAAK/qB,IAGd,SAAS+qB,EAAK/qB,GACZ,OAAa,OAATA,GAAiBiV,EAA0BjV,IAC7CR,EAAQW,KAAK,eACbX,EAAQW,KAAK,uBACNM,EAAajB,EAAS0gC,EAAW,aAAjCz/B,CAA+CT,IAG3C,KAATA,GAAeA,IAAS8U,EAAepV,EAAIM,IAC/CR,EAAQU,QAAQF,GACT+qB,GAGT,SAASmV,EAAUlgC,GACjB,OAAa,OAATA,GAAiBQ,EAAmBR,GAC/BigC,EAAUjgC,IAGnBR,EAAQS,MAAM,uBACdT,EAAQS,MAAM,cAAe,CAC3Ba,YAAa,WAERgtB,EAAK9tB,IAGd,SAAS8tB,EAAK9tB,GACZ,OAAa,OAATA,GAAiBQ,EAAmBR,IACtCR,EAAQW,KAAK,eACbX,EAAQW,KAAK,uBACN8/B,EAAUjgC,IAGN,KAATA,GAAeA,IAAS8U,EAAepV,EAAIM,IAC/CR,EAAQU,QAAQF,GACT8tB,GAGT,SAASmS,EAAUjgC,GAEjB,OADAR,EAAQW,KAAK,mBACNN,EAAKkC,UAAYtC,EAAGO,GAAQY,EAAQZ,GAG7C,SAASY,EAAQZ,GACf,OAAa,OAATA,EACKgT,EAAMhT,GAGXQ,EAAmBR,IACrBR,EAAQS,MAAM,cACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,cACNX,EAAQ0T,QACb0sB,EACA5sB,EACA8sB,EACIr/B,EAAajB,EAASoB,EAAS,aAAck/B,EAAgB,GAC7Dl/B,KAIRpB,EAAQS,MAAM,iBACPkB,EAAgBnB,IAGzB,SAASmB,EAAgBnB,GACvB,OAAa,OAATA,GAAiBQ,EAAmBR,IACtCR,EAAQW,KAAK,iBACNS,EAAQZ,KAGjBR,EAAQU,QAAQF,GACTmB,GAGT,SAAS6R,EAAMhT,GAEb,OADAR,EAAQW,KAAK,cACNV,EAAGO,KA1HZ65B,UAAU,GAqKZj9B,EAAOD,QAAUuc,G,qBC9KjBtc,EAAOD,QAAU,CAAC,SAAW,oB,kCCC7B,IAAIyO,EAAgBtM,EAAQ,QACxBqhC,EAAcrhC,EAAQ,QACtBivB,EAAsBjvB,EAAQ,QAC9BuM,EAAUvM,EAAQ,QAClB2kB,EAAa3kB,EAAQ,QACrBmW,EAA4BnW,EAAQ,QACpCqyB,EAAqBryB,EAAQ,QAC7BsyB,EAAetyB,EAAQ,QACvBuyB,EAAoBvyB,EAAQ,QAC5BwyB,EAAexyB,EAAQ,QAEvBya,EAAW,CACbnc,KAAM,WACNmC,SAiIF,SAA0BC,EAASC,EAAIC,GACrC,IAEI0gC,EACA74B,EAHA1H,EAAOC,KACP2L,EAAQ5L,EAAKyB,OAAOc,OAIxB,KAAOqJ,KACL,IACkC,eAA/B5L,EAAKyB,OAAOmK,GAAO,GAAG5F,MACU,cAA/BhG,EAAKyB,OAAOmK,GAAO,GAAG5F,QACvBhG,EAAKyB,OAAOmK,GAAO,GAAG40B,UACvB,CACAD,EAAavgC,EAAKyB,OAAOmK,GAAO,GAChC,MAIJ,OAEA,SAAezL,GACb,IAAKogC,EACH,OAAO1gC,EAAIM,GAGb,OAAIogC,EAAWE,UAAkBC,EAASvgC,IAC1CuH,EACE1H,EAAK6B,OAAO6F,QAAQzF,QAClBisB,EACEluB,EAAKU,eAAe,CAClBgF,MAAO66B,EAAWp4B,IAClBA,IAAKnI,EAAK6+B,WAGX,EACPl/B,EAAQS,MAAM,YACdT,EAAQS,MAAM,eACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,eACbX,EAAQW,KAAK,YACNqgC,IAGT,SAASA,EAAcxgC,GAErB,OAAa,KAATA,EACKR,EAAQ0T,QACbutB,EACAhhC,EACA8H,EAAU9H,EAAK8gC,EAHV/gC,CAILQ,GAGS,KAATA,EACKR,EAAQ0T,QACbwtB,EACAjhC,EACA8H,EACI/H,EAAQ0T,QAAQytB,EAA6BlhC,EAAI8gC,GACjDA,EALC/gC,CAMLQ,GAGGuH,EAAU9H,EAAGO,GAAQugC,EAASvgC,GAGvC,SAASugC,EAASvgC,GAEhB,OADAogC,EAAWC,WAAY,EAChB3gC,EAAIM,KAnMb45B,UAoCF,SAA2Bt4B,EAAQsK,GACjC,IAEIg1B,EACApY,EACApjB,EACA9E,EACAF,EACAygC,EACAC,EARAr1B,EAAQnK,EAAOc,OACf+hB,EAAS,EASb,KAAO1Y,KAGL,GAFAnL,EAAQgB,EAAOmK,GAAO,GAElBrL,EAAM,CAER,GACiB,SAAfE,EAAMuF,MACU,cAAfvF,EAAMuF,MAAwBvF,EAAMggC,UAErC,MAIuB,UAArBh/B,EAAOmK,GAAO,IAAiC,cAAfnL,EAAMuF,OACxCvF,EAAMggC,WAAY,QAEf,GAAIO,GACT,GACuB,UAArBv/B,EAAOmK,GAAO,KACE,eAAfnL,EAAMuF,MAAwC,cAAfvF,EAAMuF,QACrCvF,EAAM+/B,YAEPjgC,EAAOqL,EAEY,cAAfnL,EAAMuF,MAAsB,CAC9Bse,EAAS,EACT,WAGoB,aAAf7jB,EAAMuF,OACfg7B,EAAQp1B,GAgDZ,OA5CAm1B,EAAQ,CACN/6B,KAA+B,cAAzBvE,EAAOlB,GAAM,GAAGyF,KAAuB,OAAS,QACtDN,MAAO8F,EAAQ/J,EAAOlB,GAAM,GAAGmF,OAC/ByC,IAAKqD,EAAQ/J,EAAOA,EAAOc,OAAS,GAAG,GAAG4F,MAE5CwgB,EAAQ,CACN3iB,KAAM,QACNN,MAAO8F,EAAQ/J,EAAOlB,GAAM,GAAGmF,OAC/ByC,IAAKqD,EAAQ/J,EAAOu/B,GAAO,GAAG74B,MAEhC5C,EAAO,CACLS,KAAM,YACNN,MAAO8F,EAAQ/J,EAAOlB,EAAO+jB,EAAS,GAAG,GAAGnc,KAC5CA,IAAKqD,EAAQ/J,EAAOu/B,EAAQ,GAAG,GAAGt7B,QAOpCu7B,EAAQX,EALRW,EAAQ,CACN,CAAC,QAASF,EAAOh1B,GACjB,CAAC,QAAS4c,EAAO5c,IAGQtK,EAAO+B,MAAMjD,EAAO,EAAGA,EAAO+jB,EAAS,IAElE2c,EAAQX,EAAYW,EAAO,CAAC,CAAC,QAAS17B,EAAMwG,KAE5Ck1B,EAAQX,EACNW,EACArd,EACE7X,EAAQlK,OAAOC,WAAW6Z,WAAW3Z,KACrCP,EAAO+B,MAAMjD,EAAO+jB,EAAS,EAAG0c,EAAQ,GACxCj1B,IAIJk1B,EAAQX,EAAYW,EAAO,CACzB,CAAC,OAAQ17B,EAAMwG,GACftK,EAAOu/B,EAAQ,GACfv/B,EAAOu/B,EAAQ,GACf,CAAC,OAAQrY,EAAO5c,KAGlBk1B,EAAQX,EAAYW,EAAOx/B,EAAO+B,MAAMw9B,EAAQ,IAEhDC,EAAQX,EAAYW,EAAO,CAAC,CAAC,OAAQF,EAAOh1B,KAC5CR,EAAc9J,EAAQlB,EAAMkB,EAAOc,OAAQ0+B,GACpCx/B,GA5HPmiB,WAYF,SAA4BniB,GAC1B,IACIhB,EADAmL,GAAS,EAGb,OAASA,EAAQnK,EAAOc,SACtB9B,EAAQgB,EAAOmK,GAAO,IAGbs1B,OACS,eAAfzgC,EAAMuF,MACU,cAAfvF,EAAMuF,MACS,aAAfvF,EAAMuF,OAGRvE,EAAOiN,OAAO9C,EAAQ,EAAkB,eAAfnL,EAAMuF,KAAwB,EAAI,GAC3DvF,EAAMuF,KAAO,OACb4F,KAIJ,OAAOnK,IA9BLm/B,EAAoB,CACtBlhC,SAmMF,SAA0BC,EAASC,EAAIC,GACrC,OAEA,SAAeM,GAKb,OAJAR,EAAQS,MAAM,YACdT,EAAQS,MAAM,kBACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,kBACNkxB,EAAkB7xB,EAASY,IAGpC,SAASA,EAAKJ,GACZ,OAAa,KAATA,EACKgI,EAAIhI,GAGNmxB,EACL3xB,EACAwhC,EACAthC,EACA,sBACA,6BACA,mCACA,yBACA,4BACA,EATKyxB,CAULnxB,GAGJ,SAASghC,EAAiBhhC,GACxB,OAAOiV,EAA0BjV,GAC7BqxB,EAAkB7xB,EAASyhC,EAA3B5P,CAAoCrxB,GACpCgI,EAAIhI,GAGV,SAASihC,EAAQjhC,GACf,OAAa,KAATA,GAAwB,KAATA,GAAwB,KAATA,EACzBsxB,EACL9xB,EACA6xB,EAAkB7xB,EAASwI,GAC3BtI,EACA,gBACA,sBACA,sBANK4xB,CAOLtxB,GAGGgI,EAAIhI,GAGb,SAASgI,EAAIhI,GACX,OAAa,KAATA,GACFR,EAAQS,MAAM,kBACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,kBACbX,EAAQW,KAAK,YACNV,GAGFC,EAAIM,MA5PX0gC,EAAyB,CAC3BnhC,SA+PF,SAA+BC,EAASC,EAAIC,GAC1C,IAAIG,EAAOC,KACX,OAEA,SAAeE,GACb,OAAOoxB,EAAap0B,KAClB6C,EACAL,EACA0hC,EACAxhC,EACA,YACA,kBACA,kBAPK0xB,CAQLpxB,IAGJ,SAASkhC,EAAWlhC,GAClB,OAAOH,EAAK6B,OAAO6F,QAAQzF,QACzBisB,EACEluB,EAAKU,eAAeV,EAAKyB,OAAOzB,EAAKyB,OAAOc,OAAS,GAAG,IAAIiB,MAAM,GAAI,KAEtE,EACA3D,EAAIM,GACJP,EAAGO,MApRP2gC,EAA8B,CAChCphC,SAuRF,SAAoCC,EAASC,EAAIC,GAC/C,OAEA,SAAeM,GAKb,OAJAR,EAAQS,MAAM,aACdT,EAAQS,MAAM,mBACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,mBACNC,GAGT,SAASA,EAAKJ,GACZ,OAAa,KAATA,GACFR,EAAQS,MAAM,mBACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,mBACbX,EAAQW,KAAK,aACNV,GAGFC,EAAIM,MAIfpD,EAAOD,QAAU4c,G,oCCvUjB,IAAI4nB,EAAYriC,EAAQ,QAKxB,SAASsiC,KAHTxkC,EAAOD,QAAU4tB,EAIjB6W,EAAkB3iC,UAAYoW,MAAMpW,UACpC8rB,EAAS9rB,UAAY,IAAI2iC,EAGzB,IAAIC,EAAQ9W,EAAS9rB,UAgBrB,SAAS8rB,EAASG,EAAQ5iB,EAAU6iB,GAClC,IAAI2W,EACAC,EACAtlB,EAEoB,iBAAbnU,IACT6iB,EAAS7iB,EACTA,EAAW,MAGbw5B,EAuCF,SAAqB3W,GACnB,IACIlf,EADA4E,EAAS,CAAC,KAAM,MAGE,iBAAXsa,KAGM,KAFflf,EAAQkf,EAAO7oB,QAAQ,MAGrBuO,EAAO,GAAKsa,GAEZta,EAAO,GAAKsa,EAAOtnB,MAAM,EAAGoI,GAC5B4E,EAAO,GAAKsa,EAAOtnB,MAAMoI,EAAQ,KAIrC,OAAO4E,EAtDCmxB,CAAY7W,GACpB4W,EAAQJ,EAAUr5B,IAAa,MAE/BmU,EAAW,CACT1W,MAAO,CAACkH,KAAM,KAAMyX,OAAQ,MAC5Blc,IAAK,CAACyE,KAAM,KAAMyX,OAAQ,OAIxBpc,GAAYA,EAASA,WACvBA,EAAWA,EAASA,UAGlBA,IAEEA,EAASvC,OACX0W,EAAWnU,EACXA,EAAWA,EAASvC,OAGpB0W,EAAS1W,MAAQuC,GAIjB4iB,EAAOgC,QACT5sB,KAAK4sB,MAAQhC,EAAOgC,MACpBhC,EAASA,EAAOD,SAGlB3qB,KAAK2qB,QAAUC,EACf5qB,KAAK1C,KAAOmkC,EACZzhC,KAAK4qB,OAASA,EACd5qB,KAAK2M,KAAO3E,EAAWA,EAAS2E,KAAO,KACvC3M,KAAKokB,OAASpc,EAAWA,EAASoc,OAAS,KAC3CpkB,KAAKmc,SAAWA,EAChBnc,KAAKuC,OAASi/B,EAAM,GACpBxhC,KAAK2hC,OAASH,EAAM,GA5DtBD,EAAMzW,KAAO,GACbyW,EAAMjkC,KAAO,GACbikC,EAAM3W,OAAS,GACf2W,EAAM5W,QAAU,GAChB4W,EAAM3U,MAAQ,GACd2U,EAAMxW,MAAQ,KACdwW,EAAMnd,OAAS,KACfmd,EAAM50B,KAAO,M,qBCrBb,IAAIi1B,EAAmB5iC,EAAQ,QAoB/BlC,EAAOD,QAlBP,WACE,OAAO,SAAUglC,GAaf,OAZAD,EAAiBC,EAAK,QAAQ,SAAUC,EAAU9zB,GAChD,IAAejR,EAAGyB,EAAdgnB,EAAQ,EACZ,IAAKzoB,EAAI,EAAGyB,EAAIwP,EAAQ1L,OAAQvF,EAAIyB,EAAGzB,IACb,SAApBiR,EAAQjR,GAAGgJ,OAAiByf,GAAS,GAE3C,IAAKzoB,EAAI,EAAGyB,EAAIsjC,EAASj+B,SAASvB,OAAQvF,EAAIyB,EAAGzB,IAAK,CACpD,IAAI+oB,EAAQgc,EAASj+B,SAAS9G,GAC9B+oB,EAAMna,MAAQ5O,EACd+oB,EAAMngB,QAAUm8B,EAASn8B,QAE3Bm8B,EAAStc,MAAQA,KAEZqc,K,kCCdX,IAAIx2B,EAASrM,EAAQ,QACjBsM,EAAgBtM,EAAQ,QACxBqhC,EAAcrhC,EAAQ,QACtBoI,EAAWpI,EAAQ,QACnB0B,EAAqB1B,EAAQ,QAC7BuM,EAAUvM,EAAQ,QAClB2kB,EAAa3kB,EAAQ,QACrB+iC,EAAkB/iC,EAAQ,QAC1BgjC,EAAchjC,EAAQ,QAiT1BlC,EAAOD,QAxSP,SAAyB+E,EAAQqgC,EAAYp6B,GAC3C,IAAIkhB,EAAQlhB,EACR0D,EAAQ1D,GACR,CACE8E,KAAM,EACNyX,OAAQ,EACRC,OAAQ,GAEV6d,EAAc,GACdC,EAAuB,GACvB9uB,EAAS,GACTuZ,EAAQ,GAERltB,EAAU,CACZU,QAyGF,SAAiBF,GACXQ,EAAmBR,IACrB6oB,EAAMpc,OACNoc,EAAM3E,OAAS,EACf2E,EAAM1E,SAAoB,IAAVnkB,EAAc,EAAI,EAClCkiC,MACmB,IAAVliC,IACT6oB,EAAM3E,SACN2E,EAAM1E,UAGJ0E,EAAMrV,aAAe,EACvBqV,EAAMvV,UAENuV,EAAMrV,eAEFqV,EAAMrV,eAAiBL,EAAO0V,EAAMvV,QAAQlR,SAC9CymB,EAAMrV,cAAgB,EACtBqV,EAAMvV,WAIV1H,EAAQ/K,SAAWb,GA9HnBC,MAiIF,SAAe4F,EAAMs8B,GACnB,IAAI7hC,EAAQ6hC,GAAU,GAKtB,OAJA7hC,EAAMuF,KAAOA,EACbvF,EAAMiF,MAAQm5B,IACd9yB,EAAQtK,OAAOyG,KAAK,CAAC,QAASzH,EAAOsL,IACrC8gB,EAAM3kB,KAAKzH,GACJA,GAtIPH,KAyIF,SAAc0F,GACZ,IAAIvF,EAAQosB,EAAM/f,MAGlB,OAFArM,EAAM0H,IAAM02B,IACZ9yB,EAAQtK,OAAOyG,KAAK,CAAC,OAAQzH,EAAOsL,IAC7BtL,GA5IP4S,QAASkvB,GA+IX,SAA+BC,EAAWtX,GACxCuX,EAAUD,EAAWtX,EAAKpjB,SA/I1B1G,MAAOmhC,EAAiBG,GACxBxgC,UAAWqgC,EAAiBG,EAAmB,CAC7CxgC,WAAW,IAEbP,KAAM4gC,EAAiBG,EAAmB,CACxC/gC,MAAM,KAINoK,EAAU,CACZ/K,SAAU,KACVS,OAAQ,GACRI,OAAQA,EACR0K,YAAaA,EACb7L,eAgCF,SAAwBD,GACtB,OAAOuhC,EAAgBz1B,EAAY9L,KAhCnCo+B,IAAKA,EACLryB,WA0CF,SAAcvO,GACZkkC,EAAYlkC,EAAM2O,MAAQ3O,EAAMomB,OAChCge,KA3CA11B,MAaF,SAAenJ,GAIb,GAHA8P,EAASgtB,EAAYhtB,EAAQ9P,GAC7Bm/B,IAEkC,OAA9BrvB,EAAOA,EAAO/Q,OAAS,GACzB,MAAO,GAMT,OAHAkgC,EAAUP,EAAY,GAEtBn2B,EAAQtK,OAASmiB,EAAWwe,EAAsBr2B,EAAQtK,OAAQsK,GAC3DA,EAAQtK,SArBb2d,EAAQ8iB,EAAWxiC,SAASvC,KAAK4O,EAASpM,GAQ9C,OANIuiC,EAAWte,YACbwe,EAAqBl6B,KAAKg6B,GAG5BlZ,EAAMvV,OAAS,EACfuV,EAAMrV,cAAgB,EACf5H,EAsBP,SAASQ,EAAY9L,GACnB,OAAOwhC,EAAY3uB,EAAQ7S,GAG7B,SAASo+B,IACP,OAAOrzB,EAAQwd,GAgBjB,SAAS2Z,IAIP,IAHA,IAAIC,EACA1e,EAEG8E,EAAMvV,OAASH,EAAO/Q,QAG3B,GAAqB,iBAFrB2hB,EAAQ5Q,EAAO0V,EAAMvV,SASnB,IANAmvB,EAAa5Z,EAAMvV,OAEfuV,EAAMrV,aAAe,IACvBqV,EAAMrV,aAAe,GAIrBqV,EAAMvV,SAAWmvB,GACjB5Z,EAAMrV,aAAeuQ,EAAM3hB,QAE3BsgC,EAAG3e,EAAMrU,WAAWmZ,EAAMrV,oBAG5BkvB,EAAG3e,GAKT,SAAS2e,EAAG1iC,GACVif,EAAQA,EAAMjf,GAgDhB,SAASuiC,EAAkBF,EAAWtX,GACpCA,EAAK4X,UAGP,SAASP,EAAiBQ,EAAUT,GAClC,OAGA,SAAcxgC,EAAYm4B,EAAa+I,GACrC,IAAIC,EACAC,EACA1e,EACA0G,EACJ,OAAOppB,EAAWpC,UAAY,WAAYoC,EACtCqhC,EAAuB97B,EAASvF,IAGpC,SAA+B3B,GAC7B,GAAIA,KAAQ2B,GAAc,QAAQA,EAChC,OAAOqhC,EACLrhC,EAAWE,KAEPqF,EAASvF,EAAW3B,IAAOiG,OAAOiB,EAASvF,EAAWE,OACtDF,EAAW3B,GAJVgjC,CAKLhjC,GAGJ,OAAO6iC,EAAW7iC,IAGpB,SAASgjC,EAAuB39B,GAG9B,OAFAy9B,EAAmBz9B,EAEZ49B,EAAgB59B,EADvB09B,EAAiB,IAInB,SAASE,EAAgBZ,GACvB,OAEA,SAAeriC,GAKb+qB,EA2DR,WACE,IAAImY,EAAaxE,IACbyE,EAAgBv3B,EAAQ/K,SACxBuiC,EAAwBx3B,EAAQyY,iBAChCgf,EAAmBz3B,EAAQtK,OAAOc,OAClCkhC,EAAalzB,MAAMzI,KAAK+kB,GAC5B,MAAO,CACLiW,QAIF,WACE9Z,EAAQqa,EACRt3B,EAAQ/K,SAAWsiC,EACnBv3B,EAAQyY,iBAAmB+e,EAC3Bx3B,EAAQtK,OAAOc,OAASihC,EACxB3W,EAAQ4W,EACRpB,KATAv6B,KAAM07B,GAnEKE,GACPlf,EAAmBge,EAEdA,EAAUpgC,UACb2J,EAAQyY,iBAAmBge,GAG7B,GACEA,EAAUjlC,MACVwO,EAAQlK,OAAOC,WAAWC,QAAQC,KAAKC,QAAQugC,EAAUjlC,OAAS,EAElE,OAAOsC,IAGT,OAAO2iC,EAAU9iC,SAASvC,KACxBmlC,EAASh3B,EAAO,GAAIS,EAASu2B,GAAUv2B,EACvCpM,EACAC,EACAC,EAJK2iC,CAKLriC,IAIN,SAASP,EAAGO,GAEV,OADA4iC,EAASve,EAAkB0G,GACpB+O,EAGT,SAASp6B,EAAIM,GAGX,OAFA+qB,EAAK4X,YAECI,EAAiBD,EAAiB1gC,OAC/B6gC,EAAgBH,EAAiBC,IAGnCF,IAKb,SAASP,EAAUD,EAAW16B,GACxB06B,EAAU5e,YAAcwe,EAAqBngC,QAAQugC,GAAa,GACpEJ,EAAqBl6B,KAAKs6B,GAGxBA,EAAUhhC,SACZ+J,EACEQ,EAAQtK,OACRqG,EACAiE,EAAQtK,OAAOc,OAASuF,EACxB06B,EAAUhhC,QAAQuK,EAAQtK,OAAO+B,MAAMsE,GAAOiE,IAI9Cy2B,EAAUzI,YACZhuB,EAAQtK,OAAS+gC,EAAUzI,UAAUhuB,EAAQtK,OAAQsK,IAyBzD,SAASs2B,IACHrZ,EAAMpc,QAAQu1B,GAAenZ,EAAM3E,OAAS,IAC9C2E,EAAM3E,OAAS8d,EAAYnZ,EAAMpc,MACjCoc,EAAM1E,QAAU6d,EAAYnZ,EAAMpc,MAAQ,M,oCCpThD,IAAIrB,EAAgBtM,EAAQ,QACxBqhC,EAAcrhC,EAAQ,QACtBuM,EAAUvM,EAAQ,QAClB2kB,EAAa3kB,EAAQ,QACrB0kC,EAAoB1kC,EAAQ,QAC5B2kC,EAAY3kC,EAAQ,QAEpBia,EAAY,CACd3b,KAAM,YACNmC,SA8IF,SAA2BC,EAASC,GAClC,IACIqV,EADA2c,EAAS+R,EAAkB1jC,KAAKe,UAEpC,OAEA,SAAeb,GAGb,OAFAR,EAAQS,MAAM,qBACd6U,EAAS9U,EACFgV,EAAShV,IAGlB,SAASgV,EAAShV,GAChB,IAAIM,EACA0S,EACA5S,EACAygC,EAEJ,OAAI7gC,IAAS8U,GACXtV,EAAQU,QAAQF,GACTgV,IAGT1U,EAAQd,EAAQW,KAAK,qBAErBC,IADA4S,EAAQwwB,EAAkBxjC,KACE,IAAVgT,GAAeye,EACjCoP,GAASpP,GAAsB,IAAXA,GAAgBze,EACpC1S,EAAMojC,MAAmB,KAAX5uB,EAAgB1U,EAAOA,IAASqxB,IAAWoP,GACzDvgC,EAAMqjC,OAAoB,KAAX7uB,EAAgB+rB,EAAQA,IAAU7tB,IAAU5S,GACpDX,EAAGO,MAzKZyjB,WAGF,SAA6BniB,EAAQsK,GACnC,IACIxL,EACAwgC,EACAx7B,EACA8I,EACAE,EACAuI,EACAitB,EACAzf,EARA1Y,GAAS,EAab,OAASA,EAAQnK,EAAOc,QAEtB,GACuB,UAArBd,EAAOmK,GAAO,IACY,sBAA1BnK,EAAOmK,GAAO,GAAG5F,MACjBvE,EAAOmK,GAAO,GAAGk4B,OAIjB,IAFAvjC,EAAOqL,EAEArL,KAEL,GACsB,SAApBkB,EAAOlB,GAAM,IACY,sBAAzBkB,EAAOlB,GAAM,GAAGyF,MAChBvE,EAAOlB,GAAM,GAAGsjC,OAChB93B,EAAQrL,eAAee,EAAOlB,GAAM,IAAIsP,WAAW,KACjD9D,EAAQrL,eAAee,EAAOmK,GAAO,IAAIiE,WAAW,GACtD,CAKA,IACGpO,EAAOlB,GAAM,GAAGujC,QAAUriC,EAAOmK,GAAO,GAAGi4B,SAC3CpiC,EAAOmK,GAAO,GAAGzD,IAAImc,OAAS7iB,EAAOmK,GAAO,GAAGlG,MAAM4e,QAAU,MAE7D7iB,EAAOlB,GAAM,GAAG4H,IAAImc,OACnB7iB,EAAOlB,GAAM,GAAGmF,MAAM4e,OACtB7iB,EAAOmK,GAAO,GAAGzD,IAAImc,OACrB7iB,EAAOmK,GAAO,GAAGlG,MAAM4e,QACzB,GAGF,SAGFxN,EACErV,EAAOlB,GAAM,GAAG4H,IAAImc,OAAS7iB,EAAOlB,GAAM,GAAGmF,MAAM4e,OAAS,GAC5D7iB,EAAOmK,GAAO,GAAGzD,IAAImc,OAAS7iB,EAAOmK,GAAO,GAAGlG,MAAM4e,OAAS,EAC1D,EACA,EACNjW,EAAkB,CAChBrI,KAAM8Q,EAAM,EAAI,iBAAmB,mBACnCpR,MAAOk+B,EAAUp4B,EAAQ/J,EAAOlB,GAAM,GAAG4H,MAAO2O,GAChD3O,IAAKqD,EAAQ/J,EAAOlB,GAAM,GAAG4H,MAE/BoG,EAAkB,CAChBvI,KAAM8Q,EAAM,EAAI,iBAAmB,mBACnCpR,MAAO8F,EAAQ/J,EAAOmK,GAAO,GAAGlG,OAChCyC,IAAKy7B,EAAUp4B,EAAQ/J,EAAOmK,GAAO,GAAGlG,OAAQoR,IAElDvR,EAAO,CACLS,KAAM8Q,EAAM,EAAI,aAAe,eAC/BpR,MAAO8F,EAAQ/J,EAAOlB,GAAM,GAAG4H,KAC/BA,IAAKqD,EAAQ/J,EAAOmK,GAAO,GAAGlG,QAEhCq7B,EAAQ,CACN/6B,KAAM8Q,EAAM,EAAI,SAAW,WAC3BpR,MAAO8F,EAAQ6C,EAAgB3I,OAC/ByC,IAAKqD,EAAQ+C,EAAgBpG,MAE/B1G,EAAOlB,GAAM,GAAG4H,IAAMqD,EAAQ6C,EAAgB3I,OAC9CjE,EAAOmK,GAAO,GAAGlG,MAAQ8F,EAAQ+C,EAAgBpG,KACjD47B,EAAa,GAETtiC,EAAOlB,GAAM,GAAG4H,IAAImc,OAAS7iB,EAAOlB,GAAM,GAAGmF,MAAM4e,SACrDyf,EAAazD,EAAYyD,EAAY,CACnC,CAAC,QAAStiC,EAAOlB,GAAM,GAAIwL,GAC3B,CAAC,OAAQtK,EAAOlB,GAAM,GAAIwL,MAI9Bg4B,EAAazD,EAAYyD,EAAY,CACnC,CAAC,QAAShD,EAAOh1B,GACjB,CAAC,QAASsC,EAAiBtC,GAC3B,CAAC,OAAQsC,EAAiBtC,GAC1B,CAAC,QAASxG,EAAMwG,KAGlBg4B,EAAazD,EACXyD,EACAngB,EACE7X,EAAQlK,OAAOC,WAAW6Z,WAAW3Z,KACrCP,EAAO+B,MAAMjD,EAAO,EAAGqL,GACvBG,IAIJg4B,EAAazD,EAAYyD,EAAY,CACnC,CAAC,OAAQx+B,EAAMwG,GACf,CAAC,QAASwC,EAAiBxC,GAC3B,CAAC,OAAQwC,EAAiBxC,GAC1B,CAAC,OAAQg1B,EAAOh1B,KAGdtK,EAAOmK,GAAO,GAAGzD,IAAImc,OAAS7iB,EAAOmK,GAAO,GAAGlG,MAAM4e,QACvDA,EAAS,EACTyf,EAAazD,EAAYyD,EAAY,CACnC,CAAC,QAAStiC,EAAOmK,GAAO,GAAIG,GAC5B,CAAC,OAAQtK,EAAOmK,GAAO,GAAIG,MAG7BuY,EAAS,EAGX/Y,EAAc9J,EAAQlB,EAAO,EAAGqL,EAAQrL,EAAO,EAAGwjC,GAClDn4B,EAAQrL,EAAOwjC,EAAWxhC,OAAS+hB,EAAS,EAC5C,MAMR1Y,GAAS,EAET,OAASA,EAAQnK,EAAOc,QACQ,sBAA1Bd,EAAOmK,GAAO,GAAG5F,OACnBvE,EAAOmK,GAAO,GAAG5F,KAAO,QAI5B,OAAOvE,IAmCT1E,EAAOD,QAAUoc,G,kCCvLjB,IAAI8qB,EAAO/kC,EAAQ,QACfooB,EAASpoB,EAAQ,QACjB0gC,EAAS1gC,EAAQ,QACjBglC,EAAQhlC,EAAQ,QAChBiqB,EAASjqB,EAAQ,QACjBilC,EAAQjlC,EAAQ,QAGpBlC,EAAOD,QA2CP,SAAS4Y,IACP,IAAIyuB,EAAY,GACZC,EAAelb,IACfmb,EAAY,GACZC,GAAS,EACTC,GAAe,EAqBnB,OAlBA1tB,EAAU3V,KAiFV,SAAc3C,EAAKN,GACjB,GAAmB,iBAARM,EAET,OAAyB,IAArB+D,UAAUC,QACZiiC,EAAe,OAAQF,GAEvBD,EAAU9lC,GAAON,EAEV4Y,GAIDkS,EAAI5rB,KAAKknC,EAAW9lC,IAAQ8lC,EAAU9lC,IAAS,KAIzD,GAAIA,EAGF,OAFAimC,EAAe,OAAQF,GACvBD,EAAY9lC,EACLsY,EAIT,OAAOwtB,GArGTxtB,EAAU4tB,OAASA,EAGnB5tB,EAAUstB,UAAYA,EACtBttB,EAAUC,IA2GV,SAAa7Y,GACX,IAAImtB,EAIJ,GAFAoZ,EAAe,MAAOF,GAElBrmC,cAEG,GAAqB,mBAAVA,EAChBymC,EAAU7vB,MAAM,KAAMvS,eACjB,IAAqB,iBAAVrE,EAOhB,MAAM,IAAI+W,MAAM,+BAAiC/W,EAAQ,KANrD,WAAYA,EACd0mC,EAAQ1mC,GAER2mC,EAAU3mC,GAMVmtB,IACFiZ,EAAUjZ,SAAWuU,EAAO0E,EAAUjZ,UAAY,GAAIA,IAGxD,OAAOvU,EAEP,SAAS+tB,EAAUp0B,GACjBm0B,EAAQn0B,EAAOuG,SAEXvG,EAAO4a,WACTA,EAAWuU,EAAOvU,GAAY,GAAI5a,EAAO4a,WAI7C,SAASve,EAAI5O,GACX,GAAqB,mBAAVA,EACTymC,EAAUzmC,OACL,IAAqB,iBAAVA,EAOhB,MAAM,IAAI+W,MAAM,+BAAiC/W,EAAQ,KANrD,WAAYA,EACdymC,EAAU7vB,MAAM,KAAM5W,GAEtB2mC,EAAU3mC,IAOhB,SAAS0mC,EAAQ5tB,GACf,IAAIxU,EACAqJ,EAEJ,GAAImL,aAEG,IAAuB,iBAAZA,KAAwB,WAAYA,GAQpD,MAAM,IAAI/B,MAAM,oCAAsC+B,EAAU,KAJhE,IAHAxU,EAASwU,EAAQxU,OACjBqJ,GAAS,IAEAA,EAAQrJ,GACfsK,EAAIkK,EAAQnL,KAOlB,SAAS84B,EAAUG,EAAQ5mC,GACzB,IAAIuU,EAAQsyB,EAAKD,GAEbryB,GACEyxB,EAAMzxB,EAAM,KAAOyxB,EAAMhmC,KAC3BA,EAAQ0hC,EAAOntB,EAAM,GAAIvU,IAG3BuU,EAAM,GAAKvU,GAEXkmC,EAAUj8B,KAAK1E,EAAMrG,KAAKmF,cAnLhCuU,EAAUlB,MAwMV,SAAeovB,GACb,IACIC,EADAja,EAAOmZ,EAAMa,GAOjB,GAJAN,IAEAQ,EAAa,QADbD,EAASnuB,EAAUmuB,QAGfE,EAAQF,EAAQ,SAClB,OAAO,IAAIA,EAAOp2B,OAAOmc,GAAOA,GAAMpV,QAGxC,OAAOqvB,EAAOp2B,OAAOmc,GAAOA,IAnN9BlU,EAAUyqB,UA4QV,SAAmBz+B,EAAMkiC,GACvB,IACII,EADApa,EAAOmZ,EAAMa,GAQjB,GALAN,IAEAW,EAAe,YADfD,EAAWtuB,EAAUsuB,UAErBE,EAAWxiC,GAEPqiC,EAAQC,EAAU,WACpB,OAAO,IAAIA,EAAStiC,EAAMkoB,GAAMua,UAGlC,OAAOH,EAAStiC,EAAMkoB,IAxRxBlU,EAAU0uB,IAAMA,EAChB1uB,EAAUG,QAuPV,SAAiBnU,EAAMkoB,GACrB,IACIva,EADAg1B,GAAW,EAOf,OAJAD,EAAI1iC,EAAMkoB,GAMV,SAAcxO,EAAK7Z,GACjB8iC,GAAW,EACXxB,EAAKznB,GACL/L,EAAS9N,KAPX+iC,EAAW,UAAW,MAAOD,GAEtBh1B,GA9PTqG,EAAUiC,QAAUA,EACpBjC,EAAU6uB,YAyTV,SAAqBX,GACnB,IACIha,EADAya,GAAW,EAYf,OATAf,IACAQ,EAAa,cAAepuB,EAAUmuB,QACtCI,EAAe,cAAevuB,EAAUsuB,UAGxCrsB,EAFAiS,EAAOmZ,EAAMa,IAQb,SAAcxoB,GACZipB,GAAW,EACXxB,EAAKznB,MANPkpB,EAAW,cAAe,UAAWD,GAE9Bza,GAnUFlU,EAGP,SAASA,IAKP,IAJA,IAAI8uB,EAAcjwB,IACdnT,EAAS4hC,EAAU5hC,OACnBqJ,GAAS,IAEJA,EAAQrJ,GACfojC,EAAY7uB,IAAIjC,MAAM,KAAMsvB,EAAUv4B,IAKxC,OAFA+5B,EAAYzkC,KAAKy+B,GAAO,EAAM,GAAI0E,IAE3BsB,EAUT,SAASlB,IACP,IAAIlnB,EACAsnB,EACAp9B,EACAm+B,EAEJ,GAAItB,EACF,OAAOztB,EAGT,OAAS0tB,EAAcJ,EAAU5hC,QAE/BsiC,GADAtnB,EAAS4mB,EAAUI,IACH,GAEF,MAEE,KAHhB98B,EAAU8V,EAAO,OAOD,IAAZ9V,IACF8V,EAAO,QAAK3a,GAKa,mBAF3BgjC,EAAcf,EAAOhwB,MAAMgC,EAAW0G,EAAO/Z,MAAM,MAGjD4gC,EAAattB,IAAI8uB,IAOrB,OAHAtB,GAAS,EACTC,EAAcj8B,IAEPuO,EAsHT,SAASiuB,EAAKD,GAKZ,IAJA,IAEIryB,EAFAjQ,EAAS4hC,EAAU5hC,OACnBqJ,GAAS,IAGJA,EAAQrJ,GAGf,IAFAiQ,EAAQ2xB,EAAUv4B,IAER,KAAOi5B,EACf,OAAOryB,EAwBb,SAAS+yB,EAAI1iC,EAAMkoB,EAAMzK,GASvB,GARA+kB,EAAWxiC,GACX4hC,IAEKnkB,GAAsB,mBAATyK,IAChBzK,EAAKyK,EACLA,EAAO,OAGJzK,EACH,OAAO,IAAIulB,QAAQC,GAKrB,SAASA,EAAStkC,EAASukC,GACzB3B,EAAamB,IAAI1iC,EAAMqhC,EAAMnZ,IAE7B,SAAcxO,EAAK7Z,EAAMqoB,GACvBroB,EAAOA,GAAQG,EACX0Z,EACFwpB,EAAOxpB,GACE/a,EACTA,EAAQkB,GAER4d,EAAG,KAAM5d,EAAMqoB,MAZrB+a,EAAS,KAAMxlB,GA2DjB,SAASxH,EAAQisB,EAAKzkB,GAKpB,GAJAmkB,IACAQ,EAAa,UAAWpuB,EAAUmuB,QAClCI,EAAe,UAAWvuB,EAAUsuB,WAE/B7kB,EACH,OAAO,IAAIulB,QAAQC,GAKrB,SAASA,EAAStkC,EAASukC,GACzB,IAAIhb,EAAOmZ,EAAMa,GAEjBiB,EAAST,IAAI1uB,EAAW,CAACkU,KAAMA,IAE/B,SAAcxO,GACRA,EACFwpB,EAAOxpB,GACE/a,EACTA,EAAQupB,GAERzK,EAAG,KAAMyK,MAbf+a,EAAS,KAAMxlB,IAvWF5K,GAAU+uB,SAE3B,IAAIjhC,EAAQ,GAAGA,MACXulB,EAAM,GAAGlqB,eAGTmnC,EAAW9c,IACZpS,KAIH,SAAuBhY,EAAGmnC,GACxBA,EAAIvjC,KAAO5D,EAAE6W,MAAMswB,EAAIlb,SAJtBjU,KAOH,SAAqBhY,EAAGmnC,EAAK1kC,GAC3BzC,EAAEymC,IAAIU,EAAIvjC,KAAMujC,EAAIlb,MAEpB,SAAcxO,EAAK7Z,EAAMqoB,GACnBxO,EACFhb,EAAKgb,IAEL0pB,EAAIvjC,KAAOA,EACXujC,EAAIlb,KAAOA,EACXxpB,WAfHuV,KAoBH,SAA2BhY,EAAGmnC,GAC5B,IAAIz1B,EAAS1R,EAAEwiC,UAAU2E,EAAIvjC,KAAMujC,EAAIlb,MACnCA,EAAOkb,EAAIlb,KAEXva,UAEyB,iBAAXA,GAAuB6W,EAAO7W,GAC9Cua,EAAK0F,SAAWjgB,EAEhBua,EAAKva,OAASA,MA4WlB,SAAS00B,EAAQjnC,EAAOV,GACtB,MACmB,mBAAVU,GACPA,EAAMW,YASV,SAAcX,GACZ,IAAIM,EACJ,IAAKA,KAAON,EACV,OAAO,EAGT,OAAO,EAXJsY,CAAKtY,EAAMW,YAAcrB,KAAQU,EAAMW,WAe5C,SAASqmC,EAAa1nC,EAAMynC,GAC1B,GAAsB,mBAAXA,EACT,MAAM,IAAIhwB,MAAM,WAAazX,EAAO,sBAKxC,SAAS6nC,EAAe7nC,EAAM4nC,GAC5B,GAAwB,mBAAbA,EACT,MAAM,IAAInwB,MAAM,WAAazX,EAAO,wBAKxC,SAASinC,EAAejnC,EAAM+mC,GAC5B,GAAIA,EACF,MAAM,IAAItvB,MACR,kBACEzX,EACA,qHAMR,SAAS8nC,EAAWxiC,GAClB,IAAKA,GAA6B,iBAAdA,EAAKmD,KACvB,MAAM,IAAIgP,MAAM,uBAAyBnS,EAAO,KAKpD,SAAS4iC,EAAWloC,EAAM2oC,EAAWV,GACnC,IAAKA,EACH,MAAM,IAAIxwB,MACR,IAAMzX,EAAO,0BAA4B2oC,EAAY,e,kCCnd3D,IAAI36B,EAAgBtM,EAAQ,QAW5BlC,EAAOD,QATP,SAAqB0I,EAAMyhB,GACzB,OAAIzhB,EAAKjD,QACPgJ,EAAc/F,EAAMA,EAAKjD,OAAQ,EAAG0kB,GAC7BzhB,GAGFyhB,I,kCCPPlqB,EAAOD,QAAUmC,EAAQ,S,kCCD3B,IAAI8pB,EAAM,GAAGlqB,eAEb9B,EAAOD,QAAUisB,G,kCCFjB,IAAIxd,EAAgBtM,EAAQ,QACxB0B,EAAqB1B,EAAQ,QAC7B2B,EAAe3B,EAAQ,QACvB4B,EAAa5B,EAAQ,QAErBqa,EAAe,CACjB/b,KAAM,eACNmC,SAmBF,SAA8BC,EAASC,EAAIC,GACzC,OAAOF,EAAQ0T,QAAQ8yB,EAA0BzK,EAAa77B,GAE9D,SAAS67B,EAAYv7B,GACnB,OAAa,OAATA,EACKP,EAAGO,GAGRQ,EAAmBR,GACdR,EAAQ0T,QAAQ8yB,EAA0BzK,EAAa97B,EAAvDD,CAA2DQ,IAGpER,EAAQS,MAAM,iBACPW,EAAQZ,IAGjB,SAASY,EAAQZ,GACf,OAAa,OAATA,GAAiBQ,EAAmBR,IACtCR,EAAQW,KAAK,iBACNo7B,EAAYv7B,KAGrBR,EAAQU,QAAQF,GACTY,KAzCTS,QAOF,SAA6BC,EAAQsK,GACnC,IAAI5L,EAAO,CACT6F,KAAM,eACNN,MAAOjE,EAAO,GAAG,GAAGiE,MACpByC,IAAK1G,EAAOA,EAAOc,OAAS,GAAG,GAAG4F,KAIpC,OAFAoD,EAAc9J,EAAQ,EAAG,EAAG,CAAC,CAAC,QAAStB,EAAM4L,KAC7CR,EAAc9J,EAAQA,EAAOc,OAAQ,EAAG,CAAC,CAAC,OAAQpC,EAAM4L,KACjDtK,IAbL0kC,EAA2B,CAC7BzmC,SA0CF,SAAiCC,EAASC,EAAIC,GAC5C,IAAIG,EAAOC,KACX,OAAOW,EAAajB,GAEpB,SAAS+7B,EAAYv7B,GACnB,GAAIQ,EAAmBR,GAIrB,OAHAR,EAAQS,MAAM,cACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,cACNM,EAAajB,EAAS+7B,EAAa,aAAc,GAG1D,OAAO76B,EAAWb,EAAKyB,OAAQ,cAAgB,EAAI5B,EAAIM,GAAQP,EAAGO,KAV1B,aAAc,IA3CxDiC,SAAS,GAyDXrF,EAAOD,QAAUwc,G,iPCrEjBvc,EAAOD,QAIP,SAAe2K,GACb,IAAIzH,EAAOC,KAEXA,KAAK+kC,OAEL,SAAeD,GACb,OAAOqB,EACLrB,EACA,EAAc,GAAI/kC,EAAKkB,KAAK,YAAauG,EAAS,CAIhDE,WAAY3H,EAAKkB,KAAK,wBAA0B,GAChDwtB,gBAAiB1uB,EAAKkB,KAAK,2BAA6B,QAfhE,IAAIklC,EAAennC,EAAQ,S,kCCO3BlC,EAAOD,QARP,SAAsBqD,GACpB,OAGEA,EAAO,IAAe,MAATA,I,kCCLjB,IAAI4oB,EAAM,GAAGlqB,eA6Bb,SAASmqB,EAAMA,GAKb,OAJKA,GAA0B,iBAAVA,IACnBA,EAAQ,IAGHpd,EAAMod,EAAMpc,MAAQ,IAAMhB,EAAMod,EAAM3E,QAG/C,SAASpc,EAAS4c,GAKhB,OAJKA,GAAsB,iBAARA,IACjBA,EAAM,IAGDmE,EAAMnE,EAAInf,OAAS,IAAMsjB,EAAMnE,EAAI1c,KAG5C,SAASyD,EAAM3N,GACb,OAAOA,GAA0B,iBAAVA,EAAqBA,EAAQ,EA5CtDlB,EAAOD,QAEP,SAAmBmB,GAEjB,IAAKA,GAA0B,iBAAVA,EACnB,MAAO,GAIT,GAAI8qB,EAAI5rB,KAAKc,EAAO,aAAe8qB,EAAI5rB,KAAKc,EAAO,QACjD,OAAOgK,EAAShK,EAAMgK,UAIxB,GAAI8gB,EAAI5rB,KAAKc,EAAO,UAAY8qB,EAAI5rB,KAAKc,EAAO,OAC9C,OAAOgK,EAAShK,GAIlB,GAAI8qB,EAAI5rB,KAAKc,EAAO,SAAW8qB,EAAI5rB,KAAKc,EAAO,UAC7C,OAAO+qB,EAAM/qB,GAIf,MAAO,K,kCC1BT,IAAI0C,EAAqB1B,EAAQ,QAC7B2B,EAAe3B,EAAQ,QACvBuM,EAAUvM,EAAQ,QAElB6a,EAAkB,CACpBvc,KAAM,kBACNmC,SAwDF,SAAiCC,EAASC,EAAIC,GAC5C,IAEIoV,EACAjR,EAHAhE,EAAOC,KACP2L,EAAQ5L,EAAKyB,OAAOc,OAIxB,KAAOqJ,KAGL,GACiC,eAA/B5L,EAAKyB,OAAOmK,GAAO,GAAG5F,MACS,eAA/BhG,EAAKyB,OAAOmK,GAAO,GAAG5F,MACS,YAA/BhG,EAAKyB,OAAOmK,GAAO,GAAG5F,KACtB,CACAhC,EAA2C,cAA/BhE,EAAKyB,OAAOmK,GAAO,GAAG5F,KAClC,MAIJ,OAEA,SAAe7F,GACb,IAAKH,EAAK2B,OAAS3B,EAAKkC,WAAa8B,GAInC,OAHArE,EAAQS,MAAM,qBACdT,EAAQS,MAAM,6BACd6U,EAAS9U,EACFoO,EAAgBpO,GAGzB,OAAON,EAAIM,IAGb,SAASoO,EAAgBpO,GACvB,OAAIA,IAAS8U,GACXtV,EAAQU,QAAQF,GACToO,IAGT5O,EAAQW,KAAK,6BACNM,EAAajB,EAASqgC,EAAoB,aAA1Cp/B,CAAwDT,IAGjE,SAAS6/B,EAAmB7/B,GAC1B,OAAa,OAATA,GAAiBQ,EAAmBR,IACtCR,EAAQW,KAAK,qBACNV,EAAGO,IAGLN,EAAIM,KAvGb45B,UAGF,SAAkCt4B,EAAQsK,GACxC,IACIhL,EACAwE,EACAW,EACAC,EAJAyF,EAAQnK,EAAOc,OAOnB,KAAOqJ,KACL,GAAyB,UAArBnK,EAAOmK,GAAO,GAAgB,CAChC,GAA8B,YAA1BnK,EAAOmK,GAAO,GAAG5F,KAAoB,CACvCjF,EAAU6K,EACV,MAG4B,cAA1BnK,EAAOmK,GAAO,GAAG5F,OACnBT,EAAOqG,OAIqB,YAA1BnK,EAAOmK,GAAO,GAAG5F,MAEnBvE,EAAOiN,OAAO9C,EAAO,GAGlB1F,GAAwC,eAA1BzE,EAAOmK,GAAO,GAAG5F,OAClCE,EAAa0F,GAKnBzF,EAAU,CACRH,KAAM,gBACNN,MAAO8F,EAAQ/J,EAAO8D,GAAM,GAAGG,OAC/ByC,IAAKqD,EAAQ/J,EAAOA,EAAOc,OAAS,GAAG,GAAG4F,MAG5C1G,EAAO8D,GAAM,GAAGS,KAAO,oBAGnBE,GACFzE,EAAOiN,OAAOnJ,EAAM,EAAG,CAAC,QAASY,EAAS4F,IAC1CtK,EAAOiN,OAAOxI,EAAa,EAAG,EAAG,CAAC,OAAQzE,EAAOV,GAAS,GAAIgL,IAC9DtK,EAAOV,GAAS,GAAGoH,IAAMqD,EAAQ/J,EAAOyE,GAAY,GAAGiC,MAEvD1G,EAAOV,GAAS,GAAKoF,EAIvB,OADA1E,EAAOyG,KAAK,CAAC,OAAQ/B,EAAS4F,IACvBtK,IAuDT1E,EAAOD,QAAUgd,G,kCClHjB,IAEIH,EAAkB,CACpBpc,KAAM,kBACNmC,SAIF,SAAiCC,EAASC,EAAIC,GAC5C,IAAIG,EAAOC,KACX,OAEA,SAAeE,GAKb,OAJAR,EAAQS,MAAM,cACdT,EAAQS,MAAM,oBACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,oBACNC,GAGT,SAASA,EAAKJ,GACZ,OAAa,KAATA,GACFR,EAAQS,MAAM,eACdT,EAAQU,QAAQF,GAChBR,EAAQW,KAAK,eACbX,EAAQW,KAAK,cACN6S,GAGFtT,EAAIM,GAGb,SAASgT,EAAMhT,GAEb,OAAgB,KAATA,GAEL,2BAA4BH,EAAK6B,OAAOC,WAEtCjC,EAAIM,GACJP,EAAGO,KAlCTyjB,WALa3kB,EAAQ,QAKA2kB,YAsCvB7mB,EAAOD,QAAU6c,G,kCC3CjB,IAAI7Y,EAAc7B,EAAQ,QAU1BlC,EAAOD,QARP,SAAqB2E,GACnB,MAAQX,EAAYW,KAIpB,OAAOA","file":"ssr-bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/huge-link/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"QfWi\");\n","'use strict'\n\nvar decodeEntity = require('parse-entities/decode-entity.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiDigit = require('../character/ascii-digit.js')\nvar asciiHexDigit = require('../character/ascii-hex-digit.js')\n\nfunction _interopDefaultLegacy(e) {\n return e && typeof e === 'object' && 'default' in e ? e : {default: e}\n}\n\nvar decodeEntity__default = /*#__PURE__*/ _interopDefaultLegacy(decodeEntity)\n\nvar characterReference = {\n name: 'characterReference',\n tokenize: tokenizeCharacterReference\n}\n\nfunction tokenizeCharacterReference(effects, ok, nok) {\n var self = this\n var size = 0\n var max\n var test\n return start\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 function open(code) {\n if (code === 35) {\n effects.enter('characterReferenceMarkerNumeric')\n effects.consume(code)\n effects.exit('characterReferenceMarkerNumeric')\n return numeric\n }\n\n effects.enter('characterReferenceValue')\n max = 31\n test = asciiAlphanumeric\n return value(code)\n }\n\n function numeric(code) {\n if (code === 88 || code === 120) {\n effects.enter('characterReferenceMarkerHexadecimal')\n effects.consume(code)\n effects.exit('characterReferenceMarkerHexadecimal')\n effects.enter('characterReferenceValue')\n max = 6\n test = asciiHexDigit\n return value\n }\n\n effects.enter('characterReferenceValue')\n max = 7\n test = asciiDigit\n return value(code)\n }\n\n function value(code) {\n var token\n\n if (code === 59 && size) {\n token = effects.exit('characterReferenceValue')\n\n if (\n test === asciiAlphanumeric &&\n !decodeEntity__default['default'](self.sliceSerialize(token))\n ) {\n return nok(code)\n }\n\n effects.enter('characterReferenceMarker')\n effects.consume(code)\n effects.exit('characterReferenceMarker')\n effects.exit('characterReference')\n return ok\n }\n\n if (test(code) && size++ < max) {\n effects.consume(code)\n return value\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = characterReference\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar subtokenize = require('../util/subtokenize.js')\n\n// No name because it must not be turned off.\nvar content = {\n tokenize: tokenizeContent,\n resolve: resolveContent,\n interruptible: true,\n lazy: true\n}\nvar continuationConstruct = {\n tokenize: tokenizeContinuation,\n partial: true\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\nfunction resolveContent(events) {\n subtokenize(events)\n return events\n}\n\nfunction tokenizeContent(effects, ok) {\n var previous\n return start\n\n function start(code) {\n effects.enter('content')\n previous = effects.enter('chunkContent', {\n contentType: 'content'\n })\n return data(code)\n }\n\n function data(code) {\n if (code === null) {\n return contentEnd(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.check(\n continuationConstruct,\n contentContinue,\n contentEnd\n )(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n\n function contentEnd(code) {\n effects.exit('chunkContent')\n effects.exit('content')\n return ok(code)\n }\n\n function contentContinue(code) {\n effects.consume(code)\n effects.exit('chunkContent')\n previous = previous.next = effects.enter('chunkContent', {\n contentType: 'content',\n previous: previous\n })\n return data\n }\n}\n\nfunction tokenizeContinuation(effects, ok, nok) {\n var self = this\n return startLookahead\n\n function startLookahead(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, prefixed, 'linePrefix')\n }\n\n function prefixed(code) {\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n if (\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1 ||\n prefixSize(self.events, 'linePrefix') < 4\n ) {\n return effects.interrupt(self.parser.constructs.flow, nok, ok)(code)\n }\n\n return ok(code)\n }\n}\n\nmodule.exports = content\n","module.exports = extend\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {}\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i]\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n\n return target\n}\n","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = function getDefinitions(tree) {\n var definitions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n visit(tree, 'definition', function (node) {\n var identifier = node.identifier.toUpperCase();\n if (identifier in definitions) return;\n definitions[identifier] = {\n href: node.url,\n title: node.title\n };\n });\n return definitions;\n};","'use strict'\n\nmodule.exports = require('./lib')\n","/* eslint-disable react/prop-types, react/no-multi-comp */\n'use strict';\n\nvar xtend = require('xtend');\n\nvar React = require('react');\n/* istanbul ignore next - Don’t crash on old React. */\n\n\nvar supportsStringRender = parseInt((React.version || '16').slice(0, 2), 10) >= 16;\nvar createElement = React.createElement;\nmodule.exports = {\n break: 'br',\n paragraph: 'p',\n emphasis: 'em',\n strong: 'strong',\n thematicBreak: 'hr',\n blockquote: 'blockquote',\n delete: 'del',\n link: 'a',\n image: 'img',\n linkReference: 'a',\n imageReference: 'img',\n table: SimpleRenderer.bind(null, 'table'),\n tableHead: SimpleRenderer.bind(null, 'thead'),\n tableBody: SimpleRenderer.bind(null, 'tbody'),\n tableRow: SimpleRenderer.bind(null, 'tr'),\n tableCell: TableCell,\n root: Root,\n text: TextRenderer,\n list: List,\n listItem: ListItem,\n definition: NullRenderer,\n heading: Heading,\n inlineCode: InlineCode,\n code: CodeBlock,\n html: Html,\n virtualHtml: VirtualHtml,\n parsedHtml: ParsedHtml\n};\n\nfunction TextRenderer(props) {\n /* istanbul ignore next - a text node w/o a value could be injected by plugins */\n var children = props.children || '';\n /* istanbul ignore next - `span` is a fallback for old React. */\n\n return supportsStringRender ? children : createElement('span', null, children);\n}\n\nfunction Root(props) {\n var className = props.className;\n var root = !className && React.Fragment || 'div';\n return createElement(root, className ? {\n className: className\n } : null, props.children);\n}\n\nfunction SimpleRenderer(tag, props) {\n return createElement(tag, getCoreProps(props), props.children);\n}\n\nfunction TableCell(props) {\n var style = props.align ? {\n textAlign: props.align\n } : undefined;\n var coreProps = getCoreProps(props);\n return createElement(props.isHeader ? 'th' : 'td', style ? xtend({\n style: style\n }, coreProps) : coreProps, props.children);\n}\n\nfunction Heading(props) {\n return createElement(\"h\".concat(props.level), getCoreProps(props), props.children);\n}\n\nfunction List(props) {\n var attrs = getCoreProps(props);\n\n if (props.start !== null && props.start !== 1 && props.start !== undefined) {\n attrs.start = props.start.toString();\n }\n\n return createElement(props.ordered ? 'ol' : 'ul', attrs, props.children);\n}\n\nfunction ListItem(props) {\n var checkbox = null;\n\n if (props.checked !== null && props.checked !== undefined) {\n var checked = props.checked;\n checkbox = createElement('input', {\n type: 'checkbox',\n checked: checked,\n readOnly: true\n });\n }\n\n return createElement('li', getCoreProps(props), checkbox, props.children);\n}\n\nfunction CodeBlock(props) {\n var className = props.language && \"language-\".concat(props.language);\n var code = createElement('code', className ? {\n className: className\n } : null, props.value);\n return createElement('pre', getCoreProps(props), code);\n}\n\nfunction InlineCode(props) {\n return createElement('code', getCoreProps(props), props.children);\n}\n\nfunction Html(props) {\n if (props.skipHtml) {\n return null;\n }\n\n var dangerous = props.allowDangerousHtml || props.escapeHtml === false;\n var tag = props.isBlock ? 'div' : 'span';\n\n if (!dangerous) {\n /* istanbul ignore next - `tag` is a fallback for old React. */\n return createElement(React.Fragment || tag, null, props.value);\n }\n\n var nodeProps = {\n dangerouslySetInnerHTML: {\n __html: props.value\n }\n };\n return createElement(tag, nodeProps);\n}\n\nfunction ParsedHtml(props) {\n /* To do: `React.cloneElement` is slow, is it really needed? */\n return props['data-sourcepos'] ? React.cloneElement(props.element, {\n 'data-sourcepos': props['data-sourcepos']\n }) : props.element;\n}\n\nfunction VirtualHtml(props) {\n return createElement(props.tag, getCoreProps(props), props.children);\n}\n\nfunction NullRenderer() {\n return null;\n}\n\nfunction getCoreProps(props) {\n var source = props['data-sourcepos'];\n /* istanbul ignore next - nodes from plugins w/o position */\n\n return source ? {\n 'data-sourcepos': source\n } : {};\n}","'use strict'\n\nvar miniflat = require('./util/miniflat.js')\nvar content = require('./initialize/content.js')\nvar document = require('./initialize/document.js')\nvar flow = require('./initialize/flow.js')\nvar text = require('./initialize/text.js')\nvar combineExtensions = require('./util/combine-extensions.js')\nvar createTokenizer = require('./util/create-tokenizer.js')\nvar constructs = require('./constructs.js')\n\nfunction parse(options) {\n var settings = options || {}\n var parser = {\n defined: [],\n constructs: combineExtensions(\n [constructs].concat(miniflat(settings.extensions))\n ),\n content: create(content),\n document: create(document),\n flow: create(flow),\n string: create(text.string),\n text: create(text.text)\n }\n return parser\n\n function create(initializer) {\n return creator\n\n function creator(from) {\n return createTokenizer(parser, initializer, from)\n }\n }\n}\n\nmodule.exports = parse\n","'use strict'\n\nfunction markdownLineEnding(code) {\n return code < -2\n}\n\nmodule.exports = markdownLineEnding\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/)\n\nmodule.exports = asciiAlphanumeric\n","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = function (node) {\n visit(node, 'table', wrap);\n return node;\n};\n\nfunction wrap(table) {\n var children = table.children;\n table.children = [{\n type: 'tableHead',\n align: table.align,\n children: [children[0]],\n position: children[0].position\n }];\n\n if (children.length > 1) {\n table.children.push({\n type: 'tableBody',\n align: table.align,\n children: children.slice(1),\n position: {\n start: children[1].position.start,\n end: children[children.length - 1].position.end\n }\n });\n }\n}","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\n\nfunction spaceFactory(effects, ok, type, max) {\n var limit = max ? max - 1 : Infinity\n var size = 0\n return start\n\n function start(code) {\n if (markdownSpace(code)) {\n effects.enter(type)\n return prefix(code)\n }\n\n return ok(code)\n }\n\n function prefix(code) {\n if (markdownSpace(code) && size++ < limit) {\n effects.consume(code)\n return prefix\n }\n\n effects.exit(type)\n return ok(code)\n }\n}\n\nmodule.exports = spaceFactory\n","\"use strict\";\n\nvar HtmlParser = '__RMD_HTML_PARSER__';\n/* istanbul ignore next - Fallback for `Symbol`. */\n\nexports.HtmlParser = typeof Symbol === 'undefined' ? HtmlParser : Symbol(HtmlParser);","/** @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\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAlpha = regexCheck(/[A-Za-z]/)\n\nmodule.exports = asciiAlpha\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nvar partialBlankLine = {\n tokenize: tokenizePartialBlankLine,\n partial: true\n}\n\nfunction tokenizePartialBlankLine(effects, ok, nok) {\n return factorySpace(effects, afterWhitespace, 'linePrefix')\n\n function afterWhitespace(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n\nmodule.exports = partialBlankLine\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar shallow = require('./shallow.js')\n\nfunction subtokenize(events) {\n var jumps = {}\n var index = -1\n var event\n var lineIndex\n var otherIndex\n var otherEvent\n var parameters\n var subevents\n var more\n\n while (++index < events.length) {\n while (index in jumps) {\n index = jumps[index]\n }\n\n event = events[index] // Add a hook for the GFM tasklist extension, which needs to know if text\n // is in the first content of a list item.\n\n if (\n index &&\n event[1].type === 'chunkFlow' &&\n events[index - 1][1].type === 'listItemPrefix'\n ) {\n subevents = event[1]._tokenizer.events\n otherIndex = 0\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'lineEndingBlank'\n ) {\n otherIndex += 2\n }\n\n if (\n otherIndex < subevents.length &&\n subevents[otherIndex][1].type === 'content'\n ) {\n while (++otherIndex < subevents.length) {\n if (subevents[otherIndex][1].type === 'content') {\n break\n }\n\n if (subevents[otherIndex][1].type === 'chunkText') {\n subevents[otherIndex][1].isInFirstContentOfListItem = true\n otherIndex++\n }\n }\n }\n } // Enter.\n\n if (event[0] === 'enter') {\n if (event[1].contentType) {\n assign(jumps, subcontent(events, index))\n index = jumps[index]\n more = true\n }\n } // Exit.\n else if (event[1]._container || event[1]._movePreviousLineEndings) {\n otherIndex = index\n lineIndex = undefined\n\n while (otherIndex--) {\n otherEvent = events[otherIndex]\n\n if (\n otherEvent[1].type === 'lineEnding' ||\n otherEvent[1].type === 'lineEndingBlank'\n ) {\n if (otherEvent[0] === 'enter') {\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n }\n\n otherEvent[1].type = 'lineEnding'\n lineIndex = otherIndex\n }\n } else {\n break\n }\n }\n\n if (lineIndex) {\n // Fix position.\n event[1].end = shallow(events[lineIndex][1].start) // Switch container exit w/ line endings.\n\n parameters = events.slice(lineIndex, index)\n parameters.unshift(event)\n chunkedSplice(events, lineIndex, index - lineIndex + 1, parameters)\n }\n }\n }\n\n return !more\n}\n\nfunction subcontent(events, eventIndex) {\n var token = events[eventIndex][1]\n var context = events[eventIndex][2]\n var startPosition = eventIndex - 1\n var startPositions = []\n var tokenizer =\n token._tokenizer || context.parser[token.contentType](token.start)\n var childEvents = tokenizer.events\n var jumps = []\n var gaps = {}\n var stream\n var previous\n var index\n var entered\n var end\n var adjust // Loop forward through the linked tokens to pass them in order to the\n // subtokenizer.\n\n while (token) {\n // Find the position of the event for this token.\n while (events[++startPosition][1] !== token) {\n // Empty.\n }\n\n startPositions.push(startPosition)\n\n if (!token._tokenizer) {\n stream = context.sliceStream(token)\n\n if (!token.next) {\n stream.push(null)\n }\n\n if (previous) {\n tokenizer.defineSkip(token.start)\n }\n\n if (token.isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = true\n }\n\n tokenizer.write(stream)\n\n if (token.isInFirstContentOfListItem) {\n tokenizer._gfmTasklistFirstContentOfListItem = undefined\n }\n } // Unravel the next token.\n\n previous = token\n token = token.next\n } // Now, loop back through all events (and linked tokens), to figure out which\n // parts belong where.\n\n token = previous\n index = childEvents.length\n\n while (index--) {\n // Make sure we’ve at least seen something (final eol is part of the last\n // token).\n if (childEvents[index][0] === 'enter') {\n entered = true\n } else if (\n // Find a void token that includes a break.\n entered &&\n childEvents[index][1].type === childEvents[index - 1][1].type &&\n childEvents[index][1].start.line !== childEvents[index][1].end.line\n ) {\n add(childEvents.slice(index + 1, end))\n // Help GC.\n token._tokenizer = token.next = undefined\n token = token.previous\n end = index + 1\n }\n }\n\n // Help GC.\n tokenizer.events = token._tokenizer = token.next = undefined // Do head:\n\n add(childEvents.slice(0, end))\n index = -1\n adjust = 0\n\n while (++index < jumps.length) {\n gaps[adjust + jumps[index][0]] = adjust + jumps[index][1]\n adjust += jumps[index][1] - jumps[index][0] - 1\n }\n\n return gaps\n\n function add(slice) {\n var start = startPositions.pop()\n jumps.unshift([start, start + slice.length - 1])\n chunkedSplice(events, start, 2, slice)\n }\n}\n\nmodule.exports = subtokenize\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction safeFromInt(value, base) {\n var code = parseInt(value, base)\n\n if (\n // C0 except for HT, LF, FF, CR, space\n code < 9 ||\n code === 11 ||\n (code > 13 && code < 32) || // Control character (DEL) of the basic block and C1 controls.\n (code > 126 && code < 160) || // Lone high surrogates and low surrogates.\n (code > 55295 && code < 57344) || // Noncharacters.\n (code > 64975 && code < 65008) ||\n (code & 65535) === 65535 ||\n (code & 65535) === 65534 || // Out of range\n code > 1114111\n ) {\n return '\\uFFFD'\n }\n\n return fromCharCode(code)\n}\n\nmodule.exports = safeFromInt\n","'use strict'\n\nmodule.exports = visit\n\nvar visitParents = require('unist-util-visit-parents')\n\nvar CONTINUE = visitParents.CONTINUE\nvar SKIP = visitParents.SKIP\nvar EXIT = visitParents.EXIT\n\nvisit.CONTINUE = CONTINUE\nvisit.SKIP = SKIP\nvisit.EXIT = EXIT\n\nfunction visit(tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor\n visitor = test\n test = null\n }\n\n visitParents(tree, test, overload, reverse)\n\n function overload(node, parents) {\n var parent = parents[parents.length - 1]\n var index = parent ? parent.children.indexOf(node) : null\n return visitor(node, index, parent)\n }\n}\n","'use strict'\n\nfunction miniflat(value) {\n return value === null || value === undefined\n ? []\n : 'length' in value\n ? value\n : [value]\n}\n\nmodule.exports = miniflat\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar codeText = {\n name: 'codeText',\n tokenize: tokenizeCodeText,\n resolve: resolveCodeText,\n previous: previous\n}\n\nfunction resolveCodeText(events) {\n var tailExitIndex = events.length - 4\n var headEnterIndex = 3\n var index\n var enter // If we start and end with an EOL or a space.\n\n if (\n (events[headEnterIndex][1].type === 'lineEnding' ||\n events[headEnterIndex][1].type === 'space') &&\n (events[tailExitIndex][1].type === 'lineEnding' ||\n events[tailExitIndex][1].type === 'space')\n ) {\n index = headEnterIndex // And we have data.\n\n while (++index < tailExitIndex) {\n if (events[index][1].type === 'codeTextData') {\n // Then we have padding.\n events[tailExitIndex][1].type = events[headEnterIndex][1].type =\n 'codeTextPadding'\n headEnterIndex += 2\n tailExitIndex -= 2\n break\n }\n }\n } // Merge adjacent spaces and data.\n\n index = headEnterIndex - 1\n tailExitIndex++\n\n while (++index <= tailExitIndex) {\n if (enter === undefined) {\n if (index !== tailExitIndex && events[index][1].type !== 'lineEnding') {\n enter = index\n }\n } else if (\n index === tailExitIndex ||\n events[index][1].type === 'lineEnding'\n ) {\n events[enter][1].type = 'codeTextData'\n\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n tailExitIndex -= index - enter - 2\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return events\n}\n\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\nfunction tokenizeCodeText(effects, ok, nok) {\n var sizeOpen = 0\n var size\n var token\n return start\n\n function start(code) {\n effects.enter('codeText')\n effects.enter('codeTextSequence')\n return openingSequence(code)\n }\n\n function openingSequence(code) {\n if (code === 96) {\n effects.consume(code)\n sizeOpen++\n return openingSequence\n }\n\n effects.exit('codeTextSequence')\n return gap(code)\n }\n\n function gap(code) {\n // EOF.\n if (code === null) {\n return nok(code)\n } // Closing fence?\n // Could also be data.\n\n if (code === 96) {\n token = effects.enter('codeTextSequence')\n size = 0\n return closingSequence(code)\n } // Tabs don’t work, and virtual spaces don’t make sense.\n\n if (code === 32) {\n effects.enter('space')\n effects.consume(code)\n effects.exit('space')\n return gap\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return gap\n } // Data.\n\n effects.enter('codeTextData')\n return data(code)\n } // In code.\n\n function data(code) {\n if (\n code === null ||\n code === 32 ||\n code === 96 ||\n markdownLineEnding(code)\n ) {\n effects.exit('codeTextData')\n return gap(code)\n }\n\n effects.consume(code)\n return data\n } // Closing fence.\n\n function closingSequence(code) {\n // More.\n if (code === 96) {\n effects.consume(code)\n size++\n return closingSequence\n } // Done!\n\n if (size === sizeOpen) {\n effects.exit('codeTextSequence')\n effects.exit('codeText')\n return ok(code)\n } // More or less accents: mark as data.\n\n token.type = 'codeTextData'\n return data(code)\n }\n}\n\nmodule.exports = codeText\n","// Copyright (c) 2013 Pieroxy \n// This work is free. You can redistribute it and/or modify it\n// under the terms of the WTFPL, Version 2\n// For more information see LICENSE.txt or http://www.wtfpl.net/\n//\n// For more information, the home page:\n// http://pieroxy.net/blog/pages/lz-string/testing.html\n//\n// LZ-based compression algorithm, version 1.4.4\nvar LZString = (function() {\n\n// private property\nvar f = String.fromCharCode;\nvar keyStrBase64 = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar keyStrUriSafe = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\";\nvar baseReverseDic = {};\n\nfunction getBaseValue(alphabet, character) {\n if (!baseReverseDic[alphabet]) {\n baseReverseDic[alphabet] = {};\n for (var i=0 ; i>> 8;\n buf[i*2+1] = current_value % 256;\n }\n return buf;\n },\n\n //decompress from uint8array (UCS-2 big endian format)\n decompressFromUint8Array:function (compressed) {\n if (compressed===null || compressed===undefined){\n return LZString.decompress(compressed);\n } else {\n var buf=new Array(compressed.length/2); // 2 bytes per character\n for (var i=0, TotalLen=buf.length; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n // Add wc to the dictionary.\n context_dictionary[context_wc] = context_dictSize++;\n context_w = String(context_c);\n }\n }\n\n // Output the code for w.\n if (context_w !== \"\") {\n if (Object.prototype.hasOwnProperty.call(context_dictionaryToCreate,context_w)) {\n if (context_w.charCodeAt(0)<256) {\n for (i=0 ; i> 1;\n }\n } else {\n value = 1;\n for (i=0 ; i> 1;\n }\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n delete context_dictionaryToCreate[context_w];\n } else {\n value = context_dictionary[context_w];\n for (i=0 ; i> 1;\n }\n\n\n }\n context_enlargeIn--;\n if (context_enlargeIn == 0) {\n context_enlargeIn = Math.pow(2, context_numBits);\n context_numBits++;\n }\n }\n\n // Mark the end of the stream\n value = 2;\n for (i=0 ; i> 1;\n }\n\n // Flush the last char\n while (true) {\n context_data_val = (context_data_val << 1);\n if (context_data_position == bitsPerChar-1) {\n context_data.push(getCharFromInt(context_data_val));\n break;\n }\n else context_data_position++;\n }\n return context_data.join('');\n },\n\n decompress: function (compressed) {\n if (compressed == null) return \"\";\n if (compressed == \"\") return null;\n return LZString._decompress(compressed.length, 32768, function(index) { return compressed.charCodeAt(index); });\n },\n\n _decompress: function (length, resetValue, getNextValue) {\n var dictionary = [],\n next,\n enlargeIn = 4,\n dictSize = 4,\n numBits = 3,\n entry = \"\",\n result = [],\n i,\n w,\n bits, resb, maxpower, power,\n c,\n data = {val:getNextValue(0), position:resetValue, index:1};\n\n for (i = 0; i < 3; i += 1) {\n dictionary[i] = i;\n }\n\n bits = 0;\n maxpower = Math.pow(2,2);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (next = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n c = f(bits);\n break;\n case 2:\n return \"\";\n }\n dictionary[3] = c;\n w = c;\n result.push(c);\n while (true) {\n if (data.index > length) {\n return \"\";\n }\n\n bits = 0;\n maxpower = Math.pow(2,numBits);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n switch (c = bits) {\n case 0:\n bits = 0;\n maxpower = Math.pow(2,8);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 1:\n bits = 0;\n maxpower = Math.pow(2,16);\n power=1;\n while (power!=maxpower) {\n resb = data.val & data.position;\n data.position >>= 1;\n if (data.position == 0) {\n data.position = resetValue;\n data.val = getNextValue(data.index++);\n }\n bits |= (resb>0 ? 1 : 0) * power;\n power <<= 1;\n }\n dictionary[dictSize++] = f(bits);\n c = dictSize-1;\n enlargeIn--;\n break;\n case 2:\n return result.join('');\n }\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n if (dictionary[c]) {\n entry = dictionary[c];\n } else {\n if (c === dictSize) {\n entry = w + w.charAt(0);\n } else {\n return null;\n }\n }\n result.push(entry);\n\n // Add w+entry[0] to the dictionary.\n dictionary[dictSize++] = w + entry.charAt(0);\n enlargeIn--;\n\n w = entry;\n\n if (enlargeIn == 0) {\n enlargeIn = Math.pow(2, numBits);\n numBits++;\n }\n\n }\n }\n};\n return LZString;\n})();\n\nif (typeof define === 'function' && define.amd) {\n define(function () { return LZString; });\n} else if( typeof module !== 'undefined' && module != null ) {\n module.exports = LZString\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","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n","'use strict'\n\nvar assign = require('../constant/assign.js')\n\nfunction shallow(object) {\n return assign({}, object)\n}\n\nmodule.exports = shallow\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar blockQuote = {\n name: 'blockQuote',\n tokenize: tokenizeBlockQuoteStart,\n continuation: {\n tokenize: tokenizeBlockQuoteContinuation\n },\n exit: exit\n}\n\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n if (code === 62) {\n if (!self.containerState.open) {\n effects.enter('blockQuote', {\n _container: true\n })\n self.containerState.open = true\n }\n\n effects.enter('blockQuotePrefix')\n effects.enter('blockQuoteMarker')\n effects.consume(code)\n effects.exit('blockQuoteMarker')\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n if (markdownSpace(code)) {\n effects.enter('blockQuotePrefixWhitespace')\n effects.consume(code)\n effects.exit('blockQuotePrefixWhitespace')\n effects.exit('blockQuotePrefix')\n return ok\n }\n\n effects.exit('blockQuotePrefix')\n return ok(code)\n }\n}\n\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(blockQuote, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nfunction exit(effects) {\n effects.exit('blockQuote')\n}\n\nmodule.exports = blockQuote\n","'use strict'\n\nfunction sliceChunks(chunks, token) {\n var startIndex = token.start._index\n var startBufferIndex = token.start._bufferIndex\n var endIndex = token.end._index\n var endBufferIndex = token.end._bufferIndex\n var view\n\n if (startIndex === endIndex) {\n view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)]\n } else {\n view = chunks.slice(startIndex, endIndex)\n\n if (startBufferIndex > -1) {\n view[0] = view[0].slice(startBufferIndex)\n }\n\n if (endBufferIndex > 0) {\n view.push(chunks[endIndex].slice(0, endBufferIndex))\n }\n }\n\n return view\n}\n\nmodule.exports = sliceChunks\n","\"use strict\";\n\nvar protocols = ['http', 'https', 'mailto', 'tel'];\n\nmodule.exports = function uriTransformer(uri) {\n var url = (uri || '').trim();\n var first = url.charAt(0);\n\n if (first === '#' || first === '/') {\n return url;\n }\n\n var colon = url.indexOf(':');\n\n if (colon === -1) {\n return url;\n }\n\n var length = protocols.length;\n var index = -1;\n\n while (++index < length) {\n var protocol = protocols[index];\n\n if (colon === protocol.length && url.slice(0, protocol.length).toLowerCase() === protocol) {\n return url;\n }\n }\n\n index = url.indexOf('?');\n\n if (index !== -1 && colon > index) {\n return url;\n }\n\n index = url.indexOf('#');\n\n if (index !== -1 && colon > index) {\n return url;\n } // eslint-disable-next-line no-script-url\n\n\n return 'javascript:void(0)';\n};","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/)\n\nmodule.exports = asciiAtext\n","'use strict'\n\nvar sizeChunks = require('./size-chunks.js')\n\nfunction prefixSize(events, type) {\n var tail = events[events.length - 1]\n if (!tail || tail[1].type !== type) return 0\n return sizeChunks(tail[2].sliceStream(tail[1]))\n}\n\nmodule.exports = prefixSize\n","module.exports = require(\"preact\");","'use strict'\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.\nvar unicodePunctuation = /[!-\\/:-@\\[-`\\{-~\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C77\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4F\\u2E52\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/\n\nmodule.exports = unicodePunctuation\n","'use strict'\n\nvar slice = [].slice\n\nmodule.exports = wrap\n\n// Wrap `fn`.\n// Can be sync or async; return a promise, receive a completion handler, return\n// new values and errors.\nfunction wrap(fn, callback) {\n var invoked\n\n return wrapped\n\n function wrapped() {\n var params = slice.call(arguments, 0)\n var callback = fn.length > params.length\n var result\n\n if (callback) {\n params.push(done)\n }\n\n try {\n result = fn.apply(null, params)\n } catch (error) {\n // Well, this is quite the pickle.\n // `fn` received a callback and invoked it (thus continuing the pipeline),\n // but later also threw an error.\n // We’re not about to restart the pipeline again, so the only thing left\n // to do is to throw the thing instead.\n if (callback && invoked) {\n throw error\n }\n\n return done(error)\n }\n\n if (!callback) {\n if (result && typeof result.then === 'function') {\n result.then(then, done)\n } else if (result instanceof Error) {\n done(result)\n } else {\n then(result)\n }\n }\n }\n\n // Invoke `next`, only once.\n function done() {\n if (!invoked) {\n invoked = true\n\n callback.apply(null, arguments)\n }\n }\n\n // Invoke `done` with one value.\n // Tracks if an error is passed, too.\n function then(value) {\n done(null, value)\n }\n}\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nvar thematicBreak = {\n name: 'thematicBreak',\n tokenize: tokenizeThematicBreak\n}\n\nfunction tokenizeThematicBreak(effects, ok, nok) {\n var size = 0\n var marker\n return start\n\n function start(code) {\n effects.enter('thematicBreak')\n marker = code\n return atBreak(code)\n }\n\n function atBreak(code) {\n if (code === marker) {\n effects.enter('thematicBreakSequence')\n return sequence(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, atBreak, 'whitespace')(code)\n }\n\n if (size < 3 || (code !== null && !markdownLineEnding(code))) {\n return nok(code)\n }\n\n effects.exit('thematicBreak')\n return ok(code)\n }\n\n function sequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return sequence\n }\n\n effects.exit('thematicBreakSequence')\n return atBreak(code)\n }\n}\n\nmodule.exports = thematicBreak\n","'use strict'\n\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\n\nvar headingAtx = {\n name: 'headingAtx',\n tokenize: tokenizeHeadingAtx,\n resolve: resolveHeadingAtx\n}\n\nfunction resolveHeadingAtx(events, context) {\n var contentEnd = events.length - 2\n var contentStart = 3\n var content\n var text // Prefix whitespace, part of the opening.\n\n if (events[contentStart][1].type === 'whitespace') {\n contentStart += 2\n } // Suffix whitespace, part of the closing.\n\n if (\n contentEnd - 2 > contentStart &&\n events[contentEnd][1].type === 'whitespace'\n ) {\n contentEnd -= 2\n }\n\n if (\n events[contentEnd][1].type === 'atxHeadingSequence' &&\n (contentStart === contentEnd - 1 ||\n (contentEnd - 4 > contentStart &&\n events[contentEnd - 2][1].type === 'whitespace'))\n ) {\n contentEnd -= contentStart + 1 === contentEnd ? 2 : 4\n }\n\n if (contentEnd > contentStart) {\n content = {\n type: 'atxHeadingText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end\n }\n text = {\n type: 'chunkText',\n start: events[contentStart][1].start,\n end: events[contentEnd][1].end,\n contentType: 'text'\n }\n chunkedSplice(events, contentStart, contentEnd - contentStart + 1, [\n ['enter', content, context],\n ['enter', text, context],\n ['exit', text, context],\n ['exit', content, context]\n ])\n }\n\n return events\n}\n\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n var self = this\n var size = 0\n return start\n\n function start(code) {\n effects.enter('atxHeading')\n effects.enter('atxHeadingSequence')\n return fenceOpenInside(code)\n }\n\n function fenceOpenInside(code) {\n if (code === 35 && size++ < 6) {\n effects.consume(code)\n return fenceOpenInside\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingSequence')\n return self.interrupt ? ok(code) : headingBreak(code)\n }\n\n return nok(code)\n }\n\n function headingBreak(code) {\n if (code === 35) {\n effects.enter('atxHeadingSequence')\n return sequence(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n effects.exit('atxHeading')\n return ok(code)\n }\n\n if (markdownSpace(code)) {\n return factorySpace(effects, headingBreak, 'whitespace')(code)\n }\n\n effects.enter('atxHeadingText')\n return data(code)\n }\n\n function sequence(code) {\n if (code === 35) {\n effects.consume(code)\n return sequence\n }\n\n effects.exit('atxHeadingSequence')\n return headingBreak(code)\n }\n\n function data(code) {\n if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n effects.exit('atxHeadingText')\n return headingBreak(code)\n }\n\n effects.consume(code)\n return data\n }\n}\n\nmodule.exports = headingAtx\n","'use strict'\n\nvar splice = [].splice\n\nmodule.exports = splice\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar unicodeWhitespace = regexCheck(/\\s/)\n\nmodule.exports = unicodeWhitespace\n","'use strict';\n\nvar xtend = require('xtend');\n\nvar unified = require('unified');\n\nvar parse = require('remark-parse');\n\nvar PropTypes = require('prop-types');\n\nvar addListMetadata = require('mdast-add-list-metadata');\n\nvar naiveHtml = require('./plugins/naive-html');\n\nvar disallowNode = require('./plugins/disallow-node');\n\nvar astToReact = require('./ast-to-react');\n\nvar wrapTableRows = require('./wrap-table-rows');\n\nvar getDefinitions = require('./get-definitions');\n\nvar uriTransformer = require('./uri-transformer');\n\nvar defaultRenderers = require('./renderers');\n\nvar symbols = require('./symbols');\n\nvar allTypes = Object.keys(defaultRenderers);\n\nvar ReactMarkdown = function ReactMarkdown(props) {\n // To do in next major: remove `source`.\n var src = props.source || props.children || '';\n\n if (props.allowedTypes && props.disallowedTypes) {\n throw new Error('Only one of `allowedTypes` and `disallowedTypes` should be defined');\n }\n\n var renderers = xtend(defaultRenderers, props.renderers);\n var processor = unified().use(parse).use(props.plugins || []); // eslint-disable-next-line no-sync\n\n var tree = processor.runSync(processor.parse(src));\n var renderProps = xtend(props, {\n renderers: renderers,\n definitions: getDefinitions(tree)\n });\n determineAstToReactTransforms(props).forEach(function (transform) {\n tree = transform(tree, renderProps);\n });\n return tree;\n};\n\nfunction determineAstToReactTransforms(props) {\n var transforms = [wrapTableRows, addListMetadata()];\n var disallowedTypes = props.disallowedTypes;\n\n if (props.allowedTypes) {\n disallowedTypes = allTypes.filter(function (type) {\n return type !== 'root' && props.allowedTypes.indexOf(type) === -1;\n });\n }\n\n var removalMethod = props.unwrapDisallowed ? 'unwrap' : 'remove';\n\n if (disallowedTypes && disallowedTypes.length > 0) {\n transforms.push(disallowNode.ofType(disallowedTypes, removalMethod));\n }\n\n if (props.allowNode) {\n transforms.push(disallowNode.ifNotMatch(props.allowNode, removalMethod));\n } // To do in next major: remove `escapeHtml`.\n\n\n var renderHtml = (props.allowDangerousHtml || props.escapeHtml === false) && !props.skipHtml;\n var hasHtmlParser = (props.astPlugins || []).some(function (transform) {\n return transform.identity === symbols.HtmlParser;\n });\n\n if (renderHtml && !hasHtmlParser) {\n transforms.push(naiveHtml);\n }\n\n if (props.astPlugins) {\n transforms = transforms.concat(props.astPlugins);\n } // Add the final transform to turn everything into React.\n\n\n transforms.push(astToReact);\n return transforms;\n}\n\nReactMarkdown.defaultProps = {\n transformLinkUri: uriTransformer\n};\nReactMarkdown.propTypes = {\n className: PropTypes.string,\n source: PropTypes.string,\n children: PropTypes.string,\n sourcePos: PropTypes.bool,\n rawSourcePos: PropTypes.bool,\n escapeHtml: PropTypes.bool,\n allowDangerousHtml: PropTypes.bool,\n skipHtml: PropTypes.bool,\n allowNode: PropTypes.func,\n allowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n disallowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n transformImageUri: PropTypes.func,\n astPlugins: PropTypes.arrayOf(PropTypes.func),\n unwrapDisallowed: PropTypes.bool,\n renderers: PropTypes.object,\n plugins: PropTypes.array\n};\nReactMarkdown.types = allTypes;\nReactMarkdown.renderers = defaultRenderers;\nReactMarkdown.uriTransformer = uriTransformer;\nmodule.exports = ReactMarkdown;","'use strict'\n\nmodule.exports = process\n","\"use strict\";\n\nvar visit = require('unist-util-visit');\n\nvar splice = [].splice;\n\nexports.ofType = function (types, mode) {\n return ifNotMatch(allow, mode);\n\n function allow(node, index, parent) {\n return !types.includes(node.type);\n }\n};\n\nexports.ifNotMatch = ifNotMatch;\n\nfunction ifNotMatch(allow, mode) {\n return transform;\n\n function transform(tree) {\n visit(tree, filter);\n return tree;\n } // eslint-disable-next-line consistent-return\n\n\n function filter(node, index, parent) {\n if (parent && !allow(node, index, parent)) {\n var parameters = [index, 1];\n\n if (mode === 'unwrap' && node.children) {\n parameters = parameters.concat(node.children);\n }\n\n splice.apply(parent.children, parameters);\n return index;\n }\n }\n}","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar text$1 = require('./initialize/text.js')\nvar attention = require('./tokenize/attention.js')\nvar autolink = require('./tokenize/autolink.js')\nvar blockQuote = require('./tokenize/block-quote.js')\nvar characterEscape = require('./tokenize/character-escape.js')\nvar characterReference = require('./tokenize/character-reference.js')\nvar codeFenced = require('./tokenize/code-fenced.js')\nvar codeIndented = require('./tokenize/code-indented.js')\nvar codeText = require('./tokenize/code-text.js')\nvar definition = require('./tokenize/definition.js')\nvar hardBreakEscape = require('./tokenize/hard-break-escape.js')\nvar headingAtx = require('./tokenize/heading-atx.js')\nvar htmlFlow = require('./tokenize/html-flow.js')\nvar htmlText = require('./tokenize/html-text.js')\nvar labelEnd = require('./tokenize/label-end.js')\nvar labelStartImage = require('./tokenize/label-start-image.js')\nvar labelStartLink = require('./tokenize/label-start-link.js')\nvar lineEnding = require('./tokenize/line-ending.js')\nvar thematicBreak = require('./tokenize/thematic-break.js')\nvar list = require('./tokenize/list.js')\nvar setextUnderline = require('./tokenize/setext-underline.js')\n\nvar document = {\n 42: list,\n // Asterisk\n 43: list,\n // Plus sign\n 45: list,\n // Dash\n 48: list,\n // 0\n 49: list,\n // 1\n 50: list,\n // 2\n 51: list,\n // 3\n 52: list,\n // 4\n 53: list,\n // 5\n 54: list,\n // 6\n 55: list,\n // 7\n 56: list,\n // 8\n 57: list,\n // 9\n 62: blockQuote // Greater than\n}\nvar contentInitial = {\n 91: definition // Left square bracket\n}\nvar flowInitial = {\n '-2': codeIndented,\n // Horizontal tab\n '-1': codeIndented,\n // Virtual space\n 32: codeIndented // Space\n}\nvar flow = {\n 35: headingAtx,\n // Number sign\n 42: thematicBreak,\n // Asterisk\n 45: [setextUnderline, thematicBreak],\n // Dash\n 60: htmlFlow,\n // Less than\n 61: setextUnderline,\n // Equals to\n 95: thematicBreak,\n // Underscore\n 96: codeFenced,\n // Grave accent\n 126: codeFenced // Tilde\n}\nvar string = {\n 38: characterReference,\n // Ampersand\n 92: characterEscape // Backslash\n}\nvar text = {\n '-5': lineEnding,\n // Carriage return\n '-4': lineEnding,\n // Line feed\n '-3': lineEnding,\n // Carriage return + line feed\n 33: labelStartImage,\n // Exclamation mark\n 38: characterReference,\n // Ampersand\n 42: attention,\n // Asterisk\n 60: [autolink, htmlText],\n // Less than\n 91: labelStartLink,\n // Left square bracket\n 92: [hardBreakEscape, characterEscape],\n // Backslash\n 93: labelEnd,\n // Right square bracket\n 95: attention,\n // Underscore\n 96: codeText // Grave accent\n}\nvar insideSpan = {\n null: [attention, text$1.resolver]\n}\nvar disable = {\n null: []\n}\n\nexports.contentInitial = contentInitial\nexports.disable = disable\nexports.document = document\nexports.flow = flow\nexports.flowInitial = flowInitial\nexports.insideSpan = insideSpan\nexports.string = string\nexports.text = text\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction regexCheck(regex) {\n return check\n\n function check(code) {\n return regex.test(fromCharCode(code))\n }\n}\n\nmodule.exports = regexCheck\n","'use strict'\n\nmodule.exports = toString\n\n// Get the text content of a node.\n// Prefer the node’s plain-text fields, otherwise serialize its children,\n// and if the given value is an array, serialize the nodes in it.\nfunction toString(node) {\n return (\n (node &&\n (node.value ||\n node.alt ||\n node.title ||\n ('children' in node && all(node.children)) ||\n ('length' in node && all(node)))) ||\n ''\n )\n}\n\nfunction all(values) {\n var result = []\n var index = -1\n\n while (++index < values.length) {\n result[index] = toString(values[index])\n }\n\n return result.join('')\n}\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction whitespaceFactory(effects, ok) {\n var seen\n return start\n\n function start(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n seen = true\n return start\n }\n\n if (markdownSpace(code)) {\n return factorySpace(\n effects,\n start,\n seen ? 'linePrefix' : 'lineSuffix'\n )(code)\n }\n\n return ok(code)\n }\n}\n\nmodule.exports = whitespaceFactory\n","import {\n\tcreateElement,\n\trender as preactRender,\n\tcloneElement as preactCloneElement,\n\tcreateRef,\n\tComponent,\n\tcreateContext,\n\tFragment\n} from 'preact';\nimport {\n\tuseState,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue\n} from 'preact/hooks';\nimport { PureComponent } from './PureComponent';\nimport { memo } from './memo';\nimport { forwardRef } from './forwardRef';\nimport { Children } from './Children';\nimport { Suspense, lazy } from './suspense';\nimport { SuspenseList } from './suspense-list';\nimport { createPortal } from './portals';\nimport {\n\thydrate,\n\trender,\n\tREACT_ELEMENT_TYPE,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n} from './render';\n\nconst version = '16.8.0'; // trick libraries to think we are react\n\n/**\n * Legacy version of createElement.\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component constructor\n */\nfunction createFactory(type) {\n\treturn createElement.bind(null, type);\n}\n\n/**\n * Check if the passed element is a valid (p)react node.\n * @param {*} element The element to check\n * @returns {boolean}\n */\nfunction isValidElement(element) {\n\treturn !!element && element.$$typeof === REACT_ELEMENT_TYPE;\n}\n\n/**\n * Wrap `cloneElement` to abort if the passed element is not a valid element and apply\n * all vnode normalizations.\n * @param {import('./internal').VNode} element The vnode to clone\n * @param {object} props Props to add when cloning\n * @param {Array} rest Optional component children\n */\nfunction cloneElement(element) {\n\tif (!isValidElement(element)) return element;\n\treturn preactCloneElement.apply(null, arguments);\n}\n\n/**\n * Remove a component tree from the DOM, including state and event handlers.\n * @param {import('./internal').PreactElement} container\n * @returns {boolean}\n */\nfunction unmountComponentAtNode(container) {\n\tif (container._children) {\n\t\tpreactRender(null, container);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Get the matching DOM node for a component\n * @param {import('./internal').Component} component\n * @returns {import('./internal').PreactElement | null}\n */\nfunction findDOMNode(component) {\n\treturn (\n\t\t(component &&\n\t\t\t(component.base || (component.nodeType === 1 && component))) ||\n\t\tnull\n\t);\n}\n\n/**\n * Deprecated way to control batched rendering inside the reconciler, but we\n * already schedule in batches inside our rendering code\n * @template Arg\n * @param {(arg: Arg) => void} callback function that triggers the updated\n * @param {Arg} [arg] Optional argument that can be passed to the callback\n */\n// eslint-disable-next-line camelcase\nconst unstable_batchedUpdates = (callback, arg) => callback(arg);\n\n/**\n * Strict Mode is not implemented in Preact, so we provide a stand-in for it\n * that just renders its children without imposing any restrictions.\n */\nconst StrictMode = Fragment;\n\nexport * from 'preact/hooks';\nexport {\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\t// eslint-disable-next-line camelcase\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n\n// React copies the named exports to the default one.\nexport default {\n\tuseState,\n\tuseReducer,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseRef,\n\tuseImperativeHandle,\n\tuseMemo,\n\tuseCallback,\n\tuseContext,\n\tuseDebugValue,\n\tversion,\n\tChildren,\n\trender,\n\thydrate,\n\tunmountComponentAtNode,\n\tcreatePortal,\n\tcreateElement,\n\tcreateContext,\n\tcreateFactory,\n\tcloneElement,\n\tcreateRef,\n\tFragment,\n\tisValidElement,\n\tfindDOMNode,\n\tComponent,\n\tPureComponent,\n\tmemo,\n\tforwardRef,\n\tunstable_batchedUpdates,\n\tStrictMode,\n\tSuspense,\n\tSuspenseList,\n\tlazy,\n\t__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n};\n","import {h} from 'preact'\nimport {Link} from 'preact-router/match'\n\nimport style from './style.css'\n\nconst Editor = ({markdown, setMarkdown}) => (\n \n Huge link \n \n A minimalist serverless publishing tool\n that allows you to create markdown posts and\n push them to the Web by sharing the link.\n
\n \n\n \n \n Preview\n \n \n )\n\nexport default Editor\n","import {h} from 'preact'\nimport {Link} from 'preact-router/match'\nimport ReactMarkdown from 'react-markdown'\n\nimport {\n compressToEncodedURIComponent as encode,\n decompressFromEncodedURIComponent as decode\n} from 'lz-string'\n\nconst noop = _ => null\nconst ident = _ => _\n\nconst previewContorls = content => (\n \n \n \n Edit\n \n \n Publish\n \n \n )\n\nconst Post = ({mode, payload, setMarkdown}) => {\n const [controls, decodeFn, encodeFn] = {\n preview: [previewContorls, ident, encode],\n post: [noop, decode, ident]\n }[mode]\n\n const markdown = decodeFn(payload)\n const encoded = encodeFn(payload)\n\n setMarkdown(markdown)\n\n return (\n { controls(encoded) }\n\n \n \n { markdown }\n \n \n\n \n Edit post\n \n )\n}\n\nexport default Post\n","import {h} from 'preact'\nimport {useState} from 'preact/hooks'\nimport {Router} from 'preact-router'\n\nimport Editor from './routes/editor'\nimport Post from './routes/post'\n\nimport './style/typography.css'\nimport './style'\n\nconst App = () => {\n const [markdown, setMarkdown] = useState('')\n\n return (\n \n \n \n \n \n )\n}\n\nexport default App\n","'use strict'\n\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar unicodePunctuation = require('../character/unicode-punctuation.js')\nvar unicodeWhitespace = require('../character/unicode-whitespace.js')\n\n// Classify whether a character is unicode whitespace, unicode punctuation, or\n// anything else.\n// Used for attention (emphasis, strong), whose sequences can open or close\n// based on the class of surrounding characters.\nfunction classifyCharacter(code) {\n if (\n code === null ||\n markdownLineEndingOrSpace(code) ||\n unicodeWhitespace(code)\n ) {\n return 1\n }\n\n if (unicodePunctuation(code)) {\n return 2\n }\n}\n\nmodule.exports = classifyCharacter\n","'use strict'\n\nmodule.exports = require('path')\n","'use strict'\n\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar asciiAtext = require('../character/ascii-atext.js')\nvar asciiControl = require('../character/ascii-control.js')\n\nvar autolink = {\n name: 'autolink',\n tokenize: tokenizeAutolink\n}\n\nfunction tokenizeAutolink(effects, ok, nok) {\n var size = 1\n return start\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 function open(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return schemeOrEmailAtext\n }\n\n return asciiAtext(code) ? emailAtext(code) : nok(code)\n }\n\n function schemeOrEmailAtext(code) {\n return code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)\n ? schemeInsideOrEmailAtext(code)\n : emailAtext(code)\n }\n\n function schemeInsideOrEmailAtext(code) {\n if (code === 58) {\n effects.consume(code)\n return urlInside\n }\n\n if (\n (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) &&\n size++ < 32\n ) {\n effects.consume(code)\n return schemeInsideOrEmailAtext\n }\n\n return emailAtext(code)\n }\n\n function urlInside(code) {\n if (code === 62) {\n effects.exit('autolinkProtocol')\n return end(code)\n }\n\n if (code === 32 || code === 60 || asciiControl(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return urlInside\n }\n\n function emailAtext(code) {\n if (code === 64) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (asciiAtext(code)) {\n effects.consume(code)\n return emailAtext\n }\n\n return nok(code)\n }\n\n function emailAtSignOrDot(code) {\n return asciiAlphanumeric(code) ? emailLabel(code) : nok(code)\n }\n\n function emailLabel(code) {\n if (code === 46) {\n effects.consume(code)\n size = 0\n return emailAtSignOrDot\n }\n\n if (code === 62) {\n // Exit, then change the type.\n effects.exit('autolinkProtocol').type = 'autolinkEmail'\n return end(code)\n }\n\n return emailValue(code)\n }\n\n function emailValue(code) {\n if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n effects.consume(code)\n return code === 45 ? emailValue : emailLabel\n }\n\n return nok(code)\n }\n\n function end(code) {\n effects.enter('autolinkMarker')\n effects.consume(code)\n effects.exit('autolinkMarker')\n effects.exit('autolink')\n return ok\n }\n}\n\nmodule.exports = autolink\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar assign = require('../constant/assign.js')\nvar shallow = require('../util/shallow.js')\n\nvar text = initializeFactory('text')\nvar string = initializeFactory('string')\nvar resolver = {\n resolveAll: createResolver()\n}\n\nfunction initializeFactory(field) {\n return {\n tokenize: initializeText,\n resolveAll: createResolver(\n field === 'text' ? resolveAllLineSuffixes : undefined\n )\n }\n\n function initializeText(effects) {\n var self = this\n var constructs = this.parser.constructs[field]\n var text = effects.attempt(constructs, start, notText)\n return start\n\n function start(code) {\n return atBreak(code) ? text(code) : notText(code)\n }\n\n function notText(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('data')\n effects.consume(code)\n return data\n }\n\n function data(code) {\n if (atBreak(code)) {\n effects.exit('data')\n return text(code)\n } // Data.\n\n effects.consume(code)\n return data\n }\n\n function atBreak(code) {\n var list = constructs[code]\n var index = -1\n\n if (code === null) {\n return true\n }\n\n if (list) {\n while (++index < list.length) {\n if (\n !list[index].previous ||\n list[index].previous.call(self, self.previous)\n ) {\n return true\n }\n }\n }\n }\n }\n}\n\nfunction createResolver(extraResolver) {\n return resolveAllText\n\n function resolveAllText(events, context) {\n var index = -1\n var enter // A rather boring computation (to merge adjacent `data` events) which\n // improves mm performance by 29%.\n\n while (++index <= events.length) {\n if (enter === undefined) {\n if (events[index] && events[index][1].type === 'data') {\n enter = index\n index++\n }\n } else if (!events[index] || events[index][1].type !== 'data') {\n // Don’t do anything if there is one data token.\n if (index !== enter + 2) {\n events[enter][1].end = events[index - 1][1].end\n events.splice(enter + 2, index - enter - 2)\n index = enter + 2\n }\n\n enter = undefined\n }\n }\n\n return extraResolver ? extraResolver(events, context) : events\n }\n} // 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\nfunction resolveAllLineSuffixes(events, context) {\n var eventIndex = -1\n var chunks\n var data\n var chunk\n var index\n var bufferIndex\n var size\n var tabs\n var token\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 data = events[eventIndex - 1][1]\n chunks = context.sliceStream(data)\n index = chunks.length\n bufferIndex = -1\n size = 0\n tabs = undefined\n\n while (index--) {\n chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n bufferIndex = chunk.length\n\n while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n size++\n bufferIndex--\n }\n\n if (bufferIndex) break\n bufferIndex = -1\n } // Number\n else if (chunk === -2) {\n tabs = true\n size++\n } else if (chunk === -1);\n else {\n // Replacement character, exit.\n index++\n break\n }\n }\n\n if (size) {\n 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: shallow(data.end)\n }\n data.end = shallow(token.start)\n\n if (data.start.offset === data.end.offset) {\n assign(data, token)\n } else {\n events.splice(\n eventIndex,\n 0,\n ['enter', token, context],\n ['exit', token, context]\n )\n eventIndex += 2\n }\n }\n\n eventIndex++\n }\n }\n\n return events\n}\n\nexports.resolver = resolver\nexports.string = string\nexports.text = text\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","'use strict'\n\nfunction normalizeIdentifier(value) {\n return (\n value // Collapse Markdown whitespace.\n .replace(/[\\t\\n\\r ]+/g, ' ') // Trim.\n .replace(/^ | $/g, '') // Some characters are considered “uppercase”, but if their lowercase\n // counterpart is uppercased will result in a different uppercase\n // character.\n // Hence, to get that form, we perform both lower- and uppercase.\n // Upper case makes sure keys will not interact with default prototypal\n // methods: no object method is uppercase.\n .toLowerCase()\n .toUpperCase()\n )\n}\n\nmodule.exports = normalizeIdentifier\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\nvar content = require('../tokenize/content.js')\n\nvar tokenize = initializeFlow\n\nfunction initializeFlow(effects) {\n var self = this\n var initial = effects.attempt(\n // Try to parse a blank line.\n partialBlankLine,\n atBlankEnding, // Try to parse initial flow (essentially, only code).\n effects.attempt(\n this.parser.constructs.flowInitial,\n afterConstruct,\n factorySpace(\n effects,\n effects.attempt(\n this.parser.constructs.flow,\n afterConstruct,\n effects.attempt(content, afterConstruct)\n ),\n 'linePrefix'\n )\n )\n )\n return initial\n\n function atBlankEnding(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n self.currentConstruct = undefined\n return initial\n }\n\n function afterConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n self.currentConstruct = undefined\n return initial\n }\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nfunction resolveAll(constructs, events, context) {\n var called = []\n var index = -1\n var resolve\n\n while (++index < constructs.length) {\n resolve = constructs[index].resolveAll\n\n if (resolve && called.indexOf(resolve) < 0) {\n events = resolve(events, context)\n called.push(resolve)\n }\n }\n\n return events\n}\n\nmodule.exports = resolveAll\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartLink = {\n name: 'labelStartLink',\n tokenize: tokenizeLabelStartLink,\n resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n var self = this\n return start\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 function after(code) {\n /* c8 ignore next */\n return code === 94 &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? /* c8 ignore next */\n nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = labelStartLink\n","'use strict';\n\nvar React = require('react');\n\nvar xtend = require('xtend');\n\nvar ReactIs = require('react-is');\n\nfunction astToReact(node, options) {\n var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var renderer = options.renderers[node.type]; // Nodes created by plugins do not have positional info, in which case we set\n // an object that matches the positon interface.\n\n if (!node.position) {\n node.position = {\n start: {\n line: null,\n column: null,\n offset: null\n },\n end: {\n line: null,\n column: null,\n offset: null\n }\n };\n }\n\n var pos = node.position.start;\n var key = [node.type, pos.line, pos.column, index].join('-');\n\n if (!ReactIs.isValidElementType(renderer)) {\n throw new Error(\"Renderer for type `\".concat(node.type, \"` not defined or is not renderable\"));\n }\n\n var nodeProps = getNodeProps(node, key, options, renderer, parent, index);\n return React.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || undefined);\n\n function resolveChildren() {\n return node.children && node.children.map(function (childNode, i) {\n return astToReact(childNode, options, {\n node: node,\n props: nodeProps\n }, i);\n });\n }\n} // eslint-disable-next-line max-params, complexity\n\n\nfunction getNodeProps(node, key, opts, renderer, parent, index) {\n var props = {\n key: key\n };\n var isSimpleRenderer = typeof renderer === 'string' || renderer === React.Fragment; // `sourcePos` is true if the user wants source information (line/column info from markdown source)\n\n if (opts.sourcePos && node.position) {\n props['data-sourcepos'] = flattenPosition(node.position);\n }\n\n if (opts.rawSourcePos && !isSimpleRenderer) {\n props.sourcePosition = node.position;\n } // If `includeNodeIndex` is true, pass node index info to all non-tag renderers\n\n\n if (opts.includeNodeIndex && parent.node && parent.node.children && !isSimpleRenderer) {\n props.index = parent.node.children.indexOf(node);\n props.parentChildCount = parent.node.children.length;\n }\n\n var ref = node.identifier !== null && node.identifier !== undefined ?\n /* istanbul ignore next - plugins could inject an undefined reference. */\n opts.definitions[node.identifier.toUpperCase()] || {} : null;\n\n switch (node.type) {\n case 'root':\n assignDefined(props, {\n className: opts.className\n });\n break;\n\n case 'text':\n props.nodeKey = key;\n props.children = node.value;\n break;\n\n case 'heading':\n props.level = node.depth;\n break;\n\n case 'list':\n props.start = node.start;\n props.ordered = node.ordered;\n props.spread = node.spread;\n props.depth = node.depth;\n break;\n\n case 'listItem':\n props.checked = node.checked;\n props.spread = node.spread;\n props.ordered = node.ordered;\n props.index = node.index;\n props.children = getListItemChildren(node, parent).map(function (childNode, i) {\n return astToReact(childNode, opts, {\n node: node,\n props: props\n }, i);\n });\n break;\n\n case 'definition':\n assignDefined(props, {\n identifier: node.identifier,\n title: node.title,\n url: node.url\n });\n break;\n\n case 'code':\n assignDefined(props, {\n language: node.lang && node.lang.split(/\\s/, 1)[0]\n });\n break;\n\n case 'inlineCode':\n props.children = node.value;\n props.inline = true;\n break;\n\n case 'link':\n assignDefined(props, {\n title: node.title || undefined,\n target: typeof opts.linkTarget === 'function' ? opts.linkTarget(node.url, node.children, node.title) : opts.linkTarget,\n href: opts.transformLinkUri ? opts.transformLinkUri(node.url, node.children, node.title) : node.url\n });\n break;\n\n case 'image':\n assignDefined(props, {\n src: opts.transformImageUri ? opts.transformImageUri(node.url, node.children, node.title, node.alt) : node.url,\n alt: node.alt || '',\n title: node.title || undefined\n });\n break;\n\n case 'linkReference':\n assignDefined(props, xtend(ref, {\n href: opts.transformLinkUri ? opts.transformLinkUri(ref.href) : ref.href\n }));\n break;\n\n case 'imageReference':\n assignDefined(props, {\n src: opts.transformImageUri && ref.href ? opts.transformImageUri(ref.href, node.children, ref.title, node.alt) : ref.href,\n alt: node.alt || '',\n title: ref.title || undefined\n });\n break;\n\n case 'table':\n case 'tableHead':\n case 'tableBody':\n props.columnAlignment = node.align;\n break;\n\n case 'tableRow':\n props.isHeader = parent.node.type === 'tableHead';\n props.columnAlignment = parent.props.columnAlignment;\n break;\n\n case 'tableCell':\n assignDefined(props, {\n isHeader: parent.props.isHeader,\n align: parent.props.columnAlignment[index]\n });\n break;\n\n case 'virtualHtml':\n props.tag = node.tag;\n break;\n\n case 'html':\n // @todo find a better way than this\n props.isBlock = node.position.start.line !== node.position.end.line;\n props.allowDangerousHtml = opts.allowDangerousHtml;\n props.escapeHtml = opts.escapeHtml;\n props.skipHtml = opts.skipHtml;\n break;\n\n case 'parsedHtml':\n {\n var parsedChildren;\n\n if (node.children) {\n parsedChildren = node.children.map(function (child, i) {\n return astToReact(child, opts, {\n node: node,\n props: props\n }, i);\n });\n }\n\n props.allowDangerousHtml = opts.allowDangerousHtml;\n props.escapeHtml = opts.escapeHtml;\n props.skipHtml = opts.skipHtml;\n props.element = node.element ? mergeNodeChildren(node, parsedChildren) : null;\n break;\n }\n\n default:\n assignDefined(props, xtend(node, {\n type: undefined,\n position: undefined,\n children: undefined\n }));\n }\n\n if (!isSimpleRenderer && node.value) {\n props.value = node.value;\n }\n\n if (!isSimpleRenderer) {\n props.node = node;\n }\n\n return props;\n}\n\nfunction assignDefined(target, attrs) {\n for (var key in attrs) {\n if (typeof attrs[key] !== 'undefined') {\n target[key] = attrs[key];\n }\n }\n}\n\nfunction mergeNodeChildren(node, parsedChildren) {\n var el = node.element;\n\n if (Array.isArray(el)) {\n /* istanbul ignore next - `div` fallback for old React. */\n var Fragment = React.Fragment || 'div';\n return React.createElement(Fragment, null, el);\n }\n\n if (el.props.children || parsedChildren) {\n var children = React.Children.toArray(el.props.children).concat(parsedChildren);\n return React.cloneElement(el, null, children);\n }\n\n return React.cloneElement(el, null);\n}\n\nfunction flattenPosition(pos) {\n return [pos.start.line, ':', pos.start.column, '-', pos.end.line, ':', pos.end.column].map(String).join('');\n}\n\nfunction getListItemChildren(node, parent) {\n /* istanbul ignore next - list items are always in a list, but best to be sure. */\n var loose = parent && parent.node ? listLoose(parent.node) : listItemLoose(node);\n return loose ? node.children : unwrapParagraphs(node);\n}\n\nfunction unwrapParagraphs(node) {\n return node.children.reduce(function (array, child) {\n return array.concat(child.type === 'paragraph' ? child.children : [child]);\n }, []);\n}\n\nfunction listLoose(node) {\n var children = node.children;\n var loose = node.spread;\n var index = -1;\n\n while (!loose && ++index < children.length) {\n loose = listItemLoose(children[index]);\n }\n\n return loose;\n}\n\nfunction listItemLoose(node) {\n var spread = node.spread;\n /* istanbul ignore next - spread is present from remark-parse, but maybe plugins don’t set it. */\n\n return spread === undefined || spread === null ? node.children.length > 1 : spread;\n}\n\nmodule.exports = astToReact;","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n","'use strict'\n\nvar splice = require('../constant/splice.js')\n\n// causes a stack overflow in V8 when trying to insert 100k items for instance.\n\nfunction chunkedSplice(list, start, remove, items) {\n var end = list.length\n var chunkStart = 0\n var parameters // Make start between zero and `end` (included).\n\n if (start < 0) {\n start = -start > end ? 0 : end + start\n } else {\n start = start > end ? end : start\n }\n\n remove = remove > 0 ? remove : 0 // No need to chunk the items if there’s only a couple (10k) items.\n\n if (items.length < 10000) {\n parameters = Array.from(items)\n parameters.unshift(start, remove)\n splice.apply(list, parameters)\n } else {\n // Delete `remove` items starting from `start`\n if (remove) splice.apply(list, [start, remove]) // Insert the items in chunks to not cause stack overflows.\n\n while (chunkStart < items.length) {\n parameters = items.slice(chunkStart, chunkStart + 10000)\n parameters.unshift(start, 0)\n splice.apply(list, parameters)\n chunkStart += 10000\n start += 10000\n }\n }\n}\n\nmodule.exports = chunkedSplice\n","'use strict'\n\nvar search = /[\\0\\t\\n\\r]/g\n\nfunction preprocess() {\n var start = true\n var column = 1\n var buffer = ''\n var atCarriageReturn\n return preprocessor\n\n function preprocessor(value, encoding, end) {\n var chunks = []\n var match\n var next\n var startPosition\n var endPosition\n var code\n value = buffer + value.toString(encoding)\n startPosition = 0\n buffer = ''\n\n if (start) {\n if (value.charCodeAt(0) === 65279) {\n startPosition++\n }\n\n start = undefined\n }\n\n while (startPosition < value.length) {\n search.lastIndex = startPosition\n match = search.exec(value)\n endPosition = match ? match.index : value.length\n code = value.charCodeAt(endPosition)\n\n if (!match) {\n buffer = value.slice(startPosition)\n break\n }\n\n if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n chunks.push(-3)\n atCarriageReturn = undefined\n } else {\n if (atCarriageReturn) {\n chunks.push(-5)\n atCarriageReturn = undefined\n }\n\n if (startPosition < endPosition) {\n chunks.push(value.slice(startPosition, endPosition))\n column += endPosition - startPosition\n }\n\n if (code === 0) {\n chunks.push(65533)\n column++\n } else if (code === 9) {\n next = Math.ceil(column / 4) * 4\n chunks.push(-2)\n\n while (column++ < next) chunks.push(-1)\n } else if (code === 10) {\n chunks.push(-4)\n column = 1\n } // Must be carriage return.\n else {\n atCarriageReturn = true\n column = 1\n }\n }\n\n startPosition = endPosition + 1\n }\n\n if (end) {\n if (atCarriageReturn) chunks.push(-5)\n if (buffer) chunks.push(buffer)\n chunks.push(null)\n }\n\n return chunks\n }\n}\n\nmodule.exports = preprocess\n","'use strict'\n\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\nvar partialBlankLine = require('./partial-blank-line.js')\nvar sizeChunks = require('../util/size-chunks.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar asciiDigit = require('../character/ascii-digit.js')\nvar thematicBreak = require('./thematic-break.js')\n\nvar list = {\n name: 'list',\n tokenize: tokenizeListStart,\n continuation: {\n tokenize: tokenizeListContinuation\n },\n exit: tokenizeListEnd\n}\nvar listItemPrefixWhitespaceConstruct = {\n tokenize: tokenizeListItemPrefixWhitespace,\n partial: true\n}\nvar indentConstruct = {\n tokenize: tokenizeIndent,\n partial: true\n}\n\nfunction tokenizeListStart(effects, ok, nok) {\n var self = this\n var initialSize = prefixSize(self.events, 'linePrefix')\n var size = 0\n return start\n\n function start(code) {\n var kind =\n self.containerState.type ||\n (code === 42 || code === 43 || code === 45\n ? 'listUnordered'\n : 'listOrdered')\n\n if (\n kind === 'listUnordered'\n ? !self.containerState.marker || code === self.containerState.marker\n : asciiDigit(code)\n ) {\n if (!self.containerState.type) {\n self.containerState.type = kind\n effects.enter(kind, {\n _container: true\n })\n }\n\n if (kind === 'listUnordered') {\n effects.enter('listItemPrefix')\n return code === 42 || code === 45\n ? effects.check(thematicBreak, nok, atMarker)(code)\n : atMarker(code)\n }\n\n if (!self.interrupt || code === 49) {\n effects.enter('listItemPrefix')\n effects.enter('listItemValue')\n return inside(code)\n }\n }\n\n return nok(code)\n }\n\n function inside(code) {\n if (asciiDigit(code) && ++size < 10) {\n effects.consume(code)\n return inside\n }\n\n if (\n (!self.interrupt || size < 2) &&\n (self.containerState.marker\n ? code === self.containerState.marker\n : code === 41 || code === 46)\n ) {\n effects.exit('listItemValue')\n return atMarker(code)\n }\n\n return nok(code)\n }\n\n 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 partialBlankLine, // 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 function onBlank(code) {\n self.containerState.initialBlankLine = true\n initialSize++\n return endOfPrefix(code)\n }\n\n function otherPrefix(code) {\n if (markdownSpace(code)) {\n effects.enter('listItemPrefixWhitespace')\n effects.consume(code)\n effects.exit('listItemPrefixWhitespace')\n return endOfPrefix\n }\n\n return nok(code)\n }\n\n function endOfPrefix(code) {\n self.containerState.size =\n initialSize + sizeChunks(self.sliceStream(effects.exit('listItemPrefix')))\n return ok(code)\n }\n}\n\nfunction tokenizeListContinuation(effects, ok, nok) {\n var self = this\n self.containerState._closeFlow = undefined\n return effects.check(partialBlankLine, onBlank, notBlank)\n\n function onBlank(code) {\n self.containerState.furtherBlankLines =\n self.containerState.furtherBlankLines ||\n self.containerState.initialBlankLine\n return ok(code)\n }\n\n function notBlank(code) {\n if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n return notInCurrentItem(code)\n }\n\n self.containerState.furtherBlankLines = self.containerState.initialBlankLine = undefined\n return effects.attempt(indentConstruct, ok, notInCurrentItem)(code)\n }\n\n function notInCurrentItem(code) {\n // While we do continue, we signal that the flow should be closed.\n self.containerState._closeFlow = true // As we’re closing flow, we’re no longer interrupting.\n\n self.interrupt = undefined\n return factorySpace(\n effects,\n effects.attempt(list, ok, nok),\n 'linePrefix',\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )(code)\n }\n}\n\nfunction tokenizeIndent(effects, ok, nok) {\n var self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemIndent',\n self.containerState.size + 1\n )\n\n function afterPrefix(code) {\n return prefixSize(self.events, 'listItemIndent') ===\n self.containerState.size\n ? ok(code)\n : nok(code)\n }\n}\n\nfunction tokenizeListEnd(effects) {\n effects.exit(this.containerState.type)\n}\n\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n var self = this\n return factorySpace(\n effects,\n afterPrefix,\n 'listItemPrefixWhitespace',\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4 + 1\n )\n\n function afterPrefix(code) {\n return markdownSpace(code) ||\n !prefixSize(self.events, 'listItemPrefixWhitespace')\n ? nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = list\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\n\n// eslint-disable-next-line max-params\nfunction labelFactory(effects, ok, nok, type, markerType, stringType) {\n var self = this\n var size = 0\n var data\n return start\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 function atBreak(code) {\n if (\n code === null ||\n code === 91 ||\n (code === 93 && !data) ||\n /* c8 ignore next */\n (code === 94 &&\n /* c8 ignore next */\n !size &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs) ||\n size > 999\n ) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.exit(stringType)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return atBreak\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return label(code)\n }\n\n function label(code) {\n if (\n code === null ||\n code === 91 ||\n code === 93 ||\n markdownLineEnding(code) ||\n size++ > 999\n ) {\n effects.exit('chunkString')\n return atBreak(code)\n }\n\n effects.consume(code)\n data = data || !markdownSpace(code)\n return code === 92 ? labelEscape : label\n }\n\n function labelEscape(code) {\n if (code === 91 || code === 92 || code === 93) {\n effects.consume(code)\n size++\n return label\n }\n\n return label(code)\n }\n}\n\nmodule.exports = labelFactory\n","'use strict'\n\nmodule.exports = bail\n\nfunction bail(err) {\n if (err) {\n throw err\n }\n}\n","'use strict'\n\nvar characterEntities = require('character-entities')\n\nmodule.exports = decodeEntity\n\nvar own = {}.hasOwnProperty\n\nfunction decodeEntity(characters) {\n return own.call(characterEntities, characters)\n ? characterEntities[characters]\n : false\n}\n","'use strict'\n\n// chunks (replacement characters, tabs, or line endings).\n\nfunction movePoint(point, offset) {\n point.column += offset\n point.offset += offset\n point._bufferIndex += offset\n return point\n}\n\nmodule.exports = movePoint\n","'use strict';\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n\tvar prototype;\n\treturn toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};\n","'use strict'\n\nvar wrap = require('./wrap.js')\n\nmodule.exports = trough\n\ntrough.wrap = wrap\n\nvar slice = [].slice\n\n// Create new middleware.\nfunction trough() {\n var fns = []\n var middleware = {}\n\n middleware.run = run\n middleware.use = use\n\n return middleware\n\n // Run `fns`. Last argument must be a completion handler.\n function run() {\n var index = -1\n var input = slice.call(arguments, 0, -1)\n var done = arguments[arguments.length - 1]\n\n if (typeof done !== 'function') {\n throw new Error('Expected function as last argument, not ' + done)\n }\n\n next.apply(null, [null].concat(input))\n\n // Run the next `fn`, if any.\n function next(err) {\n var fn = fns[++index]\n var params = slice.call(arguments, 0)\n var values = params.slice(1)\n var length = input.length\n var pos = -1\n\n if (err) {\n done(err)\n return\n }\n\n // Copy non-nully input into values.\n while (++pos < length) {\n if (values[pos] === null || values[pos] === undefined) {\n values[pos] = input[pos]\n }\n }\n\n input = values\n\n // Next or done.\n if (fn) {\n wrap(fn, next).apply(null, input)\n } else {\n done.apply(null, [null].concat(input))\n }\n }\n }\n\n // Add `fn` to the list.\n function use(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Expected `fn` to be a function, not ' + fn)\n }\n\n fns.push(fn)\n\n return middleware\n }\n}\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\n\nfunction titleFactory(effects, ok, nok, type, markerType, stringType) {\n var marker\n return start\n\n function start(code) {\n effects.enter(type)\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n marker = code === 40 ? 41 : code\n return atFirstTitleBreak\n }\n\n function atFirstTitleBreak(code) {\n if (code === marker) {\n effects.enter(markerType)\n effects.consume(code)\n effects.exit(markerType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n return atTitleBreak(code)\n }\n\n function atTitleBreak(code) {\n if (code === marker) {\n effects.exit(stringType)\n return atFirstTitleBreak(marker)\n }\n\n if (code === null) {\n return nok(code)\n } // Note: blank lines can’t exist in content.\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, atTitleBreak, 'linePrefix')\n }\n\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return title(code)\n }\n\n function title(code) {\n if (code === marker || code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n return atTitleBreak(code)\n }\n\n effects.consume(code)\n return code === 92 ? titleEscape : title\n }\n\n function titleEscape(code) {\n if (code === marker || code === 92) {\n effects.consume(code)\n return title\n }\n\n return title(code)\n }\n}\n\nmodule.exports = titleFactory\n","'use strict'\n\nvar factorySpace = require('./factory-space.js')\n\nvar lineEnding = {\n name: 'lineEnding',\n tokenize: tokenizeLineEnding\n}\n\nfunction tokenizeLineEnding(effects, ok) {\n return start\n\n function start(code) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, ok, 'linePrefix')\n }\n}\n\nmodule.exports = lineEnding\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiDigit = regexCheck(/\\d/)\n\nmodule.exports = asciiDigit\n","'use strict'\n\nmodule.exports = require('./dist')\n","\"use strict\";\n\n/**\n * Naive, simple plugin to match inline nodes without attributes\n * This allows say foo , but not foo \n * For proper HTML support, you'll want a different plugin\n **/\nvar visit = require('unist-util-visit');\n\nvar type = 'virtualHtml';\nvar selfClosingRe = /^<(area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)\\s*\\/?>$/i;\nvar simpleTagRe = /^<(\\/?)([a-z]+)\\s*>$/;\n\nmodule.exports = function (tree) {\n var open;\n var currentParent;\n visit(tree, 'html', function (node, index, parent) {\n if (currentParent !== parent) {\n open = [];\n currentParent = parent;\n }\n\n var selfClosing = getSelfClosing(node);\n\n if (selfClosing) {\n parent.children.splice(index, 1, {\n type: type,\n tag: selfClosing,\n position: node.position\n });\n return true;\n }\n\n var current = getSimpleTag(node, parent);\n\n if (!current) {\n return true;\n }\n\n var matching = findAndPull(open, current.tag);\n\n if (matching) {\n parent.children.splice(index, 0, virtual(current, matching, parent));\n } else if (!current.opening) {\n open.push(current);\n }\n\n return true;\n }, true // Iterate in reverse\n );\n return tree;\n};\n\nfunction findAndPull(open, matchingTag) {\n var i = open.length;\n\n while (i--) {\n if (open[i].tag === matchingTag) {\n return open.splice(i, 1)[0];\n }\n }\n\n return false;\n}\n\nfunction getSimpleTag(node, parent) {\n var match = node.value.match(simpleTagRe);\n return match ? {\n tag: match[2],\n opening: !match[1],\n node: node\n } : false;\n}\n\nfunction getSelfClosing(node) {\n var match = node.value.match(selfClosingRe);\n return match ? match[1] : false;\n}\n\nfunction virtual(fromNode, toNode, parent) {\n var fromIndex = parent.children.indexOf(fromNode.node);\n var toIndex = parent.children.indexOf(toNode.node);\n var extracted = parent.children.splice(fromIndex, toIndex - fromIndex + 1);\n var children = extracted.slice(1, -1);\n return {\n type: type,\n children: children,\n tag: fromNode.tag,\n position: {\n start: fromNode.node.position.start,\n end: toNode.node.position.end,\n indent: []\n }\n };\n}","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/)\n\nmodule.exports = asciiPunctuation\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\n\nfunction serializeChunks(chunks) {\n var index = -1\n var result = []\n var chunk\n var value\n var atTab\n\n while (++index < chunks.length) {\n chunk = chunks[index]\n\n if (typeof chunk === 'string') {\n value = chunk\n } else if (chunk === -5) {\n value = '\\r'\n } else if (chunk === -4) {\n value = '\\n'\n } else if (chunk === -3) {\n value = '\\r' + '\\n'\n } else if (chunk === -2) {\n value = '\\t'\n } else if (chunk === -1) {\n if (atTab) continue\n value = ' '\n } else {\n // Currently only replacement character.\n value = fromCharCode(chunk)\n }\n\n atTab = chunk === -2\n result.push(value)\n }\n\n return result.join('')\n}\n\nmodule.exports = serializeChunks\n","'use strict'\n\n// Counts tabs based on their expanded size, and CR+LF as one character.\n\nfunction sizeChunks(chunks) {\n var index = -1\n var size = 0\n\n while (++index < chunks.length) {\n size += typeof chunks[index] === 'string' ? chunks[index].length : 1\n }\n\n return size\n}\n\nmodule.exports = sizeChunks\n","'use strict'\n\nvar VMessage = require('vfile-message')\nvar VFile = require('./core.js')\n\nmodule.exports = VFile\n\nVFile.prototype.message = message\nVFile.prototype.info = info\nVFile.prototype.fail = fail\n\n// Create a message with `reason` at `position`.\n// When an error is passed in as `reason`, copies the stack.\nfunction message(reason, position, origin) {\n var message = new VMessage(reason, position, 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// Fail: creates a vmessage, associates it with the file, and throws it.\nfunction fail() {\n var message = this.message.apply(this, arguments)\n\n message.fatal = true\n\n throw message\n}\n\n// Info: creates a vmessage, associates it with the file, and marks the fatality\n// as null.\nfunction info() {\n var message = this.message.apply(this, arguments)\n\n message.fatal = null\n\n return message\n}\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\nvar unicodePunctuationRegex = require('../constant/unicode-punctuation-regex.js')\n\n// In fact adds to the bundle size.\n\nvar unicodePunctuation = regexCheck(unicodePunctuationRegex)\n\nmodule.exports = unicodePunctuation\n","'use strict'\n\nmodule.exports = fromMarkdown\n\n// These three are compiled away in the `dist/`\n\nvar toString = require('mdast-util-to-string')\nvar assign = require('micromark/dist/constant/assign')\nvar own = require('micromark/dist/constant/has-own-property')\nvar normalizeIdentifier = require('micromark/dist/util/normalize-identifier')\nvar safeFromInt = require('micromark/dist/util/safe-from-int')\nvar parser = require('micromark/dist/parse')\nvar preprocessor = require('micromark/dist/preprocess')\nvar postprocess = require('micromark/dist/postprocess')\nvar decode = require('parse-entities/decode-entity')\nvar stringifyPosition = require('unist-util-stringify-position')\n\nfunction fromMarkdown(value, encoding, options) {\n if (typeof encoding !== 'string') {\n options = encoding\n encoding = undefined\n }\n\n return compiler(options)(\n postprocess(\n parser(options).document().write(preprocessor()(value, encoding, true))\n )\n )\n}\n\n// Note this compiler only understand complete buffering, not streaming.\nfunction compiler(options) {\n var settings = options || {}\n var config = configure(\n {\n canContainEols: [\n 'emphasis',\n 'fragment',\n 'heading',\n 'paragraph',\n 'strong'\n ],\n\n enter: {\n autolink: opener(link),\n autolinkProtocol: onenterdata,\n autolinkEmail: onenterdata,\n atxHeading: opener(heading),\n blockQuote: opener(blockQuote),\n characterEscape: onenterdata,\n characterReference: onenterdata,\n codeFenced: opener(codeFlow),\n codeFencedFenceInfo: buffer,\n codeFencedFenceMeta: buffer,\n codeIndented: opener(codeFlow, buffer),\n codeText: opener(codeText, buffer),\n codeTextData: onenterdata,\n data: onenterdata,\n codeFlowValue: onenterdata,\n definition: opener(definition),\n definitionDestinationString: buffer,\n definitionLabelString: buffer,\n definitionTitleString: buffer,\n emphasis: opener(emphasis),\n hardBreakEscape: opener(hardBreak),\n hardBreakTrailing: opener(hardBreak),\n htmlFlow: opener(html, buffer),\n htmlFlowData: onenterdata,\n htmlText: opener(html, buffer),\n htmlTextData: onenterdata,\n image: opener(image),\n label: buffer,\n link: opener(link),\n listItem: opener(listItem),\n listItemValue: onenterlistitemvalue,\n listOrdered: opener(list, onenterlistordered),\n listUnordered: opener(list),\n paragraph: opener(paragraph),\n reference: onenterreference,\n referenceString: buffer,\n resourceDestinationString: buffer,\n resourceTitleString: buffer,\n setextHeading: opener(heading),\n strong: opener(strong),\n thematicBreak: opener(thematicBreak)\n },\n\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\n settings.mdastExtensions || []\n )\n\n var data = {}\n\n return compile\n\n function compile(events) {\n var stack = [{type: 'root', children: []}]\n var tokenStack = []\n var listStack = []\n var index = -1\n var handler\n var listStart\n\n var context = {\n stack: stack,\n tokenStack: tokenStack,\n config: config,\n enter: enter,\n exit: exit,\n buffer: buffer,\n resume: resume,\n setData: setData,\n getData: getData\n }\n\n while (++index < events.length) {\n // We preprocess lists to add `listItem` tokens, and to infer whether\n // items the list itself are spread out.\n if (\n events[index][1].type === 'listOrdered' ||\n events[index][1].type === 'listUnordered'\n ) {\n if (events[index][0] === 'enter') {\n listStack.push(index)\n } else {\n listStart = listStack.pop(index)\n index = prepareList(events, listStart, index)\n }\n }\n }\n\n index = -1\n\n while (++index < events.length) {\n handler = config[events[index][0]]\n\n if (own.call(handler, events[index][1].type)) {\n handler[events[index][1].type].call(\n assign({sliceSerialize: events[index][2].sliceSerialize}, context),\n events[index][1]\n )\n }\n }\n\n if (tokenStack.length) {\n throw new Error(\n 'Cannot close document, a token (`' +\n tokenStack[tokenStack.length - 1].type +\n '`, ' +\n stringifyPosition({\n start: tokenStack[tokenStack.length - 1].start,\n end: tokenStack[tokenStack.length - 1].end\n }) +\n ') is still open'\n )\n }\n\n // Figure out `root` position.\n stack[0].position = {\n start: point(\n events.length ? events[0][1].start : {line: 1, column: 1, offset: 0}\n ),\n\n end: point(\n events.length\n ? events[events.length - 2][1].end\n : {line: 1, column: 1, offset: 0}\n )\n }\n\n return stack[0]\n }\n\n function prepareList(events, start, length) {\n var index = start - 1\n var containerBalance = -1\n var listSpread = false\n var listItem\n var tailIndex\n var lineIndex\n var tailEvent\n var event\n var firstBlankLineIndex\n var atMarker\n\n while (++index <= length) {\n event = events[index]\n\n if (\n event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered' ||\n event[1].type === 'blockQuote'\n ) {\n if (event[0] === 'enter') {\n containerBalance++\n } else {\n containerBalance--\n }\n\n atMarker = undefined\n } else if (event[1].type === 'lineEndingBlank') {\n if (event[0] === 'enter') {\n if (\n listItem &&\n !atMarker &&\n !containerBalance &&\n !firstBlankLineIndex\n ) {\n firstBlankLineIndex = index\n }\n\n atMarker = undefined\n }\n } else if (\n event[1].type === 'linePrefix' ||\n event[1].type === 'listItemValue' ||\n event[1].type === 'listItemMarker' ||\n event[1].type === 'listItemPrefix' ||\n event[1].type === 'listItemPrefixWhitespace'\n ) {\n // Empty.\n } else {\n atMarker = undefined\n }\n\n if (\n (!containerBalance &&\n event[0] === 'enter' &&\n event[1].type === 'listItemPrefix') ||\n (containerBalance === -1 &&\n event[0] === 'exit' &&\n (event[1].type === 'listUnordered' ||\n event[1].type === 'listOrdered'))\n ) {\n if (listItem) {\n tailIndex = index\n lineIndex = undefined\n\n while (tailIndex--) {\n tailEvent = events[tailIndex]\n\n if (\n tailEvent[1].type === 'lineEnding' ||\n tailEvent[1].type === 'lineEndingBlank'\n ) {\n if (tailEvent[0] === 'exit') continue\n\n if (lineIndex) {\n events[lineIndex][1].type = 'lineEndingBlank'\n listSpread = true\n }\n\n tailEvent[1].type = 'lineEnding'\n lineIndex = tailIndex\n } else if (\n tailEvent[1].type === 'linePrefix' ||\n tailEvent[1].type === 'blockQuotePrefix' ||\n tailEvent[1].type === 'blockQuotePrefixWhitespace' ||\n tailEvent[1].type === 'blockQuoteMarker' ||\n tailEvent[1].type === 'listItemIndent'\n ) {\n // Empty\n } else {\n break\n }\n }\n\n if (\n firstBlankLineIndex &&\n (!lineIndex || firstBlankLineIndex < lineIndex)\n ) {\n listItem._spread = true\n }\n\n // Fix position.\n listItem.end = point(\n lineIndex ? events[lineIndex][1].start : event[1].end\n )\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: point(event[1].start)\n }\n\n events.splice(index, 0, ['enter', listItem, event[2]])\n index++\n length++\n firstBlankLineIndex = undefined\n atMarker = true\n }\n }\n }\n\n events[start][1]._spread = listSpread\n return length\n }\n\n function setData(key, value) {\n data[key] = value\n }\n\n function getData(key) {\n return data[key]\n }\n\n function point(d) {\n return {line: d.line, column: d.column, offset: d.offset}\n }\n\n function opener(create, and) {\n return open\n\n function open(token) {\n enter.call(this, create(token), token)\n if (and) and.call(this, token)\n }\n }\n\n function buffer() {\n this.stack.push({type: 'fragment', children: []})\n }\n\n function enter(node, token) {\n this.stack[this.stack.length - 1].children.push(node)\n this.stack.push(node)\n this.tokenStack.push(token)\n node.position = {start: point(token.start)}\n return node\n }\n\n function closer(and) {\n return close\n\n function close(token) {\n if (and) and.call(this, token)\n exit.call(this, token)\n }\n }\n\n function exit(token) {\n var node = this.stack.pop()\n var open = this.tokenStack.pop()\n\n if (!open) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({start: token.start, end: token.end}) +\n '): it’s not open'\n )\n } else if (open.type !== token.type) {\n throw new Error(\n 'Cannot close `' +\n token.type +\n '` (' +\n stringifyPosition({start: token.start, end: token.end}) +\n '): a different token (`' +\n open.type +\n '`, ' +\n stringifyPosition({start: open.start, end: open.end}) +\n ') is open'\n )\n }\n\n node.position.end = point(token.end)\n return node\n }\n\n function resume() {\n return toString(this.stack.pop())\n }\n\n //\n // Handlers.\n //\n\n function onenterlistordered() {\n setData('expectingFirstListItemValue', true)\n }\n\n function onenterlistitemvalue(token) {\n if (getData('expectingFirstListItemValue')) {\n this.stack[this.stack.length - 2].start = parseInt(\n this.sliceSerialize(token),\n 10\n )\n\n setData('expectingFirstListItemValue')\n }\n }\n\n function onexitcodefencedfenceinfo() {\n var data = this.resume()\n this.stack[this.stack.length - 1].lang = data\n }\n\n function onexitcodefencedfencemeta() {\n var data = this.resume()\n this.stack[this.stack.length - 1].meta = data\n }\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 function onexitcodefenced() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data.replace(\n /^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g,\n ''\n )\n\n setData('flowCodeInside')\n }\n\n function onexitcodeindented() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitdefinitionlabelstring(token) {\n // Discard label, use the source content instead.\n var label = this.resume()\n this.stack[this.stack.length - 1].label = label\n this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n function onexitdefinitiontitlestring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].title = data\n }\n\n function onexitdefinitiondestinationstring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].url = data\n }\n\n function onexitatxheadingsequence(token) {\n if (!this.stack[this.stack.length - 1].depth) {\n this.stack[this.stack.length - 1].depth = this.sliceSerialize(\n token\n ).length\n }\n }\n\n function onexitsetextheadingtext() {\n setData('setextHeadingSlurpLineEnding', true)\n }\n\n function onexitsetextheadinglinesequence(token) {\n this.stack[this.stack.length - 1].depth =\n this.sliceSerialize(token).charCodeAt(0) === 61 ? 1 : 2\n }\n\n function onexitsetextheading() {\n setData('setextHeadingSlurpLineEnding')\n }\n\n function onenterdata(token) {\n var siblings = this.stack[this.stack.length - 1].children\n var tail = siblings[siblings.length - 1]\n\n if (!tail || tail.type !== 'text') {\n // Add a new text node.\n tail = text()\n tail.position = {start: point(token.start)}\n this.stack[this.stack.length - 1].children.push(tail)\n }\n\n this.stack.push(tail)\n }\n\n function onexitdata(token) {\n var tail = this.stack.pop()\n tail.value += this.sliceSerialize(token)\n tail.position.end = point(token.end)\n }\n\n function onexitlineending(token) {\n var context = this.stack[this.stack.length - 1]\n\n // If we’re at a hard break, include the line ending in there.\n if (getData('atHardBreak')) {\n context.children[context.children.length - 1].position.end = point(\n token.end\n )\n\n setData('atHardBreak')\n return\n }\n\n if (\n !getData('setextHeadingSlurpLineEnding') &&\n config.canContainEols.indexOf(context.type) > -1\n ) {\n onenterdata.call(this, token)\n onexitdata.call(this, token)\n }\n }\n\n function onexithardbreak() {\n setData('atHardBreak', true)\n }\n\n function onexithtmlflow() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexithtmltext() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitcodetext() {\n var data = this.resume()\n this.stack[this.stack.length - 1].value = data\n }\n\n function onexitlink() {\n var context = this.stack[this.stack.length - 1]\n\n // To do: clean.\n if (getData('inReference')) {\n context.type += 'Reference'\n context.referenceType = getData('referenceType') || 'shortcut'\n delete context.url\n delete context.title\n } else {\n delete context.identifier\n delete context.label\n delete context.referenceType\n }\n\n setData('referenceType')\n }\n\n function onexitimage() {\n var context = this.stack[this.stack.length - 1]\n\n // To do: clean.\n if (getData('inReference')) {\n context.type += 'Reference'\n context.referenceType = getData('referenceType') || 'shortcut'\n delete context.url\n delete context.title\n } else {\n delete context.identifier\n delete context.label\n delete context.referenceType\n }\n\n setData('referenceType')\n }\n\n function onexitlabeltext(token) {\n this.stack[this.stack.length - 2].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n }\n\n function onexitlabel() {\n var fragment = this.stack[this.stack.length - 1]\n var value = this.resume()\n\n this.stack[this.stack.length - 1].label = value\n\n // Assume a reference.\n setData('inReference', true)\n\n if (this.stack[this.stack.length - 1].type === 'link') {\n this.stack[this.stack.length - 1].children = fragment.children\n } else {\n this.stack[this.stack.length - 1].alt = value\n }\n }\n\n function onexitresourcedestinationstring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].url = data\n }\n\n function onexitresourcetitlestring() {\n var data = this.resume()\n this.stack[this.stack.length - 1].title = data\n }\n\n function onexitresource() {\n setData('inReference')\n }\n\n function onenterreference() {\n setData('referenceType', 'collapsed')\n }\n\n function onexitreferencestring(token) {\n var label = this.resume()\n this.stack[this.stack.length - 1].label = label\n this.stack[this.stack.length - 1].identifier = normalizeIdentifier(\n this.sliceSerialize(token)\n ).toLowerCase()\n setData('referenceType', 'full')\n }\n\n function onexitcharacterreferencemarker(token) {\n setData('characterReferenceType', token.type)\n }\n\n function onexitcharacterreferencevalue(token) {\n var data = this.sliceSerialize(token)\n var type = getData('characterReferenceType')\n var value\n var tail\n\n if (type) {\n value = safeFromInt(\n data,\n type === 'characterReferenceMarkerNumeric' ? 10 : 16\n )\n\n setData('characterReferenceType')\n } else {\n value = decode(data)\n }\n\n tail = this.stack.pop()\n tail.value += value\n tail.position.end = point(token.end)\n }\n\n function onexitautolinkprotocol(token) {\n onexitdata.call(this, token)\n this.stack[this.stack.length - 1].url = this.sliceSerialize(token)\n }\n\n function onexitautolinkemail(token) {\n onexitdata.call(this, token)\n this.stack[this.stack.length - 1].url =\n 'mailto:' + this.sliceSerialize(token)\n }\n\n //\n // Creaters.\n //\n\n function blockQuote() {\n return {type: 'blockquote', children: []}\n }\n\n function codeFlow() {\n return {type: 'code', lang: null, meta: null, value: ''}\n }\n\n function codeText() {\n return {type: 'inlineCode', value: ''}\n }\n\n function definition() {\n return {\n type: 'definition',\n identifier: '',\n label: null,\n title: null,\n url: ''\n }\n }\n\n function emphasis() {\n return {type: 'emphasis', children: []}\n }\n\n function heading() {\n return {type: 'heading', depth: undefined, children: []}\n }\n\n function hardBreak() {\n return {type: 'break'}\n }\n\n function html() {\n return {type: 'html', value: ''}\n }\n\n function image() {\n return {type: 'image', title: null, url: '', alt: null}\n }\n\n function link() {\n return {type: 'link', title: null, url: '', children: []}\n }\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 function listItem(token) {\n return {\n type: 'listItem',\n spread: token._spread,\n checked: null,\n children: []\n }\n }\n\n function paragraph() {\n return {type: 'paragraph', children: []}\n }\n\n function strong() {\n return {type: 'strong', children: []}\n }\n\n function text() {\n return {type: 'text', value: ''}\n }\n\n function thematicBreak() {\n return {type: 'thematicBreak'}\n }\n}\n\nfunction configure(config, extensions) {\n var index = -1\n\n while (++index < extensions.length) {\n extension(config, extensions[index])\n }\n\n return config\n}\n\nfunction extension(config, extension) {\n var key\n var left\n\n for (key in extension) {\n left = own.call(config, key) ? config[key] : (config[key] = {})\n\n if (key === 'canContainEols') {\n config[key] = [].concat(left, extension[key])\n } else {\n Object.assign(left, extension[key])\n }\n }\n}\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\n\nvar tokenize = initializeContent\n\nfunction initializeContent(effects) {\n var contentStart = effects.attempt(\n this.parser.constructs.contentInitial,\n afterContentStartConstruct,\n paragraphInitial\n )\n var previous\n return contentStart\n\n function afterContentStartConstruct(code) {\n if (code === null) {\n effects.consume(code)\n return\n }\n\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, contentStart, 'linePrefix')\n }\n\n function paragraphInitial(code) {\n effects.enter('paragraph')\n return lineStart(code)\n }\n\n function lineStart(code) {\n var token = effects.enter('chunkText', {\n contentType: 'text',\n previous: previous\n })\n\n if (previous) {\n previous.next = token\n }\n\n previous = token\n return data(code)\n }\n\n function data(code) {\n if (code === null) {\n effects.exit('chunkText')\n effects.exit('paragraph')\n effects.consume(code)\n return\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n effects.exit('chunkText')\n return lineStart\n } // Data.\n\n effects.consume(code)\n return data\n }\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar asciiControl = require('../character/ascii-control.js')\n\n// eslint-disable-next-line max-params\nfunction destinationFactory(\n effects,\n ok,\n nok,\n type,\n literalType,\n literalMarkerType,\n rawType,\n stringType,\n max\n) {\n var limit = max || Infinity\n var balance = 0\n return start\n\n function start(code) {\n if (code === 60) {\n effects.enter(type)\n effects.enter(literalType)\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n return destinationEnclosedBefore\n }\n\n if (asciiControl(code)) {\n return nok(code)\n }\n\n effects.enter(type)\n effects.enter(rawType)\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationRaw(code)\n }\n\n function destinationEnclosedBefore(code) {\n if (code === 62) {\n effects.enter(literalMarkerType)\n effects.consume(code)\n effects.exit(literalMarkerType)\n effects.exit(literalType)\n effects.exit(type)\n return ok\n }\n\n effects.enter(stringType)\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return destinationEnclosed(code)\n }\n\n function destinationEnclosed(code) {\n if (code === 62) {\n effects.exit('chunkString')\n effects.exit(stringType)\n return destinationEnclosedBefore(code)\n }\n\n if (code === null || code === 60 || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return code === 92 ? destinationEnclosedEscape : destinationEnclosed\n }\n\n function destinationEnclosedEscape(code) {\n if (code === 60 || code === 62 || code === 92) {\n effects.consume(code)\n return destinationEnclosed\n }\n\n return destinationEnclosed(code)\n }\n\n function destinationRaw(code) {\n if (code === 40) {\n if (++balance > limit) return nok(code)\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === 41) {\n if (!balance--) {\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n effects.consume(code)\n return destinationRaw\n }\n\n if (code === null || markdownLineEndingOrSpace(code)) {\n if (balance) return nok(code)\n effects.exit('chunkString')\n effects.exit(stringType)\n effects.exit(rawType)\n effects.exit(type)\n return ok(code)\n }\n\n if (asciiControl(code)) return nok(code)\n effects.consume(code)\n return code === 92 ? destinationRawEscape : destinationRaw\n }\n\n function destinationRawEscape(code) {\n if (code === 40 || code === 41 || code === 92) {\n effects.consume(code)\n return destinationRaw\n }\n\n return destinationRaw(code)\n }\n}\n\nmodule.exports = destinationFactory\n","'use strict'\n\nvar p = require('./minpath')\nvar proc = require('./minproc')\nvar buffer = require('is-buffer')\n\nmodule.exports = VFile\n\nvar own = {}.hasOwnProperty\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.\nvar order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname']\n\nVFile.prototype.toString = toString\n\n// Access full path (`~/index.min.js`).\nObject.defineProperty(VFile.prototype, 'path', {get: getPath, set: setPath})\n\n// Access parent path (`~`).\nObject.defineProperty(VFile.prototype, 'dirname', {\n get: getDirname,\n set: setDirname\n})\n\n// Access basename (`index.min.js`).\nObject.defineProperty(VFile.prototype, 'basename', {\n get: getBasename,\n set: setBasename\n})\n\n// Access extname (`.js`).\nObject.defineProperty(VFile.prototype, 'extname', {\n get: getExtname,\n set: setExtname\n})\n\n// Access stem (`index.min`).\nObject.defineProperty(VFile.prototype, 'stem', {get: getStem, set: setStem})\n\n// Construct a new file.\nfunction VFile(options) {\n var prop\n var index\n\n if (!options) {\n options = {}\n } else if (typeof options === 'string' || buffer(options)) {\n options = {contents: options}\n } else if ('message' in options && 'messages' in options) {\n return options\n }\n\n if (!(this instanceof VFile)) {\n return new VFile(options)\n }\n\n this.data = {}\n this.messages = []\n this.history = []\n this.cwd = proc.cwd()\n\n // Set path related properties in the correct order.\n index = -1\n\n while (++index < order.length) {\n prop = order[index]\n\n if (own.call(options, prop)) {\n this[prop] = options[prop]\n }\n }\n\n // Set non-path related properties.\n for (prop in options) {\n if (order.indexOf(prop) < 0) {\n this[prop] = options[prop]\n }\n }\n}\n\nfunction getPath() {\n return this.history[this.history.length - 1]\n}\n\nfunction setPath(path) {\n assertNonEmpty(path, 'path')\n\n if (this.path !== path) {\n this.history.push(path)\n }\n}\n\nfunction getDirname() {\n return typeof this.path === 'string' ? p.dirname(this.path) : undefined\n}\n\nfunction setDirname(dirname) {\n assertPath(this.path, 'dirname')\n this.path = p.join(dirname || '', this.basename)\n}\n\nfunction getBasename() {\n return typeof this.path === 'string' ? p.basename(this.path) : undefined\n}\n\nfunction setBasename(basename) {\n assertNonEmpty(basename, 'basename')\n assertPart(basename, 'basename')\n this.path = p.join(this.dirname || '', basename)\n}\n\nfunction getExtname() {\n return typeof this.path === 'string' ? p.extname(this.path) : undefined\n}\n\nfunction setExtname(extname) {\n assertPart(extname, 'extname')\n assertPath(this.path, 'extname')\n\n if (extname) {\n if (extname.charCodeAt(0) !== 46 /* `.` */) {\n throw new Error('`extname` must start with `.`')\n }\n\n if (extname.indexOf('.', 1) > -1) {\n throw new Error('`extname` cannot contain multiple dots')\n }\n }\n\n this.path = p.join(this.dirname, this.stem + (extname || ''))\n}\n\nfunction getStem() {\n return typeof this.path === 'string'\n ? p.basename(this.path, this.extname)\n : undefined\n}\n\nfunction setStem(stem) {\n assertNonEmpty(stem, 'stem')\n assertPart(stem, 'stem')\n this.path = p.join(this.dirname || '', stem + (this.extname || ''))\n}\n\n// Get the value of the file.\nfunction toString(encoding) {\n return (this.contents || '').toString(encoding)\n}\n\n// Assert that `part` is not a path (i.e., does not contain `p.sep`).\nfunction assertPart(part, name) {\n if (part && part.indexOf(p.sep) > -1) {\n throw new Error(\n '`' + name + '` cannot be a path: did not expect `' + p.sep + '`'\n )\n }\n}\n\n// Assert that `part` is not empty.\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty')\n }\n}\n\n// Assert `path` exists.\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too')\n }\n}\n","'use strict'\n\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\nvar factoryTitle = require('./factory-title.js')\n\nvar definition = {\n name: 'definition',\n tokenize: tokenizeDefinition\n}\nvar titleConstruct = {\n tokenize: tokenizeTitle,\n partial: true\n}\n\nfunction tokenizeDefinition(effects, ok, nok) {\n var self = this\n var identifier\n return start\n\n function start(code) {\n effects.enter('definition')\n return factoryLabel.call(\n self,\n effects,\n labelAfter,\n nok,\n 'definitionLabel',\n 'definitionLabelMarker',\n 'definitionLabelString'\n )(code)\n }\n\n function labelAfter(code) {\n identifier = normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n\n if (code === 58) {\n effects.enter('definitionMarker')\n effects.consume(code)\n effects.exit('definitionMarker') // Note: blank lines can’t exist in content.\n\n return factoryWhitespace(\n effects,\n factoryDestination(\n effects,\n effects.attempt(\n titleConstruct,\n factorySpace(effects, after, 'whitespace'),\n factorySpace(effects, after, 'whitespace')\n ),\n nok,\n 'definitionDestination',\n 'definitionDestinationLiteral',\n 'definitionDestinationLiteralMarker',\n 'definitionDestinationRaw',\n 'definitionDestinationString'\n )\n )\n }\n\n return nok(code)\n }\n\n function after(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('definition')\n\n if (self.parser.defined.indexOf(identifier) < 0) {\n self.parser.defined.push(identifier)\n }\n\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeTitle(effects, ok, nok) {\n return start\n\n function start(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, before)(code)\n : nok(code)\n }\n\n function before(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factorySpace(effects, after, 'whitespace'),\n nok,\n 'definitionTitle',\n 'definitionTitleMarker',\n 'definitionTitleString'\n )(code)\n }\n\n return nok(code)\n }\n\n function after(code) {\n return code === null || markdownLineEnding(code) ? ok(code) : nok(code)\n }\n}\n\nmodule.exports = definition\n","'use strict'\n\n/* Expose. */\nmodule.exports = visitParents\n\n/* Visit. */\nfunction visitParents(tree, type, visitor) {\n var stack = []\n\n if (typeof type === 'function') {\n visitor = type\n type = null\n }\n\n one(tree)\n\n /* Visit a single node. */\n function one(node) {\n var result\n\n if (!type || node.type === type) {\n result = visitor(node, stack.concat())\n }\n\n if (node.children && result !== false) {\n return all(node.children, node)\n }\n\n return result\n }\n\n /* Visit children in `parent`. */\n function all(children, parent) {\n var length = children.length\n var index = -1\n var child\n\n stack.push(parent)\n\n while (++index < length) {\n child = children[index]\n\n if (child && one(child) === false) {\n return false\n }\n }\n\n stack.pop()\n\n return true\n }\n}\n","'use strict'\n\nvar hasOwnProperty = require('../constant/has-own-property.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar miniflat = require('./miniflat.js')\n\nfunction combineExtensions(extensions) {\n var all = {}\n var index = -1\n\n while (++index < extensions.length) {\n extension(all, extensions[index])\n }\n\n return all\n}\n\nfunction extension(all, extension) {\n var hook\n var left\n var right\n var code\n\n for (hook in extension) {\n left = hasOwnProperty.call(all, hook) ? all[hook] : (all[hook] = {})\n right = extension[hook]\n\n for (code in right) {\n left[code] = constructs(\n miniflat(right[code]),\n hasOwnProperty.call(left, code) ? left[code] : []\n )\n }\n }\n}\n\nfunction constructs(list, existing) {\n var index = -1\n var before = []\n\n while (++index < list.length) {\n ;(list[index].add === 'after' ? existing : before).push(list[index])\n }\n\n chunkedSplice(existing, 0, 0, before)\n return existing\n}\n\nmodule.exports = combineExtensions\n","import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport function PureComponent(p) {\n\tthis.props = p;\n}\nPureComponent.prototype = new Component();\n// Some third-party libraries check if this property is present\nPureComponent.prototype.isPureReactComponent = true;\nPureComponent.prototype.shouldComponentUpdate = function(props, state) {\n\treturn shallowDiffers(this.props, props) || shallowDiffers(this.state, state);\n};\n","import { createElement } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionalComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionalComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, props);\n\t}\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n","import { options } from 'preact';\nimport { assign } from './util';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\nexport const REACT_FORWARD_SYMBOL =\n\t(typeof Symbol != 'undefined' &&\n\t\tSymbol.for &&\n\t\tSymbol.for('react.forward_ref')) ||\n\t0xf47;\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionalComponent}\n */\nexport function forwardRef(fn) {\n\t// We always have ref in props.ref, except for\n\t// mobx-react. It will call this function directly\n\t// and always pass ref as the second argument.\n\tfunction Forwarded(props, ref) {\n\t\tlet clone = assign({}, props);\n\t\tdelete clone.ref;\n\t\tref = props.ref || ref;\n\t\treturn fn(\n\t\t\tclone,\n\t\t\t!ref || (typeof ref === 'object' && !('current' in ref)) ? null : ref\n\t\t);\n\t}\n\n\t// mobx-react checks for this being present\n\tForwarded.$$typeof = REACT_FORWARD_SYMBOL;\n\t// mobx-react heavily relies on implementation details.\n\t// It expects an object here with a `render` property,\n\t// and prototype.render will fail. Without this\n\t// mobx-react throws.\n\tForwarded.render = Forwarded;\n\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n","import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (children == null) return null;\n\treturn toChildArray(toChildArray(children).map(fn));\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tconst normalized = toChildArray(children);\n\t\tif (normalized.length !== 1) throw 'Children.only';\n\t\treturn normalized[0];\n\t},\n\ttoArray: toChildArray\n};\n","import { Component, createElement, options, Fragment } from 'preact';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function(error, newVNode, oldVNode) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\tif (newVNode._dom == null) {\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t}\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode);\n};\n\nfunction detachedClone(vnode) {\n\tif (vnode) {\n\t\tif (vnode._component && vnode._component.__hooks) {\n\t\t\tvnode._component.__hooks._list.forEach(effect => {\n\t\t\t\tif (typeof effect._cleanup == 'function') effect._cleanup();\n\t\t\t});\n\n\t\t\tvnode._component.__hooks = null;\n\t\t}\n\n\t\tvnode = assign({}, vnode);\n\t\tvnode._component = null;\n\t\tvnode._children = vnode._children && vnode._children.map(detachedClone);\n\t}\n\n\treturn vnode;\n}\n\nfunction removeOriginal(vnode) {\n\tif (vnode) {\n\t\tvnode._original = null;\n\t\tvnode._children = vnode._children && vnode._children.map(removeOriginal);\n\t}\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @param {Promise} promise The thrown promise\n * @param {import('./internal').VNode} suspendingVNode The suspending component\n */\nSuspense.prototype._childDidSuspend = function(promise, suspendingVNode) {\n\tconst suspendingComponent = suspendingVNode._component;\n\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\t\tsuspendingComponent.componentWillUnmount =\n\t\t\tsuspendingComponent._suspendedComponentWillUnmount;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._suspendedComponentWillUnmount =\n\t\tsuspendingComponent.componentWillUnmount;\n\tsuspendingComponent.componentWillUnmount = () => {\n\t\tonResolved();\n\n\t\tif (suspendingComponent._suspendedComponentWillUnmount) {\n\t\t\tsuspendingComponent._suspendedComponentWillUnmount();\n\t\t}\n\t};\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\tc._vnode._children[0] = removeOriginal(c.state._suspended);\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * We do not set `suspended: true` during hydration because we want the actual markup\n\t * to remain on screen and hydrate it when the suspense actually gets resolved.\n\t * While in non-hydration cases the usual fallback -> component flow would occour.\n\t */\n\tconst wasHydrating = suspendingVNode._hydrating === true;\n\tif (!wasHydrating && !c._pendingSuspensionCount++) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.componentWillUnmount = function() {\n\tthis._suspenders = [];\n};\n\nSuspense.prototype.render = function(props, state) {\n\tif (this._detachOnNextRender) {\n\t\t// When the Suspense's _vnode was created by a call to createVNode\n\t\t// (i.e. due to a setState further up in the tree)\n\t\t// it's _children prop is null, in this case we \"forget\" about the parked vnodes to detach\n\t\tif (this._vnode._children)\n\t\t\tthis._vnode._children[0] = detachedClone(this._detachOnNextRender);\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\t// Wrap fallback tree in a VNode that prevents itself from being marked as aborting mid-hydration:\n\t/** @type {import('./internal').VNode} */\n\tconst fallback =\n\t\tstate._suspended && createElement(Fragment, null, props.fallback);\n\tif (fallback) fallback._hydrating = null;\n\n\treturn [\n\t\tcreateElement(Fragment, null, state._suspended ? null : props.children),\n\t\tfallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('./internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\t/** @type {import('./internal').Component} */\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n","import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function(child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function(props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate = SuspenseList.prototype.componentDidMount = function() {\n\t// Iterate through all children after mounting for two reasons:\n\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t// each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t// The nodes can now be completely consumed from the linked list.\n\t// 2. Handle nodes that might have gotten resolved between render and\n\t// componentDidMount.\n\tthis._map.forEach((node, child) => {\n\t\tresolve(this, child, node);\n\t});\n};\n","import { createElement, hydrate, render, __u as _unmount } from 'preact';\n\nfunction ContextProvider(props) {\n\tthis.getChildContext = () => props.context;\n\treturn props.children;\n}\n\n/**\n * Portal component\n * @param {object | null | undefined} props\n *\n * TODO: this could use the \"fake root node\" trick from the partial hydration demo\n */\nfunction Portal(props) {\n\tconst _this = this;\n\tlet container = props._container;\n\tlet wrap = createElement(\n\t\tContextProvider,\n\t\t{ context: _this.context },\n\t\tprops._vnode\n\t);\n\n\t_this.componentWillUnmount = function() {\n\t\tlet parent = _this._temp.parentNode;\n\t\tif (parent) parent.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t};\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\t_this.componentWillUnmount();\n\t\t// if (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t// _unmount(_this._wrap);\n\t\t_this._hasMounted = false;\n\t}\n\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\n\t// conditional vnode. This should not trigger a render.\n\tif (props._vnode) {\n\t\tif (!_this._hasMounted) {\n\t\t\t// Create a placeholder that we can use to insert into.\n\t\t\t_this._temp = document.createTextNode('');\n\t\t\t// temporarily store the current children of the container to restore them after render\n\t\t\t_this._children = container._children;\n\t\t\t// Hydrate existing nodes to keep the dom intact, when rendering\n\t\t\t// wrap into the container.\n\t\t\thydrate('', container);\n\t\t\t// Append to the container (this matches React's behavior)\n\t\t\tcontainer.appendChild(_this._temp);\n\t\t\t// At this point we have mounted and should set our container.\n\t\t\t_this._hasMounted = true;\n\t\t\t_this._container = container;\n\t\t\t// Render our wrapping element into temp.\n\t\t\trender(wrap, container, _this._temp);\n\t\t\t// restore the previous children of the container\n\t\t\tcontainer._children = _this._children;\n\t\t\t// store the children of the new vnode to be used in subsequent re-renders\n\t\t\t_this._children = _this._temp._children;\n\t\t} else {\n\t\t\t// When we have mounted and the vnode is present it means the\n\t\t\t// props have changed or a parent is triggering a rerender.\n\t\t\t// This implies we only need to call render. But we need to keep\n\t\t\t// the old tree around, otherwise will treat the vnodes as new and\n\t\t\t// will wrongly call `componentDidMount` on them\n\t\t\tcontainer._children = _this._children;\n\t\t\trender(wrap, container);\n\t\t\t_this._children = container._children;\n\t\t}\n\t}\n\t// When we come from a conditional render, on a mounted\n\t// portal we should clear the DOM.\n\telse if (_this._hasMounted) {\n\t\t_this.componentWillUnmount();\n\t\t// if (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t// _unmount(_this._wrap);\n\t}\n\t// Set the wrapping element for future unmounting.\n\t_this._wrap = wrap;\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\treturn createElement(Portal, { _vnode: vnode, _container: container });\n}\n","import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\n\n// Input types for which onchange should not be converted to oninput.\n// type=\"file|checkbox|radio\", plus \"range\" in IE11.\n// (IE11 doesn't support Symbol, which we use here to turn `rad` into `ra` which matches \"range\")\nconst ONCHANGE_INPUT_TYPES =\n\ttypeof Symbol != 'undefined' ? /fil|che|rad/i : /fil|che|ra/i;\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\n// `UNSAFE_*` lifecycle hooks\n// Preact only ever invokes the unprefixed methods.\n// Here we provide a base \"fallback\" implementation that calls any defined UNSAFE_ prefixed method.\n// - If a component defines its own `componentDidMount()` (including via defineProperty), use that.\n// - If a component defines `UNSAFE_componentDidMount()`, `componentDidMount` is the alias getter/setter.\n// - If anything assigns to an `UNSAFE_*` property, the assignment is forwarded to the unprefixed property.\n// See https://github.com/preactjs/preact/issues/1941\n[\n\t'componentWillMount',\n\t'componentWillReceiveProps',\n\t'componentWillUpdate'\n].forEach(key => {\n\tObject.defineProperty(Component.prototype, key, {\n\t\tconfigurable: true,\n\t\tget() {\n\t\t\treturn this['UNSAFE_' + key];\n\t\t},\n\t\tset(v) {\n\t\t\tObject.defineProperty(this, key, {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true,\n\t\t\t\tvalue: v\n\t\t\t});\n\t\t}\n\t});\n});\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\tparent.textContent = '';\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\te.persist = empty;\n\te.isPropagationStopped = isPropagationStopped;\n\te.isDefaultPrevented = isDefaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\nfunction empty() {}\n\nfunction isPropagationStopped() {\n\treturn this.cancelBubble;\n}\n\nfunction isDefaultPrevented() {\n\treturn this.defaultPrevented;\n}\n\nlet classNameDescriptor = {\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\tlet type = vnode.type;\n\tlet props = vnode.props;\n\tlet normalizedProps = props;\n\n\t// only normalize props on Element nodes\n\tif (typeof type === 'string') {\n\t\tnormalizedProps = {};\n\n\t\tfor (let i in props) {\n\t\t\tlet value = props[i];\n\n\t\t\tif (i === 'defaultValue' && 'value' in props && props.value == null) {\n\t\t\t\t// `defaultValue` is treated as a fallback `value` when a value prop is present but null/undefined.\n\t\t\t\t// `defaultValue` for Elements with no value prop is the same as the DOM defaultValue property.\n\t\t\t\ti = 'value';\n\t\t\t} else if (i === 'download' && value === true) {\n\t\t\t\t// Calling `setAttribute` with a truthy value will lead to it being\n\t\t\t\t// passed as a stringified value, e.g. `download=\"true\"`. React\n\t\t\t\t// converts it to an empty string instead, otherwise the attribute\n\t\t\t\t// value will be used as the file name and the file will be called\n\t\t\t\t// \"true\" upon downloading it.\n\t\t\t\tvalue = '';\n\t\t\t} else if (/ondoubleclick/i.test(i)) {\n\t\t\t\ti = 'ondblclick';\n\t\t\t} else if (\n\t\t\t\t/^onchange(textarea|input)/i.test(i + type) &&\n\t\t\t\t!ONCHANGE_INPUT_TYPES.test(props.type)\n\t\t\t) {\n\t\t\t\ti = 'oninput';\n\t\t\t} else if (/^on(Ani|Tra|Tou|BeforeInp)/.test(i)) {\n\t\t\t\ti = i.toLowerCase();\n\t\t\t} else if (CAMEL_PROPS.test(i)) {\n\t\t\t\ti = i.replace(/[A-Z0-9]/, '-$&').toLowerCase();\n\t\t\t} else if (value === null) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\n\t\t\tnormalizedProps[i] = value;\n\t\t}\n\n\t\t// Add support for array select values: \n\t\tif (\n\t\t\ttype == 'select' &&\n\t\t\tnormalizedProps.multiple &&\n\t\t\tArray.isArray(normalizedProps.value)\n\t\t) {\n\t\t\t// forEach() always returns undefined, which we abuse here to unset the value prop.\n\t\t\tnormalizedProps.value = toChildArray(props.children).forEach(child => {\n\t\t\t\tchild.props.selected =\n\t\t\t\t\tnormalizedProps.value.indexOf(child.props.value) != -1;\n\t\t\t});\n\t\t}\n\n\t\tvnode.props = normalizedProps;\n\t}\n\n\tif (type && props.class != props.className) {\n\t\tclassNameDescriptor.enumerable = 'className' in props;\n\t\tif (props.className != null) normalizedProps.class = props.className;\n\t\tObject.defineProperty(normalizedProps, 'className', classNameDescriptor);\n\t}\n\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tif (oldVNodeHook) oldVNodeHook(vnode);\n};\n\n// Only needed for react-relay\nlet currentComponent;\nconst oldBeforeRender = options._render;\noptions._render = function(vnode) {\n\tif (oldBeforeRender) {\n\t\toldBeforeRender(vnode);\n\t}\n\tcurrentComponent = vnode._component;\n};\n\n// This is a very very private internal function for React it\n// is used to sort-of do runtime dependency injection. So far\n// only `react-relay` makes use of it. It uses it to read the\n// context value.\nexport const __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = {\n\tReactCurrentDispatcher: {\n\t\tcurrent: {\n\t\t\treadContext(context) {\n\t\t\t\treturn currentComponent._globalContext[context._id].props.value;\n\t\t\t}\n\t\t}\n\t}\n};\n","'use strict'\n\nvar asciiPunctuation = require('../character/ascii-punctuation.js')\n\nvar characterEscape = {\n name: 'characterEscape',\n tokenize: tokenizeCharacterEscape\n}\n\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('characterEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n effects.exit('escapeMarker')\n return open\n }\n\n function open(code) {\n if (asciiPunctuation(code)) {\n effects.enter('characterEscapeValue')\n effects.consume(code)\n effects.exit('characterEscapeValue')\n effects.exit('characterEscape')\n return ok\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = characterEscape\n","'use strict'\n\nvar assign = Object.assign\n\nmodule.exports = assign\n","'use strict'\n\nfunction markdownLineEndingOrSpace(code) {\n return code < 0 || code === 32\n}\n\nmodule.exports = markdownLineEndingOrSpace\n","'use strict'\n\nvar regexCheck = require('../util/regex-check.js')\n\nvar asciiHexDigit = regexCheck(/[\\dA-Fa-f]/)\n\nmodule.exports = asciiHexDigit\n","'use strict'\n\n// This module is copied from .\nvar basics = [\n 'address',\n 'article',\n 'aside',\n 'base',\n 'basefont',\n 'blockquote',\n 'body',\n 'caption',\n 'center',\n 'col',\n 'colgroup',\n 'dd',\n 'details',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'frame',\n 'frameset',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hr',\n 'html',\n 'iframe',\n 'legend',\n 'li',\n 'link',\n 'main',\n 'menu',\n 'menuitem',\n 'nav',\n 'noframes',\n 'ol',\n 'optgroup',\n 'option',\n 'p',\n 'param',\n 'section',\n 'source',\n 'summary',\n 'table',\n 'tbody',\n 'td',\n 'tfoot',\n 'th',\n 'thead',\n 'title',\n 'tr',\n 'track',\n 'ul'\n]\n\nmodule.exports = basics\n","'use strict'\n\nvar fromCharCode = String.fromCharCode\n\nmodule.exports = fromCharCode\n","'use strict'\n\nvar fromCharCode = require('../constant/from-char-code.js')\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar partialBlankLine = require('./partial-blank-line.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar asciiAlpha = require('../character/ascii-alpha.js')\nvar htmlBlockNames = require('../constant/html-block-names.js')\nvar htmlRawNames = require('../constant/html-raw-names.js')\n\nvar htmlFlow = {\n name: 'htmlFlow',\n tokenize: tokenizeHtmlFlow,\n resolveTo: resolveToHtmlFlow,\n concrete: true\n}\nvar nextBlankConstruct = {\n tokenize: tokenizeNextBlank,\n partial: true\n}\n\nfunction resolveToHtmlFlow(events) {\n var index = events.length\n\n while (index--) {\n if (events[index][0] === 'enter' && events[index][1].type === 'htmlFlow') {\n break\n }\n }\n\n if (index > 1 && events[index - 2][1].type === 'linePrefix') {\n // Add the prefix start to the HTML token.\n events[index][1].start = events[index - 2][1].start // Add the prefix start to the HTML line token.\n\n events[index + 1][1].start = events[index - 2][1].start // Remove the line prefix.\n\n events.splice(index - 2, 2)\n }\n\n return events\n}\n\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n var self = this\n var kind\n var startTag\n var buffer\n var index\n var marker\n return start\n\n function start(code) {\n effects.enter('htmlFlow')\n effects.enter('htmlFlowData')\n effects.consume(code)\n return open\n }\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationStart\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n kind = 3 // While we’re in an instruction instead of a declaration, we’re on a `?`\n // right now, so we do need to search for `>`, similar to declarations.\n\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = fromCharCode(code)\n startTag = true\n return tagName\n }\n\n return nok(code)\n }\n\n function declarationStart(code) {\n if (code === 45) {\n effects.consume(code)\n kind = 2\n return commentOpenInside\n }\n\n if (code === 91) {\n effects.consume(code)\n kind = 5\n buffer = 'CDATA['\n index = 0\n return cdataOpenInside\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n kind = 4\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n\n function commentOpenInside(code) {\n if (code === 45) {\n effects.consume(code)\n return self.interrupt ? ok : continuationDeclarationInside\n }\n\n return nok(code)\n }\n\n function cdataOpenInside(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length\n ? self.interrupt\n ? ok\n : continuation\n : cdataOpenInside\n }\n\n return nok(code)\n }\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n buffer = fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n\n function tagName(code) {\n if (\n code === null ||\n code === 47 ||\n code === 62 ||\n markdownLineEndingOrSpace(code)\n ) {\n if (\n code !== 47 &&\n startTag &&\n htmlRawNames.indexOf(buffer.toLowerCase()) > -1\n ) {\n kind = 1\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n if (htmlBlockNames.indexOf(buffer.toLowerCase()) > -1) {\n kind = 6\n\n if (code === 47) {\n effects.consume(code)\n return basicSelfClosing\n }\n\n return self.interrupt ? ok(code) : continuation(code)\n }\n\n kind = 7 // Do not support complete HTML when interrupting.\n\n return self.interrupt\n ? nok(code)\n : startTag\n ? completeAttributeNameBefore(code)\n : completeClosingTagAfter(code)\n }\n\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n buffer += fromCharCode(code)\n return tagName\n }\n\n return nok(code)\n }\n\n function basicSelfClosing(code) {\n if (code === 62) {\n effects.consume(code)\n return self.interrupt ? ok : continuation\n }\n\n return nok(code)\n }\n\n function completeClosingTagAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeClosingTagAfter\n }\n\n return completeEnd(code)\n }\n\n function completeAttributeNameBefore(code) {\n if (code === 47) {\n effects.consume(code)\n return completeEnd\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return completeAttributeName\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameBefore\n }\n\n return completeEnd(code)\n }\n\n function completeAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return completeAttributeName\n }\n\n return completeAttributeNameAfter(code)\n }\n\n function completeAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeNameAfter\n }\n\n return completeAttributeNameBefore(code)\n }\n\n function completeAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return completeAttributeValueQuoted\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAttributeValueBefore\n }\n\n marker = undefined\n return completeAttributeValueUnquoted(code)\n }\n\n function completeAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return completeAttributeValueQuotedAfter\n }\n\n if (code === null || markdownLineEnding(code)) {\n return nok(code)\n }\n\n effects.consume(code)\n return completeAttributeValueQuoted\n }\n\n function completeAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96 ||\n markdownLineEndingOrSpace(code)\n ) {\n return completeAttributeNameAfter(code)\n }\n\n effects.consume(code)\n return completeAttributeValueUnquoted\n }\n\n function completeAttributeValueQuotedAfter(code) {\n if (code === 47 || code === 62 || markdownSpace(code)) {\n return completeAttributeNameBefore(code)\n }\n\n return nok(code)\n }\n\n function completeEnd(code) {\n if (code === 62) {\n effects.consume(code)\n return completeAfter\n }\n\n return nok(code)\n }\n\n function completeAfter(code) {\n if (markdownSpace(code)) {\n effects.consume(code)\n return completeAfter\n }\n\n return code === null || markdownLineEnding(code)\n ? continuation(code)\n : nok(code)\n }\n\n function continuation(code) {\n if (code === 45 && kind === 2) {\n effects.consume(code)\n return continuationCommentInside\n }\n\n if (code === 60 && kind === 1) {\n effects.consume(code)\n return continuationRawTagOpen\n }\n\n if (code === 62 && kind === 4) {\n effects.consume(code)\n return continuationClose\n }\n\n if (code === 63 && kind === 3) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n if (code === 93 && kind === 5) {\n effects.consume(code)\n return continuationCharacterDataInside\n }\n\n if (markdownLineEnding(code) && (kind === 6 || kind === 7)) {\n return effects.check(\n nextBlankConstruct,\n continuationClose,\n continuationAtLineEnding\n )(code)\n }\n\n if (code === null || markdownLineEnding(code)) {\n return continuationAtLineEnding(code)\n }\n\n effects.consume(code)\n return continuation\n }\n\n function continuationAtLineEnding(code) {\n effects.exit('htmlFlowData')\n return htmlContinueStart(code)\n }\n\n function htmlContinueStart(code) {\n if (code === null) {\n return done(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return htmlContinueStart\n }\n\n effects.enter('htmlFlowData')\n return continuation(code)\n }\n\n function continuationCommentInside(code) {\n if (code === 45) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n function continuationRawTagOpen(code) {\n if (code === 47) {\n effects.consume(code)\n buffer = ''\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n\n function continuationRawEndTag(code) {\n if (code === 62 && htmlRawNames.indexOf(buffer.toLowerCase()) > -1) {\n effects.consume(code)\n return continuationClose\n }\n\n if (asciiAlpha(code) && buffer.length < 8) {\n effects.consume(code)\n buffer += fromCharCode(code)\n return continuationRawEndTag\n }\n\n return continuation(code)\n }\n\n function continuationCharacterDataInside(code) {\n if (code === 93) {\n effects.consume(code)\n return continuationDeclarationInside\n }\n\n return continuation(code)\n }\n\n function continuationDeclarationInside(code) {\n if (code === 62) {\n effects.consume(code)\n return continuationClose\n }\n\n return continuation(code)\n }\n\n function continuationClose(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('htmlFlowData')\n return done(code)\n }\n\n effects.consume(code)\n return continuationClose\n }\n\n function done(code) {\n effects.exit('htmlFlow')\n return ok(code)\n }\n}\n\nfunction tokenizeNextBlank(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.exit('htmlFlowData')\n effects.enter('lineEndingBlank')\n effects.consume(code)\n effects.exit('lineEndingBlank')\n return effects.attempt(partialBlankLine, ok, nok)\n }\n}\n\nmodule.exports = htmlFlow\n","'use strict'\n\nvar asciiAlphanumeric = require('../character/ascii-alphanumeric.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar markdownSpace = require('../character/markdown-space.js')\nvar factorySpace = require('./factory-space.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar asciiAlpha = require('../character/ascii-alpha.js')\n\nvar htmlText = {\n name: 'htmlText',\n tokenize: tokenizeHtmlText\n}\n\nfunction tokenizeHtmlText(effects, ok, nok) {\n var self = this\n var marker\n var buffer\n var index\n var returnState\n return start\n\n function start(code) {\n effects.enter('htmlText')\n effects.enter('htmlTextData')\n effects.consume(code)\n return open\n }\n\n function open(code) {\n if (code === 33) {\n effects.consume(code)\n return declarationOpen\n }\n\n if (code === 47) {\n effects.consume(code)\n return tagCloseStart\n }\n\n if (code === 63) {\n effects.consume(code)\n return instruction\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n return nok(code)\n }\n\n function declarationOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentOpen\n }\n\n if (code === 91) {\n effects.consume(code)\n buffer = 'CDATA['\n index = 0\n return cdataOpen\n }\n\n if (asciiAlpha(code)) {\n effects.consume(code)\n return declaration\n }\n\n return nok(code)\n }\n\n function commentOpen(code) {\n if (code === 45) {\n effects.consume(code)\n return commentStart\n }\n\n return nok(code)\n }\n\n function commentStart(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentStartDash\n }\n\n return comment(code)\n }\n\n function commentStartDash(code) {\n if (code === null || code === 62) {\n return nok(code)\n }\n\n return comment(code)\n }\n\n function comment(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 45) {\n effects.consume(code)\n return commentClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = comment\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return comment\n }\n\n function commentClose(code) {\n if (code === 45) {\n effects.consume(code)\n return end\n }\n\n return comment(code)\n }\n\n function cdataOpen(code) {\n if (code === buffer.charCodeAt(index++)) {\n effects.consume(code)\n return index === buffer.length ? cdata : cdataOpen\n }\n\n return nok(code)\n }\n\n function cdata(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = cdata\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return cdata\n }\n\n function cdataClose(code) {\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n\n function cdataEnd(code) {\n if (code === 62) {\n return end(code)\n }\n\n if (code === 93) {\n effects.consume(code)\n return cdataEnd\n }\n\n return cdata(code)\n }\n\n function declaration(code) {\n if (code === null || code === 62) {\n return end(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = declaration\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return declaration\n }\n\n function instruction(code) {\n if (code === null) {\n return nok(code)\n }\n\n if (code === 63) {\n effects.consume(code)\n return instructionClose\n }\n\n if (markdownLineEnding(code)) {\n returnState = instruction\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return instruction\n }\n\n function instructionClose(code) {\n return code === 62 ? end(code) : instruction(code)\n }\n\n function tagCloseStart(code) {\n if (asciiAlpha(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return nok(code)\n }\n\n function tagClose(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagClose\n }\n\n return tagCloseBetween(code)\n }\n\n function tagCloseBetween(code) {\n if (markdownLineEnding(code)) {\n returnState = tagCloseBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagCloseBetween\n }\n\n return end(code)\n }\n\n function tagOpen(code) {\n if (code === 45 || asciiAlphanumeric(code)) {\n effects.consume(code)\n return tagOpen\n }\n\n if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n\n function tagOpenBetween(code) {\n if (code === 47) {\n effects.consume(code)\n return end\n }\n\n if (code === 58 || code === 95 || asciiAlpha(code)) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenBetween\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenBetween\n }\n\n return end(code)\n }\n\n function tagOpenAttributeName(code) {\n if (\n code === 45 ||\n code === 46 ||\n code === 58 ||\n code === 95 ||\n asciiAlphanumeric(code)\n ) {\n effects.consume(code)\n return tagOpenAttributeName\n }\n\n return tagOpenAttributeNameAfter(code)\n }\n\n function tagOpenAttributeNameAfter(code) {\n if (code === 61) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeNameAfter\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeNameAfter\n }\n\n return tagOpenBetween(code)\n }\n\n function tagOpenAttributeValueBefore(code) {\n if (\n code === null ||\n code === 60 ||\n code === 61 ||\n code === 62 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 34 || code === 39) {\n effects.consume(code)\n marker = code\n return tagOpenAttributeValueQuoted\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueBefore\n return atLineEnding(code)\n }\n\n if (markdownSpace(code)) {\n effects.consume(code)\n return tagOpenAttributeValueBefore\n }\n\n effects.consume(code)\n marker = undefined\n return tagOpenAttributeValueUnquoted\n }\n\n function tagOpenAttributeValueQuoted(code) {\n if (code === marker) {\n effects.consume(code)\n return tagOpenAttributeValueQuotedAfter\n }\n\n if (code === null) {\n return nok(code)\n }\n\n if (markdownLineEnding(code)) {\n returnState = tagOpenAttributeValueQuoted\n return atLineEnding(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueQuoted\n }\n\n function tagOpenAttributeValueQuotedAfter(code) {\n if (code === 62 || code === 47 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n return nok(code)\n }\n\n function tagOpenAttributeValueUnquoted(code) {\n if (\n code === null ||\n code === 34 ||\n code === 39 ||\n code === 60 ||\n code === 61 ||\n code === 96\n ) {\n return nok(code)\n }\n\n if (code === 62 || markdownLineEndingOrSpace(code)) {\n return tagOpenBetween(code)\n }\n\n effects.consume(code)\n return tagOpenAttributeValueUnquoted\n } // We can’t have blank lines in content, so no need to worry about empty\n // tokens.\n\n function atLineEnding(code) {\n effects.exit('htmlTextData')\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(\n effects,\n afterPrefix,\n 'linePrefix',\n self.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n }\n\n function afterPrefix(code) {\n effects.enter('htmlTextData')\n return returnState(code)\n }\n\n function end(code) {\n if (code === 62) {\n effects.consume(code)\n effects.exit('htmlTextData')\n effects.exit('htmlText')\n return ok\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = htmlText\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.Link = exports.Match = undefined;\n\nvar _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; };\n\nvar _preact = require('preact');\n\nvar _preactRouter = require('preact-router');\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Match = exports.Match = function (_Component) {\n\t_inherits(Match, _Component);\n\n\tfunction Match() {\n\t\tvar _temp, _this, _ret;\n\n\t\t_classCallCheck(this, Match);\n\n\t\tfor (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n\t\t\targs[_key] = arguments[_key];\n\t\t}\n\n\t\treturn _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.update = function (url) {\n\t\t\t_this.nextUrl = url;\n\t\t\t_this.setState({});\n\t\t}, _temp), _possibleConstructorReturn(_this, _ret);\n\t}\n\n\tMatch.prototype.componentDidMount = function componentDidMount() {\n\t\t_preactRouter.subscribers.push(this.update);\n\t};\n\n\tMatch.prototype.componentWillUnmount = function componentWillUnmount() {\n\t\t_preactRouter.subscribers.splice(_preactRouter.subscribers.indexOf(this.update) >>> 0, 1);\n\t};\n\n\tMatch.prototype.render = function render(props) {\n\t\tvar url = this.nextUrl || (0, _preactRouter.getCurrentUrl)(),\n\t\t path = url.replace(/\\?.+$/, '');\n\t\tthis.nextUrl = null;\n\t\treturn props.children({\n\t\t\turl: url,\n\t\t\tpath: path,\n\t\t\tmatches: (0, _preactRouter.exec)(path, props.path, {}) !== false\n\t\t});\n\t};\n\n\treturn Match;\n}(_preact.Component);\n\nvar Link = function Link(_ref) {\n\tvar activeClassName = _ref.activeClassName,\n\t path = _ref.path,\n\t props = _objectWithoutProperties(_ref, ['activeClassName', 'path']);\n\n\treturn (0, _preact.h)(\n\t\tMatch,\n\t\t{ path: path || props.href },\n\t\tfunction (_ref2) {\n\t\t\tvar matches = _ref2.matches;\n\t\t\treturn (0, _preact.h)(_preactRouter.Link, _extends({}, props, { 'class': [props.class || props.className, matches && activeClassName].filter(Boolean).join(' ') }));\n\t\t}\n\t);\n};\n\nexports.Link = Link;\nexports.default = Match;\n\nMatch.Link = Link;\n","module.exports = require(\"path\");","'use strict'\n\nfunction markdownSpace(code) {\n return code === -2 || code === -1 || code === 32\n}\n\nmodule.exports = markdownSpace\n","'use strict'\n\nObject.defineProperty(exports, '__esModule', {value: true})\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('../tokenize/factory-space.js')\nvar partialBlankLine = require('../tokenize/partial-blank-line.js')\n\nvar tokenize = initializeDocument\nvar containerConstruct = {\n tokenize: tokenizeContainer\n}\nvar lazyFlowConstruct = {\n tokenize: tokenizeLazyFlow\n}\n\nfunction initializeDocument(effects) {\n var self = this\n var stack = []\n var continued = 0\n var inspectConstruct = {\n tokenize: tokenizeInspect,\n partial: true\n }\n var inspectResult\n var childFlow\n var childToken\n return start\n\n function start(code) {\n if (continued < stack.length) {\n self.containerState = stack[continued][1]\n return effects.attempt(\n stack[continued][0].continuation,\n documentContinue,\n documentContinued\n )(code)\n }\n\n return documentContinued(code)\n }\n\n function documentContinue(code) {\n continued++\n return start(code)\n }\n\n function documentContinued(code) {\n // If we’re in a concrete construct (such as when expecting another line of\n // HTML, or we resulted in lazy content), we can immediately start flow.\n if (inspectResult && inspectResult.flowContinue) {\n return flowStart(code)\n }\n\n self.interrupt =\n childFlow &&\n childFlow.currentConstruct &&\n childFlow.currentConstruct.interruptible\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n containerContinue,\n flowStart\n )(code)\n }\n\n function containerContinue(code) {\n stack.push([self.currentConstruct, self.containerState])\n self.containerState = undefined\n return documentContinued(code)\n }\n\n function flowStart(code) {\n if (code === null) {\n exitContainers(0, true)\n effects.consume(code)\n return\n }\n\n childFlow = childFlow || self.parser.flow(self.now())\n effects.enter('chunkFlow', {\n contentType: 'flow',\n previous: childToken,\n _tokenizer: childFlow\n })\n return flowContinue(code)\n }\n\n function flowContinue(code) {\n if (code === null) {\n continueFlow(effects.exit('chunkFlow'))\n return flowStart(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.consume(code)\n continueFlow(effects.exit('chunkFlow'))\n return effects.check(inspectConstruct, documentAfterPeek)\n }\n\n effects.consume(code)\n return flowContinue\n }\n\n function documentAfterPeek(code) {\n exitContainers(\n inspectResult.continued,\n inspectResult && inspectResult.flowEnd\n )\n continued = 0\n return start(code)\n }\n\n function continueFlow(token) {\n if (childToken) childToken.next = token\n childToken = token\n childFlow.lazy = inspectResult && inspectResult.lazy\n childFlow.defineSkip(token.start)\n childFlow.write(self.sliceStream(token))\n }\n\n function exitContainers(size, end) {\n var index = stack.length // Close the flow.\n\n if (childFlow && end) {\n childFlow.write([null])\n childToken = childFlow = undefined\n } // Exit open containers.\n\n while (index-- > size) {\n self.containerState = stack[index][1]\n stack[index][0].exit.call(self, effects)\n }\n\n stack.length = size\n }\n\n function tokenizeInspect(effects, ok) {\n var subcontinued = 0\n inspectResult = {}\n return inspectStart\n\n function inspectStart(code) {\n if (subcontinued < stack.length) {\n self.containerState = stack[subcontinued][1]\n return effects.attempt(\n stack[subcontinued][0].continuation,\n inspectContinue,\n inspectLess\n )(code)\n } // If we’re continued but in a concrete flow, we can’t have more\n // containers.\n\n if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n inspectResult.flowContinue = true\n return inspectDone(code)\n }\n\n self.interrupt =\n childFlow.currentConstruct && childFlow.currentConstruct.interruptible\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n inspectFlowEnd,\n inspectDone\n )(code)\n }\n\n function inspectContinue(code) {\n subcontinued++\n return self.containerState._closeFlow\n ? inspectFlowEnd(code)\n : inspectStart(code)\n }\n\n function inspectLess(code) {\n if (childFlow.currentConstruct && childFlow.currentConstruct.lazy) {\n // Maybe another container?\n self.containerState = {}\n return effects.attempt(\n containerConstruct,\n inspectFlowEnd, // Maybe flow, or a blank line?\n effects.attempt(\n lazyFlowConstruct,\n inspectFlowEnd,\n effects.check(partialBlankLine, inspectFlowEnd, inspectLazy)\n )\n )(code)\n } // Otherwise we’re interrupting.\n\n return inspectFlowEnd(code)\n }\n\n function inspectLazy(code) {\n // Act as if all containers are continued.\n subcontinued = stack.length\n inspectResult.lazy = true\n inspectResult.flowContinue = true\n return inspectDone(code)\n } // We’re done with flow if we have more containers, or an interruption.\n\n function inspectFlowEnd(code) {\n inspectResult.flowEnd = true\n return inspectDone(code)\n }\n\n function inspectDone(code) {\n inspectResult.continued = subcontinued\n self.interrupt = self.containerState = undefined\n return ok(code)\n }\n }\n}\n\nfunction tokenizeContainer(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.attempt(this.parser.constructs.document, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nfunction tokenizeLazyFlow(effects, ok, nok) {\n return factorySpace(\n effects,\n effects.lazy(this.parser.constructs.flow, ok, nok),\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n}\n\nexports.tokenize = tokenize\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\n\nvar hardBreakEscape = {\n name: 'hardBreakEscape',\n tokenize: tokenizeHardBreakEscape\n}\n\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('hardBreakEscape')\n effects.enter('escapeMarker')\n effects.consume(code)\n return open\n }\n\n function open(code) {\n if (markdownLineEnding(code)) {\n effects.exit('escapeMarker')\n effects.exit('hardBreakEscape')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = hardBreakEscape\n","'use strict'\n\n// This module is copied from .\nvar raws = ['pre', 'script', 'style', 'textarea']\n\nmodule.exports = raws\n","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\nvar prefixSize = require('../util/prefix-size.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\n\nvar codeFenced = {\n name: 'codeFenced',\n tokenize: tokenizeCodeFenced,\n concrete: true\n}\n\nfunction tokenizeCodeFenced(effects, ok, nok) {\n var self = this\n var closingFenceConstruct = {\n tokenize: tokenizeClosingFence,\n partial: true\n }\n var initialPrefix = prefixSize(this.events, 'linePrefix')\n var sizeOpen = 0\n var marker\n return start\n\n function start(code) {\n effects.enter('codeFenced')\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n marker = code\n return sequenceOpen(code)\n }\n\n function sequenceOpen(code) {\n if (code === marker) {\n effects.consume(code)\n sizeOpen++\n return sequenceOpen\n }\n\n effects.exit('codeFencedFenceSequence')\n return sizeOpen < 3\n ? nok(code)\n : factorySpace(effects, infoOpen, 'whitespace')(code)\n }\n\n function infoOpen(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceInfo')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return info(code)\n }\n\n function info(code) {\n if (code === null || markdownLineEndingOrSpace(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceInfo')\n return factorySpace(effects, infoAfter, 'whitespace')(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return info\n }\n\n function infoAfter(code) {\n if (code === null || markdownLineEnding(code)) {\n return openAfter(code)\n }\n\n effects.enter('codeFencedFenceMeta')\n effects.enter('chunkString', {\n contentType: 'string'\n })\n return meta(code)\n }\n\n function meta(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('chunkString')\n effects.exit('codeFencedFenceMeta')\n return openAfter(code)\n }\n\n if (code === 96 && code === marker) return nok(code)\n effects.consume(code)\n return meta\n }\n\n function openAfter(code) {\n effects.exit('codeFencedFence')\n return self.interrupt ? ok(code) : content(code)\n }\n\n function content(code) {\n if (code === null) {\n return after(code)\n }\n\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return effects.attempt(\n closingFenceConstruct,\n after,\n initialPrefix\n ? factorySpace(effects, content, 'linePrefix', initialPrefix + 1)\n : content\n )\n }\n\n effects.enter('codeFlowValue')\n return contentContinue(code)\n }\n\n function contentContinue(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return content(code)\n }\n\n effects.consume(code)\n return contentContinue\n }\n\n function after(code) {\n effects.exit('codeFenced')\n return ok(code)\n }\n\n function tokenizeClosingFence(effects, ok, nok) {\n var size = 0\n return factorySpace(\n effects,\n closingSequenceStart,\n 'linePrefix',\n this.parser.constructs.disable.null.indexOf('codeIndented') > -1\n ? undefined\n : 4\n )\n\n function closingSequenceStart(code) {\n effects.enter('codeFencedFence')\n effects.enter('codeFencedFenceSequence')\n return closingSequence(code)\n }\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n size++\n return closingSequence\n }\n\n if (size < sizeOpen) return nok(code)\n effects.exit('codeFencedFenceSequence')\n return factorySpace(effects, closingSequenceEnd, 'whitespace')(code)\n }\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFencedFence')\n return ok(code)\n }\n\n return nok(code)\n }\n }\n}\n\nmodule.exports = codeFenced\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"textarea\":\"textarea__1UKFm\"};","'use strict'\n\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar chunkedPush = require('../util/chunked-push.js')\nvar normalizeIdentifier = require('../util/normalize-identifier.js')\nvar shallow = require('../util/shallow.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar markdownLineEndingOrSpace = require('../character/markdown-line-ending-or-space.js')\nvar factoryDestination = require('./factory-destination.js')\nvar factoryLabel = require('./factory-label.js')\nvar factoryWhitespace = require('./factory-whitespace.js')\nvar factoryTitle = require('./factory-title.js')\n\nvar labelEnd = {\n name: 'labelEnd',\n tokenize: tokenizeLabelEnd,\n resolveTo: resolveToLabelEnd,\n resolveAll: resolveAllLabelEnd\n}\nvar resourceConstruct = {\n tokenize: tokenizeResource\n}\nvar fullReferenceConstruct = {\n tokenize: tokenizeFullReference\n}\nvar collapsedReferenceConstruct = {\n tokenize: tokenizeCollapsedReference\n}\n\nfunction resolveAllLabelEnd(events) {\n var index = -1\n var token\n\n while (++index < events.length) {\n token = events[index][1]\n\n if (\n !token._used &&\n (token.type === 'labelImage' ||\n token.type === 'labelLink' ||\n token.type === 'labelEnd')\n ) {\n // Remove the marker.\n events.splice(index + 1, token.type === 'labelImage' ? 4 : 2)\n token.type = 'data'\n index++\n }\n }\n\n return events\n}\n\nfunction resolveToLabelEnd(events, context) {\n var index = events.length\n var offset = 0\n var group\n var label\n var text\n var token\n var open\n var close\n var media // Find an opening.\n\n while (index--) {\n token = events[index][1]\n\n if (open) {\n // If we see another link, or inactive link label, we’ve been here before.\n if (\n token.type === 'link' ||\n (token.type === 'labelLink' && token._inactive)\n ) {\n break\n } // Mark other link openings as inactive, as we can’t have links in\n // links.\n\n if (events[index][0] === 'enter' && token.type === 'labelLink') {\n token._inactive = true\n }\n } else if (close) {\n if (\n events[index][0] === 'enter' &&\n (token.type === 'labelImage' || token.type === 'labelLink') &&\n !token._balanced\n ) {\n open = index\n\n if (token.type !== 'labelLink') {\n offset = 2\n break\n }\n }\n } else if (token.type === 'labelEnd') {\n close = index\n }\n }\n\n group = {\n type: events[open][1].type === 'labelLink' ? 'link' : 'image',\n start: shallow(events[open][1].start),\n end: shallow(events[events.length - 1][1].end)\n }\n label = {\n type: 'label',\n start: shallow(events[open][1].start),\n end: shallow(events[close][1].end)\n }\n text = {\n type: 'labelText',\n start: shallow(events[open + offset + 2][1].end),\n end: shallow(events[close - 2][1].start)\n }\n media = [\n ['enter', group, context],\n ['enter', label, context]\n ] // Opening marker.\n\n media = chunkedPush(media, events.slice(open + 1, open + offset + 3)) // Text open.\n\n media = chunkedPush(media, [['enter', text, context]]) // Between.\n\n media = chunkedPush(\n media,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + offset + 4, close - 3),\n context\n )\n ) // Text close, marker close, label close.\n\n media = chunkedPush(media, [\n ['exit', text, context],\n events[close - 2],\n events[close - 1],\n ['exit', label, context]\n ]) // Reference, resource, or so.\n\n media = chunkedPush(media, events.slice(close + 1)) // Media close.\n\n media = chunkedPush(media, [['exit', group, context]])\n chunkedSplice(events, open, events.length, media)\n return events\n}\n\nfunction tokenizeLabelEnd(effects, ok, nok) {\n var self = this\n var index = self.events.length\n var labelStart\n var defined // Find an opening.\n\n while (index--) {\n if (\n (self.events[index][1].type === 'labelImage' ||\n self.events[index][1].type === 'labelLink') &&\n !self.events[index][1]._balanced\n ) {\n labelStart = self.events[index][1]\n break\n }\n }\n\n return start\n\n function start(code) {\n if (!labelStart) {\n return nok(code)\n } // It’s a balanced bracket, but contains a link.\n\n if (labelStart._inactive) return balanced(code)\n defined =\n self.parser.defined.indexOf(\n normalizeIdentifier(\n self.sliceSerialize({\n start: labelStart.end,\n end: self.now()\n })\n )\n ) > -1\n effects.enter('labelEnd')\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelEnd')\n return afterLabelEnd\n }\n\n function afterLabelEnd(code) {\n // Resource: `[asd](fgh)`.\n if (code === 40) {\n return effects.attempt(\n resourceConstruct,\n ok,\n defined ? ok : balanced\n )(code)\n } // Collapsed (`[asd][]`) or full (`[asd][fgh]`) reference?\n\n if (code === 91) {\n return effects.attempt(\n fullReferenceConstruct,\n ok,\n defined\n ? effects.attempt(collapsedReferenceConstruct, ok, balanced)\n : balanced\n )(code)\n } // Shortcut reference: `[asd]`?\n\n return defined ? ok(code) : balanced(code)\n }\n\n function balanced(code) {\n labelStart._balanced = true\n return nok(code)\n }\n}\n\nfunction tokenizeResource(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('resource')\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n return factoryWhitespace(effects, open)\n }\n\n function open(code) {\n if (code === 41) {\n return end(code)\n }\n\n return factoryDestination(\n effects,\n destinationAfter,\n nok,\n 'resourceDestination',\n 'resourceDestinationLiteral',\n 'resourceDestinationLiteralMarker',\n 'resourceDestinationRaw',\n 'resourceDestinationString',\n 3\n )(code)\n }\n\n function destinationAfter(code) {\n return markdownLineEndingOrSpace(code)\n ? factoryWhitespace(effects, between)(code)\n : end(code)\n }\n\n function between(code) {\n if (code === 34 || code === 39 || code === 40) {\n return factoryTitle(\n effects,\n factoryWhitespace(effects, end),\n nok,\n 'resourceTitle',\n 'resourceTitleMarker',\n 'resourceTitleString'\n )(code)\n }\n\n return end(code)\n }\n\n function end(code) {\n if (code === 41) {\n effects.enter('resourceMarker')\n effects.consume(code)\n effects.exit('resourceMarker')\n effects.exit('resource')\n return ok\n }\n\n return nok(code)\n }\n}\n\nfunction tokenizeFullReference(effects, ok, nok) {\n var self = this\n return start\n\n function start(code) {\n return factoryLabel.call(\n self,\n effects,\n afterLabel,\n nok,\n 'reference',\n 'referenceMarker',\n 'referenceString'\n )(code)\n }\n\n function afterLabel(code) {\n return self.parser.defined.indexOf(\n normalizeIdentifier(\n self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1)\n )\n ) < 0\n ? nok(code)\n : ok(code)\n }\n}\n\nfunction tokenizeCollapsedReference(effects, ok, nok) {\n return start\n\n function start(code) {\n effects.enter('reference')\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n return open\n }\n\n function open(code) {\n if (code === 93) {\n effects.enter('referenceMarker')\n effects.consume(code)\n effects.exit('referenceMarker')\n effects.exit('reference')\n return ok\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = labelEnd\n","'use strict'\n\nvar stringify = require('unist-util-stringify-position')\n\nmodule.exports = VMessage\n\n// Inherit from `Error#`.\nfunction VMessagePrototype() {}\nVMessagePrototype.prototype = Error.prototype\nVMessage.prototype = new VMessagePrototype()\n\n// Message properties.\nvar proto = VMessage.prototype\n\nproto.file = ''\nproto.name = ''\nproto.reason = ''\nproto.message = ''\nproto.stack = ''\nproto.fatal = null\nproto.column = null\nproto.line = null\n\n// Construct a new VMessage.\n//\n// Note: We cannot invoke `Error` on the created context, as that adds readonly\n// `line` and `column` attributes on Safari 9, thus throwing and failing the\n// data.\nfunction VMessage(reason, position, origin) {\n var parts\n var range\n var location\n\n if (typeof position === 'string') {\n origin = position\n position = null\n }\n\n parts = parseOrigin(origin)\n range = stringify(position) || '1:1'\n\n location = {\n start: {line: null, column: null},\n end: {line: null, column: null}\n }\n\n // Node.\n if (position && position.position) {\n position = position.position\n }\n\n if (position) {\n // Position.\n if (position.start) {\n location = position\n position = position.start\n } else {\n // Point.\n location.start = position\n }\n }\n\n if (reason.stack) {\n this.stack = reason.stack\n reason = reason.message\n }\n\n this.message = reason\n this.name = range\n this.reason = reason\n this.line = position ? position.line : null\n this.column = position ? position.column : null\n this.location = location\n this.source = parts[0]\n this.ruleId = parts[1]\n}\n\nfunction parseOrigin(origin) {\n var result = [null, null]\n var index\n\n if (typeof origin === 'string') {\n index = origin.indexOf(':')\n\n if (index === -1) {\n result[1] = origin\n } else {\n result[0] = origin.slice(0, index)\n result[1] = origin.slice(index + 1)\n }\n }\n\n return result\n}\n","var visitWithParents = require('unist-util-visit-parents');\n\nfunction addListMetadata() {\n return function (ast) {\n visitWithParents(ast, 'list', function (listNode, parents) {\n var depth = 0, i, n;\n for (i = 0, n = parents.length; i < n; i++) {\n if (parents[i].type === 'list') depth += 1;\n }\n for (i = 0, n = listNode.children.length; i < n; i++) {\n var child = listNode.children[i];\n child.index = i;\n child.ordered = listNode.ordered;\n }\n listNode.depth = depth;\n });\n return ast;\n };\n}\n\nmodule.exports = addListMetadata;\n","'use strict'\n\nvar assign = require('../constant/assign.js')\nvar chunkedSplice = require('./chunked-splice.js')\nvar chunkedPush = require('./chunked-push.js')\nvar miniflat = require('./miniflat.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar shallow = require('./shallow.js')\nvar resolveAll = require('./resolve-all.js')\nvar serializeChunks = require('./serialize-chunks.js')\nvar sliceChunks = require('./slice-chunks.js')\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`.\nfunction createTokenizer(parser, initialize, from) {\n var point = from\n ? shallow(from)\n : {\n line: 1,\n column: 1,\n offset: 0\n }\n var columnStart = {}\n var resolveAllConstructs = []\n var chunks = []\n var stack = []\n\n var effects = {\n consume: consume,\n enter: enter,\n exit: exit,\n attempt: constructFactory(onsuccessfulconstruct),\n check: constructFactory(onsuccessfulcheck),\n interrupt: constructFactory(onsuccessfulcheck, {\n interrupt: true\n }),\n lazy: constructFactory(onsuccessfulcheck, {\n lazy: true\n })\n } // State and tools for resolving and serializing.\n\n var context = {\n previous: null,\n events: [],\n parser: parser,\n sliceStream: sliceStream,\n sliceSerialize: sliceSerialize,\n now: now,\n defineSkip: skip,\n write: write\n } // The state function.\n\n var state = initialize.tokenize.call(context, effects) // Track which character we expect to be consumed, to catch bugs.\n\n if (initialize.resolveAll) {\n resolveAllConstructs.push(initialize)\n } // Store where we are in the input stream.\n\n point._index = 0\n point._bufferIndex = -1\n return context\n\n function write(slice) {\n chunks = chunkedPush(chunks, slice)\n main() // Exit if we’re not done, resolve might change stuff.\n\n if (chunks[chunks.length - 1] !== null) {\n return []\n }\n\n addResult(initialize, 0) // Otherwise, resolve, and exit.\n\n context.events = resolveAll(resolveAllConstructs, context.events, context)\n return context.events\n } //\n // Tools.\n //\n\n function sliceSerialize(token) {\n return serializeChunks(sliceStream(token))\n }\n\n function sliceStream(token) {\n return sliceChunks(chunks, token)\n }\n\n function now() {\n return shallow(point)\n }\n\n function skip(value) {\n columnStart[value.line] = value.column\n accountForPotentialSkip()\n } //\n // State management.\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 function main() {\n var chunkIndex\n var chunk\n\n while (point._index < chunks.length) {\n chunk = chunks[point._index] // If we’re in a buffer chunk, loop through it.\n\n if (typeof chunk === 'string') {\n chunkIndex = point._index\n\n if (point._bufferIndex < 0) {\n point._bufferIndex = 0\n }\n\n while (\n point._index === chunkIndex &&\n point._bufferIndex < chunk.length\n ) {\n go(chunk.charCodeAt(point._bufferIndex))\n }\n } else {\n go(chunk)\n }\n }\n } // Deal with one code.\n\n function go(code) {\n state = state(code)\n } // Move a character forward.\n\n function consume(code) {\n if (markdownLineEnding(code)) {\n point.line++\n point.column = 1\n point.offset += code === -3 ? 2 : 1\n accountForPotentialSkip()\n } else if (code !== -1) {\n point.column++\n point.offset++\n } // Not in a string chunk.\n\n if (point._bufferIndex < 0) {\n point._index++\n } else {\n point._bufferIndex++ // At end of string chunk.\n\n if (point._bufferIndex === chunks[point._index].length) {\n point._bufferIndex = -1\n point._index++\n }\n } // Expose the previous character.\n\n context.previous = code // Mark as consumed.\n } // Start a token.\n\n function enter(type, fields) {\n var 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 } // Stop a token.\n\n function exit(type) {\n var token = stack.pop()\n token.end = now()\n context.events.push(['exit', token, context])\n return token\n } // Use results.\n\n function onsuccessfulconstruct(construct, info) {\n addResult(construct, info.from)\n } // Discard results.\n\n function onsuccessfulcheck(construct, info) {\n info.restore()\n } // Factory to attempt/check/interrupt.\n\n function constructFactory(onreturn, fields) {\n return hook // Handle either an object mapping codes to constructs, a list of\n // constructs, or a single construct.\n\n function hook(constructs, returnState, bogusState) {\n var listOfConstructs\n var constructIndex\n var currentConstruct\n var info\n return constructs.tokenize || 'length' in constructs\n ? handleListOfConstructs(miniflat(constructs))\n : handleMapOfConstructs\n\n function handleMapOfConstructs(code) {\n if (code in constructs || null in constructs) {\n return handleListOfConstructs(\n constructs.null\n ? /* c8 ignore next */\n miniflat(constructs[code]).concat(miniflat(constructs.null))\n : constructs[code]\n )(code)\n }\n\n return bogusState(code)\n }\n\n function handleListOfConstructs(list) {\n listOfConstructs = list\n constructIndex = 0\n return handleConstruct(list[constructIndex])\n }\n\n function handleConstruct(construct) {\n return start\n\n function start(code) {\n // To do: not nede to store if there is no bogus state, probably?\n // Currently doesn’t work because `inspect` in document does a check\n // w/o a bogus, which doesn’t make sense. But it does seem to help perf\n // by not storing.\n info = store()\n currentConstruct = construct\n\n if (!construct.partial) {\n context.currentConstruct = construct\n }\n\n if (\n construct.name &&\n context.parser.constructs.disable.null.indexOf(construct.name) > -1\n ) {\n return nok()\n }\n\n return construct.tokenize.call(\n fields ? assign({}, context, fields) : context,\n effects,\n ok,\n nok\n )(code)\n }\n }\n\n function ok(code) {\n onreturn(currentConstruct, info)\n return returnState\n }\n\n function nok(code) {\n info.restore()\n\n if (++constructIndex < listOfConstructs.length) {\n return handleConstruct(listOfConstructs[constructIndex])\n }\n\n return bogusState\n }\n }\n }\n\n function addResult(construct, from) {\n if (construct.resolveAll && resolveAllConstructs.indexOf(construct) < 0) {\n resolveAllConstructs.push(construct)\n }\n\n if (construct.resolve) {\n chunkedSplice(\n context.events,\n from,\n context.events.length - from,\n construct.resolve(context.events.slice(from), context)\n )\n }\n\n if (construct.resolveTo) {\n context.events = construct.resolveTo(context.events, context)\n }\n }\n\n function store() {\n var startPoint = now()\n var startPrevious = context.previous\n var startCurrentConstruct = context.currentConstruct\n var startEventsIndex = context.events.length\n var startStack = Array.from(stack)\n return {\n restore: restore,\n from: startEventsIndex\n }\n\n function restore() {\n point = startPoint\n context.previous = startPrevious\n context.currentConstruct = startCurrentConstruct\n context.events.length = startEventsIndex\n stack = startStack\n accountForPotentialSkip()\n }\n }\n\n 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\nmodule.exports = createTokenizer\n","'use strict'\n\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar chunkedPush = require('../util/chunked-push.js')\nvar shallow = require('../util/shallow.js')\nvar resolveAll = require('../util/resolve-all.js')\nvar classifyCharacter = require('../util/classify-character.js')\nvar movePoint = require('../util/move-point.js')\n\nvar attention = {\n name: 'attention',\n tokenize: tokenizeAttention,\n resolveAll: resolveAllAttention\n}\n\nfunction resolveAllAttention(events, context) {\n var index = -1\n var open\n var group\n var text\n var openingSequence\n var closingSequence\n var use\n var nextEvents\n var offset // Walk through all events.\n //\n // Note: performance of this is fine on an mb of normal markdown, but it’s\n // a bottleneck for malicious stuff.\n\n while (++index < events.length) {\n // Find a token that can close.\n if (\n events[index][0] === 'enter' &&\n events[index][1].type === 'attentionSequence' &&\n events[index][1]._close\n ) {\n open = index // Now walk back to find an opener.\n\n while (open--) {\n // Find a token that can open the closer.\n if (\n events[open][0] === 'exit' &&\n events[open][1].type === 'attentionSequence' &&\n events[open][1]._open && // If the markers are the same:\n context.sliceSerialize(events[open][1]).charCodeAt(0) ===\n context.sliceSerialize(events[index][1]).charCodeAt(0)\n ) {\n // If the opening can close or the closing can open,\n // and the close size *is not* a multiple of three,\n // but the sum of the opening and closing size *is* multiple of three,\n // then don’t match.\n if (\n (events[open][1]._close || events[index][1]._open) &&\n (events[index][1].end.offset - events[index][1].start.offset) % 3 &&\n !(\n (events[open][1].end.offset -\n events[open][1].start.offset +\n events[index][1].end.offset -\n events[index][1].start.offset) %\n 3\n )\n ) {\n continue\n } // Number of markers to use from the sequence.\n\n use =\n events[open][1].end.offset - events[open][1].start.offset > 1 &&\n events[index][1].end.offset - events[index][1].start.offset > 1\n ? 2\n : 1\n openingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: movePoint(shallow(events[open][1].end), -use),\n end: shallow(events[open][1].end)\n }\n closingSequence = {\n type: use > 1 ? 'strongSequence' : 'emphasisSequence',\n start: shallow(events[index][1].start),\n end: movePoint(shallow(events[index][1].start), use)\n }\n text = {\n type: use > 1 ? 'strongText' : 'emphasisText',\n start: shallow(events[open][1].end),\n end: shallow(events[index][1].start)\n }\n group = {\n type: use > 1 ? 'strong' : 'emphasis',\n start: shallow(openingSequence.start),\n end: shallow(closingSequence.end)\n }\n events[open][1].end = shallow(openingSequence.start)\n events[index][1].start = shallow(closingSequence.end)\n nextEvents = [] // If there are more markers in the opening, add them before.\n\n if (events[open][1].end.offset - events[open][1].start.offset) {\n nextEvents = chunkedPush(nextEvents, [\n ['enter', events[open][1], context],\n ['exit', events[open][1], context]\n ])\n } // Opening.\n\n nextEvents = chunkedPush(nextEvents, [\n ['enter', group, context],\n ['enter', openingSequence, context],\n ['exit', openingSequence, context],\n ['enter', text, context]\n ]) // Between.\n\n nextEvents = chunkedPush(\n nextEvents,\n resolveAll(\n context.parser.constructs.insideSpan.null,\n events.slice(open + 1, index),\n context\n )\n ) // Closing.\n\n nextEvents = chunkedPush(nextEvents, [\n ['exit', text, context],\n ['enter', closingSequence, context],\n ['exit', closingSequence, context],\n ['exit', group, context]\n ]) // If there are more markers in the closing, add them after.\n\n if (events[index][1].end.offset - events[index][1].start.offset) {\n offset = 2\n nextEvents = chunkedPush(nextEvents, [\n ['enter', events[index][1], context],\n ['exit', events[index][1], context]\n ])\n } else {\n offset = 0\n }\n\n chunkedSplice(events, open - 1, index - open + 3, nextEvents)\n index = open + nextEvents.length - offset - 2\n break\n }\n }\n }\n } // Remove remaining sequences.\n\n index = -1\n\n while (++index < events.length) {\n if (events[index][1].type === 'attentionSequence') {\n events[index][1].type = 'data'\n }\n }\n\n return events\n}\n\nfunction tokenizeAttention(effects, ok) {\n var before = classifyCharacter(this.previous)\n var marker\n return start\n\n function start(code) {\n effects.enter('attentionSequence')\n marker = code\n return sequence(code)\n }\n\n function sequence(code) {\n var token\n var after\n var open\n var close\n\n if (code === marker) {\n effects.consume(code)\n return sequence\n }\n\n token = effects.exit('attentionSequence')\n after = classifyCharacter(code)\n open = !after || (after === 2 && before)\n close = !before || (before === 2 && after)\n token._open = marker === 42 ? open : open && (before || !close)\n token._close = marker === 42 ? close : close && (after || !open)\n return ok(code)\n }\n}\n\nmodule.exports = attention\n","'use strict'\n\nvar bail = require('bail')\nvar buffer = require('is-buffer')\nvar extend = require('extend')\nvar plain = require('is-plain-obj')\nvar trough = require('trough')\nvar vfile = require('vfile')\n\n// Expose a frozen processor.\nmodule.exports = unified().freeze()\n\nvar slice = [].slice\nvar own = {}.hasOwnProperty\n\n// Process pipeline.\nvar pipeline = trough()\n .use(pipelineParse)\n .use(pipelineRun)\n .use(pipelineStringify)\n\nfunction pipelineParse(p, ctx) {\n ctx.tree = p.parse(ctx.file)\n}\n\nfunction pipelineRun(p, ctx, next) {\n p.run(ctx.tree, ctx.file, done)\n\n function done(err, tree, file) {\n if (err) {\n next(err)\n } else {\n ctx.tree = tree\n ctx.file = file\n next()\n }\n }\n}\n\nfunction pipelineStringify(p, ctx) {\n var result = p.stringify(ctx.tree, ctx.file)\n var file = ctx.file\n\n if (result === undefined || result === null) {\n // Empty.\n } else if (typeof result === 'string' || buffer(result)) {\n file.contents = result\n } else {\n file.result = result\n }\n}\n\n// Function to create the first processor.\nfunction unified() {\n var attachers = []\n var transformers = trough()\n var namespace = {}\n var frozen = false\n var freezeIndex = -1\n\n // Data management.\n processor.data = data\n\n // Lock.\n processor.freeze = freeze\n\n // Plugins.\n processor.attachers = attachers\n processor.use = use\n\n // API.\n processor.parse = parse\n processor.stringify = stringify\n processor.run = run\n processor.runSync = runSync\n processor.process = process\n processor.processSync = processSync\n\n // Expose.\n return processor\n\n // Create a new processor based on the processor in the current scope.\n function processor() {\n var destination = unified()\n var length = attachers.length\n var index = -1\n\n while (++index < length) {\n destination.use.apply(null, attachers[index])\n }\n\n destination.data(extend(true, {}, namespace))\n\n return destination\n }\n\n // Freeze: used to signal a processor that has finished configuration.\n //\n // For example, take unified itself: it’s frozen.\n // Plugins should not be added to it.\n // Rather, it should be extended, by invoking it, before modifying it.\n //\n // In essence, always invoke this when exporting a processor.\n function freeze() {\n var values\n var plugin\n var options\n var transformer\n\n if (frozen) {\n return processor\n }\n\n while (++freezeIndex < attachers.length) {\n values = attachers[freezeIndex]\n plugin = values[0]\n options = values[1]\n transformer = null\n\n if (options === false) {\n continue\n }\n\n if (options === true) {\n values[1] = undefined\n }\n\n transformer = plugin.apply(processor, values.slice(1))\n\n if (typeof transformer === 'function') {\n transformers.use(transformer)\n }\n }\n\n frozen = true\n freezeIndex = Infinity\n\n return processor\n }\n\n // Data management.\n // Getter / setter for processor-specific informtion.\n function data(key, value) {\n if (typeof key === 'string') {\n // Set `key`.\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen)\n\n namespace[key] = value\n\n return processor\n }\n\n // Get `key`.\n return (own.call(namespace, key) && namespace[key]) || null\n }\n\n // Set space.\n if (key) {\n assertUnfrozen('data', frozen)\n namespace = key\n return processor\n }\n\n // Get space.\n return namespace\n }\n\n // Plugin management.\n //\n // Pass it:\n // * an attacher and options,\n // * a preset,\n // * a list of presets, attachers, and arguments (list of attachers and\n // options).\n function use(value) {\n var settings\n\n assertUnfrozen('use', frozen)\n\n if (value === null || value === undefined) {\n // Empty.\n } else if (typeof value === 'function') {\n addPlugin.apply(null, arguments)\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addList(value)\n } else {\n addPreset(value)\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`')\n }\n\n if (settings) {\n namespace.settings = extend(namespace.settings || {}, settings)\n }\n\n return processor\n\n function addPreset(result) {\n addList(result.plugins)\n\n if (result.settings) {\n settings = extend(settings || {}, result.settings)\n }\n }\n\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value)\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addPlugin.apply(null, value)\n } else {\n addPreset(value)\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`')\n }\n }\n\n function addList(plugins) {\n var length\n var index\n\n if (plugins === null || plugins === undefined) {\n // Empty.\n } else if (typeof plugins === 'object' && 'length' in plugins) {\n length = plugins.length\n index = -1\n\n while (++index < length) {\n add(plugins[index])\n }\n } else {\n throw new Error('Expected a list of plugins, not `' + plugins + '`')\n }\n }\n\n function addPlugin(plugin, value) {\n var entry = find(plugin)\n\n if (entry) {\n if (plain(entry[1]) && plain(value)) {\n value = extend(entry[1], value)\n }\n\n entry[1] = value\n } else {\n attachers.push(slice.call(arguments))\n }\n }\n }\n\n function find(plugin) {\n var length = attachers.length\n var index = -1\n var entry\n\n while (++index < length) {\n entry = attachers[index]\n\n if (entry[0] === plugin) {\n return entry\n }\n }\n }\n\n // Parse a file (in string or vfile representation) into a unist node using\n // the `Parser` on the processor.\n function parse(doc) {\n var file = vfile(doc)\n var Parser\n\n freeze()\n Parser = processor.Parser\n assertParser('parse', Parser)\n\n if (newable(Parser, 'parse')) {\n return new Parser(String(file), file).parse()\n }\n\n return Parser(String(file), file) // eslint-disable-line new-cap\n }\n\n // Run transforms on a unist node representation of a file (in string or\n // vfile representation), async.\n function run(node, file, cb) {\n assertNode(node)\n freeze()\n\n if (!cb && typeof file === 'function') {\n cb = file\n file = null\n }\n\n if (!cb) {\n return new Promise(executor)\n }\n\n executor(null, cb)\n\n function executor(resolve, reject) {\n transformers.run(node, vfile(file), done)\n\n function done(err, tree, file) {\n tree = tree || node\n if (err) {\n reject(err)\n } else if (resolve) {\n resolve(tree)\n } else {\n cb(null, tree, file)\n }\n }\n }\n }\n\n // Run transforms on a unist node representation of a file (in string or\n // vfile representation), sync.\n function runSync(node, file) {\n var complete = false\n var result\n\n run(node, file, done)\n\n assertDone('runSync', 'run', complete)\n\n return result\n\n function done(err, tree) {\n complete = true\n bail(err)\n result = tree\n }\n }\n\n // Stringify a unist node representation of a file (in string or vfile\n // representation) into a string using the `Compiler` on the processor.\n function stringify(node, doc) {\n var file = vfile(doc)\n var Compiler\n\n freeze()\n Compiler = processor.Compiler\n assertCompiler('stringify', Compiler)\n assertNode(node)\n\n if (newable(Compiler, 'compile')) {\n return new Compiler(node, file).compile()\n }\n\n return Compiler(node, file) // eslint-disable-line new-cap\n }\n\n // Parse a file (in string or vfile representation) into a unist node using\n // the `Parser` on the processor, then run transforms on that node, and\n // compile the resulting node using the `Compiler` on the processor, and\n // store that result on the vfile.\n function process(doc, cb) {\n freeze()\n assertParser('process', processor.Parser)\n assertCompiler('process', processor.Compiler)\n\n if (!cb) {\n return new Promise(executor)\n }\n\n executor(null, cb)\n\n function executor(resolve, reject) {\n var file = vfile(doc)\n\n pipeline.run(processor, {file: file}, done)\n\n function done(err) {\n if (err) {\n reject(err)\n } else if (resolve) {\n resolve(file)\n } else {\n cb(null, file)\n }\n }\n }\n }\n\n // Process the given document (in string or vfile representation), sync.\n function processSync(doc) {\n var complete = false\n var file\n\n freeze()\n assertParser('processSync', processor.Parser)\n assertCompiler('processSync', processor.Compiler)\n file = vfile(doc)\n\n process(file, done)\n\n assertDone('processSync', 'process', complete)\n\n return file\n\n function done(err) {\n complete = true\n bail(err)\n }\n }\n}\n\n// Check if `value` is a constructor.\nfunction newable(value, name) {\n return (\n typeof value === 'function' &&\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 (keys(value.prototype) || name in value.prototype)\n )\n}\n\n// Check if `value` is an object with keys.\nfunction keys(value) {\n var key\n for (key in value) {\n return true\n }\n\n return false\n}\n\n// Assert a parser is available.\nfunction assertParser(name, Parser) {\n if (typeof Parser !== 'function') {\n throw new Error('Cannot `' + name + '` without `Parser`')\n }\n}\n\n// Assert a compiler is available.\nfunction assertCompiler(name, Compiler) {\n if (typeof Compiler !== 'function') {\n throw new Error('Cannot `' + name + '` without `Compiler`')\n }\n}\n\n// Assert the processor is not frozen.\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(\n 'Cannot invoke `' +\n name +\n '` on a frozen processor.\\nCreate a new processor first, by invoking it: use `processor()` instead of `processor`.'\n )\n }\n}\n\n// Assert `node` is a unist node.\nfunction assertNode(node) {\n if (!node || typeof node.type !== 'string') {\n throw new Error('Expected node, got `' + node + '`')\n }\n}\n\n// Assert that `complete` is `true`.\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error(\n '`' + name + '` finished async. Use `' + asyncName + '` instead'\n )\n }\n}\n","'use strict'\n\nvar chunkedSplice = require('./chunked-splice.js')\n\nfunction chunkedPush(list, items) {\n if (list.length) {\n chunkedSplice(list, list.length, 0, items)\n return list\n }\n\n return items\n}\n\nmodule.exports = chunkedPush\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","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = own\n","'use strict'\n\nvar chunkedSplice = require('../util/chunked-splice.js')\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\nvar prefixSize = require('../util/prefix-size.js')\n\nvar codeIndented = {\n name: 'codeIndented',\n tokenize: tokenizeCodeIndented,\n resolve: resolveCodeIndented\n}\nvar indentedContentConstruct = {\n tokenize: tokenizeIndentedContent,\n partial: true\n}\n\nfunction resolveCodeIndented(events, context) {\n var code = {\n type: 'codeIndented',\n start: events[0][1].start,\n end: events[events.length - 1][1].end\n }\n chunkedSplice(events, 0, 0, [['enter', code, context]])\n chunkedSplice(events, events.length, 0, [['exit', code, context]])\n return events\n}\n\nfunction tokenizeCodeIndented(effects, ok, nok) {\n return effects.attempt(indentedContentConstruct, afterPrefix, nok)\n\n function afterPrefix(code) {\n if (code === null) {\n return ok(code)\n }\n\n if (markdownLineEnding(code)) {\n return effects.attempt(indentedContentConstruct, afterPrefix, ok)(code)\n }\n\n effects.enter('codeFlowValue')\n return content(code)\n }\n\n function content(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('codeFlowValue')\n return afterPrefix(code)\n }\n\n effects.consume(code)\n return content\n }\n}\n\nfunction tokenizeIndentedContent(effects, ok, nok) {\n var self = this\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n\n function afterPrefix(code) {\n if (markdownLineEnding(code)) {\n effects.enter('lineEnding')\n effects.consume(code)\n effects.exit('lineEnding')\n return factorySpace(effects, afterPrefix, 'linePrefix', 4 + 1)\n }\n\n return prefixSize(self.events, 'linePrefix') < 4 ? nok(code) : ok(code)\n }\n}\n\nmodule.exports = codeIndented\n","'use strict'\n\nmodule.exports = parse\n\nvar fromMarkdown = require('mdast-util-from-markdown')\n\nfunction parse(options) {\n var self = this\n\n this.Parser = parse\n\n function parse(doc) {\n return fromMarkdown(\n doc,\n Object.assign({}, self.data('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: self.data('micromarkExtensions') || [],\n mdastExtensions: self.data('fromMarkdownExtensions') || []\n })\n )\n }\n}\n","'use strict'\n\n// Note: EOF is seen as ASCII control here, because `null < 32 == true`.\nfunction asciiControl(code) {\n return (\n // Special whitespace codes (which have negative values), C0 and Control\n // character DEL\n code < 32 || code === 127\n )\n}\n\nmodule.exports = asciiControl\n","'use strict'\n\nvar own = {}.hasOwnProperty\n\nmodule.exports = stringify\n\nfunction stringify(value) {\n // Nothing.\n if (!value || typeof value !== 'object') {\n return ''\n }\n\n // Node.\n if (own.call(value, 'position') || own.call(value, 'type')) {\n return position(value.position)\n }\n\n // Position.\n if (own.call(value, 'start') || own.call(value, 'end')) {\n return position(value)\n }\n\n // Point.\n if (own.call(value, 'line') || own.call(value, 'column')) {\n return point(value)\n }\n\n // ?\n return ''\n}\n\nfunction point(point) {\n if (!point || typeof point !== 'object') {\n point = {}\n }\n\n return index(point.line) + ':' + index(point.column)\n}\n\nfunction position(pos) {\n if (!pos || typeof pos !== 'object') {\n pos = {}\n }\n\n return point(pos.start) + '-' + point(pos.end)\n}\n\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1\n}\n","'use strict'\n\nvar markdownLineEnding = require('../character/markdown-line-ending.js')\nvar factorySpace = require('./factory-space.js')\nvar shallow = require('../util/shallow.js')\n\nvar setextUnderline = {\n name: 'setextUnderline',\n tokenize: tokenizeSetextUnderline,\n resolveTo: resolveToSetextUnderline\n}\n\nfunction resolveToSetextUnderline(events, context) {\n var index = events.length\n var content\n var text\n var definition\n var heading // Find the opening of the content.\n // It’ll always exist: we don’t tokenize if it isn’t there.\n\n while (index--) {\n if (events[index][0] === 'enter') {\n if (events[index][1].type === 'content') {\n content = index\n break\n }\n\n if (events[index][1].type === 'paragraph') {\n text = index\n }\n } // Exit\n else {\n if (events[index][1].type === 'content') {\n // Remove the content end (if needed we’ll add it later)\n events.splice(index, 1)\n }\n\n if (!definition && events[index][1].type === 'definition') {\n definition = index\n }\n }\n }\n\n heading = {\n type: 'setextHeading',\n start: shallow(events[text][1].start),\n end: shallow(events[events.length - 1][1].end)\n } // Change the paragraph to setext heading text.\n\n events[text][1].type = 'setextHeadingText' // If we have definitions in the content, we’ll keep on having content,\n // but we need move it.\n\n if (definition) {\n events.splice(text, 0, ['enter', heading, context])\n events.splice(definition + 1, 0, ['exit', events[content][1], context])\n events[content][1].end = shallow(events[definition][1].end)\n } else {\n events[content][1] = heading\n } // Add the heading exit at the end.\n\n events.push(['exit', heading, context])\n return events\n}\n\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n var self = this\n var index = self.events.length\n var marker\n var paragraph // Find an opening.\n\n while (index--) {\n // Skip enter/exit of line ending, line prefix, and content.\n // We can now either have a definition or a paragraph.\n if (\n self.events[index][1].type !== 'lineEnding' &&\n self.events[index][1].type !== 'linePrefix' &&\n self.events[index][1].type !== 'content'\n ) {\n paragraph = self.events[index][1].type === 'paragraph'\n break\n }\n }\n\n return start\n\n function start(code) {\n if (!self.lazy && (self.interrupt || paragraph)) {\n effects.enter('setextHeadingLine')\n effects.enter('setextHeadingLineSequence')\n marker = code\n return closingSequence(code)\n }\n\n return nok(code)\n }\n\n function closingSequence(code) {\n if (code === marker) {\n effects.consume(code)\n return closingSequence\n }\n\n effects.exit('setextHeadingLineSequence')\n return factorySpace(effects, closingSequenceEnd, 'lineSuffix')(code)\n }\n\n function closingSequenceEnd(code) {\n if (code === null || markdownLineEnding(code)) {\n effects.exit('setextHeadingLine')\n return ok(code)\n }\n\n return nok(code)\n }\n}\n\nmodule.exports = setextUnderline\n","'use strict'\n\nvar labelEnd = require('./label-end.js')\n\nvar labelStartImage = {\n name: 'labelStartImage',\n tokenize: tokenizeLabelStartImage,\n resolveAll: labelEnd.resolveAll\n}\n\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n var self = this\n return start\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 function open(code) {\n if (code === 91) {\n effects.enter('labelMarker')\n effects.consume(code)\n effects.exit('labelMarker')\n effects.exit('labelImage')\n return after\n }\n\n return nok(code)\n }\n\n function after(code) {\n /* c8 ignore next */\n return code === 94 &&\n /* c8 ignore next */\n '_hiddenFootnoteSupport' in self.parser.constructs\n ? /* c8 ignore next */\n nok(code)\n : ok(code)\n }\n}\n\nmodule.exports = labelStartImage\n","'use strict'\n\nvar subtokenize = require('./util/subtokenize.js')\n\nfunction postprocess(events) {\n while (!subtokenize(events)) {\n // Empty\n }\n\n return events\n}\n\nmodule.exports = postprocess\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/docs/sw-esm.js b/docs/sw-esm.js
index 515a0ed..43b6721 100644
--- a/docs/sw-esm.js
+++ b/docs/sw-esm.js
@@ -1,2 +1,2 @@
-!function(e){function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var r={};t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(t){return e[t]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="/huge-link/",t(t.s="p5Qz")}({"2Gk3":function(){"use strict";try{self["workbox:cacheable-response:5.1.4"]&&_()}catch(e){}},Gpc1:function(){"use strict";try{self["workbox:precaching:5.1.4"]&&_()}catch(e){}},I3Xu:function(){"use strict";try{self["workbox:routing:5.1.4"]&&_()}catch(e){}},myed:function(){"use strict";try{self["workbox:strategies:5.1.4"]&&_()}catch(e){}},p5Qz:function(e,t,r){"use strict";function n(e){var t="function"==typeof Map?new Map:void 0;return(n=function(e){function r(){return o(e,arguments,c(this).constructor)}if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),u(r,e)})(e)}function o(){return(o=i()?Reflect.construct:function(e,t,r){var n=[null];n.push.apply(n,t);var o=new(Function.bind.apply(e,n));return r&&u(o,r.prototype),o}).apply(null,arguments)}function i(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}function u(e,t){return(u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function c(e){return(c=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function s(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return a(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return a(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&(self.addEventListener("install",ae),self.addEventListener("activate",le))}(e),U(t)}function x(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return j(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return j(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1?r-1:0),o=1;o0&&(t+=" :: "+JSON.stringify(n)),t},E=function(e){function t(t,r){var n,o=M(t,r);return(n=e.call(this,o)||this).name=t,n.details=r,n}var r,n;return n=e,(r=t).prototype=Object.create(n.prototype),r.prototype.constructor=r,r.__proto__=n,t}(n(Error)),N=(r("I3Xu"),function(e){return e&&"object"==typeof e?e:{handle:e}}),k=function(e,t,r){void 0===r&&(r="GET"),this.handler=N(t),this.match=e,this.method=r},W=function(e){function t(t,r,n){return e.call(this,(function(e){var r=e.url,n=t.exec(r.href);if(n&&(r.origin===location.origin||0===n.index))return n.slice(1)}),r,n)||this}var r,n;return n=e,(r=t).prototype=Object.create(n.prototype),r.prototype.constructor=r,r.__proto__=n,t}(k),F=function(e){return new URL(String(e),location.href).href.replace(new RegExp("^"+location.origin),"")},H=function(){function e(){this._routes=new Map}var t,r,n,o=e.prototype;return o.addFetchListener=function(){var e=this;self.addEventListener("fetch",(function(t){var r=e.handleRequest({request:t.request,event:t});r&&t.respondWith(r)}))},o.addCacheListener=function(){var e=this;self.addEventListener("message",(function(t){if(t.data&&"CACHE_URLS"===t.data.type){0;var r=Promise.all(t.data.payload.urlsToCache.map((function(t){"string"==typeof t&&(t=[t]);var r=l(Request,t);return e.handleRequest({request:r})})));t.waitUntil(r),t.ports&&t.ports[0]&&r.then((function(){return t.ports[0].postMessage(!0)}))}}))},o.handleRequest=function(e){var t=this,r=e.request,n=e.event;var o=new URL(r.url,location.href);if(o.protocol.startsWith("http")){var i=this.findMatchingRoute({url:o,request:r,event:n}),u=i.params,c=i.route,s=c&&c.handler;if(!s&&this._defaultHandler&&(s=this._defaultHandler),s){var a;0;try{a=s.handle({url:o,request:r,event:n,params:u})}catch(e){a=Promise.reject(e)}return a instanceof Promise&&this._catchHandler&&(a=a.catch((function(){return t._catchHandler.handle({url:o,request:r,event:n})}))),a}}},o.findMatchingRoute=function(e){var t=e.url,r=e.request,n=e.event;for(var o,i=s(this._routes.get(r.method)||[]);!(o=i()).done;){var u=o.value,c=void 0,a=u.match({url:t,request:r,event:n});if(a)return c=a,(Array.isArray(a)&&0===a.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"==typeof a)&&(c=void 0),{route:u,params:c}}return{}},o.setDefaultHandler=function(e){this._defaultHandler=N(e)},o.setCatchHandler=function(e){this._catchHandler=N(e)},o.registerRoute=function(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)},o.unregisterRoute=function(e){if(!this._routes.has(e.method))throw new E("unregister-route-but-not-found-with-method",{method:e.method});var t=this._routes.get(e.method).indexOf(e);if(!(t>-1))throw new E("unregister-route-route-not-registered");this._routes.get(e.method).splice(t,1)},t=e,(r=[{key:"routes",get:function(){return this._routes}}])&&d(t.prototype,r),n&&d(t,n),e}(),D=function(){return L||((L=new H).addFetchListener(),L.addCacheListener()),L},B=(r("Gpc1"),[]),$=function(){return B},G={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},X=function(e){return[G.prefix,e,G.suffix].filter((function(e){return e&&e.length>0})).join("-")},Q=function(e){return e||X(G.googleAnalytics)},z=function(e){return e||X(G.precache)},J=function(){return G.prefix},V=function(e){return e||X(G.runtime)},Y=function(){return G.suffix},Z=new Set,ee=function(e,t){return e.filter((function(e){return t in e}))},te=function(e){return new Promise((function(t,r){function n(){return(h=l()).done?[1]:(f=h.value,Promise.resolve(f.cacheKeyWillBeUsed.call(f,{mode:u,request:a})).then((function(e){try{return"string"==typeof(a=e)&&(a=new Request(a)),n}catch(e){return r(e)}}),r))}function o(){return t(a)}var i,u,c,s,a,l,h,f,d;return i=e.request,u=e.mode,s=ee(void 0===(c=e.plugins)?[]:c,"cacheKeyWillBeUsed"),a=i,l=v(s),(d=function(e){for(;e;){if(e.then)return void e.then(d,r);try{if(e.pop){if(e.length)return e.pop()?o.call(this):e;e=n}else e=e.call(this)}catch(e){return r(e)}}}.bind(this))(n)}))},re=function(e){return new Promise((function(t,r){var n,o,i,u,c,s,a,l,h,f,d,p;return n=e.cacheName,o=e.request,i=e.event,u=e.matchOptions,s=void 0===(c=e.plugins)?[]:c,Promise.resolve(self.caches.open(n)).then(function(e){try{return a=e,Promise.resolve(te({plugins:s,request:o,mode:"read"})).then(function(e){try{return l=e,Promise.resolve(a.match(l,u)).then(function(e){try{{var o;function c(){if((d=f()).done)return[1];{if("cachedResponseWillBeUsed"in(p=d.value))return Promise.resolve(p.cachedResponseWillBeUsed.call(p,{cacheName:n,event:i,matchOptions:u,cachedResponse:h,request:l})).then(function(t){try{return h=t,e.call(this)}catch(e){return r(e)}}.bind(this),r);function e(){return c}return e.call(this)}}return h=e,f=v(s),(o=function(e){for(;e;){if(e.then)return void e.then(o,r);try{if(e.pop){if(e.length)return e.pop()?a.call(this):e;e=c}else e=e.call(this)}catch(e){return r(e)}}}.bind(this))(c);function a(){return t(h)}}}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}))},ne=function(e){return new Promise((function(t,r){var n,o,i,u,c,s,a,l,h,f,d,y,m,g;return n=e.cacheName,o=e.response,i=e.event,c=void 0===(u=e.plugins)?[]:u,s=e.matchOptions,Promise.resolve(te({plugins:c,request:e.request,mode:"write"})).then(function(e){try{return a=e,o?Promise.resolve((u={event:i,plugins:c,response:o,request:a},new Promise((function(e,t){function r(){if((h=l()).done)return[1];{if("cacheWillUpdate"in(f=h.value))return a=!0,Promise.resolve(f.cacheWillUpdate.call(f,{request:o,response:s,event:i})).then(function(r){try{return(s=r)?e.call(this):[1]}catch(e){return t(e)}}.bind(this),t);function e(){return r}return e.call(this)}}function n(){return a||(s=s&&200===s.status?s:void 0),e(s||null)}var o,i,c,s,a,l,h,f,d;return o=u.request,i=u.event,s=u.response,a=!1,l=v(void 0===(c=u.plugins)?[]:c),(d=function(e){for(;e;){if(e.then)return void e.then(d,t);try{if(e.pop){if(e.length)return e.pop()?n.call(this):e;e=r}else e=e.call(this)}catch(e){return t(e)}}}.bind(this))(r)})))).then(function(e){try{return(l=e)?Promise.resolve(self.caches.open(n)).then(function(e){try{return h=e,f=ee(c,"cacheDidUpdate"),Promise.resolve(new Promise((function(e,t){return f.length>0?Promise.resolve(re({cacheName:n,matchOptions:s,request:a})).then(e,t):e(null)}))).then(function(e){try{d=e;var o=function(e){try{if("QuotaExceededError"===e.name)return Promise.resolve(new Promise((function(e,t){function r(){return(i=o()).done?[1]:Promise.resolve((0,i.value)()).then((function(){try{return r}catch(e){return t(e)}}),t)}function n(){return e()}var o,i,u;return o=p(Z),(u=function(e){for(;e;){if(e.then)return void e.then(u,t);try{if(e.pop){if(e.length)return e.pop()?n.call(this):e;e=r}else e=e.call(this)}catch(e){return t(e)}}}.bind(this))(r)}))).then(function(){try{return t.call(this)}catch(e){return r(e)}}.bind(this),r);function t(){throw e}return t.call(this)}catch(e){return r(e)}}.bind(this);try{return Promise.resolve(h.put(a,l)).then((function(){try{return function(){try{var e;function o(){return(m=y()).done?[1]:(g=m.value,Promise.resolve(g.cacheDidUpdate.call(g,{cacheName:n,event:i,oldResponse:d,newResponse:l,request:a})).then((function(){try{return o}catch(e){return r(e)}}),r))}return y=v(f),(e=function(t){for(;t;){if(t.then)return void t.then(e,r);try{if(t.pop){if(t.length)return t.pop()?u.call(this):t;t=o}else t=t.call(this)}catch(e){return r(e)}}}.bind(this))(o);function u(){return t()}}catch(e){return r(e)}}()}catch(e){return o(e)}}),o)}catch(e){o(e)}}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r):t()}catch(e){return r(e)}}.bind(this),r):r(new E("cache-put-with-no-response",{url:F(a.url)}))}catch(e){return r(e)}var u}.bind(this),r)}))},oe=re,ie=function(e){return new Promise((function(t,r){function n(){l=ee(s,"fetchDidFail"),h=l.length>0?o.clone():null;var e=function(e){try{throw new E("plugin-error-request-will-fetch",{thrownError:e})}catch(e){return r(e)}};try{var n;function c(){if((d=f()).done)return[1];{if("requestWillFetch"in(p=d.value))return y=p.requestWillFetch,v=o.clone(),Promise.resolve(y.call(p,{request:v,event:u})).then(function(r){try{return o=r,t.call(this)}catch(t){return e(t)}}.bind(this),e);function t(){return c}return t.call(this)}}return f=g(s),(n=function(t){for(;t;){if(t.then)return void t.then(n,e);try{if(t.pop){if(t.length)return t.pop()?a.call(this):t;t=c}else t=t.call(this)}catch(t){return e(t)}}}.bind(this))(c);function a(){return function(){try{m=o.clone();var e=function(e){try{{var t;function n(){return(S=R()).done?[1]:(A=S.value,Promise.resolve(A.fetchDidFail.call(A,{error:e,event:u,originalRequest:h.clone(),request:m.clone()})).then((function(){try{return n}catch(e){return r(e)}}),r))}return R=g(l),(t=function(e){for(;e;){if(e.then)return void e.then(t,r);try{if(e.pop){if(e.length)return e.pop()?o.call(this):e;e=n}else e=e.call(this)}catch(e){return r(e)}}}.bind(this))(n);function o(){throw e}}}catch(e){return r(e)}}.bind(this);try{return"navigate"===o.mode?Promise.resolve(fetch(o)).then(function(t){try{return b=t,n.call(this)}catch(t){return e(t)}}.bind(this),e):Promise.resolve(fetch(o,i)).then(function(t){try{return b=t,n.call(this)}catch(t){return e(t)}}.bind(this),e);function n(){function r(){if((_=w()).done)return[1];{if("fetchDidSucceed"in(P=_.value))return Promise.resolve(P.fetchDidSucceed.call(P,{event:u,request:m,response:b})).then(function(r){try{return b=r,t.call(this)}catch(t){return e(t)}}.bind(this),e);function t(){return r}return t.call(this)}}function n(){return t(b)}var o;return w=g(s),(o=function(t){for(;t;){if(t.then)return void t.then(o,e);try{if(t.pop){if(t.length)return t.pop()?n.call(this):t;t=r}else t=t.call(this)}catch(t){return e(t)}}}.bind(this))(r)}}catch(t){e(t)}}catch(e){return r(e)}}()}}catch(t){e(t)}}var o,i,u,c,s,a,l,h,f,d,p,y,v,m,b,w,_,P,R,S,A;return i=e.fetchOptions,u=e.event,s=void 0===(c=e.plugins)?[]:c,"string"==typeof(o=e.request)&&(o=new Request(o)),u instanceof FetchEvent&&u.preloadResponse?Promise.resolve(u.preloadResponse).then(function(e){try{return(a=e)?t(a):n.call(this)}catch(e){return r(e)}}.bind(this),r):n.call(this)}))},ue=function(){function e(e){this._cacheName=z(e),this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map}var t=e.prototype;return t.addToCacheList=function(e){for(var t,r=[],n=P(e);!(t=n()).done;){var o=t.value;"string"==typeof o?r.push(o):o&&void 0===o.revision&&r.push(o.url);var i=_(o),u=i.cacheKey,c=i.url,s="string"!=typeof o&&o.revision?"reload":"default";if(this._urlsToCacheKeys.has(c)&&this._urlsToCacheKeys.get(c)!==u)throw new E("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(c),secondEntry:u});if("string"!=typeof o&&o.integrity){if(this._cacheKeysToIntegrities.has(u)&&this._cacheKeysToIntegrities.get(u)!==o.integrity)throw new E("add-to-cache-list-conflicting-integrities",{url:c});this._cacheKeysToIntegrities.set(u,o.integrity)}if(this._urlsToCacheKeys.set(c,u),this._urlsToCacheModes.set(c,s),r.length>0){var a="Workbox is precaching URLs without revision info: "+r.join(", ")+"\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache";console.warn(a)}}},t.install=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a,l,h,f,d,p,y,v;return n=this,i=(o=void 0===e?{}:e).event,u=o.plugins,c=[],s=[],Promise.resolve(self.caches.open(this._cacheName)).then(function(e){try{return Promise.resolve(e.keys()).then(function(e){try{for(a=new Set(e.map((function(e){return e.url}))),l=P(this._urlsToCacheKeys);!(h=l()).done;)d=(f=h.value)[0],a.has(p=f[1])?s.push(d):c.push({cacheKey:p,url:d});return y=c.map((function(e){var t=e.cacheKey,r=e.url,o=n._cacheKeysToIntegrities.get(t),c=n._urlsToCacheModes.get(r);return n._addURLToCache({cacheKey:t,cacheMode:c,event:i,integrity:o,plugins:u,url:r})})),Promise.resolve(Promise.all(y)).then((function(){try{return v=c.map((function(e){return e.url})),t({updatedURLs:v,notUpdatedURLs:s})}catch(e){return r(e)}}),r)}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}.bind(this))},t.activate=function(){return new Promise(function(e,t){var r,n,o,i,u,c,s;return Promise.resolve(self.caches.open(this._cacheName)).then(function(a){try{return r=a,Promise.resolve(r.keys()).then(function(a){try{{var l;function h(){if((c=u()).done)return[1];{if(!o.has((s=c.value).url))return Promise.resolve(r.delete(s)).then(function(){try{return i.push(s.url),e.call(this)}catch(e){return t(e)}}.bind(this),t);function e(){return h}return e.call(this)}}return n=a,o=new Set(this._urlsToCacheKeys.values()),i=[],u=P(n),(l=function(e){for(;e;){if(e.then)return void e.then(l,t);try{if(e.pop){if(e.length)return e.pop()?f.call(this):e;e=h}else e=e.call(this)}catch(e){return t(e)}}}.bind(this))(h);function f(){return e({deletedURLs:i})}}}catch(e){return t(e)}}.bind(this),t)}catch(e){return t(e)}}.bind(this),t)}.bind(this))},t._addURLToCache=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a,l,h,f;return n=e.cacheKey,o=e.url,i=e.event,u=e.plugins,c=new Request(o,{integrity:e.integrity,cache:e.cacheMode,credentials:"same-origin"}),Promise.resolve(ie({event:i,plugins:u,request:c})).then(function(e){try{for(s=e,l=P(u||[]);!(h=l()).done;)"cacheWillUpdate"in(f=h.value)&&(a=f);return Promise.resolve(new Promise((function(e,t){return a?Promise.resolve(a.cacheWillUpdate({event:i,request:c,response:s})).then(e,t):e(s.status<400)}))).then(function(e){try{if(!e)return r(new E("bad-precaching-response",{url:o,status:s.status}));if(s.redirected)return Promise.resolve(w(s)).then(function(e){try{return s=e,a.call(this)}catch(e){return r(e)}}.bind(this),r);function a(){return Promise.resolve(ne({event:i,plugins:u,response:s,request:n===o?c:new Request(n),cacheName:this._cacheName,matchOptions:{ignoreSearch:!0}})).then((function(){try{return t()}catch(e){return r(e)}}),r)}return a.call(this)}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}.bind(this))},t.getURLsToCacheKeys=function(){return this._urlsToCacheKeys},t.getCachedURLs=function(){return[].concat(this._urlsToCacheKeys.keys())},t.getCacheKeyForURL=function(e){var t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)},t.matchPrecache=function(e){return new Promise(function(t,r){var n,o;return n=e instanceof Request?e.url:e,(o=this.getCacheKeyForURL(n))?Promise.resolve(self.caches.open(this._cacheName)).then((function(e){try{return t(e.match(o))}catch(e){return r(e)}}),r):t(void 0)}.bind(this))},t.createHandler=function(e){var t=this;return void 0===e&&(e=!0),function(r){return new Promise((function(n,o){var i,u;i=r.request;var c=function(t){try{if(e)return n(fetch(i));throw t}catch(e){return o(e)}};try{return Promise.resolve(t.matchPrecache(i)).then((function(e){try{if(u=e)return n(u);throw new E("missing-precache-entry",{cacheName:t._cacheName,url:i instanceof Request?i.url:i})}catch(e){return c(e)}}),c)}catch(e){c(e)}}))}},t.createHandlerBoundToURL=function(e,t){if(void 0===t&&(t=!0),!this.getCacheKeyForURL(e))throw new E("non-precached-url",{url:e});var r=this.createHandler(t),n=new Request(e);return function(){return r({request:n})}},e}(),ce=function(){return K||(K=new ue),K},se=!1,ae=function(e){var t=ce(),r=$();e.waitUntil(t.install({event:e,plugins:r}).catch((function(e){throw e})))},le=function(e){var t=ce();e.waitUntil(t.activate())},he=function(e){return"navigate"===e.request.mode},fe=(r("myed"),{cacheWillUpdate:function(e){return new Promise((function(t){var r=e.response;return t(200===r.status||0===r.status?r:null)}))}}),de=function(){function e(e){if(void 0===e&&(e={}),this._cacheName=V(e.cacheName),e.plugins){var t=e.plugins.some((function(e){return!!e.cacheWillUpdate}));this._plugins=t?e.plugins:[fe].concat(e.plugins)}else this._plugins=[fe];this._networkTimeoutSeconds=e.networkTimeoutSeconds||0,this._fetchOptions=e.fetchOptions,this._matchOptions=e.matchOptions}var t=e.prototype;return t.handle=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a,l;return n=e.event,i=[],"string"==typeof(o=e.request)&&(o=new Request(o)),u=[],this._networkTimeoutSeconds&&(c=(s=this._getTimeoutPromise({request:o,event:n,logs:i})).id,u.push(s.promise)),a=this._getNetworkPromise({timeoutId:c,request:o,event:n,logs:i}),u.push(a),Promise.resolve(Promise.race(u)).then(function(e){try{if(!(l=e))return Promise.resolve(a).then(function(e){try{return l=e,n.call(this)}catch(e){return r(e)}}.bind(this),r);function n(){return l?t(l):r(new E("no-response",{url:o.url}))}return n.call(this)}catch(e){return r(e)}}.bind(this),r)}.bind(this))},t._getTimeoutPromise=function(e){var t,r=this,n=e.request,o=e.event;return{promise:new Promise((function(e){t=setTimeout((function(){return new Promise((function(t,i){return Promise.resolve(r._respondFromCache({request:n,event:o})).then((function(r){try{return e(r),t()}catch(e){return i(e)}}),i)}))}),1e3*r._networkTimeoutSeconds)})),id:t}},t._getNetworkPromise=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a;n=e.timeoutId,o=e.request,i=e.event;var l=function(){try{if(n&&clearTimeout(n),u||!c)return Promise.resolve(this._respondFromCache({request:o,event:i})).then(function(t){try{return c=t,e.call(this)}catch(e){return r(e)}}.bind(this),r);if(s=c.clone(),a=ne({cacheName:this._cacheName,request:o,response:s,event:i,plugins:this._plugins}),i)try{i.waitUntil(a)}catch(e){0}return e.call(this);function e(){return t(c)}}catch(e){return r(e)}}.bind(this),h=function(e){try{return u=e,l()}catch(e){return r(e)}};try{return Promise.resolve(ie({request:o,event:i,fetchOptions:this._fetchOptions,plugins:this._plugins})).then((function(e){try{return c=e,l()}catch(e){return h(e)}}),h)}catch(e){h(e)}}.bind(this))},t._respondFromCache=function(e){return oe({cacheName:this._cacheName,request:e.request,event:e.event,matchOptions:this._matchOptions,plugins:this._plugins})},e}(),pe=function(){function e(e,t,r){var n=this,o=void 0===r?{}:r,i=o.onupgradeneeded,u=o.onversionchange;this._db=null,this._name=e,this._version=t,this._onupgradeneeded=i,this._onversionchange=u||function(){return n.close()}}var t,r,n,o=e.prototype;return o.open=function(){return new Promise(function(e,t){var r;return r=this,this._db?e():Promise.resolve(new Promise((function(e,t){var n=!1;setTimeout((function(){n=!0,t(new Error("The open request was blocked and timed out"))}),r.OPEN_TIMEOUT);var o=indexedDB.open(r._name,r._version);o.onerror=function(){return t(o.error)},o.onupgradeneeded=function(e){n?(o.transaction.abort(),o.result.close()):"function"==typeof r._onupgradeneeded&&r._onupgradeneeded(e)},o.onsuccess=function(){var t=o.result;n?t.close():(t.onversionchange=r._onversionchange.bind(r),e(t))}}))).then(function(r){try{return this._db=r,e(this)}catch(e){return t(e)}}.bind(this),t)}.bind(this))},o.getKey=function(e,t){return new Promise(function(r,n){return Promise.resolve(this.getAllKeys(e,t,1)).then((function(e){try{return r(e[0])}catch(e){return n(e)}}),n)}.bind(this))},o.getAll=function(e,t,r){return new Promise(function(n,o){return Promise.resolve(this.getAllMatching(e,{query:t,count:r})).then(n,o)}.bind(this))},o.getAllKeys=function(e,t,r){return new Promise(function(n,o){return Promise.resolve(this.getAllMatching(e,{query:t,count:r,includeKeys:!0})).then((function(e){try{return n(e.map((function(e){return e.key})))}catch(e){return o(e)}}),o)}.bind(this))},o.getAllMatching=function(e,t){return new Promise(function(r,n){var o,i,u,c,s,a,l,h,f;return i=(o=void 0===t?{}:t).index,c=void 0===(u=o.query)?null:u,a=void 0===(s=o.direction)?"next":s,l=o.count,f=void 0!==(h=o.includeKeys)&&h,Promise.resolve(this.transaction([e],"readonly",(function(t,r){var n=t.objectStore(e),o=i?n.index(i):n,u=[],s=o.openCursor(c,a);s.onsuccess=function(){var e=s.result;e?(u.push(f?e:e.value),l&&u.length>=l?r(u):e.continue()):r(u)}}))).then(r,n)}.bind(this))},o.transaction=function(e,t,r){return new Promise(function(n,o){var i;return i=this,Promise.resolve(this.open()).then((function(){try{return Promise.resolve(new Promise((function(n,o){var u=i._db.transaction(e,t);u.onabort=function(){return o(u.error)},u.oncomplete=function(){return n()},r(u,(function(e){return n(e)}))}))).then(n,o)}catch(e){return o(e)}}),o)}.bind(this))},o._call=function(e,t,r){var n=arguments;return new Promise(function(o,i){var u,c,s;for(u=n.length,c=new Array(u>3?u-3:0),s=3;s1?u-1:0),s=1;s=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&(self.addEventListener("install",ae),self.addEventListener("activate",le))}(e),U(t)}function x(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return j(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return j(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1?r-1:0),o=1;o0&&(t+=" :: "+JSON.stringify(n)),t},E=function(e){function t(t,r){var n,o=M(t,r);return(n=e.call(this,o)||this).name=t,n.details=r,n}var r,n;return n=e,(r=t).prototype=Object.create(n.prototype),r.prototype.constructor=r,r.__proto__=n,t}(n(Error)),N=(r("I3Xu"),function(e){return e&&"object"==typeof e?e:{handle:e}}),k=function(e,t,r){void 0===r&&(r="GET"),this.handler=N(t),this.match=e,this.method=r},W=function(e){function t(t,r,n){return e.call(this,(function(e){var r=e.url,n=t.exec(r.href);if(n&&(r.origin===location.origin||0===n.index))return n.slice(1)}),r,n)||this}var r,n;return n=e,(r=t).prototype=Object.create(n.prototype),r.prototype.constructor=r,r.__proto__=n,t}(k),F=function(e){return new URL(String(e),location.href).href.replace(new RegExp("^"+location.origin),"")},H=function(){function e(){this._routes=new Map}var t,r,n,o=e.prototype;return o.addFetchListener=function(){var e=this;self.addEventListener("fetch",(function(t){var r=e.handleRequest({request:t.request,event:t});r&&t.respondWith(r)}))},o.addCacheListener=function(){var e=this;self.addEventListener("message",(function(t){if(t.data&&"CACHE_URLS"===t.data.type){0;var r=Promise.all(t.data.payload.urlsToCache.map((function(t){"string"==typeof t&&(t=[t]);var r=l(Request,t);return e.handleRequest({request:r})})));t.waitUntil(r),t.ports&&t.ports[0]&&r.then((function(){return t.ports[0].postMessage(!0)}))}}))},o.handleRequest=function(e){var t=this,r=e.request,n=e.event;var o=new URL(r.url,location.href);if(o.protocol.startsWith("http")){var i=this.findMatchingRoute({url:o,request:r,event:n}),u=i.params,c=i.route,s=c&&c.handler;if(!s&&this._defaultHandler&&(s=this._defaultHandler),s){var a;0;try{a=s.handle({url:o,request:r,event:n,params:u})}catch(e){a=Promise.reject(e)}return a instanceof Promise&&this._catchHandler&&(a=a.catch((function(){return t._catchHandler.handle({url:o,request:r,event:n})}))),a}}},o.findMatchingRoute=function(e){var t=e.url,r=e.request,n=e.event;for(var o,i=s(this._routes.get(r.method)||[]);!(o=i()).done;){var u=o.value,c=void 0,a=u.match({url:t,request:r,event:n});if(a)return c=a,(Array.isArray(a)&&0===a.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"==typeof a)&&(c=void 0),{route:u,params:c}}return{}},o.setDefaultHandler=function(e){this._defaultHandler=N(e)},o.setCatchHandler=function(e){this._catchHandler=N(e)},o.registerRoute=function(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)},o.unregisterRoute=function(e){if(!this._routes.has(e.method))throw new E("unregister-route-but-not-found-with-method",{method:e.method});var t=this._routes.get(e.method).indexOf(e);if(!(t>-1))throw new E("unregister-route-route-not-registered");this._routes.get(e.method).splice(t,1)},t=e,(r=[{key:"routes",get:function(){return this._routes}}])&&d(t.prototype,r),n&&d(t,n),e}(),D=function(){return L||((L=new H).addFetchListener(),L.addCacheListener()),L},B=(r("Gpc1"),[]),$=function(){return B},G={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},X=function(e){return[G.prefix,e,G.suffix].filter((function(e){return e&&e.length>0})).join("-")},Q=function(e){return e||X(G.googleAnalytics)},z=function(e){return e||X(G.precache)},J=function(){return G.prefix},V=function(e){return e||X(G.runtime)},Y=function(){return G.suffix},Z=new Set,ee=function(e,t){return e.filter((function(e){return t in e}))},te=function(e){return new Promise((function(t,r){function n(){return(h=l()).done?[1]:(f=h.value,Promise.resolve(f.cacheKeyWillBeUsed.call(f,{mode:u,request:a})).then((function(e){try{return"string"==typeof(a=e)&&(a=new Request(a)),n}catch(e){return r(e)}}),r))}function o(){return t(a)}var i,u,c,s,a,l,h,f,d;return i=e.request,u=e.mode,s=ee(void 0===(c=e.plugins)?[]:c,"cacheKeyWillBeUsed"),a=i,l=v(s),(d=function(e){for(;e;){if(e.then)return void e.then(d,r);try{if(e.pop){if(e.length)return e.pop()?o.call(this):e;e=n}else e=e.call(this)}catch(e){return r(e)}}}.bind(this))(n)}))},re=function(e){return new Promise((function(t,r){var n,o,i,u,c,s,a,l,h,f,d,p;return n=e.cacheName,o=e.request,i=e.event,u=e.matchOptions,s=void 0===(c=e.plugins)?[]:c,Promise.resolve(self.caches.open(n)).then(function(e){try{return a=e,Promise.resolve(te({plugins:s,request:o,mode:"read"})).then(function(e){try{return l=e,Promise.resolve(a.match(l,u)).then(function(e){try{{var o;function c(){if((d=f()).done)return[1];{if("cachedResponseWillBeUsed"in(p=d.value))return Promise.resolve(p.cachedResponseWillBeUsed.call(p,{cacheName:n,event:i,matchOptions:u,cachedResponse:h,request:l})).then(function(t){try{return h=t,e.call(this)}catch(e){return r(e)}}.bind(this),r);function e(){return c}return e.call(this)}}return h=e,f=v(s),(o=function(e){for(;e;){if(e.then)return void e.then(o,r);try{if(e.pop){if(e.length)return e.pop()?a.call(this):e;e=c}else e=e.call(this)}catch(e){return r(e)}}}.bind(this))(c);function a(){return t(h)}}}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}))},ne=function(e){return new Promise((function(t,r){var n,o,i,u,c,s,a,l,h,f,d,y,m,g;return n=e.cacheName,o=e.response,i=e.event,c=void 0===(u=e.plugins)?[]:u,s=e.matchOptions,Promise.resolve(te({plugins:c,request:e.request,mode:"write"})).then(function(e){try{return a=e,o?Promise.resolve((u={event:i,plugins:c,response:o,request:a},new Promise((function(e,t){function r(){if((h=l()).done)return[1];{if("cacheWillUpdate"in(f=h.value))return a=!0,Promise.resolve(f.cacheWillUpdate.call(f,{request:o,response:s,event:i})).then(function(r){try{return(s=r)?e.call(this):[1]}catch(e){return t(e)}}.bind(this),t);function e(){return r}return e.call(this)}}function n(){return a||(s=s&&200===s.status?s:void 0),e(s||null)}var o,i,c,s,a,l,h,f,d;return o=u.request,i=u.event,s=u.response,a=!1,l=v(void 0===(c=u.plugins)?[]:c),(d=function(e){for(;e;){if(e.then)return void e.then(d,t);try{if(e.pop){if(e.length)return e.pop()?n.call(this):e;e=r}else e=e.call(this)}catch(e){return t(e)}}}.bind(this))(r)})))).then(function(e){try{return(l=e)?Promise.resolve(self.caches.open(n)).then(function(e){try{return h=e,f=ee(c,"cacheDidUpdate"),Promise.resolve(new Promise((function(e,t){return f.length>0?Promise.resolve(re({cacheName:n,matchOptions:s,request:a})).then(e,t):e(null)}))).then(function(e){try{d=e;var o=function(e){try{if("QuotaExceededError"===e.name)return Promise.resolve(new Promise((function(e,t){function r(){return(i=o()).done?[1]:Promise.resolve((0,i.value)()).then((function(){try{return r}catch(e){return t(e)}}),t)}function n(){return e()}var o,i,u;return o=p(Z),(u=function(e){for(;e;){if(e.then)return void e.then(u,t);try{if(e.pop){if(e.length)return e.pop()?n.call(this):e;e=r}else e=e.call(this)}catch(e){return t(e)}}}.bind(this))(r)}))).then(function(){try{return t.call(this)}catch(e){return r(e)}}.bind(this),r);function t(){throw e}return t.call(this)}catch(e){return r(e)}}.bind(this);try{return Promise.resolve(h.put(a,l)).then((function(){try{return function(){try{var e;function o(){return(m=y()).done?[1]:(g=m.value,Promise.resolve(g.cacheDidUpdate.call(g,{cacheName:n,event:i,oldResponse:d,newResponse:l,request:a})).then((function(){try{return o}catch(e){return r(e)}}),r))}return y=v(f),(e=function(t){for(;t;){if(t.then)return void t.then(e,r);try{if(t.pop){if(t.length)return t.pop()?u.call(this):t;t=o}else t=t.call(this)}catch(e){return r(e)}}}.bind(this))(o);function u(){return t()}}catch(e){return r(e)}}()}catch(e){return o(e)}}),o)}catch(e){o(e)}}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r):t()}catch(e){return r(e)}}.bind(this),r):r(new E("cache-put-with-no-response",{url:F(a.url)}))}catch(e){return r(e)}var u}.bind(this),r)}))},oe=re,ie=function(e){return new Promise((function(t,r){function n(){l=ee(s,"fetchDidFail"),h=l.length>0?o.clone():null;var e=function(e){try{throw new E("plugin-error-request-will-fetch",{thrownError:e})}catch(e){return r(e)}};try{var n;function c(){if((d=f()).done)return[1];{if("requestWillFetch"in(p=d.value))return y=p.requestWillFetch,v=o.clone(),Promise.resolve(y.call(p,{request:v,event:u})).then(function(r){try{return o=r,t.call(this)}catch(t){return e(t)}}.bind(this),e);function t(){return c}return t.call(this)}}return f=g(s),(n=function(t){for(;t;){if(t.then)return void t.then(n,e);try{if(t.pop){if(t.length)return t.pop()?a.call(this):t;t=c}else t=t.call(this)}catch(t){return e(t)}}}.bind(this))(c);function a(){return function(){try{m=o.clone();var e=function(e){try{{var t;function n(){return(S=R()).done?[1]:(A=S.value,Promise.resolve(A.fetchDidFail.call(A,{error:e,event:u,originalRequest:h.clone(),request:m.clone()})).then((function(){try{return n}catch(e){return r(e)}}),r))}return R=g(l),(t=function(e){for(;e;){if(e.then)return void e.then(t,r);try{if(e.pop){if(e.length)return e.pop()?o.call(this):e;e=n}else e=e.call(this)}catch(e){return r(e)}}}.bind(this))(n);function o(){throw e}}}catch(e){return r(e)}}.bind(this);try{return"navigate"===o.mode?Promise.resolve(fetch(o)).then(function(t){try{return b=t,n.call(this)}catch(t){return e(t)}}.bind(this),e):Promise.resolve(fetch(o,i)).then(function(t){try{return b=t,n.call(this)}catch(t){return e(t)}}.bind(this),e);function n(){function r(){if((_=w()).done)return[1];{if("fetchDidSucceed"in(P=_.value))return Promise.resolve(P.fetchDidSucceed.call(P,{event:u,request:m,response:b})).then(function(r){try{return b=r,t.call(this)}catch(t){return e(t)}}.bind(this),e);function t(){return r}return t.call(this)}}function n(){return t(b)}var o;return w=g(s),(o=function(t){for(;t;){if(t.then)return void t.then(o,e);try{if(t.pop){if(t.length)return t.pop()?n.call(this):t;t=r}else t=t.call(this)}catch(t){return e(t)}}}.bind(this))(r)}}catch(t){e(t)}}catch(e){return r(e)}}()}}catch(t){e(t)}}var o,i,u,c,s,a,l,h,f,d,p,y,v,m,b,w,_,P,R,S,A;return i=e.fetchOptions,u=e.event,s=void 0===(c=e.plugins)?[]:c,"string"==typeof(o=e.request)&&(o=new Request(o)),u instanceof FetchEvent&&u.preloadResponse?Promise.resolve(u.preloadResponse).then(function(e){try{return(a=e)?t(a):n.call(this)}catch(e){return r(e)}}.bind(this),r):n.call(this)}))},ue=function(){function e(e){this._cacheName=z(e),this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map}var t=e.prototype;return t.addToCacheList=function(e){for(var t,r=[],n=P(e);!(t=n()).done;){var o=t.value;"string"==typeof o?r.push(o):o&&void 0===o.revision&&r.push(o.url);var i=_(o),u=i.cacheKey,c=i.url,s="string"!=typeof o&&o.revision?"reload":"default";if(this._urlsToCacheKeys.has(c)&&this._urlsToCacheKeys.get(c)!==u)throw new E("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(c),secondEntry:u});if("string"!=typeof o&&o.integrity){if(this._cacheKeysToIntegrities.has(u)&&this._cacheKeysToIntegrities.get(u)!==o.integrity)throw new E("add-to-cache-list-conflicting-integrities",{url:c});this._cacheKeysToIntegrities.set(u,o.integrity)}if(this._urlsToCacheKeys.set(c,u),this._urlsToCacheModes.set(c,s),r.length>0){var a="Workbox is precaching URLs without revision info: "+r.join(", ")+"\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache";console.warn(a)}}},t.install=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a,l,h,f,d,p,y,v;return n=this,i=(o=void 0===e?{}:e).event,u=o.plugins,c=[],s=[],Promise.resolve(self.caches.open(this._cacheName)).then(function(e){try{return Promise.resolve(e.keys()).then(function(e){try{for(a=new Set(e.map((function(e){return e.url}))),l=P(this._urlsToCacheKeys);!(h=l()).done;)d=(f=h.value)[0],a.has(p=f[1])?s.push(d):c.push({cacheKey:p,url:d});return y=c.map((function(e){var t=e.cacheKey,r=e.url,o=n._cacheKeysToIntegrities.get(t),c=n._urlsToCacheModes.get(r);return n._addURLToCache({cacheKey:t,cacheMode:c,event:i,integrity:o,plugins:u,url:r})})),Promise.resolve(Promise.all(y)).then((function(){try{return v=c.map((function(e){return e.url})),t({updatedURLs:v,notUpdatedURLs:s})}catch(e){return r(e)}}),r)}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}.bind(this))},t.activate=function(){return new Promise(function(e,t){var r,n,o,i,u,c,s;return Promise.resolve(self.caches.open(this._cacheName)).then(function(a){try{return r=a,Promise.resolve(r.keys()).then(function(a){try{{var l;function h(){if((c=u()).done)return[1];{if(!o.has((s=c.value).url))return Promise.resolve(r.delete(s)).then(function(){try{return i.push(s.url),e.call(this)}catch(e){return t(e)}}.bind(this),t);function e(){return h}return e.call(this)}}return n=a,o=new Set(this._urlsToCacheKeys.values()),i=[],u=P(n),(l=function(e){for(;e;){if(e.then)return void e.then(l,t);try{if(e.pop){if(e.length)return e.pop()?f.call(this):e;e=h}else e=e.call(this)}catch(e){return t(e)}}}.bind(this))(h);function f(){return e({deletedURLs:i})}}}catch(e){return t(e)}}.bind(this),t)}catch(e){return t(e)}}.bind(this),t)}.bind(this))},t._addURLToCache=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a,l,h,f;return n=e.cacheKey,o=e.url,i=e.event,u=e.plugins,c=new Request(o,{integrity:e.integrity,cache:e.cacheMode,credentials:"same-origin"}),Promise.resolve(ie({event:i,plugins:u,request:c})).then(function(e){try{for(s=e,l=P(u||[]);!(h=l()).done;)"cacheWillUpdate"in(f=h.value)&&(a=f);return Promise.resolve(new Promise((function(e,t){return a?Promise.resolve(a.cacheWillUpdate({event:i,request:c,response:s})).then(e,t):e(s.status<400)}))).then(function(e){try{if(!e)return r(new E("bad-precaching-response",{url:o,status:s.status}));if(s.redirected)return Promise.resolve(w(s)).then(function(e){try{return s=e,a.call(this)}catch(e){return r(e)}}.bind(this),r);function a(){return Promise.resolve(ne({event:i,plugins:u,response:s,request:n===o?c:new Request(n),cacheName:this._cacheName,matchOptions:{ignoreSearch:!0}})).then((function(){try{return t()}catch(e){return r(e)}}),r)}return a.call(this)}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}.bind(this))},t.getURLsToCacheKeys=function(){return this._urlsToCacheKeys},t.getCachedURLs=function(){return[].concat(this._urlsToCacheKeys.keys())},t.getCacheKeyForURL=function(e){var t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)},t.matchPrecache=function(e){return new Promise(function(t,r){var n,o;return n=e instanceof Request?e.url:e,(o=this.getCacheKeyForURL(n))?Promise.resolve(self.caches.open(this._cacheName)).then((function(e){try{return t(e.match(o))}catch(e){return r(e)}}),r):t(void 0)}.bind(this))},t.createHandler=function(e){var t=this;return void 0===e&&(e=!0),function(r){return new Promise((function(n,o){var i,u;i=r.request;var c=function(t){try{if(e)return n(fetch(i));throw t}catch(e){return o(e)}};try{return Promise.resolve(t.matchPrecache(i)).then((function(e){try{if(u=e)return n(u);throw new E("missing-precache-entry",{cacheName:t._cacheName,url:i instanceof Request?i.url:i})}catch(e){return c(e)}}),c)}catch(e){c(e)}}))}},t.createHandlerBoundToURL=function(e,t){if(void 0===t&&(t=!0),!this.getCacheKeyForURL(e))throw new E("non-precached-url",{url:e});var r=this.createHandler(t),n=new Request(e);return function(){return r({request:n})}},e}(),ce=function(){return K||(K=new ue),K},se=!1,ae=function(e){var t=ce(),r=$();e.waitUntil(t.install({event:e,plugins:r}).catch((function(e){throw e})))},le=function(e){var t=ce();e.waitUntil(t.activate())},he=function(e){return"navigate"===e.request.mode},fe=(r("myed"),{cacheWillUpdate:function(e){return new Promise((function(t){var r=e.response;return t(200===r.status||0===r.status?r:null)}))}}),de=function(){function e(e){if(void 0===e&&(e={}),this._cacheName=V(e.cacheName),e.plugins){var t=e.plugins.some((function(e){return!!e.cacheWillUpdate}));this._plugins=t?e.plugins:[fe].concat(e.plugins)}else this._plugins=[fe];this._networkTimeoutSeconds=e.networkTimeoutSeconds||0,this._fetchOptions=e.fetchOptions,this._matchOptions=e.matchOptions}var t=e.prototype;return t.handle=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a,l;return n=e.event,i=[],"string"==typeof(o=e.request)&&(o=new Request(o)),u=[],this._networkTimeoutSeconds&&(c=(s=this._getTimeoutPromise({request:o,event:n,logs:i})).id,u.push(s.promise)),a=this._getNetworkPromise({timeoutId:c,request:o,event:n,logs:i}),u.push(a),Promise.resolve(Promise.race(u)).then(function(e){try{if(!(l=e))return Promise.resolve(a).then(function(e){try{return l=e,n.call(this)}catch(e){return r(e)}}.bind(this),r);function n(){return l?t(l):r(new E("no-response",{url:o.url}))}return n.call(this)}catch(e){return r(e)}}.bind(this),r)}.bind(this))},t._getTimeoutPromise=function(e){var t,r=this,n=e.request,o=e.event;return{promise:new Promise((function(e){t=setTimeout((function(){return new Promise((function(t,i){return Promise.resolve(r._respondFromCache({request:n,event:o})).then((function(r){try{return e(r),t()}catch(e){return i(e)}}),i)}))}),1e3*r._networkTimeoutSeconds)})),id:t}},t._getNetworkPromise=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a;n=e.timeoutId,o=e.request,i=e.event;var l=function(){try{if(n&&clearTimeout(n),u||!c)return Promise.resolve(this._respondFromCache({request:o,event:i})).then(function(t){try{return c=t,e.call(this)}catch(e){return r(e)}}.bind(this),r);if(s=c.clone(),a=ne({cacheName:this._cacheName,request:o,response:s,event:i,plugins:this._plugins}),i)try{i.waitUntil(a)}catch(e){0}return e.call(this);function e(){return t(c)}}catch(e){return r(e)}}.bind(this),h=function(e){try{return u=e,l()}catch(e){return r(e)}};try{return Promise.resolve(ie({request:o,event:i,fetchOptions:this._fetchOptions,plugins:this._plugins})).then((function(e){try{return c=e,l()}catch(e){return h(e)}}),h)}catch(e){h(e)}}.bind(this))},t._respondFromCache=function(e){return oe({cacheName:this._cacheName,request:e.request,event:e.event,matchOptions:this._matchOptions,plugins:this._plugins})},e}(),pe=function(){function e(e,t,r){var n=this,o=void 0===r?{}:r,i=o.onupgradeneeded,u=o.onversionchange;this._db=null,this._name=e,this._version=t,this._onupgradeneeded=i,this._onversionchange=u||function(){return n.close()}}var t,r,n,o=e.prototype;return o.open=function(){return new Promise(function(e,t){var r;return r=this,this._db?e():Promise.resolve(new Promise((function(e,t){var n=!1;setTimeout((function(){n=!0,t(new Error("The open request was blocked and timed out"))}),r.OPEN_TIMEOUT);var o=indexedDB.open(r._name,r._version);o.onerror=function(){return t(o.error)},o.onupgradeneeded=function(e){n?(o.transaction.abort(),o.result.close()):"function"==typeof r._onupgradeneeded&&r._onupgradeneeded(e)},o.onsuccess=function(){var t=o.result;n?t.close():(t.onversionchange=r._onversionchange.bind(r),e(t))}}))).then(function(r){try{return this._db=r,e(this)}catch(e){return t(e)}}.bind(this),t)}.bind(this))},o.getKey=function(e,t){return new Promise(function(r,n){return Promise.resolve(this.getAllKeys(e,t,1)).then((function(e){try{return r(e[0])}catch(e){return n(e)}}),n)}.bind(this))},o.getAll=function(e,t,r){return new Promise(function(n,o){return Promise.resolve(this.getAllMatching(e,{query:t,count:r})).then(n,o)}.bind(this))},o.getAllKeys=function(e,t,r){return new Promise(function(n,o){return Promise.resolve(this.getAllMatching(e,{query:t,count:r,includeKeys:!0})).then((function(e){try{return n(e.map((function(e){return e.key})))}catch(e){return o(e)}}),o)}.bind(this))},o.getAllMatching=function(e,t){return new Promise(function(r,n){var o,i,u,c,s,a,l,h,f;return i=(o=void 0===t?{}:t).index,c=void 0===(u=o.query)?null:u,a=void 0===(s=o.direction)?"next":s,l=o.count,f=void 0!==(h=o.includeKeys)&&h,Promise.resolve(this.transaction([e],"readonly",(function(t,r){var n=t.objectStore(e),o=i?n.index(i):n,u=[],s=o.openCursor(c,a);s.onsuccess=function(){var e=s.result;e?(u.push(f?e:e.value),l&&u.length>=l?r(u):e.continue()):r(u)}}))).then(r,n)}.bind(this))},o.transaction=function(e,t,r){return new Promise(function(n,o){var i;return i=this,Promise.resolve(this.open()).then((function(){try{return Promise.resolve(new Promise((function(n,o){var u=i._db.transaction(e,t);u.onabort=function(){return o(u.error)},u.oncomplete=function(){return n()},r(u,(function(e){return n(e)}))}))).then(n,o)}catch(e){return o(e)}}),o)}.bind(this))},o._call=function(e,t,r){var n=arguments;return new Promise(function(o,i){var u,c,s;for(u=n.length,c=new Array(u>3?u-3:0),s=3;s1?u-1:0),s=1;s=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&(self.addEventListener("install",ae),self.addEventListener("activate",le))}(e),U(t)}function x(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return j(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return j(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1?r-1:0),o=1;o0&&(t+=" :: "+JSON.stringify(n)),t},E=function(e){function t(t,r){var n,o=M(t,r);return(n=e.call(this,o)||this).name=t,n.details=r,n}var r,n;return n=e,(r=t).prototype=Object.create(n.prototype),r.prototype.constructor=r,r.__proto__=n,t}(n(Error)),N=(r("I3Xu"),function(e){return e&&"object"==typeof e?e:{handle:e}}),k=function(e,t,r){void 0===r&&(r="GET"),this.handler=N(t),this.match=e,this.method=r},W=function(e){function t(t,r,n){return e.call(this,(function(e){var r=e.url,n=t.exec(r.href);if(n&&(r.origin===location.origin||0===n.index))return n.slice(1)}),r,n)||this}var r,n;return n=e,(r=t).prototype=Object.create(n.prototype),r.prototype.constructor=r,r.__proto__=n,t}(k),F=function(e){return new URL(String(e),location.href).href.replace(new RegExp("^"+location.origin),"")},H=function(){function e(){this._routes=new Map}var t,r,n,o=e.prototype;return o.addFetchListener=function(){var e=this;self.addEventListener("fetch",(function(t){var r=e.handleRequest({request:t.request,event:t});r&&t.respondWith(r)}))},o.addCacheListener=function(){var e=this;self.addEventListener("message",(function(t){if(t.data&&"CACHE_URLS"===t.data.type){0;var r=Promise.all(t.data.payload.urlsToCache.map((function(t){"string"==typeof t&&(t=[t]);var r=l(Request,t);return e.handleRequest({request:r})})));t.waitUntil(r),t.ports&&t.ports[0]&&r.then((function(){return t.ports[0].postMessage(!0)}))}}))},o.handleRequest=function(e){var t=this,r=e.request,n=e.event;var o=new URL(r.url,location.href);if(o.protocol.startsWith("http")){var i=this.findMatchingRoute({url:o,request:r,event:n}),u=i.params,c=i.route,s=c&&c.handler;if(!s&&this._defaultHandler&&(s=this._defaultHandler),s){var a;0;try{a=s.handle({url:o,request:r,event:n,params:u})}catch(e){a=Promise.reject(e)}return a instanceof Promise&&this._catchHandler&&(a=a.catch((function(){return t._catchHandler.handle({url:o,request:r,event:n})}))),a}}},o.findMatchingRoute=function(e){var t=e.url,r=e.request,n=e.event;for(var o,i=s(this._routes.get(r.method)||[]);!(o=i()).done;){var u=o.value,c=void 0,a=u.match({url:t,request:r,event:n});if(a)return c=a,(Array.isArray(a)&&0===a.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"==typeof a)&&(c=void 0),{route:u,params:c}}return{}},o.setDefaultHandler=function(e){this._defaultHandler=N(e)},o.setCatchHandler=function(e){this._catchHandler=N(e)},o.registerRoute=function(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)},o.unregisterRoute=function(e){if(!this._routes.has(e.method))throw new E("unregister-route-but-not-found-with-method",{method:e.method});var t=this._routes.get(e.method).indexOf(e);if(!(t>-1))throw new E("unregister-route-route-not-registered");this._routes.get(e.method).splice(t,1)},t=e,(r=[{key:"routes",get:function(){return this._routes}}])&&d(t.prototype,r),n&&d(t,n),e}(),D=function(){return L||((L=new H).addFetchListener(),L.addCacheListener()),L},B=(r("Gpc1"),[]),$=function(){return B},G={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},X=function(e){return[G.prefix,e,G.suffix].filter((function(e){return e&&e.length>0})).join("-")},Q=function(e){return e||X(G.googleAnalytics)},z=function(e){return e||X(G.precache)},J=function(){return G.prefix},V=function(e){return e||X(G.runtime)},Y=function(){return G.suffix},Z=new Set,ee=function(e,t){return e.filter((function(e){return t in e}))},te=function(e){return new Promise((function(t,r){function n(){return(h=l()).done?[1]:(f=h.value,Promise.resolve(f.cacheKeyWillBeUsed.call(f,{mode:u,request:a})).then((function(e){try{return"string"==typeof(a=e)&&(a=new Request(a)),n}catch(e){return r(e)}}),r))}function o(){return t(a)}var i,u,c,s,a,l,h,f,d;return i=e.request,u=e.mode,s=ee(void 0===(c=e.plugins)?[]:c,"cacheKeyWillBeUsed"),a=i,l=v(s),(d=function(e){for(;e;){if(e.then)return void e.then(d,r);try{if(e.pop){if(e.length)return e.pop()?o.call(this):e;e=n}else e=e.call(this)}catch(e){return r(e)}}}.bind(this))(n)}))},re=function(e){return new Promise((function(t,r){var n,o,i,u,c,s,a,l,h,f,d,p;return n=e.cacheName,o=e.request,i=e.event,u=e.matchOptions,s=void 0===(c=e.plugins)?[]:c,Promise.resolve(self.caches.open(n)).then(function(e){try{return a=e,Promise.resolve(te({plugins:s,request:o,mode:"read"})).then(function(e){try{return l=e,Promise.resolve(a.match(l,u)).then(function(e){try{{var o;function c(){if((d=f()).done)return[1];{if("cachedResponseWillBeUsed"in(p=d.value))return Promise.resolve(p.cachedResponseWillBeUsed.call(p,{cacheName:n,event:i,matchOptions:u,cachedResponse:h,request:l})).then(function(t){try{return h=t,e.call(this)}catch(e){return r(e)}}.bind(this),r);function e(){return c}return e.call(this)}}return h=e,f=v(s),(o=function(e){for(;e;){if(e.then)return void e.then(o,r);try{if(e.pop){if(e.length)return e.pop()?a.call(this):e;e=c}else e=e.call(this)}catch(e){return r(e)}}}.bind(this))(c);function a(){return t(h)}}}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}))},ne=function(e){return new Promise((function(t,r){var n,o,i,u,c,s,a,l,h,f,d,y,m,g;return n=e.cacheName,o=e.response,i=e.event,c=void 0===(u=e.plugins)?[]:u,s=e.matchOptions,Promise.resolve(te({plugins:c,request:e.request,mode:"write"})).then(function(e){try{return a=e,o?Promise.resolve((u={event:i,plugins:c,response:o,request:a},new Promise((function(e,t){function r(){if((h=l()).done)return[1];{if("cacheWillUpdate"in(f=h.value))return a=!0,Promise.resolve(f.cacheWillUpdate.call(f,{request:o,response:s,event:i})).then(function(r){try{return(s=r)?e.call(this):[1]}catch(e){return t(e)}}.bind(this),t);function e(){return r}return e.call(this)}}function n(){return a||(s=s&&200===s.status?s:void 0),e(s||null)}var o,i,c,s,a,l,h,f,d;return o=u.request,i=u.event,s=u.response,a=!1,l=v(void 0===(c=u.plugins)?[]:c),(d=function(e){for(;e;){if(e.then)return void e.then(d,t);try{if(e.pop){if(e.length)return e.pop()?n.call(this):e;e=r}else e=e.call(this)}catch(e){return t(e)}}}.bind(this))(r)})))).then(function(e){try{return(l=e)?Promise.resolve(self.caches.open(n)).then(function(e){try{return h=e,f=ee(c,"cacheDidUpdate"),Promise.resolve(new Promise((function(e,t){return f.length>0?Promise.resolve(re({cacheName:n,matchOptions:s,request:a})).then(e,t):e(null)}))).then(function(e){try{d=e;var o=function(e){try{if("QuotaExceededError"===e.name)return Promise.resolve(new Promise((function(e,t){function r(){return(i=o()).done?[1]:Promise.resolve((0,i.value)()).then((function(){try{return r}catch(e){return t(e)}}),t)}function n(){return e()}var o,i,u;return o=p(Z),(u=function(e){for(;e;){if(e.then)return void e.then(u,t);try{if(e.pop){if(e.length)return e.pop()?n.call(this):e;e=r}else e=e.call(this)}catch(e){return t(e)}}}.bind(this))(r)}))).then(function(){try{return t.call(this)}catch(e){return r(e)}}.bind(this),r);function t(){throw e}return t.call(this)}catch(e){return r(e)}}.bind(this);try{return Promise.resolve(h.put(a,l)).then((function(){try{return function(){try{var e;function o(){return(m=y()).done?[1]:(g=m.value,Promise.resolve(g.cacheDidUpdate.call(g,{cacheName:n,event:i,oldResponse:d,newResponse:l,request:a})).then((function(){try{return o}catch(e){return r(e)}}),r))}return y=v(f),(e=function(t){for(;t;){if(t.then)return void t.then(e,r);try{if(t.pop){if(t.length)return t.pop()?u.call(this):t;t=o}else t=t.call(this)}catch(e){return r(e)}}}.bind(this))(o);function u(){return t()}}catch(e){return r(e)}}()}catch(e){return o(e)}}),o)}catch(e){o(e)}}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r):t()}catch(e){return r(e)}}.bind(this),r):r(new E("cache-put-with-no-response",{url:F(a.url)}))}catch(e){return r(e)}var u}.bind(this),r)}))},oe=re,ie=function(e){return new Promise((function(t,r){function n(){l=ee(s,"fetchDidFail"),h=l.length>0?o.clone():null;var e=function(e){try{throw new E("plugin-error-request-will-fetch",{thrownError:e})}catch(e){return r(e)}};try{var n;function c(){if((d=f()).done)return[1];{if("requestWillFetch"in(p=d.value))return y=p.requestWillFetch,v=o.clone(),Promise.resolve(y.call(p,{request:v,event:u})).then(function(r){try{return o=r,t.call(this)}catch(t){return e(t)}}.bind(this),e);function t(){return c}return t.call(this)}}return f=g(s),(n=function(t){for(;t;){if(t.then)return void t.then(n,e);try{if(t.pop){if(t.length)return t.pop()?a.call(this):t;t=c}else t=t.call(this)}catch(t){return e(t)}}}.bind(this))(c);function a(){return function(){try{m=o.clone();var e=function(e){try{{var t;function n(){return(S=R()).done?[1]:(A=S.value,Promise.resolve(A.fetchDidFail.call(A,{error:e,event:u,originalRequest:h.clone(),request:m.clone()})).then((function(){try{return n}catch(e){return r(e)}}),r))}return R=g(l),(t=function(e){for(;e;){if(e.then)return void e.then(t,r);try{if(e.pop){if(e.length)return e.pop()?o.call(this):e;e=n}else e=e.call(this)}catch(e){return r(e)}}}.bind(this))(n);function o(){throw e}}}catch(e){return r(e)}}.bind(this);try{return"navigate"===o.mode?Promise.resolve(fetch(o)).then(function(t){try{return b=t,n.call(this)}catch(t){return e(t)}}.bind(this),e):Promise.resolve(fetch(o,i)).then(function(t){try{return b=t,n.call(this)}catch(t){return e(t)}}.bind(this),e);function n(){function r(){if((_=w()).done)return[1];{if("fetchDidSucceed"in(P=_.value))return Promise.resolve(P.fetchDidSucceed.call(P,{event:u,request:m,response:b})).then(function(r){try{return b=r,t.call(this)}catch(t){return e(t)}}.bind(this),e);function t(){return r}return t.call(this)}}function n(){return t(b)}var o;return w=g(s),(o=function(t){for(;t;){if(t.then)return void t.then(o,e);try{if(t.pop){if(t.length)return t.pop()?n.call(this):t;t=r}else t=t.call(this)}catch(t){return e(t)}}}.bind(this))(r)}}catch(t){e(t)}}catch(e){return r(e)}}()}}catch(t){e(t)}}var o,i,u,c,s,a,l,h,f,d,p,y,v,m,b,w,_,P,R,S,A;return i=e.fetchOptions,u=e.event,s=void 0===(c=e.plugins)?[]:c,"string"==typeof(o=e.request)&&(o=new Request(o)),u instanceof FetchEvent&&u.preloadResponse?Promise.resolve(u.preloadResponse).then(function(e){try{return(a=e)?t(a):n.call(this)}catch(e){return r(e)}}.bind(this),r):n.call(this)}))},ue=function(){function e(e){this._cacheName=z(e),this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map}var t=e.prototype;return t.addToCacheList=function(e){for(var t,r=[],n=P(e);!(t=n()).done;){var o=t.value;"string"==typeof o?r.push(o):o&&void 0===o.revision&&r.push(o.url);var i=_(o),u=i.cacheKey,c=i.url,s="string"!=typeof o&&o.revision?"reload":"default";if(this._urlsToCacheKeys.has(c)&&this._urlsToCacheKeys.get(c)!==u)throw new E("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(c),secondEntry:u});if("string"!=typeof o&&o.integrity){if(this._cacheKeysToIntegrities.has(u)&&this._cacheKeysToIntegrities.get(u)!==o.integrity)throw new E("add-to-cache-list-conflicting-integrities",{url:c});this._cacheKeysToIntegrities.set(u,o.integrity)}if(this._urlsToCacheKeys.set(c,u),this._urlsToCacheModes.set(c,s),r.length>0){var a="Workbox is precaching URLs without revision info: "+r.join(", ")+"\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache";console.warn(a)}}},t.install=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a,l,h,f,d,p,y,v;return n=this,i=(o=void 0===e?{}:e).event,u=o.plugins,c=[],s=[],Promise.resolve(self.caches.open(this._cacheName)).then(function(e){try{return Promise.resolve(e.keys()).then(function(e){try{for(a=new Set(e.map((function(e){return e.url}))),l=P(this._urlsToCacheKeys);!(h=l()).done;)d=(f=h.value)[0],a.has(p=f[1])?s.push(d):c.push({cacheKey:p,url:d});return y=c.map((function(e){var t=e.cacheKey,r=e.url,o=n._cacheKeysToIntegrities.get(t),c=n._urlsToCacheModes.get(r);return n._addURLToCache({cacheKey:t,cacheMode:c,event:i,integrity:o,plugins:u,url:r})})),Promise.resolve(Promise.all(y)).then((function(){try{return v=c.map((function(e){return e.url})),t({updatedURLs:v,notUpdatedURLs:s})}catch(e){return r(e)}}),r)}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}.bind(this))},t.activate=function(){return new Promise(function(e,t){var r,n,o,i,u,c,s;return Promise.resolve(self.caches.open(this._cacheName)).then(function(a){try{return r=a,Promise.resolve(r.keys()).then(function(a){try{{var l;function h(){if((c=u()).done)return[1];{if(!o.has((s=c.value).url))return Promise.resolve(r.delete(s)).then(function(){try{return i.push(s.url),e.call(this)}catch(e){return t(e)}}.bind(this),t);function e(){return h}return e.call(this)}}return n=a,o=new Set(this._urlsToCacheKeys.values()),i=[],u=P(n),(l=function(e){for(;e;){if(e.then)return void e.then(l,t);try{if(e.pop){if(e.length)return e.pop()?f.call(this):e;e=h}else e=e.call(this)}catch(e){return t(e)}}}.bind(this))(h);function f(){return e({deletedURLs:i})}}}catch(e){return t(e)}}.bind(this),t)}catch(e){return t(e)}}.bind(this),t)}.bind(this))},t._addURLToCache=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a,l,h,f;return n=e.cacheKey,o=e.url,i=e.event,u=e.plugins,c=new Request(o,{integrity:e.integrity,cache:e.cacheMode,credentials:"same-origin"}),Promise.resolve(ie({event:i,plugins:u,request:c})).then(function(e){try{for(s=e,l=P(u||[]);!(h=l()).done;)"cacheWillUpdate"in(f=h.value)&&(a=f);return Promise.resolve(new Promise((function(e,t){return a?Promise.resolve(a.cacheWillUpdate({event:i,request:c,response:s})).then(e,t):e(s.status<400)}))).then(function(e){try{if(!e)return r(new E("bad-precaching-response",{url:o,status:s.status}));if(s.redirected)return Promise.resolve(w(s)).then(function(e){try{return s=e,a.call(this)}catch(e){return r(e)}}.bind(this),r);function a(){return Promise.resolve(ne({event:i,plugins:u,response:s,request:n===o?c:new Request(n),cacheName:this._cacheName,matchOptions:{ignoreSearch:!0}})).then((function(){try{return t()}catch(e){return r(e)}}),r)}return a.call(this)}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}.bind(this))},t.getURLsToCacheKeys=function(){return this._urlsToCacheKeys},t.getCachedURLs=function(){return[].concat(this._urlsToCacheKeys.keys())},t.getCacheKeyForURL=function(e){var t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)},t.matchPrecache=function(e){return new Promise(function(t,r){var n,o;return n=e instanceof Request?e.url:e,(o=this.getCacheKeyForURL(n))?Promise.resolve(self.caches.open(this._cacheName)).then((function(e){try{return t(e.match(o))}catch(e){return r(e)}}),r):t(void 0)}.bind(this))},t.createHandler=function(e){var t=this;return void 0===e&&(e=!0),function(r){return new Promise((function(n,o){var i,u;i=r.request;var c=function(t){try{if(e)return n(fetch(i));throw t}catch(e){return o(e)}};try{return Promise.resolve(t.matchPrecache(i)).then((function(e){try{if(u=e)return n(u);throw new E("missing-precache-entry",{cacheName:t._cacheName,url:i instanceof Request?i.url:i})}catch(e){return c(e)}}),c)}catch(e){c(e)}}))}},t.createHandlerBoundToURL=function(e,t){if(void 0===t&&(t=!0),!this.getCacheKeyForURL(e))throw new E("non-precached-url",{url:e});var r=this.createHandler(t),n=new Request(e);return function(){return r({request:n})}},e}(),ce=function(){return K||(K=new ue),K},se=!1,ae=function(e){var t=ce(),r=$();e.waitUntil(t.install({event:e,plugins:r}).catch((function(e){throw e})))},le=function(e){var t=ce();e.waitUntil(t.activate())},he=function(e){return"navigate"===e.request.mode},fe=(r("myed"),{cacheWillUpdate:function(e){return new Promise((function(t){var r=e.response;return t(200===r.status||0===r.status?r:null)}))}}),de=function(){function e(e){if(void 0===e&&(e={}),this._cacheName=V(e.cacheName),e.plugins){var t=e.plugins.some((function(e){return!!e.cacheWillUpdate}));this._plugins=t?e.plugins:[fe].concat(e.plugins)}else this._plugins=[fe];this._networkTimeoutSeconds=e.networkTimeoutSeconds||0,this._fetchOptions=e.fetchOptions,this._matchOptions=e.matchOptions}var t=e.prototype;return t.handle=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a,l;return n=e.event,i=[],"string"==typeof(o=e.request)&&(o=new Request(o)),u=[],this._networkTimeoutSeconds&&(c=(s=this._getTimeoutPromise({request:o,event:n,logs:i})).id,u.push(s.promise)),a=this._getNetworkPromise({timeoutId:c,request:o,event:n,logs:i}),u.push(a),Promise.resolve(Promise.race(u)).then(function(e){try{if(!(l=e))return Promise.resolve(a).then(function(e){try{return l=e,n.call(this)}catch(e){return r(e)}}.bind(this),r);function n(){return l?t(l):r(new E("no-response",{url:o.url}))}return n.call(this)}catch(e){return r(e)}}.bind(this),r)}.bind(this))},t._getTimeoutPromise=function(e){var t,r=this,n=e.request,o=e.event;return{promise:new Promise((function(e){t=setTimeout((function(){return new Promise((function(t,i){return Promise.resolve(r._respondFromCache({request:n,event:o})).then((function(r){try{return e(r),t()}catch(e){return i(e)}}),i)}))}),1e3*r._networkTimeoutSeconds)})),id:t}},t._getNetworkPromise=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a;n=e.timeoutId,o=e.request,i=e.event;var l=function(){try{if(n&&clearTimeout(n),u||!c)return Promise.resolve(this._respondFromCache({request:o,event:i})).then(function(t){try{return c=t,e.call(this)}catch(e){return r(e)}}.bind(this),r);if(s=c.clone(),a=ne({cacheName:this._cacheName,request:o,response:s,event:i,plugins:this._plugins}),i)try{i.waitUntil(a)}catch(e){0}return e.call(this);function e(){return t(c)}}catch(e){return r(e)}}.bind(this),h=function(e){try{return u=e,l()}catch(e){return r(e)}};try{return Promise.resolve(ie({request:o,event:i,fetchOptions:this._fetchOptions,plugins:this._plugins})).then((function(e){try{return c=e,l()}catch(e){return h(e)}}),h)}catch(e){h(e)}}.bind(this))},t._respondFromCache=function(e){return oe({cacheName:this._cacheName,request:e.request,event:e.event,matchOptions:this._matchOptions,plugins:this._plugins})},e}(),pe=function(){function e(e,t,r){var n=this,o=void 0===r?{}:r,i=o.onupgradeneeded,u=o.onversionchange;this._db=null,this._name=e,this._version=t,this._onupgradeneeded=i,this._onversionchange=u||function(){return n.close()}}var t,r,n,o=e.prototype;return o.open=function(){return new Promise(function(e,t){var r;return r=this,this._db?e():Promise.resolve(new Promise((function(e,t){var n=!1;setTimeout((function(){n=!0,t(new Error("The open request was blocked and timed out"))}),r.OPEN_TIMEOUT);var o=indexedDB.open(r._name,r._version);o.onerror=function(){return t(o.error)},o.onupgradeneeded=function(e){n?(o.transaction.abort(),o.result.close()):"function"==typeof r._onupgradeneeded&&r._onupgradeneeded(e)},o.onsuccess=function(){var t=o.result;n?t.close():(t.onversionchange=r._onversionchange.bind(r),e(t))}}))).then(function(r){try{return this._db=r,e(this)}catch(e){return t(e)}}.bind(this),t)}.bind(this))},o.getKey=function(e,t){return new Promise(function(r,n){return Promise.resolve(this.getAllKeys(e,t,1)).then((function(e){try{return r(e[0])}catch(e){return n(e)}}),n)}.bind(this))},o.getAll=function(e,t,r){return new Promise(function(n,o){return Promise.resolve(this.getAllMatching(e,{query:t,count:r})).then(n,o)}.bind(this))},o.getAllKeys=function(e,t,r){return new Promise(function(n,o){return Promise.resolve(this.getAllMatching(e,{query:t,count:r,includeKeys:!0})).then((function(e){try{return n(e.map((function(e){return e.key})))}catch(e){return o(e)}}),o)}.bind(this))},o.getAllMatching=function(e,t){return new Promise(function(r,n){var o,i,u,c,s,a,l,h,f;return i=(o=void 0===t?{}:t).index,c=void 0===(u=o.query)?null:u,a=void 0===(s=o.direction)?"next":s,l=o.count,f=void 0!==(h=o.includeKeys)&&h,Promise.resolve(this.transaction([e],"readonly",(function(t,r){var n=t.objectStore(e),o=i?n.index(i):n,u=[],s=o.openCursor(c,a);s.onsuccess=function(){var e=s.result;e?(u.push(f?e:e.value),l&&u.length>=l?r(u):e.continue()):r(u)}}))).then(r,n)}.bind(this))},o.transaction=function(e,t,r){return new Promise(function(n,o){var i;return i=this,Promise.resolve(this.open()).then((function(){try{return Promise.resolve(new Promise((function(n,o){var u=i._db.transaction(e,t);u.onabort=function(){return o(u.error)},u.oncomplete=function(){return n()},r(u,(function(e){return n(e)}))}))).then(n,o)}catch(e){return o(e)}}),o)}.bind(this))},o._call=function(e,t,r){var n=arguments;return new Promise(function(o,i){var u,c,s;for(u=n.length,c=new Array(u>3?u-3:0),s=3;s1?u-1:0),s=1;s=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function a(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function m(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function b(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function R(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r0&&(self.addEventListener("install",ae),self.addEventListener("activate",le))}(e),U(t)}function x(e,t){var r;if("undefined"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(r=function(e,t){if(!e)return;if("string"==typeof e)return j(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);"Object"===r&&e.constructor&&(r=e.constructor.name);if("Map"===r||"Set"===r)return Array.from(e);if("Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return j(e,t)}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0;return function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}return(r=e[Symbol.iterator]()).next.bind(r)}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r1?r-1:0),o=1;o0&&(t+=" :: "+JSON.stringify(n)),t},E=function(e){function t(t,r){var n,o=M(t,r);return(n=e.call(this,o)||this).name=t,n.details=r,n}var r,n;return n=e,(r=t).prototype=Object.create(n.prototype),r.prototype.constructor=r,r.__proto__=n,t}(n(Error)),N=(r("I3Xu"),function(e){return e&&"object"==typeof e?e:{handle:e}}),k=function(e,t,r){void 0===r&&(r="GET"),this.handler=N(t),this.match=e,this.method=r},W=function(e){function t(t,r,n){return e.call(this,(function(e){var r=e.url,n=t.exec(r.href);if(n&&(r.origin===location.origin||0===n.index))return n.slice(1)}),r,n)||this}var r,n;return n=e,(r=t).prototype=Object.create(n.prototype),r.prototype.constructor=r,r.__proto__=n,t}(k),F=function(e){return new URL(String(e),location.href).href.replace(new RegExp("^"+location.origin),"")},H=function(){function e(){this._routes=new Map}var t,r,n,o=e.prototype;return o.addFetchListener=function(){var e=this;self.addEventListener("fetch",(function(t){var r=e.handleRequest({request:t.request,event:t});r&&t.respondWith(r)}))},o.addCacheListener=function(){var e=this;self.addEventListener("message",(function(t){if(t.data&&"CACHE_URLS"===t.data.type){0;var r=Promise.all(t.data.payload.urlsToCache.map((function(t){"string"==typeof t&&(t=[t]);var r=l(Request,t);return e.handleRequest({request:r})})));t.waitUntil(r),t.ports&&t.ports[0]&&r.then((function(){return t.ports[0].postMessage(!0)}))}}))},o.handleRequest=function(e){var t=this,r=e.request,n=e.event;var o=new URL(r.url,location.href);if(o.protocol.startsWith("http")){var i=this.findMatchingRoute({url:o,request:r,event:n}),u=i.params,c=i.route,s=c&&c.handler;if(!s&&this._defaultHandler&&(s=this._defaultHandler),s){var a;0;try{a=s.handle({url:o,request:r,event:n,params:u})}catch(e){a=Promise.reject(e)}return a instanceof Promise&&this._catchHandler&&(a=a.catch((function(){return t._catchHandler.handle({url:o,request:r,event:n})}))),a}}},o.findMatchingRoute=function(e){var t=e.url,r=e.request,n=e.event;for(var o,i=s(this._routes.get(r.method)||[]);!(o=i()).done;){var u=o.value,c=void 0,a=u.match({url:t,request:r,event:n});if(a)return c=a,(Array.isArray(a)&&0===a.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"==typeof a)&&(c=void 0),{route:u,params:c}}return{}},o.setDefaultHandler=function(e){this._defaultHandler=N(e)},o.setCatchHandler=function(e){this._catchHandler=N(e)},o.registerRoute=function(e){this._routes.has(e.method)||this._routes.set(e.method,[]),this._routes.get(e.method).push(e)},o.unregisterRoute=function(e){if(!this._routes.has(e.method))throw new E("unregister-route-but-not-found-with-method",{method:e.method});var t=this._routes.get(e.method).indexOf(e);if(!(t>-1))throw new E("unregister-route-route-not-registered");this._routes.get(e.method).splice(t,1)},t=e,(r=[{key:"routes",get:function(){return this._routes}}])&&d(t.prototype,r),n&&d(t,n),e}(),D=function(){return L||((L=new H).addFetchListener(),L.addCacheListener()),L},B=(r("Gpc1"),[]),$=function(){return B},G={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},X=function(e){return[G.prefix,e,G.suffix].filter((function(e){return e&&e.length>0})).join("-")},Q=function(e){return e||X(G.googleAnalytics)},z=function(e){return e||X(G.precache)},J=function(){return G.prefix},V=function(e){return e||X(G.runtime)},Y=function(){return G.suffix},Z=new Set,ee=function(e,t){return e.filter((function(e){return t in e}))},te=function(e){return new Promise((function(t,r){function n(){return(h=l()).done?[1]:(f=h.value,Promise.resolve(f.cacheKeyWillBeUsed.call(f,{mode:u,request:a})).then((function(e){try{return"string"==typeof(a=e)&&(a=new Request(a)),n}catch(e){return r(e)}}),r))}function o(){return t(a)}var i,u,c,s,a,l,h,f,d;return i=e.request,u=e.mode,s=ee(void 0===(c=e.plugins)?[]:c,"cacheKeyWillBeUsed"),a=i,l=v(s),(d=function(e){for(;e;){if(e.then)return void e.then(d,r);try{if(e.pop){if(e.length)return e.pop()?o.call(this):e;e=n}else e=e.call(this)}catch(e){return r(e)}}}.bind(this))(n)}))},re=function(e){return new Promise((function(t,r){var n,o,i,u,c,s,a,l,h,f,d,p;return n=e.cacheName,o=e.request,i=e.event,u=e.matchOptions,s=void 0===(c=e.plugins)?[]:c,Promise.resolve(self.caches.open(n)).then(function(e){try{return a=e,Promise.resolve(te({plugins:s,request:o,mode:"read"})).then(function(e){try{return l=e,Promise.resolve(a.match(l,u)).then(function(e){try{{var o;function c(){if((d=f()).done)return[1];{if("cachedResponseWillBeUsed"in(p=d.value))return Promise.resolve(p.cachedResponseWillBeUsed.call(p,{cacheName:n,event:i,matchOptions:u,cachedResponse:h,request:l})).then(function(t){try{return h=t,e.call(this)}catch(e){return r(e)}}.bind(this),r);function e(){return c}return e.call(this)}}return h=e,f=v(s),(o=function(e){for(;e;){if(e.then)return void e.then(o,r);try{if(e.pop){if(e.length)return e.pop()?a.call(this):e;e=c}else e=e.call(this)}catch(e){return r(e)}}}.bind(this))(c);function a(){return t(h)}}}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}))},ne=function(e){return new Promise((function(t,r){var n,o,i,u,c,s,a,l,h,f,d,y,m,g;return n=e.cacheName,o=e.response,i=e.event,c=void 0===(u=e.plugins)?[]:u,s=e.matchOptions,Promise.resolve(te({plugins:c,request:e.request,mode:"write"})).then(function(e){try{return a=e,o?Promise.resolve((u={event:i,plugins:c,response:o,request:a},new Promise((function(e,t){function r(){if((h=l()).done)return[1];{if("cacheWillUpdate"in(f=h.value))return a=!0,Promise.resolve(f.cacheWillUpdate.call(f,{request:o,response:s,event:i})).then(function(r){try{return(s=r)?e.call(this):[1]}catch(e){return t(e)}}.bind(this),t);function e(){return r}return e.call(this)}}function n(){return a||(s=s&&200===s.status?s:void 0),e(s||null)}var o,i,c,s,a,l,h,f,d;return o=u.request,i=u.event,s=u.response,a=!1,l=v(void 0===(c=u.plugins)?[]:c),(d=function(e){for(;e;){if(e.then)return void e.then(d,t);try{if(e.pop){if(e.length)return e.pop()?n.call(this):e;e=r}else e=e.call(this)}catch(e){return t(e)}}}.bind(this))(r)})))).then(function(e){try{return(l=e)?Promise.resolve(self.caches.open(n)).then(function(e){try{return h=e,f=ee(c,"cacheDidUpdate"),Promise.resolve(new Promise((function(e,t){return f.length>0?Promise.resolve(re({cacheName:n,matchOptions:s,request:a})).then(e,t):e(null)}))).then(function(e){try{d=e;var o=function(e){try{if("QuotaExceededError"===e.name)return Promise.resolve(new Promise((function(e,t){function r(){return(i=o()).done?[1]:Promise.resolve((0,i.value)()).then((function(){try{return r}catch(e){return t(e)}}),t)}function n(){return e()}var o,i,u;return o=p(Z),(u=function(e){for(;e;){if(e.then)return void e.then(u,t);try{if(e.pop){if(e.length)return e.pop()?n.call(this):e;e=r}else e=e.call(this)}catch(e){return t(e)}}}.bind(this))(r)}))).then(function(){try{return t.call(this)}catch(e){return r(e)}}.bind(this),r);function t(){throw e}return t.call(this)}catch(e){return r(e)}}.bind(this);try{return Promise.resolve(h.put(a,l)).then((function(){try{return function(){try{var e;function o(){return(m=y()).done?[1]:(g=m.value,Promise.resolve(g.cacheDidUpdate.call(g,{cacheName:n,event:i,oldResponse:d,newResponse:l,request:a})).then((function(){try{return o}catch(e){return r(e)}}),r))}return y=v(f),(e=function(t){for(;t;){if(t.then)return void t.then(e,r);try{if(t.pop){if(t.length)return t.pop()?u.call(this):t;t=o}else t=t.call(this)}catch(e){return r(e)}}}.bind(this))(o);function u(){return t()}}catch(e){return r(e)}}()}catch(e){return o(e)}}),o)}catch(e){o(e)}}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r):t()}catch(e){return r(e)}}.bind(this),r):r(new E("cache-put-with-no-response",{url:F(a.url)}))}catch(e){return r(e)}var u}.bind(this),r)}))},oe=re,ie=function(e){return new Promise((function(t,r){function n(){l=ee(s,"fetchDidFail"),h=l.length>0?o.clone():null;var e=function(e){try{throw new E("plugin-error-request-will-fetch",{thrownError:e})}catch(e){return r(e)}};try{var n;function c(){if((d=f()).done)return[1];{if("requestWillFetch"in(p=d.value))return y=p.requestWillFetch,v=o.clone(),Promise.resolve(y.call(p,{request:v,event:u})).then(function(r){try{return o=r,t.call(this)}catch(t){return e(t)}}.bind(this),e);function t(){return c}return t.call(this)}}return f=g(s),(n=function(t){for(;t;){if(t.then)return void t.then(n,e);try{if(t.pop){if(t.length)return t.pop()?a.call(this):t;t=c}else t=t.call(this)}catch(t){return e(t)}}}.bind(this))(c);function a(){return function(){try{m=o.clone();var e=function(e){try{{var t;function n(){return(S=R()).done?[1]:(A=S.value,Promise.resolve(A.fetchDidFail.call(A,{error:e,event:u,originalRequest:h.clone(),request:m.clone()})).then((function(){try{return n}catch(e){return r(e)}}),r))}return R=g(l),(t=function(e){for(;e;){if(e.then)return void e.then(t,r);try{if(e.pop){if(e.length)return e.pop()?o.call(this):e;e=n}else e=e.call(this)}catch(e){return r(e)}}}.bind(this))(n);function o(){throw e}}}catch(e){return r(e)}}.bind(this);try{return"navigate"===o.mode?Promise.resolve(fetch(o)).then(function(t){try{return b=t,n.call(this)}catch(t){return e(t)}}.bind(this),e):Promise.resolve(fetch(o,i)).then(function(t){try{return b=t,n.call(this)}catch(t){return e(t)}}.bind(this),e);function n(){function r(){if((_=w()).done)return[1];{if("fetchDidSucceed"in(P=_.value))return Promise.resolve(P.fetchDidSucceed.call(P,{event:u,request:m,response:b})).then(function(r){try{return b=r,t.call(this)}catch(t){return e(t)}}.bind(this),e);function t(){return r}return t.call(this)}}function n(){return t(b)}var o;return w=g(s),(o=function(t){for(;t;){if(t.then)return void t.then(o,e);try{if(t.pop){if(t.length)return t.pop()?n.call(this):t;t=r}else t=t.call(this)}catch(t){return e(t)}}}.bind(this))(r)}}catch(t){e(t)}}catch(e){return r(e)}}()}}catch(t){e(t)}}var o,i,u,c,s,a,l,h,f,d,p,y,v,m,b,w,_,P,R,S,A;return i=e.fetchOptions,u=e.event,s=void 0===(c=e.plugins)?[]:c,"string"==typeof(o=e.request)&&(o=new Request(o)),u instanceof FetchEvent&&u.preloadResponse?Promise.resolve(u.preloadResponse).then(function(e){try{return(a=e)?t(a):n.call(this)}catch(e){return r(e)}}.bind(this),r):n.call(this)}))},ue=function(){function e(e){this._cacheName=z(e),this._urlsToCacheKeys=new Map,this._urlsToCacheModes=new Map,this._cacheKeysToIntegrities=new Map}var t=e.prototype;return t.addToCacheList=function(e){for(var t,r=[],n=P(e);!(t=n()).done;){var o=t.value;"string"==typeof o?r.push(o):o&&void 0===o.revision&&r.push(o.url);var i=_(o),u=i.cacheKey,c=i.url,s="string"!=typeof o&&o.revision?"reload":"default";if(this._urlsToCacheKeys.has(c)&&this._urlsToCacheKeys.get(c)!==u)throw new E("add-to-cache-list-conflicting-entries",{firstEntry:this._urlsToCacheKeys.get(c),secondEntry:u});if("string"!=typeof o&&o.integrity){if(this._cacheKeysToIntegrities.has(u)&&this._cacheKeysToIntegrities.get(u)!==o.integrity)throw new E("add-to-cache-list-conflicting-integrities",{url:c});this._cacheKeysToIntegrities.set(u,o.integrity)}if(this._urlsToCacheKeys.set(c,u),this._urlsToCacheModes.set(c,s),r.length>0){var a="Workbox is precaching URLs without revision info: "+r.join(", ")+"\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache";console.warn(a)}}},t.install=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a,l,h,f,d,p,y,v;return n=this,i=(o=void 0===e?{}:e).event,u=o.plugins,c=[],s=[],Promise.resolve(self.caches.open(this._cacheName)).then(function(e){try{return Promise.resolve(e.keys()).then(function(e){try{for(a=new Set(e.map((function(e){return e.url}))),l=P(this._urlsToCacheKeys);!(h=l()).done;)d=(f=h.value)[0],a.has(p=f[1])?s.push(d):c.push({cacheKey:p,url:d});return y=c.map((function(e){var t=e.cacheKey,r=e.url,o=n._cacheKeysToIntegrities.get(t),c=n._urlsToCacheModes.get(r);return n._addURLToCache({cacheKey:t,cacheMode:c,event:i,integrity:o,plugins:u,url:r})})),Promise.resolve(Promise.all(y)).then((function(){try{return v=c.map((function(e){return e.url})),t({updatedURLs:v,notUpdatedURLs:s})}catch(e){return r(e)}}),r)}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}.bind(this))},t.activate=function(){return new Promise(function(e,t){var r,n,o,i,u,c,s;return Promise.resolve(self.caches.open(this._cacheName)).then(function(a){try{return r=a,Promise.resolve(r.keys()).then(function(a){try{{var l;function h(){if((c=u()).done)return[1];{if(!o.has((s=c.value).url))return Promise.resolve(r.delete(s)).then(function(){try{return i.push(s.url),e.call(this)}catch(e){return t(e)}}.bind(this),t);function e(){return h}return e.call(this)}}return n=a,o=new Set(this._urlsToCacheKeys.values()),i=[],u=P(n),(l=function(e){for(;e;){if(e.then)return void e.then(l,t);try{if(e.pop){if(e.length)return e.pop()?f.call(this):e;e=h}else e=e.call(this)}catch(e){return t(e)}}}.bind(this))(h);function f(){return e({deletedURLs:i})}}}catch(e){return t(e)}}.bind(this),t)}catch(e){return t(e)}}.bind(this),t)}.bind(this))},t._addURLToCache=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a,l,h,f;return n=e.cacheKey,o=e.url,i=e.event,u=e.plugins,c=new Request(o,{integrity:e.integrity,cache:e.cacheMode,credentials:"same-origin"}),Promise.resolve(ie({event:i,plugins:u,request:c})).then(function(e){try{for(s=e,l=P(u||[]);!(h=l()).done;)"cacheWillUpdate"in(f=h.value)&&(a=f);return Promise.resolve(new Promise((function(e,t){return a?Promise.resolve(a.cacheWillUpdate({event:i,request:c,response:s})).then(e,t):e(s.status<400)}))).then(function(e){try{if(!e)return r(new E("bad-precaching-response",{url:o,status:s.status}));if(s.redirected)return Promise.resolve(w(s)).then(function(e){try{return s=e,a.call(this)}catch(e){return r(e)}}.bind(this),r);function a(){return Promise.resolve(ne({event:i,plugins:u,response:s,request:n===o?c:new Request(n),cacheName:this._cacheName,matchOptions:{ignoreSearch:!0}})).then((function(){try{return t()}catch(e){return r(e)}}),r)}return a.call(this)}catch(e){return r(e)}}.bind(this),r)}catch(e){return r(e)}}.bind(this),r)}.bind(this))},t.getURLsToCacheKeys=function(){return this._urlsToCacheKeys},t.getCachedURLs=function(){return[].concat(this._urlsToCacheKeys.keys())},t.getCacheKeyForURL=function(e){var t=new URL(e,location.href);return this._urlsToCacheKeys.get(t.href)},t.matchPrecache=function(e){return new Promise(function(t,r){var n,o;return n=e instanceof Request?e.url:e,(o=this.getCacheKeyForURL(n))?Promise.resolve(self.caches.open(this._cacheName)).then((function(e){try{return t(e.match(o))}catch(e){return r(e)}}),r):t(void 0)}.bind(this))},t.createHandler=function(e){var t=this;return void 0===e&&(e=!0),function(r){return new Promise((function(n,o){var i,u;i=r.request;var c=function(t){try{if(e)return n(fetch(i));throw t}catch(e){return o(e)}};try{return Promise.resolve(t.matchPrecache(i)).then((function(e){try{if(u=e)return n(u);throw new E("missing-precache-entry",{cacheName:t._cacheName,url:i instanceof Request?i.url:i})}catch(e){return c(e)}}),c)}catch(e){c(e)}}))}},t.createHandlerBoundToURL=function(e,t){if(void 0===t&&(t=!0),!this.getCacheKeyForURL(e))throw new E("non-precached-url",{url:e});var r=this.createHandler(t),n=new Request(e);return function(){return r({request:n})}},e}(),ce=function(){return K||(K=new ue),K},se=!1,ae=function(e){var t=ce(),r=$();e.waitUntil(t.install({event:e,plugins:r}).catch((function(e){throw e})))},le=function(e){var t=ce();e.waitUntil(t.activate())},he=function(e){return"navigate"===e.request.mode},fe=(r("myed"),{cacheWillUpdate:function(e){return new Promise((function(t){var r=e.response;return t(200===r.status||0===r.status?r:null)}))}}),de=function(){function e(e){if(void 0===e&&(e={}),this._cacheName=V(e.cacheName),e.plugins){var t=e.plugins.some((function(e){return!!e.cacheWillUpdate}));this._plugins=t?e.plugins:[fe].concat(e.plugins)}else this._plugins=[fe];this._networkTimeoutSeconds=e.networkTimeoutSeconds||0,this._fetchOptions=e.fetchOptions,this._matchOptions=e.matchOptions}var t=e.prototype;return t.handle=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a,l;return n=e.event,i=[],"string"==typeof(o=e.request)&&(o=new Request(o)),u=[],this._networkTimeoutSeconds&&(c=(s=this._getTimeoutPromise({request:o,event:n,logs:i})).id,u.push(s.promise)),a=this._getNetworkPromise({timeoutId:c,request:o,event:n,logs:i}),u.push(a),Promise.resolve(Promise.race(u)).then(function(e){try{if(!(l=e))return Promise.resolve(a).then(function(e){try{return l=e,n.call(this)}catch(e){return r(e)}}.bind(this),r);function n(){return l?t(l):r(new E("no-response",{url:o.url}))}return n.call(this)}catch(e){return r(e)}}.bind(this),r)}.bind(this))},t._getTimeoutPromise=function(e){var t,r=this,n=e.request,o=e.event;return{promise:new Promise((function(e){t=setTimeout((function(){return new Promise((function(t,i){return Promise.resolve(r._respondFromCache({request:n,event:o})).then((function(r){try{return e(r),t()}catch(e){return i(e)}}),i)}))}),1e3*r._networkTimeoutSeconds)})),id:t}},t._getNetworkPromise=function(e){return new Promise(function(t,r){var n,o,i,u,c,s,a;n=e.timeoutId,o=e.request,i=e.event;var l=function(){try{if(n&&clearTimeout(n),u||!c)return Promise.resolve(this._respondFromCache({request:o,event:i})).then(function(t){try{return c=t,e.call(this)}catch(e){return r(e)}}.bind(this),r);if(s=c.clone(),a=ne({cacheName:this._cacheName,request:o,response:s,event:i,plugins:this._plugins}),i)try{i.waitUntil(a)}catch(e){0}return e.call(this);function e(){return t(c)}}catch(e){return r(e)}}.bind(this),h=function(e){try{return u=e,l()}catch(e){return r(e)}};try{return Promise.resolve(ie({request:o,event:i,fetchOptions:this._fetchOptions,plugins:this._plugins})).then((function(e){try{return c=e,l()}catch(e){return h(e)}}),h)}catch(e){h(e)}}.bind(this))},t._respondFromCache=function(e){return oe({cacheName:this._cacheName,request:e.request,event:e.event,matchOptions:this._matchOptions,plugins:this._plugins})},e}(),pe=function(){function e(e,t,r){var n=this,o=void 0===r?{}:r,i=o.onupgradeneeded,u=o.onversionchange;this._db=null,this._name=e,this._version=t,this._onupgradeneeded=i,this._onversionchange=u||function(){return n.close()}}var t,r,n,o=e.prototype;return o.open=function(){return new Promise(function(e,t){var r;return r=this,this._db?e():Promise.resolve(new Promise((function(e,t){var n=!1;setTimeout((function(){n=!0,t(new Error("The open request was blocked and timed out"))}),r.OPEN_TIMEOUT);var o=indexedDB.open(r._name,r._version);o.onerror=function(){return t(o.error)},o.onupgradeneeded=function(e){n?(o.transaction.abort(),o.result.close()):"function"==typeof r._onupgradeneeded&&r._onupgradeneeded(e)},o.onsuccess=function(){var t=o.result;n?t.close():(t.onversionchange=r._onversionchange.bind(r),e(t))}}))).then(function(r){try{return this._db=r,e(this)}catch(e){return t(e)}}.bind(this),t)}.bind(this))},o.getKey=function(e,t){return new Promise(function(r,n){return Promise.resolve(this.getAllKeys(e,t,1)).then((function(e){try{return r(e[0])}catch(e){return n(e)}}),n)}.bind(this))},o.getAll=function(e,t,r){return new Promise(function(n,o){return Promise.resolve(this.getAllMatching(e,{query:t,count:r})).then(n,o)}.bind(this))},o.getAllKeys=function(e,t,r){return new Promise(function(n,o){return Promise.resolve(this.getAllMatching(e,{query:t,count:r,includeKeys:!0})).then((function(e){try{return n(e.map((function(e){return e.key})))}catch(e){return o(e)}}),o)}.bind(this))},o.getAllMatching=function(e,t){return new Promise(function(r,n){var o,i,u,c,s,a,l,h,f;return i=(o=void 0===t?{}:t).index,c=void 0===(u=o.query)?null:u,a=void 0===(s=o.direction)?"next":s,l=o.count,f=void 0!==(h=o.includeKeys)&&h,Promise.resolve(this.transaction([e],"readonly",(function(t,r){var n=t.objectStore(e),o=i?n.index(i):n,u=[],s=o.openCursor(c,a);s.onsuccess=function(){var e=s.result;e?(u.push(f?e:e.value),l&&u.length>=l?r(u):e.continue()):r(u)}}))).then(r,n)}.bind(this))},o.transaction=function(e,t,r){return new Promise(function(n,o){var i;return i=this,Promise.resolve(this.open()).then((function(){try{return Promise.resolve(new Promise((function(n,o){var u=i._db.transaction(e,t);u.onabort=function(){return o(u.error)},u.oncomplete=function(){return n()},r(u,(function(e){return n(e)}))}))).then(n,o)}catch(e){return o(e)}}),o)}.bind(this))},o._call=function(e,t,r){var n=arguments;return new Promise(function(o,i){var u,c,s;for(u=n.length,c=new Array(u>3?u-3:0),s=3;s1?u-1:0),s=1;s {
return (