{"version":3,"file":"vendors-e54991b290227d836ff4-bundle.js","mappings":"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","sources":["webpack:///../node_modules/dom-utils/lib/matches.js","webpack:///../node_modules/dom-utils/lib/delegate.js","webpack:///../node_modules/dom-utils/lib/closest.js","webpack:///../node_modules/dom-utils/lib/parents.js","webpack:///../node_modules/dom-utils/lib/parse-url.js","webpack:///../node_modules/autotrack/lib/constants.js","webpack:///../node_modules/autotrack/lib/method-chain.js","webpack:///../node_modules/autotrack/lib/utilities.js","webpack:///../node_modules/dom-utils/lib/get-attributes.js","webpack:///../node_modules/autotrack/lib/provide.js","webpack:///../node_modules/autotrack/lib/usage.js","webpack:///../node_modules/autotrack/lib/plugins/clean-url-tracker.js","webpack:///../node_modules/autotrack/lib/plugins/event-tracker.js","webpack:///../node_modules/autotrack/lib/plugins/impression-tracker.js","webpack:///../node_modules/autotrack/lib/event-emitter.js","webpack:///../node_modules/autotrack/lib/store.js","webpack:///../node_modules/autotrack/lib/session.js","webpack:///../node_modules/autotrack/lib/plugins/max-scroll-tracker.js","webpack:///../node_modules/autotrack/lib/plugins/media-query-tracker.js","webpack:///../node_modules/autotrack/lib/plugins/outbound-form-tracker.js","webpack:///../node_modules/autotrack/lib/plugins/outbound-link-tracker.js","webpack:///../node_modules/autotrack/lib/plugins/page-visibility-tracker.js","webpack:///../node_modules/autotrack/lib/plugins/social-widget-tracker.js","webpack:///../node_modules/autotrack/lib/plugins/url-change-tracker.js","webpack:///../node_modules/choices.js/public/assets/scripts/choices.js","webpack:///../node_modules/client-oauth2/src/client-oauth2.js","webpack:///../node_modules/client-oauth2/src/request/browser.js","webpack:///../node_modules/flyd/lib/index.js","webpack:///../node_modules/joi/dist/joi-browser.min.js","webpack:///../node_modules/manuel/index.js","webpack:///../node_modules/mithril/api/mount-redraw.js","webpack:///../node_modules/mithril/api/router.js","webpack:///../node_modules/mithril/hyperscript.js","webpack:///../node_modules/mithril/index.js","webpack:///../node_modules/mithril/mount-redraw.js","webpack:///../node_modules/mithril/pathname/build.js","webpack:///../node_modules/mithril/pathname/compileTemplate.js","webpack:///../node_modules/mithril/pathname/parse.js","webpack:///../node_modules/mithril/promise/polyfill.js","webpack:///../node_modules/mithril/promise/promise.js","webpack:///../node_modules/mithril/querystring/build.js","webpack:///../node_modules/mithril/querystring/parse.js","webpack:///../node_modules/mithril/render.js","webpack:///../node_modules/mithril/render/fragment.js","webpack:///../node_modules/mithril/render/hyperscript.js","webpack:///../node_modules/mithril/render/hyperscriptVnode.js","webpack:///../node_modules/mithril/render/render.js","webpack:///../node_modules/mithril/render/trust.js","webpack:///../node_modules/mithril/render/vnode.js","webpack:///../node_modules/mithril/request.js","webpack:///../node_modules/mithril/request/request.js","webpack:///../node_modules/mithril/route.js","webpack:///../node_modules/mithril/util/assign.js","webpack:///../node_modules/mithril/util/censor.js","webpack:///../node_modules/mithril/util/hasOwn.js","webpack:///../node_modules/querystring-es3/decode.js","webpack:///../node_modules/querystring-es3/encode.js","webpack:///../node_modules/querystring-es3/index.js","webpack:///../node_modules/ramda/src/curryN.js","webpack:///../node_modules/ramda/src/internal/_arity.js","webpack:///../node_modules/ramda/src/internal/_curry1.js","webpack:///../node_modules/ramda/src/internal/_curry2.js","webpack:///../node_modules/ramda/src/internal/_curryN.js","webpack:///../node_modules/ramda/src/internal/_isPlaceholder.js","webpack:///../node_modules/translate.js/index.js","webpack:///../node_modules/@glidejs/glide/dist/glide.esm.js","webpack:///../node_modules/luxon/src/errors.js","webpack:///../node_modules/luxon/src/zone.js","webpack:///../node_modules/luxon/src/zones/IANAZone.js","webpack:///../node_modules/luxon/src/zones/fixedOffsetZone.js","webpack:///../node_modules/luxon/src/impl/util.js","webpack:///../node_modules/luxon/src/impl/regexParser.js","webpack:///../node_modules/luxon/src/duration.js","webpack:///../node_modules/luxon/src/interval.js","webpack:///../node_modules/luxon/src/impl/digits.js","webpack:///../node_modules/luxon/src/impl/tokenParser.js","webpack:///../node_modules/luxon/src/datetime.js"],"sourcesContent":["const proto = window.Element.prototype;\nconst nativeMatches = proto.matches ||\n proto.matchesSelector ||\n proto.webkitMatchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector;\n\n\n/**\n * Tests if a DOM elements matches any of the test DOM elements or selectors.\n * @param {Element} element The DOM element to test.\n * @param {Element|string|Array} test A DOM element, a CSS\n * selector, or an array of DOM elements or CSS selectors to match against.\n * @return {boolean} True of any part of the test matches.\n */\nexport default function matches(element, test) {\n // Validate input.\n if (element && element.nodeType == 1 && test) {\n // if test is a string or DOM element test it.\n if (typeof test == 'string' || test.nodeType == 1) {\n return element == test ||\n matchesSelector(element, /** @type {string} */ (test));\n } else if ('length' in test) {\n // if it has a length property iterate over the items\n // and return true if any match.\n for (let i = 0, item; item = test[i]; i++) {\n if (element == item || matchesSelector(element, item)) return true;\n }\n }\n }\n // Still here? Return false\n return false;\n}\n\n\n/**\n * Tests whether a DOM element matches a selector. This polyfills the native\n * Element.prototype.matches method across browsers.\n * @param {!Element} element The DOM element to test.\n * @param {string} selector The CSS selector to test element against.\n * @return {boolean} True if the selector matches.\n */\nfunction matchesSelector(element, selector) {\n if (typeof selector != 'string') return false;\n if (nativeMatches) return nativeMatches.call(element, selector);\n const nodes = element.parentNode.querySelectorAll(selector);\n for (let i = 0, node; node = nodes[i]; i++) {\n if (node == element) return true;\n }\n return false;\n}\n","import closest from './closest';\nimport matches from './matches';\n\n/**\n * Delegates the handling of events for an element matching a selector to an\n * ancestor of the matching element.\n * @param {!Node} ancestor The ancestor element to add the listener to.\n * @param {string} eventType The event type to listen to.\n * @param {string} selector A CSS selector to match against child elements.\n * @param {!Function} callback A function to run any time the event happens.\n * @param {Object=} opts A configuration options object. The available options:\n * - useCapture: If true, bind to the event capture phase.\n * - deep: If true, delegate into shadow trees.\n * @return {Object} The delegate object. It contains a destroy method.\n */\nexport default function delegate(\n ancestor, eventType, selector, callback, opts = {}) {\n // Defines the event listener.\n const listener = function(event) {\n let delegateTarget;\n\n // If opts.composed is true and the event originated from inside a Shadow\n // tree, check the composed path nodes.\n if (opts.composed && typeof event.composedPath == 'function') {\n const composedPath = event.composedPath();\n for (let i = 0, node; node = composedPath[i]; i++) {\n if (node.nodeType == 1 && matches(node, selector)) {\n delegateTarget = node;\n }\n }\n } else {\n // Otherwise check the parents.\n delegateTarget = closest(event.target, selector, true);\n }\n\n if (delegateTarget) {\n callback.call(delegateTarget, event, delegateTarget);\n }\n };\n\n ancestor.addEventListener(eventType, listener, opts.useCapture);\n\n return {\n destroy: function() {\n ancestor.removeEventListener(eventType, listener, opts.useCapture);\n },\n };\n}\n","import matches from './matches';\nimport parents from './parents';\n\n/**\n * Gets the closest parent element that matches the passed selector.\n * @param {Element} element The element whose parents to check.\n * @param {string} selector The CSS selector to match against.\n * @param {boolean=} shouldCheckSelf True if the selector should test against\n * the passed element itself.\n * @return {Element|undefined} The matching element or undefined.\n */\nexport default function closest(element, selector, shouldCheckSelf = false) {\n if (!(element && element.nodeType == 1 && selector)) return;\n const parentElements =\n (shouldCheckSelf ? [element] : []).concat(parents(element));\n\n for (let i = 0, parent; parent = parentElements[i]; i++) {\n if (matches(parent, selector)) return parent;\n }\n}\n","/**\n * Returns an array of a DOM element's parent elements.\n * @param {!Element} element The DOM element whose parents to get.\n * @return {!Array} An array of all parent elemets, or an empty array if no\n * parent elements are found.\n */\nexport default function parents(element) {\n const list = [];\n while (element && element.parentNode && element.parentNode.nodeType == 1) {\n element = /** @type {!Element} */ (element.parentNode);\n list.push(element);\n }\n return list;\n}\n","const HTTP_PORT = '80';\nconst HTTPS_PORT = '443';\nconst DEFAULT_PORT = RegExp(':(' + HTTP_PORT + '|' + HTTPS_PORT + ')$');\n\n\nconst a = document.createElement('a');\nconst cache = {};\n\n\n/**\n * Parses the given url and returns an object mimicing a `Location` object.\n * @param {string} url The url to parse.\n * @return {!Object} An object with the same properties as a `Location`.\n */\nexport default function parseUrl(url) {\n // All falsy values (as well as \".\") should map to the current URL.\n url = (!url || url == '.') ? location.href : url;\n\n if (cache[url]) return cache[url];\n\n a.href = url;\n\n // When parsing file relative paths (e.g. `../index.html`), IE will correctly\n // resolve the `href` property but will keep the `..` in the `path` property.\n // It will also not include the `host` or `hostname` properties. Furthermore,\n // IE will sometimes return no protocol or just a colon, especially for things\n // like relative protocol URLs (e.g. \"//google.com\").\n // To workaround all of these issues, we reparse with the full URL from the\n // `href` property.\n if (url.charAt(0) == '.' || url.charAt(0) == '/') return parseUrl(a.href);\n\n // Don't include default ports.\n let port = (a.port == HTTP_PORT || a.port == HTTPS_PORT) ? '' : a.port;\n\n // PhantomJS sets the port to \"0\" when using the file: protocol.\n port = port == '0' ? '' : port;\n\n // Sometimes IE incorrectly includes a port for default ports\n // (e.g. `:80` or `:443`) even when no port is specified in the URL.\n // http://bit.ly/1rQNoMg\n const host = a.host.replace(DEFAULT_PORT, '');\n\n // Not all browser support `origin` so we have to build it.\n const origin = a.origin ? a.origin : a.protocol + '//' + host;\n\n // Sometimes IE doesn't include the leading slash for pathname.\n // http://bit.ly/1rQNoMg\n const pathname = a.pathname.charAt(0) == '/' ? a.pathname : '/' + a.pathname;\n\n return cache[url] = {\n hash: a.hash,\n host: host,\n hostname: a.hostname,\n href: a.href,\n origin: origin,\n pathname: pathname,\n port: port,\n protocol: a.protocol,\n search: a.search,\n };\n}\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nexport const VERSION = '2.4.1';\nexport const DEV_ID = 'i5iSjo';\n\nexport const VERSION_PARAM = '_av';\nexport const USAGE_PARAM = '_au';\n\nexport const NULL_DIMENSION = '(not set)';\n","/**\n * Copyright 2017 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * @fileoverview\n * The functions exported by this module make it easier (and safer) to override\n * foreign object methods (in a modular way) and respond to or modify their\n * invocation. The primary feature is the ability to override a method without\n * worrying if it's already been overridden somewhere else in the codebase. It\n * also allows for safe restoring of an overridden method by only fully\n * restoring a method once all overrides have been removed.\n */\n\n\nconst instances = [];\n\n\n/**\n * A class that wraps a foreign object method and emit events before and\n * after the original method is called.\n */\nexport default class MethodChain {\n /**\n * Adds the passed override method to the list of method chain overrides.\n * @param {!Object} context The object containing the method to chain.\n * @param {string} methodName The name of the method on the object.\n * @param {!Function} methodOverride The override method to add.\n */\n static add(context, methodName, methodOverride) {\n getOrCreateMethodChain(context, methodName).add(methodOverride);\n }\n\n /**\n * Removes a method chain added via `add()`. If the override is the\n * only override added, the original method is restored.\n * @param {!Object} context The object containing the method to unchain.\n * @param {string} methodName The name of the method on the object.\n * @param {!Function} methodOverride The override method to remove.\n */\n static remove(context, methodName, methodOverride) {\n getOrCreateMethodChain(context, methodName).remove(methodOverride);\n }\n\n /**\n * Wraps a foreign object method and overrides it. Also stores a reference\n * to the original method so it can be restored later.\n * @param {!Object} context The object containing the method.\n * @param {string} methodName The name of the method on the object.\n */\n constructor(context, methodName) {\n this.context = context;\n this.methodName = methodName;\n this.isTask = /Task$/.test(methodName);\n\n this.originalMethodReference = this.isTask ?\n context.get(methodName) : context[methodName];\n\n this.methodChain = [];\n this.boundMethodChain = [];\n\n // Wraps the original method.\n this.wrappedMethod = (...args) => {\n const lastBoundMethod =\n this.boundMethodChain[this.boundMethodChain.length - 1];\n\n return lastBoundMethod(...args);\n };\n\n // Override original method with the wrapped one.\n if (this.isTask) {\n context.set(methodName, this.wrappedMethod);\n } else {\n context[methodName] = this.wrappedMethod;\n }\n }\n\n /**\n * Adds a method to the method chain.\n * @param {!Function} overrideMethod The override method to add.\n */\n add(overrideMethod) {\n this.methodChain.push(overrideMethod);\n this.rebindMethodChain();\n }\n\n /**\n * Removes a method from the method chain and restores the prior order.\n * @param {!Function} overrideMethod The override method to remove.\n */\n remove(overrideMethod) {\n const index = this.methodChain.indexOf(overrideMethod);\n if (index > -1) {\n this.methodChain.splice(index, 1);\n if (this.methodChain.length > 0) {\n this.rebindMethodChain();\n } else {\n this.destroy();\n }\n }\n }\n\n /**\n * Loops through the method chain array and recreates the bound method\n * chain array. This is necessary any time a method is added or removed\n * to ensure proper original method context and order.\n */\n rebindMethodChain() {\n this.boundMethodChain = [];\n for (let method, i = 0; method = this.methodChain[i]; i++) {\n const previousMethod = this.boundMethodChain[i - 1] ||\n this.originalMethodReference.bind(this.context);\n this.boundMethodChain.push(method(previousMethod));\n }\n }\n\n /**\n * Calls super and destroys the instance if no registered handlers remain.\n */\n destroy() {\n const index = instances.indexOf(this);\n if (index > -1) {\n instances.splice(index, 1);\n if (this.isTask) {\n this.context.set(this.methodName, this.originalMethodReference);\n } else {\n this.context[this.methodName] = this.originalMethodReference;\n }\n }\n }\n}\n\n\n/**\n * Gets a MethodChain instance for the passed object and method. If the method\n * has already been wrapped via an existing MethodChain instance, that\n * instance is returned.\n * @param {!Object} context The object containing the method.\n * @param {string} methodName The name of the method on the object.\n * @return {!MethodChain}\n */\nfunction getOrCreateMethodChain(context, methodName) {\n let methodChain = instances\n .filter((h) => h.context == context && h.methodName == methodName)[0];\n\n if (!methodChain) {\n methodChain = new MethodChain(context, methodName);\n instances.push(methodChain);\n }\n return methodChain;\n}\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport {getAttributes} from 'dom-utils';\nimport MethodChain from './method-chain';\n\n\n/**\n * Accepts default and user override fields and an optional tracker, hit\n * filter, and target element and returns a single object that can be used in\n * `ga('send', ...)` commands.\n * @param {FieldsObj} defaultFields The default fields to return.\n * @param {FieldsObj} userFields Fields set by the user to override the\n * defaults.\n * @param {Tracker=} tracker The tracker object to apply the hit filter to.\n * @param {Function=} hitFilter A filter function that gets\n * called with the tracker model right before the `buildHitTask`. It can\n * be used to modify the model for the current hit only.\n * @param {Element=} target If the hit originated from an interaction\n * with a DOM element, hitFilter is invoked with that element as the\n * second argument.\n * @param {(Event|TwttrEvent)=} event If the hit originated via a DOM event,\n * hitFilter is invoked with that event as the third argument.\n * @return {!FieldsObj} The final fields object.\n */\nexport function createFieldsObj(\n defaultFields, userFields, tracker = undefined,\n hitFilter = undefined, target = undefined, event = undefined) {\n if (typeof hitFilter == 'function') {\n const originalBuildHitTask = tracker.get('buildHitTask');\n return {\n buildHitTask: (/** @type {!Model} */ model) => {\n model.set(defaultFields, null, true);\n model.set(userFields, null, true);\n hitFilter(model, target, event);\n originalBuildHitTask(model);\n },\n };\n } else {\n return assign({}, defaultFields, userFields);\n }\n}\n\n\n/**\n * Retrieves the attributes from an DOM element and returns a fields object\n * for all attributes matching the passed prefix string.\n * @param {Element} element The DOM element to get attributes from.\n * @param {string} prefix An attribute prefix. Only the attributes matching\n * the prefix will be returned on the fields object.\n * @return {FieldsObj} An object of analytics.js fields and values\n */\nexport function getAttributeFields(element, prefix) {\n const attributes = getAttributes(element);\n const attributeFields = {};\n\n Object.keys(attributes).forEach(function(attribute) {\n // The `on` prefix is used for event handling but isn't a field.\n if (attribute.indexOf(prefix) === 0 && attribute != prefix + 'on') {\n let value = attributes[attribute];\n\n // Detects Boolean value strings.\n if (value == 'true') value = true;\n if (value == 'false') value = false;\n\n const field = camelCase(attribute.slice(prefix.length));\n attributeFields[field] = value;\n }\n });\n\n return attributeFields;\n}\n\n\n/**\n * Accepts a function to be invoked once the DOM is ready. If the DOM is\n * already ready, the callback is invoked immediately.\n * @param {!Function} callback The ready callback.\n */\nexport function domReady(callback) {\n if (document.readyState == 'loading') {\n document.addEventListener('DOMContentLoaded', function fn() {\n document.removeEventListener('DOMContentLoaded', fn);\n callback();\n });\n } else {\n callback();\n }\n}\n\n\n/**\n * Returns a function, that, as long as it continues to be called, will not\n * actually run. The function will only run after it stops being called for\n * `wait` milliseconds.\n * @param {!Function} fn The function to debounce.\n * @param {number} wait The debounce wait timeout in ms.\n * @return {!Function} The debounced function.\n */\nexport function debounce(fn, wait) {\n let timeout;\n return function(...args) {\n clearTimeout(timeout);\n timeout = setTimeout(() => fn(...args), wait);\n };\n}\n\n\n/**\n * Accepts a function and returns a wrapped version of the function that is\n * expected to be called elsewhere in the system. If it's not called\n * elsewhere after the timeout period, it's called regardless. The wrapper\n * function also prevents the callback from being called more than once.\n * @param {!Function} callback The function to call.\n * @param {number=} wait How many milliseconds to wait before invoking\n * the callback.\n * @return {!Function} The wrapped version of the passed function.\n */\nexport function withTimeout(callback, wait = 2000) {\n let called = false;\n const fn = function() {\n if (!called) {\n called = true;\n callback();\n }\n };\n setTimeout(fn, wait);\n return fn;\n}\n\n// Maps trackers to queue by tracking ID.\nconst queueMap = {};\n\n/**\n * Queues a function for execution in the next call stack, or immediately\n * before any send commands are executed on the tracker. This allows\n * autotrack plugins to defer running commands until after all other plugins\n * are required but before any other hits are sent.\n * @param {!Tracker} tracker\n * @param {!Function} fn\n */\nexport function deferUntilPluginsLoaded(tracker, fn) {\n const trackingId = tracker.get('trackingId');\n const ref = queueMap[trackingId] = queueMap[trackingId] || {};\n\n const processQueue = () => {\n clearTimeout(ref.timeout);\n if (ref.send) {\n MethodChain.remove(tracker, 'send', ref.send);\n }\n delete queueMap[trackingId];\n\n ref.queue.forEach((fn) => fn());\n };\n\n clearTimeout(ref.timeout);\n ref.timeout = setTimeout(processQueue, 0);\n ref.queue = ref.queue || [];\n ref.queue.push(fn);\n\n if (!ref.send) {\n ref.send = (originalMethod) => {\n return (...args) => {\n processQueue();\n originalMethod(...args);\n };\n };\n MethodChain.add(tracker, 'send', ref.send);\n }\n}\n\n\n/**\n * A small shim of Object.assign that aims for brevity over spec-compliant\n * handling all the edge cases.\n * @param {!Object} target The target object to assign to.\n * @param {...?Object} sources Additional objects who properties should be\n * assigned to target. Non-objects are converted to objects.\n * @return {!Object} The modified target object.\n */\nexport const assign = Object.assign || function(target, ...sources) {\n for (let i = 0, len = sources.length; i < len; i++) {\n const source = Object(sources[i]);\n for (let key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n};\n\n\n/**\n * Accepts a string containing hyphen or underscore word separators and\n * converts it to camelCase.\n * @param {string} str The string to camelCase.\n * @return {string} The camelCased version of the string.\n */\nexport function camelCase(str) {\n return str.replace(/[\\-\\_]+(\\w?)/g, function(match, p1) {\n return p1.toUpperCase();\n });\n}\n\n\n/**\n * Capitalizes the first letter of a string.\n * @param {string} str The input string.\n * @return {string} The capitalized string\n */\nexport function capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n\n\n/**\n * Indicates whether the passed variable is a JavaScript object.\n * @param {*} value The input variable to test.\n * @return {boolean} Whether or not the test is an object.\n */\nexport function isObject(value) {\n return typeof value == 'object' && value !== null;\n}\n\n\n/**\n * Accepts a value that may or may not be an array. If it is not an array,\n * it is returned as the first item in a single-item array.\n * @param {*} value The value to convert to an array if it is not.\n * @return {!Array} The array-ified value.\n */\nexport function toArray(value) {\n return Array.isArray(value) ? value : [value];\n}\n\n\n/**\n * @return {number} The current date timestamp\n */\nexport function now() {\n return +new Date();\n}\n\n\n/*eslint-disable */\n// https://gist.github.com/jed/982883\n/** @param {?=} a */\nexport const uuid = function b(a){return a?(a^Math.random()*16>>a/4).toString(16):([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,b)};\n/*eslint-enable */\n","/**\n * Gets all attributes of an element as a plain JavaScriot object.\n * @param {Element} element The element whose attributes to get.\n * @return {!Object} An object whose keys are the attribute keys and whose\n * values are the attribute values. If no attributes exist, an empty\n * object is returned.\n */\nexport default function getAttributes(element) {\n const attrs = {};\n\n // Validate input.\n if (!(element && element.nodeType == 1)) return attrs;\n\n // Return an empty object if there are no attributes.\n const map = element.attributes;\n if (map.length === 0) return {};\n\n for (let i = 0, attr; attr = map[i]; i++) {\n attrs[attr.name] = attr.value;\n }\n return attrs;\n}\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport {DEV_ID} from './constants';\nimport {capitalize} from './utilities';\n\n\n/**\n * Provides a plugin for use with analytics.js, accounting for the possibility\n * that the global command queue has been renamed or not yet defined.\n * @param {string} pluginName The plugin name identifier.\n * @param {Function} pluginConstructor The plugin constructor function.\n */\nexport default function provide(pluginName, pluginConstructor) {\n const gaAlias = window.GoogleAnalyticsObject || 'ga';\n window[gaAlias] = window[gaAlias] || function(...args) {\n (window[gaAlias].q = window[gaAlias].q || []).push(args);\n };\n\n // Adds the autotrack dev ID if not already included.\n window.gaDevIds = window.gaDevIds || [];\n if (window.gaDevIds.indexOf(DEV_ID) < 0) {\n window.gaDevIds.push(DEV_ID);\n }\n\n // Formally provides the plugin for use with analytics.js.\n window[gaAlias]('provide', pluginName, pluginConstructor);\n\n // Registers the plugin on the global gaplugins object.\n window.gaplugins = window.gaplugins || {};\n window.gaplugins[capitalize(pluginName)] = pluginConstructor;\n}\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport {USAGE_PARAM, VERSION, VERSION_PARAM} from './constants';\n\n\nexport const plugins = {\n CLEAN_URL_TRACKER: 1,\n EVENT_TRACKER: 2,\n IMPRESSION_TRACKER: 3,\n MEDIA_QUERY_TRACKER: 4,\n OUTBOUND_FORM_TRACKER: 5,\n OUTBOUND_LINK_TRACKER: 6,\n PAGE_VISIBILITY_TRACKER: 7,\n SOCIAL_WIDGET_TRACKER: 8,\n URL_CHANGE_TRACKER: 9,\n MAX_SCROLL_TRACKER: 10,\n};\n\n\nconst PLUGIN_COUNT = Object.keys(plugins).length;\n\n\n/**\n * Tracks the usage of the passed plugin by encoding a value into a usage\n * string sent with all hits for the passed tracker.\n * @param {!Tracker} tracker The analytics.js tracker object.\n * @param {number} plugin The plugin enum.\n */\nexport function trackUsage(tracker, plugin) {\n trackVersion(tracker);\n trackPlugin(tracker, plugin);\n}\n\n\n/**\n * Converts a hexadecimal string to a binary string.\n * @param {string} hex A hexadecimal numeric string.\n * @return {string} a binary numeric string.\n */\nfunction convertHexToBin(hex) {\n return parseInt(hex || '0', 16).toString(2);\n}\n\n\n/**\n * Converts a binary string to a hexadecimal string.\n * @param {string} bin A binary numeric string.\n * @return {string} a hexadecimal numeric string.\n */\nfunction convertBinToHex(bin) {\n return parseInt(bin || '0', 2).toString(16);\n}\n\n\n/**\n * Adds leading zeros to a string if it's less than a minimum length.\n * @param {string} str A string to pad.\n * @param {number} len The minimum length of the string\n * @return {string} The padded string.\n */\nfunction padZeros(str, len) {\n if (str.length < len) {\n let toAdd = len - str.length;\n while (toAdd) {\n str = '0' + str;\n toAdd--;\n }\n }\n return str;\n}\n\n\n/**\n * Accepts a binary numeric string and flips the digit from 0 to 1 at the\n * specified index.\n * @param {string} str The binary numeric string.\n * @param {number} index The index to flip the bit.\n * @return {string} The new binary string with the bit flipped on\n */\nfunction flipBitOn(str, index) {\n return str.substr(0, index) + 1 + str.substr(index + 1);\n}\n\n\n/**\n * Accepts a tracker and a plugin index and flips the bit at the specified\n * index on the tracker's usage parameter.\n * @param {Object} tracker An analytics.js tracker.\n * @param {number} pluginIndex The index of the plugin in the global list.\n */\nfunction trackPlugin(tracker, pluginIndex) {\n const usageHex = tracker.get('&' + USAGE_PARAM);\n let usageBin = padZeros(convertHexToBin(usageHex), PLUGIN_COUNT);\n\n // Flip the bit of the plugin being tracked.\n usageBin = flipBitOn(usageBin, PLUGIN_COUNT - pluginIndex);\n\n // Stores the modified usage string back on the tracker.\n tracker.set('&' + USAGE_PARAM, convertBinToHex(usageBin));\n}\n\n\n/**\n * Accepts a tracker and adds the current version to the version param.\n * @param {Object} tracker An analytics.js tracker.\n */\nfunction trackVersion(tracker) {\n tracker.set('&' + VERSION_PARAM, VERSION);\n}\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport {parseUrl} from 'dom-utils';\nimport {NULL_DIMENSION} from '../constants';\nimport MethodChain from '../method-chain';\nimport provide from '../provide';\nimport {plugins, trackUsage} from '../usage';\nimport {assign} from '../utilities';\n\n\n/**\n * Class for the `cleanUrlTracker` analytics.js plugin.\n * @implements {CleanUrlTrackerPublicInterface}\n */\nclass CleanUrlTracker {\n /**\n * Registers clean URL tracking on a tracker object. The clean URL tracker\n * removes query parameters from the page value reported to Google Analytics.\n * It also helps to prevent tracking similar URLs, e.g. sometimes ending a\n * URL with a slash and sometimes not.\n * @param {!Tracker} tracker Passed internally by analytics.js\n * @param {?CleanUrlTrackerOpts} opts Passed by the require command.\n */\n constructor(tracker, opts) {\n trackUsage(tracker, plugins.CLEAN_URL_TRACKER);\n\n /** @type {CleanUrlTrackerOpts} */\n const defaultOpts = {\n // stripQuery: undefined,\n // queryParamsWhitelist: undefined,\n // queryDimensionIndex: undefined,\n // indexFilename: undefined,\n // trailingSlash: undefined,\n // urlFilter: undefined,\n };\n this.opts = /** @type {CleanUrlTrackerOpts} */ (assign(defaultOpts, opts));\n\n this.tracker = tracker;\n\n /** @type {string|null} */\n this.queryDimension = this.opts.stripQuery &&\n this.opts.queryDimensionIndex ?\n `dimension${this.opts.queryDimensionIndex}` : null;\n\n // Binds methods to `this`.\n this.trackerGetOverride = this.trackerGetOverride.bind(this);\n this.buildHitTaskOverride = this.buildHitTaskOverride.bind(this);\n\n // Override built-in tracker method to watch for changes.\n MethodChain.add(tracker, 'get', this.trackerGetOverride);\n MethodChain.add(tracker, 'buildHitTask', this.buildHitTaskOverride);\n }\n\n /**\n * Ensures reads of the tracker object by other plugins always see the\n * \"cleaned\" versions of all URL fields.\n * @param {function(string):*} originalMethod A reference to the overridden\n * method.\n * @return {function(string):*}\n */\n trackerGetOverride(originalMethod) {\n return (field) => {\n if (field == 'page' || field == this.queryDimension) {\n const fieldsObj = /** @type {!FieldsObj} */ ({\n location: originalMethod('location'),\n page: originalMethod('page'),\n });\n const cleanedFieldsObj = this.cleanUrlFields(fieldsObj);\n return cleanedFieldsObj[field];\n } else {\n return originalMethod(field);\n }\n };\n }\n\n /**\n * Cleans URL fields passed in a send command.\n * @param {function(!Model)} originalMethod A reference to the\n * overridden method.\n * @return {function(!Model)}\n */\n buildHitTaskOverride(originalMethod) {\n return (model) => {\n const cleanedFieldsObj = this.cleanUrlFields({\n location: model.get('location'),\n page: model.get('page'),\n });\n model.set(cleanedFieldsObj, null, true);\n originalMethod(model);\n };\n }\n\n /**\n * Accepts of fields object containing URL fields and returns a new\n * fields object with the URLs \"cleaned\" according to the tracker options.\n * @param {!FieldsObj} fieldsObj\n * @return {!FieldsObj}\n */\n cleanUrlFields(fieldsObj) {\n const url = parseUrl(\n /** @type {string} */ (fieldsObj.page || fieldsObj.location));\n\n let pathname = url.pathname;\n\n // If an index filename was provided, remove it if it appears at the end\n // of the URL.\n if (this.opts.indexFilename) {\n const parts = pathname.split('/');\n if (this.opts.indexFilename == parts[parts.length - 1]) {\n parts[parts.length - 1] = '';\n pathname = parts.join('/');\n }\n }\n\n // Ensure the URL ends with or doesn't end with slash based on the\n // `trailingSlash` option. Note that filename URLs should never contain\n // a trailing slash.\n if (this.opts.trailingSlash == 'remove') {\n pathname = pathname.replace(/\\/+$/, '');\n } else if (this.opts.trailingSlash == 'add') {\n const isFilename = /\\.\\w+$/.test(pathname);\n if (!isFilename && pathname.substr(-1) != '/') {\n pathname = pathname + '/';\n }\n }\n\n /** @type {!FieldsObj} */\n const cleanedFieldsObj = {\n page: pathname + (this.opts.stripQuery ?\n this.stripNonWhitelistedQueryParams(url.search) : url.search),\n };\n if (fieldsObj.location) {\n cleanedFieldsObj.location = fieldsObj.location;\n }\n if (this.queryDimension) {\n cleanedFieldsObj[this.queryDimension] =\n url.search.slice(1) || NULL_DIMENSION;\n }\n\n // Apply the `urlFieldsFilter()` option if passed.\n if (typeof this.opts.urlFieldsFilter == 'function') {\n /** @type {!FieldsObj} */\n const userCleanedFieldsObj =\n this.opts.urlFieldsFilter(cleanedFieldsObj, parseUrl);\n\n // Ensure only the URL fields are returned.\n const returnValue = {\n page: userCleanedFieldsObj.page,\n location: userCleanedFieldsObj.location,\n };\n if (this.queryDimension) {\n returnValue[this.queryDimension] =\n userCleanedFieldsObj[this.queryDimension];\n }\n return returnValue;\n } else {\n return cleanedFieldsObj;\n }\n }\n\n /**\n * Accpets a raw URL search string and returns a new search string containing\n * only the site search params (if they exist).\n * @param {string} searchString The URL search string (starting with '?').\n * @return {string} The query string\n */\n stripNonWhitelistedQueryParams(searchString) {\n if (Array.isArray(this.opts.queryParamsWhitelist)) {\n const foundParams = [];\n searchString.slice(1).split('&').forEach((kv) => {\n const [key, value] = kv.split('=');\n if (this.opts.queryParamsWhitelist.indexOf(key) > -1 && value) {\n foundParams.push([key, value]);\n }\n });\n\n return foundParams.length ?\n '?' + foundParams.map((kv) => kv.join('=')).join('&') : '';\n } else {\n return '';\n }\n }\n\n /**\n * Restores all overridden tasks and methods.\n */\n remove() {\n MethodChain.remove(this.tracker, 'get', this.trackerGetOverride);\n MethodChain.remove(this.tracker, 'buildHitTask', this.buildHitTaskOverride);\n }\n}\n\n\nprovide('cleanUrlTracker', CleanUrlTracker);\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport {delegate} from 'dom-utils';\nimport provide from '../provide';\nimport {plugins, trackUsage} from '../usage';\nimport {assign, createFieldsObj, getAttributeFields} from '../utilities';\n\n\n/**\n * Class for the `eventTracker` analytics.js plugin.\n * @implements {EventTrackerPublicInterface}\n */\nclass EventTracker {\n /**\n * Registers declarative event tracking.\n * @param {!Tracker} tracker Passed internally by analytics.js\n * @param {?EventTrackerOpts} opts Passed by the require command.\n */\n constructor(tracker, opts) {\n trackUsage(tracker, plugins.EVENT_TRACKER);\n\n // Feature detects to prevent errors in unsupporting browsers.\n if (!window.addEventListener) return;\n\n /** @type {EventTrackerOpts} */\n const defaultOpts = {\n events: ['click'],\n fieldsObj: {},\n attributePrefix: 'ga-',\n // hitFilter: undefined,\n };\n\n this.opts = /** @type {EventTrackerOpts} */ (assign(defaultOpts, opts));\n\n this.tracker = tracker;\n\n // Binds methods.\n this.handleEvents = this.handleEvents.bind(this);\n\n const selector = '[' + this.opts.attributePrefix + 'on]';\n\n // Creates a mapping of events to their delegates\n this.delegates = {};\n this.opts.events.forEach((event) => {\n this.delegates[event] = delegate(document, event, selector,\n this.handleEvents, {composed: true, useCapture: true});\n });\n }\n\n /**\n * Handles all events on elements with event attributes.\n * @param {Event} event The DOM click event.\n * @param {Element} element The delegated DOM element target.\n */\n handleEvents(event, element) {\n const prefix = this.opts.attributePrefix;\n const events = element.getAttribute(prefix + 'on').split(/\\s*,\\s*/);\n\n // Ensures the type matches one of the events specified on the element.\n if (events.indexOf(event.type) < 0) return;\n\n /** @type {FieldsObj} */\n const defaultFields = {transport: 'beacon'};\n const attributeFields = getAttributeFields(element, prefix);\n const userFields = assign({}, this.opts.fieldsObj, attributeFields);\n const hitType = attributeFields.hitType || 'event';\n\n this.tracker.send(hitType, createFieldsObj(defaultFields,\n userFields, this.tracker, this.opts.hitFilter, element, event));\n }\n\n /**\n * Removes all event listeners and instance properties.\n */\n remove() {\n Object.keys(this.delegates).forEach((key) => {\n this.delegates[key].destroy();\n });\n }\n}\n\n\nprovide('eventTracker', EventTracker);\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport provide from '../provide';\nimport {plugins, trackUsage} from '../usage';\nimport {assign, createFieldsObj,\n domReady, getAttributeFields} from '../utilities';\n\n\n/**\n * Class for the `impressionTracker` analytics.js plugin.\n * @implements {ImpressionTrackerPublicInterface}\n */\nclass ImpressionTracker {\n /**\n * Registers impression tracking.\n * @param {!Tracker} tracker Passed internally by analytics.js\n * @param {?ImpressionTrackerOpts} opts Passed by the require command.\n */\n constructor(tracker, opts) {\n trackUsage(tracker, plugins.IMPRESSION_TRACKER);\n\n // Feature detects to prevent errors in unsupporting browsers.\n if (!(window.IntersectionObserver && window.MutationObserver)) return;\n\n /** type {ImpressionTrackerOpts} */\n const defaultOptions = {\n // elements: undefined,\n rootMargin: '0px',\n fieldsObj: {},\n attributePrefix: 'ga-',\n // hitFilter: undefined,\n };\n\n this.opts = /** type {ImpressionTrackerOpts} */ (\n assign(defaultOptions, opts));\n\n this.tracker = tracker;\n\n // Binds methods.\n this.handleDomMutations = this.handleDomMutations.bind(this);\n this.handleIntersectionChanges = this.handleIntersectionChanges.bind(this);\n this.handleDomElementAdded = this.handleDomElementAdded.bind(this);\n this.handleDomElementRemoved = this.handleDomElementRemoved.bind(this);\n\n /** @type {MutationObserver} */\n this.mutationObserver = null;\n\n // The primary list of elements to observe. Each item contains the\n // element ID, threshold, and whether it's currently in-view.\n this.items = [];\n\n // A map of element IDs in the `items` array to DOM elements in the\n // document. The presence of a key indicates that the element ID is in the\n // `items` array, and the presence of an element value indicates that the\n // element is in the DOM.\n this.elementMap = {};\n\n // A map of threshold values. Each threshold is mapped to an\n // IntersectionObserver instance specific to that threshold.\n this.thresholdMap = {};\n\n // Once the DOM is ready, start observing for changes (if present).\n domReady(() => {\n if (this.opts.elements) {\n this.observeElements(this.opts.elements);\n }\n });\n }\n\n /**\n * Starts observing the passed elements for impressions.\n * @param {Array} elements\n */\n observeElements(elements) {\n const data = this.deriveDataFromElements(elements);\n\n // Merge the new data with the data already on the plugin instance.\n this.items = this.items.concat(data.items);\n this.elementMap = assign({}, data.elementMap, this.elementMap);\n this.thresholdMap = assign({}, data.thresholdMap, this.thresholdMap);\n\n // Observe each new item.\n data.items.forEach((item) => {\n const observer = this.thresholdMap[item.threshold] =\n (this.thresholdMap[item.threshold] || new IntersectionObserver(\n this.handleIntersectionChanges, {\n rootMargin: this.opts.rootMargin,\n threshold: [+item.threshold],\n }));\n\n const element = this.elementMap[item.id] ||\n (this.elementMap[item.id] = document.getElementById(item.id));\n\n if (element) {\n observer.observe(element);\n }\n });\n\n if (!this.mutationObserver) {\n this.mutationObserver = new MutationObserver(this.handleDomMutations);\n this.mutationObserver.observe(document.body, {\n childList: true,\n subtree: true,\n });\n }\n\n // TODO(philipwalton): Remove temporary hack to force a new frame\n // immediately after adding observers.\n // https://bugs.chromium.org/p/chromium/issues/detail?id=612323\n requestAnimationFrame(() => {});\n }\n\n /**\n * Stops observing the passed elements for impressions.\n * @param {Array} elements\n * @return {undefined}\n */\n unobserveElements(elements) {\n const itemsToKeep = [];\n const itemsToRemove = [];\n\n this.items.forEach((item) => {\n const itemInItems = elements.some((element) => {\n const itemToRemove = getItemFromElement(element);\n return itemToRemove.id === item.id &&\n itemToRemove.threshold === item.threshold &&\n itemToRemove.trackFirstImpressionOnly ===\n item.trackFirstImpressionOnly;\n });\n if (itemInItems) {\n itemsToRemove.push(item);\n } else {\n itemsToKeep.push(item);\n }\n });\n\n // If there are no items to keep, run the `unobserveAllElements` logic.\n if (!itemsToKeep.length) {\n this.unobserveAllElements();\n } else {\n const dataToKeep = this.deriveDataFromElements(itemsToKeep);\n const dataToRemove = this.deriveDataFromElements(itemsToRemove);\n\n this.items = dataToKeep.items;\n this.elementMap = dataToKeep.elementMap;\n this.thresholdMap = dataToKeep.thresholdMap;\n\n // Unobserve removed elements.\n itemsToRemove.forEach((item) => {\n if (!dataToKeep.elementMap[item.id]) {\n const observer = dataToRemove.thresholdMap[item.threshold];\n const element = dataToRemove.elementMap[item.id];\n\n if (element) {\n observer.unobserve(element);\n }\n\n // Disconnect unneeded threshold observers.\n if (!dataToKeep.thresholdMap[item.threshold]) {\n dataToRemove.thresholdMap[item.threshold].disconnect();\n }\n }\n });\n }\n }\n\n /**\n * Stops observing all currently observed elements.\n */\n unobserveAllElements() {\n Object.keys(this.thresholdMap).forEach((key) => {\n this.thresholdMap[key].disconnect();\n });\n\n this.mutationObserver.disconnect();\n this.mutationObserver = null;\n\n this.items = [];\n this.elementMap = {};\n this.thresholdMap = {};\n }\n\n /**\n * Loops through each of the passed elements and creates a map of element IDs,\n * threshold values, and a list of \"items\" (which contains each element's\n * `threshold` and `trackFirstImpressionOnly` property).\n * @param {Array} elements A list of elements to derive item data from.\n * @return {Object} An object with the properties `items`, `elementMap`\n * and `threshold`.\n */\n deriveDataFromElements(elements) {\n const items = [];\n const thresholdMap = {};\n const elementMap = {};\n\n if (elements.length) {\n elements.forEach((element) => {\n const item = getItemFromElement(element);\n\n items.push(item);\n elementMap[item.id] = this.elementMap[item.id] || null;\n thresholdMap[item.threshold] =\n this.thresholdMap[item.threshold] || null;\n });\n }\n\n return {items, elementMap, thresholdMap};\n }\n\n /**\n * Handles nodes being added or removed from the DOM. This function is passed\n * as the callback to `this.mutationObserver`.\n * @param {Array} mutations A list of `MutationRecord` instances\n */\n handleDomMutations(mutations) {\n for (let i = 0, mutation; mutation = mutations[i]; i++) {\n // Handles removed elements.\n for (let k = 0, removedEl; removedEl = mutation.removedNodes[k]; k++) {\n this.walkNodeTree(removedEl, this.handleDomElementRemoved);\n }\n // Handles added elements.\n for (let j = 0, addedEl; addedEl = mutation.addedNodes[j]; j++) {\n this.walkNodeTree(addedEl, this.handleDomElementAdded);\n }\n }\n }\n\n /**\n * Iterates through all descendents of a DOM node and invokes the passed\n * callback if any of them match an elememt in `elementMap`.\n * @param {Node} node The DOM node to walk.\n * @param {Function} callback A function to be invoked if a match is found.\n */\n walkNodeTree(node, callback) {\n if (node.nodeType == 1 && node.id in this.elementMap) {\n callback(node.id);\n }\n for (let i = 0, child; child = node.childNodes[i]; i++) {\n this.walkNodeTree(child, callback);\n }\n }\n\n /**\n * Handles intersection changes. This function is passed as the callback to\n * `this.intersectionObserver`\n * @param {Array} records A list of `IntersectionObserverEntry` records.\n */\n handleIntersectionChanges(records) {\n const itemsToRemove = [];\n for (let i = 0, record; record = records[i]; i++) {\n for (let j = 0, item; item = this.items[j]; j++) {\n if (record.target.id !== item.id) continue;\n\n if (isTargetVisible(item.threshold, record)) {\n this.handleImpression(item.id);\n\n if (item.trackFirstImpressionOnly) {\n itemsToRemove.push(item);\n }\n }\n }\n }\n if (itemsToRemove.length) {\n this.unobserveElements(itemsToRemove);\n }\n }\n\n /**\n * Sends a hit to Google Analytics with the impression data.\n * @param {string} id The ID of the element making the impression.\n */\n handleImpression(id) {\n const element = document.getElementById(id);\n\n /** @type {FieldsObj} */\n const defaultFields = {\n transport: 'beacon',\n eventCategory: 'Viewport',\n eventAction: 'impression',\n eventLabel: id,\n nonInteraction: true,\n };\n\n /** @type {FieldsObj} */\n const userFields = assign({}, this.opts.fieldsObj,\n getAttributeFields(element, this.opts.attributePrefix));\n\n this.tracker.send('event', createFieldsObj(defaultFields,\n userFields, this.tracker, this.opts.hitFilter, element));\n }\n\n /**\n * Handles an element in the items array being added to the DOM.\n * @param {string} id The ID of the element that was added.\n */\n handleDomElementAdded(id) {\n const element = this.elementMap[id] = document.getElementById(id);\n this.items.forEach((item) => {\n if (id == item.id) {\n this.thresholdMap[item.threshold].observe(element);\n }\n });\n }\n\n /**\n * Handles an element currently being observed for intersections being\n * removed from the DOM.\n * @param {string} id The ID of the element that was removed.\n */\n handleDomElementRemoved(id) {\n const element = this.elementMap[id];\n this.items.forEach((item) => {\n if (id == item.id) {\n this.thresholdMap[item.threshold].unobserve(element);\n }\n });\n\n this.elementMap[id] = null;\n }\n\n /**\n * Removes all listeners and observers.\n * @private\n */\n remove() {\n this.unobserveAllElements();\n }\n}\n\n\nprovide('impressionTracker', ImpressionTracker);\n\n\n/**\n * Detects whether or not an intersection record represents a visible target\n * given a particular threshold.\n * @param {number} threshold The threshold the target is visible above.\n * @param {IntersectionObserverEntry} record The most recent record entry.\n * @return {boolean} True if the target is visible.\n */\nfunction isTargetVisible(threshold, record) {\n if (threshold === 0) {\n const i = record.intersectionRect;\n return i.top > 0 || i.bottom > 0 || i.left > 0 || i.right > 0;\n } else {\n return record.intersectionRatio >= threshold;\n }\n}\n\n\n/**\n * Creates an item by merging the passed element with the item defaults.\n * If the passed element is just a string, that string is treated as\n * the item ID.\n * @param {!ImpressionTrackerElementsItem|string} element The element to\n * convert to an item.\n * @return {!ImpressionTrackerElementsItem} The item object.\n */\nfunction getItemFromElement(element) {\n /** @type {ImpressionTrackerElementsItem} */\n const defaultOpts = {\n threshold: 0,\n trackFirstImpressionOnly: true,\n };\n\n if (typeof element == 'string') {\n element = /** @type {!ImpressionTrackerElementsItem} */ ({id: element});\n }\n\n return assign(defaultOpts, element);\n}\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * An simple reimplementation of the native Node.js EventEmitter class.\n * The goal of this implementation is to be as small as possible.\n */\nexport default class EventEmitter {\n /**\n * Creates the event registry.\n */\n constructor() {\n this.registry_ = {};\n }\n\n /**\n * Adds a handler function to the registry for the passed event.\n * @param {string} event The event name.\n * @param {!Function} fn The handler to be invoked when the passed\n * event is emitted.\n */\n on(event, fn) {\n this.getRegistry_(event).push(fn);\n }\n\n /**\n * Removes a handler function from the registry for the passed event.\n * @param {string=} event The event name.\n * @param {Function=} fn The handler to be removed.\n */\n off(event = undefined, fn = undefined) {\n if (event && fn) {\n const eventRegistry = this.getRegistry_(event);\n const handlerIndex = eventRegistry.indexOf(fn);\n if (handlerIndex > -1) {\n eventRegistry.splice(handlerIndex, 1);\n }\n } else {\n this.registry_ = {};\n }\n }\n\n /**\n * Runs all registered handlers for the passed event with the optional args.\n * @param {string} event The event name.\n * @param {...*} args The arguments to be passed to the handler.\n */\n emit(event, ...args) {\n this.getRegistry_(event).forEach((fn) => fn(...args));\n }\n\n /**\n * Returns the total number of event handlers currently registered.\n * @return {number}\n */\n getEventCount() {\n let eventCount = 0;\n Object.keys(this.registry_).forEach((event) => {\n eventCount += this.getRegistry_(event).length;\n });\n return eventCount;\n }\n\n /**\n * Returns an array of handlers associated with the passed event name.\n * If no handlers have been registered, an empty array is returned.\n * @private\n * @param {string} event The event name.\n * @return {!Array} An array of handler functions.\n */\n getRegistry_(event) {\n return this.registry_[event] = (this.registry_[event] || []);\n }\n}\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport EventEmitter from './event-emitter';\nimport {assign} from './utilities';\n\n\nconst AUTOTRACK_PREFIX = 'autotrack';\nconst instances = {};\nlet isListening = false;\n\n\n/** @type {boolean|undefined} */\nlet browserSupportsLocalStorage;\n\n\n/**\n * A storage object to simplify interacting with localStorage.\n */\nexport default class Store extends EventEmitter {\n /**\n * Gets an existing instance for the passed arguements or creates a new\n * instance if one doesn't exist.\n * @param {string} trackingId The tracking ID for the GA property.\n * @param {string} namespace A namespace unique to this store.\n * @param {Object=} defaults An optional object of key/value defaults.\n * @return {Store} The Store instance.\n */\n static getOrCreate(trackingId, namespace, defaults) {\n const key = [AUTOTRACK_PREFIX, trackingId, namespace].join(':');\n\n // Don't create multiple instances for the same tracking Id and namespace.\n if (!instances[key]) {\n instances[key] = new Store(key, defaults);\n if (!isListening) initStorageListener();\n }\n return instances[key];\n }\n\n /**\n * Returns true if the browser supports and can successfully write to\n * localStorage. The results is cached so this method can be invoked many\n * times with no extra performance cost.\n * @private\n * @return {boolean}\n */\n static isSupported_() {\n if (browserSupportsLocalStorage != null) {\n return browserSupportsLocalStorage;\n }\n\n try {\n window.localStorage.setItem(AUTOTRACK_PREFIX, AUTOTRACK_PREFIX);\n window.localStorage.removeItem(AUTOTRACK_PREFIX);\n browserSupportsLocalStorage = true;\n } catch (err) {\n browserSupportsLocalStorage = false;\n }\n return browserSupportsLocalStorage;\n }\n\n /**\n * Wraps the native localStorage method for each stubbing in tests.\n * @private\n * @param {string} key The store key.\n * @return {string|null} The stored value.\n */\n static get_(key) {\n return window.localStorage.getItem(key);\n }\n\n /**\n * Wraps the native localStorage method for each stubbing in tests.\n * @private\n * @param {string} key The store key.\n * @param {string} value The value to store.\n */\n static set_(key, value) {\n window.localStorage.setItem(key, value);\n }\n\n /**\n * Wraps the native localStorage method for each stubbing in tests.\n * @private\n * @param {string} key The store key.\n */\n static clear_(key) {\n window.localStorage.removeItem(key);\n }\n\n /**\n * @param {string} key A key unique to this store.\n * @param {Object=} defaults An optional object of key/value defaults.\n */\n constructor(key, defaults = {}) {\n super();\n this.key_ = key;\n this.defaults_ = defaults;\n\n /** @type {?Object} */\n this.cache_ = null; // Will be set after the first get.\n }\n\n /**\n * Gets the data stored in localStorage for this store. If the cache is\n * already populated, return it as is (since it's always kept up-to-date\n * and in sync with activity in other windows via the `storage` event).\n * TODO(philipwalton): Implement schema migrations if/when a new\n * schema version is introduced.\n * @return {!Object} The stored data merged with the defaults.\n */\n get() {\n if (this.cache_) {\n return this.cache_;\n } else {\n if (Store.isSupported_()) {\n try {\n this.cache_ = parse(Store.get_(this.key_));\n } catch(err) {\n // Do nothing.\n }\n }\n return this.cache_ = assign({}, this.defaults_, this.cache_);\n }\n }\n\n /**\n * Saves the passed data object to localStorage,\n * merging it with the existing data.\n * @param {Object} newData The data to save.\n */\n set(newData) {\n this.cache_ = assign({}, this.defaults_, this.cache_, newData);\n\n if (Store.isSupported_()) {\n try {\n Store.set_(this.key_, JSON.stringify(this.cache_));\n } catch(err) {\n // Do nothing.\n }\n }\n }\n\n /**\n * Clears the data in localStorage for the current store.\n */\n clear() {\n this.cache_ = {};\n if (Store.isSupported_()) {\n try {\n Store.clear_(this.key_);\n } catch(err) {\n // Do nothing.\n }\n }\n }\n\n /**\n * Removes the store instance for the global instances map. If this is the\n * last store instance, the storage listener is also removed.\n * Note: this does not erase the stored data. Use `clear()` for that.\n */\n destroy() {\n delete instances[this.key_];\n if (!Object.keys(instances).length) {\n removeStorageListener();\n }\n }\n}\n\n\n/**\n * Adds a single storage event listener and flips the global `isListening`\n * flag so multiple events aren't added.\n */\nfunction initStorageListener() {\n window.addEventListener('storage', storageListener);\n isListening = true;\n}\n\n\n/**\n * Removes the storage event listener and flips the global `isListening`\n * flag so it can be re-added later.\n */\nfunction removeStorageListener() {\n window.removeEventListener('storage', storageListener);\n isListening = false;\n}\n\n\n/**\n * The global storage event listener.\n * @param {!Event} event The DOM event.\n */\nfunction storageListener(event) {\n const store = instances[event.key];\n if (store) {\n const oldData = assign({}, store.defaults_, parse(event.oldValue));\n const newData = assign({}, store.defaults_, parse(event.newValue));\n\n store.cache_ = newData;\n store.emit('externalSet', newData, oldData);\n }\n}\n\n\n/**\n * Parses a source string as JSON\n * @param {string|null} source\n * @return {!Object} The JSON object.\n */\nfunction parse(source) {\n let data = {};\n if (source) {\n try {\n data = /** @type {!Object} */ (JSON.parse(source));\n } catch(err) {\n // Do nothing.\n }\n }\n return data;\n}\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport MethodChain from './method-chain';\nimport Store from './store';\nimport {now, uuid} from './utilities';\n\n\nconst SECONDS = 1000;\nconst MINUTES = 60 * SECONDS;\n\n\nconst instances = {};\n\n\n/**\n * A session management class that helps track session boundaries\n * across multiple open tabs/windows.\n */\nexport default class Session {\n /**\n * Gets an existing instance for the passed arguments or creates a new\n * instance if one doesn't exist.\n * @param {!Tracker} tracker An analytics.js tracker object.\n * @param {number} timeout The session timeout (in minutes). This value\n * should match what's set in the \"Session settings\" section of the\n * Google Analytics admin.\n * @param {string=} timeZone The optional IANA time zone of the view. This\n * value should match what's set in the \"View settings\" section of the\n * Google Analytics admin. (Note: this assumes all views for the property\n * use the same time zone. If that's not true, it's better not to use\n * this feature).\n * @return {Session} The Session instance.\n */\n static getOrCreate(tracker, timeout, timeZone) {\n // Don't create multiple instances for the same property.\n const trackingId = tracker.get('trackingId');\n if (instances[trackingId]) {\n return instances[trackingId];\n } else {\n return instances[trackingId] = new Session(tracker, timeout, timeZone);\n }\n }\n\n /**\n * @param {!Tracker} tracker An analytics.js tracker object.\n * @param {number} timeout The session timeout (in minutes). This value\n * should match what's set in the \"Session settings\" section of the\n * Google Analytics admin.\n * @param {string=} timeZone The optional IANA time zone of the view. This\n * value should match what's set in the \"View settings\" section of the\n * Google Analytics admin. (Note: this assumes all views for the property\n * use the same time zone. If that's not true, it's better not to use\n * this feature).\n */\n constructor(tracker, timeout, timeZone) {\n this.tracker = tracker;\n this.timeout = timeout || Session.DEFAULT_TIMEOUT;\n this.timeZone = timeZone;\n\n // Binds methods.\n this.sendHitTaskOverride = this.sendHitTaskOverride.bind(this);\n\n // Overrides into the trackers sendHitTask method.\n MethodChain.add(tracker, 'sendHitTask', this.sendHitTaskOverride);\n\n // Some browser doesn't support various features of the\n // `Intl.DateTimeFormat` API, so we have to try/catch it. Consequently,\n // this allows us to assume the presence of `this.dateTimeFormatter` means\n // it works in the current browser.\n try {\n this.dateTimeFormatter =\n new Intl.DateTimeFormat('en-US', {timeZone: this.timeZone});\n } catch(err) {\n // Do nothing.\n }\n\n /** @type {SessionStoreData} */\n const defaultProps = {\n hitTime: 0,\n isExpired: false,\n };\n this.store = Store.getOrCreate(\n tracker.get('trackingId'), 'session', defaultProps);\n\n // Ensure the session has an ID.\n if (!this.store.get().id) {\n this.store.set(/** @type {SessionStoreData} */ ({id: uuid()}));\n }\n }\n\n /**\n * Returns the ID of the current session.\n * @return {string}\n */\n getId() {\n return this.store.get().id;\n }\n\n /**\n * Accepts a session ID and returns true if the specified session has\n * evidentially expired. A session can expire for two reasons:\n * - More than 30 minutes has elapsed since the previous hit\n * was sent (The 30 minutes number is the Google Analytics default, but\n * it can be modified in GA admin \"Session settings\").\n * - A new day has started since the previous hit, in the\n * specified time zone (should correspond to the time zone of the\n * property's views).\n *\n * Note: since real session boundaries are determined at processing time,\n * this is just a best guess rather than a source of truth.\n *\n * @param {string} id The ID of a session to check for expiry.\n * @return {boolean} True if the session has not exp\n */\n isExpired(id = this.getId()) {\n // If a session ID is passed and it doesn't match the current ID,\n // assume it's from an expired session. If no ID is passed, assume the ID\n // of the current session.\n if (id != this.getId()) return true;\n\n /** @type {SessionStoreData} */\n const sessionData = this.store.get();\n\n // `isExpired` will be `true` if the sessionControl field was set to\n // 'end' on the previous hit.\n if (sessionData.isExpired) return true;\n\n const oldHitTime = sessionData.hitTime;\n\n // Only consider a session expired if previous hit time data exists, and\n // the previous hit time is greater than that session timeout period or\n // the hits occurred on different days in the session timezone.\n if (oldHitTime) {\n const currentDate = new Date();\n const oldHitDate = new Date(oldHitTime);\n if (currentDate - oldHitDate > (this.timeout * MINUTES) ||\n this.datesAreDifferentInTimezone(currentDate, oldHitDate)) {\n return true;\n }\n }\n\n // For all other cases return false.\n return false;\n }\n\n /**\n * Returns true if (and only if) the timezone date formatting is supported\n * in the current browser and if the two dates are definitively not the\n * same date in the session timezone. Anything short of this returns false.\n * @param {!Date} d1\n * @param {!Date} d2\n * @return {boolean}\n */\n datesAreDifferentInTimezone(d1, d2) {\n if (!this.dateTimeFormatter) {\n return false;\n } else {\n return this.dateTimeFormatter.format(d1)\n != this.dateTimeFormatter.format(d2);\n }\n }\n\n /**\n * Keeps track of when the previous hit was sent to determine if a session\n * has expired. Also inspects the `sessionControl` field to handles\n * expiration accordingly.\n * @param {function(!Model)} originalMethod A reference to the overridden\n * method.\n * @return {function(!Model)}\n */\n sendHitTaskOverride(originalMethod) {\n return (model) => {\n originalMethod(model);\n\n const sessionControl = model.get('sessionControl');\n const sessionWillStart = sessionControl == 'start' || this.isExpired();\n const sessionWillEnd = sessionControl == 'end';\n\n /** @type {SessionStoreData} */\n const sessionData = this.store.get();\n sessionData.hitTime = now();\n if (sessionWillStart) {\n sessionData.isExpired = false;\n sessionData.id = uuid();\n }\n if (sessionWillEnd) {\n sessionData.isExpired = true;\n }\n this.store.set(sessionData);\n };\n }\n\n /**\n * Restores the tracker's original `sendHitTask` to the state before\n * session control was initialized and removes this instance from the global\n * store.\n */\n destroy() {\n MethodChain.remove(this.tracker, 'sendHitTask', this.sendHitTaskOverride);\n this.store.destroy();\n delete instances[this.tracker.get('trackingId')];\n }\n}\n\n\nSession.DEFAULT_TIMEOUT = 30; // minutes\n","/**\n * Copyright 2017 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport {parseUrl} from 'dom-utils';\nimport MethodChain from '../method-chain';\nimport provide from '../provide';\nimport Session from '../session';\nimport Store from '../store';\nimport {plugins, trackUsage} from '../usage';\nimport {assign, createFieldsObj, debounce, isObject} from '../utilities';\n\n\n/**\n * Class for the `maxScrollQueryTracker` analytics.js plugin.\n * @implements {MaxScrollTrackerPublicInterface}\n */\nclass MaxScrollTracker {\n /**\n * Registers outbound link tracking on tracker object.\n * @param {!Tracker} tracker Passed internally by analytics.js\n * @param {?Object} opts Passed by the require command.\n */\n constructor(tracker, opts) {\n trackUsage(tracker, plugins.MAX_SCROLL_TRACKER);\n\n // Feature detects to prevent errors in unsupporting browsers.\n if (!window.addEventListener) return;\n\n /** @type {MaxScrollTrackerOpts} */\n const defaultOpts = {\n increaseThreshold: 20,\n sessionTimeout: Session.DEFAULT_TIMEOUT,\n // timeZone: undefined,\n // maxScrollMetricIndex: undefined,\n fieldsObj: {},\n // hitFilter: undefined\n };\n\n this.opts = /** @type {MaxScrollTrackerOpts} */ (\n assign(defaultOpts, opts));\n\n this.tracker = tracker;\n this.pagePath = this.getPagePath();\n\n // Binds methods to `this`.\n this.handleScroll = debounce(this.handleScroll.bind(this), 500);\n this.trackerSetOverride = this.trackerSetOverride.bind(this);\n\n // Creates the store and binds storage change events.\n this.store = Store.getOrCreate(\n tracker.get('trackingId'), 'plugins/max-scroll-tracker');\n\n // Creates the session and binds session events.\n this.session = Session.getOrCreate(\n tracker, this.opts.sessionTimeout, this.opts.timeZone);\n\n // Override the built-in tracker.set method to watch for changes.\n MethodChain.add(tracker, 'set', this.trackerSetOverride);\n\n this.listenForMaxScrollChanges();\n }\n\n\n /**\n * Adds a scroll event listener if the max scroll percentage for the\n * current page isn't already at 100%.\n */\n listenForMaxScrollChanges() {\n const maxScrollPercentage = this.getMaxScrollPercentageForCurrentPage();\n if (maxScrollPercentage < 100) {\n window.addEventListener('scroll', this.handleScroll);\n }\n }\n\n\n /**\n * Removes an added scroll listener.\n */\n stopListeningForMaxScrollChanges() {\n window.removeEventListener('scroll', this.handleScroll);\n }\n\n\n /**\n * Handles the scroll event. If the current scroll percentage is greater\n * that the stored scroll event by at least the specified increase threshold,\n * send an event with the increase amount.\n */\n handleScroll() {\n const pageHeight = getPageHeight();\n const scrollPos = window.pageYOffset; // scrollY isn't supported in IE.\n const windowHeight = window.innerHeight;\n\n // Ensure scrollPercentage is an integer between 0 and 100.\n const scrollPercentage = Math.min(100, Math.max(0,\n Math.round(100 * (scrollPos / (pageHeight - windowHeight)))));\n\n // If the max scroll data gets out of the sync with the session data\n // (for whatever reason), clear it.\n const sessionId = this.session.getId();\n if (sessionId != this.store.get().sessionId) {\n this.store.clear();\n this.store.set({sessionId});\n }\n\n // If the session has expired, clear the stored data and don't send any\n // events (since they'd start a new session). Note: this check is needed,\n // in addition to the above check, to handle cases where the session IDs\n // got out of sync, but the session didn't expire.\n if (this.session.isExpired(this.store.get().sessionId)) {\n this.store.clear();\n } else {\n const maxScrollPercentage = this.getMaxScrollPercentageForCurrentPage();\n\n if (scrollPercentage > maxScrollPercentage) {\n if (scrollPercentage == 100 || maxScrollPercentage == 100) {\n this.stopListeningForMaxScrollChanges();\n }\n const increaseAmount = scrollPercentage - maxScrollPercentage;\n if (scrollPercentage == 100 ||\n increaseAmount >= this.opts.increaseThreshold) {\n this.setMaxScrollPercentageForCurrentPage(scrollPercentage);\n this.sendMaxScrollEvent(increaseAmount, scrollPercentage);\n }\n }\n }\n }\n\n /**\n * Detects changes to the tracker object and triggers an update if the page\n * field has changed.\n * @param {function((Object|string), (string|undefined))} originalMethod\n * A reference to the overridden method.\n * @return {function((Object|string), (string|undefined))}\n */\n trackerSetOverride(originalMethod) {\n return (field, value) => {\n originalMethod(field, value);\n\n /** @type {!FieldsObj} */\n const fields = isObject(field) ? field : {[field]: value};\n if (fields.page) {\n const lastPagePath = this.pagePath;\n this.pagePath = this.getPagePath();\n\n if (this.pagePath != lastPagePath) {\n // Since event listeners for the same function are never added twice,\n // we don't need to worry about whether we're already listening. We\n // can just add the event listener again.\n this.listenForMaxScrollChanges();\n }\n }\n };\n }\n\n /**\n * Sends an event for the increased max scroll percentage amount.\n * @param {number} increaseAmount\n * @param {number} scrollPercentage\n */\n sendMaxScrollEvent(increaseAmount, scrollPercentage) {\n /** @type {FieldsObj} */\n const defaultFields = {\n transport: 'beacon',\n eventCategory: 'Max Scroll',\n eventAction: 'increase',\n eventValue: increaseAmount,\n eventLabel: String(scrollPercentage),\n nonInteraction: true,\n };\n\n // If a custom metric was specified, set it equal to the event value.\n if (this.opts.maxScrollMetricIndex) {\n defaultFields['metric' + this.opts.maxScrollMetricIndex] = increaseAmount;\n }\n\n this.tracker.send('event',\n createFieldsObj(defaultFields, this.opts.fieldsObj,\n this.tracker, this.opts.hitFilter));\n }\n\n /**\n * Stores the current max scroll percentage for the current page.\n * @param {number} maxScrollPercentage\n */\n setMaxScrollPercentageForCurrentPage(maxScrollPercentage) {\n this.store.set({\n [this.pagePath]: maxScrollPercentage,\n sessionId: this.session.getId(),\n });\n }\n\n /**\n * Gets the stored max scroll percentage for the current page.\n * @return {number}\n */\n getMaxScrollPercentageForCurrentPage() {\n return this.store.get()[this.pagePath] || 0;\n }\n\n /**\n * Gets the page path from the tracker object.\n * @return {number}\n */\n getPagePath() {\n const url = parseUrl(\n this.tracker.get('page') || this.tracker.get('location'));\n return url.pathname + url.search;\n }\n\n /**\n * Removes all event listeners and restores overridden methods.\n */\n remove() {\n this.session.destroy();\n this.stopListeningForMaxScrollChanges();\n MethodChain.remove(this.tracker, 'set', this.trackerSetOverride);\n }\n}\n\n\nprovide('maxScrollTracker', MaxScrollTracker);\n\n\n/**\n * Gets the maximum height of the page including scrollable area.\n * @return {number}\n */\nfunction getPageHeight() {\n const html = document.documentElement;\n const body = document.body;\n return Math.max(html.offsetHeight, html.scrollHeight,\n body.offsetHeight, body.scrollHeight);\n}\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport {NULL_DIMENSION} from '../constants';\nimport provide from '../provide';\nimport {plugins, trackUsage} from '../usage';\nimport {assign, createFieldsObj,\n debounce, isObject, toArray} from '../utilities';\n\n\n/**\n * Declares the MediaQueryList instance cache.\n */\nconst mediaMap = {};\n\n\n/**\n * Class for the `mediaQueryTracker` analytics.js plugin.\n * @implements {MediaQueryTrackerPublicInterface}\n */\nclass MediaQueryTracker {\n /**\n * Registers media query tracking.\n * @param {!Tracker} tracker Passed internally by analytics.js\n * @param {?Object} opts Passed by the require command.\n */\n constructor(tracker, opts) {\n trackUsage(tracker, plugins.MEDIA_QUERY_TRACKER);\n\n // Feature detects to prevent errors in unsupporting browsers.\n if (!window.matchMedia) return;\n\n /** @type {MediaQueryTrackerOpts} */\n const defaultOpts = {\n // definitions: unefined,\n changeTemplate: this.changeTemplate,\n changeTimeout: 1000,\n fieldsObj: {},\n // hitFilter: undefined,\n };\n\n this.opts = /** @type {MediaQueryTrackerOpts} */ (\n assign(defaultOpts, opts));\n\n // Exits early if media query data doesn't exist.\n if (!isObject(this.opts.definitions)) return;\n\n this.opts.definitions = toArray(this.opts.definitions);\n this.tracker = tracker;\n this.changeListeners = [];\n\n this.processMediaQueries();\n }\n\n /**\n * Loops through each media query definition, sets the custom dimenion data,\n * and adds the change listeners.\n */\n processMediaQueries() {\n this.opts.definitions.forEach((definition) => {\n // Only processes definitions with a name and index.\n if (definition.name && definition.dimensionIndex) {\n const mediaName = this.getMatchName(definition);\n this.tracker.set('dimension' + definition.dimensionIndex, mediaName);\n\n this.addChangeListeners(definition);\n }\n });\n }\n\n /**\n * Takes a definition object and return the name of the matching media item.\n * If no match is found, the NULL_DIMENSION value is returned.\n * @param {Object} definition A set of named media queries associated\n * with a single custom dimension.\n * @return {string} The name of the matched media or NULL_DIMENSION.\n */\n getMatchName(definition) {\n let match;\n\n definition.items.forEach((item) => {\n if (getMediaList(item.media).matches) {\n match = item;\n }\n });\n return match ? match.name : NULL_DIMENSION;\n }\n\n /**\n * Adds change listeners to each media query in the definition list.\n * Debounces the changes to prevent unnecessary hits from being sent.\n * @param {Object} definition A set of named media queries associated\n * with a single custom dimension\n */\n addChangeListeners(definition) {\n definition.items.forEach((item) => {\n const mql = getMediaList(item.media);\n const fn = debounce(() => {\n this.handleChanges(definition);\n }, this.opts.changeTimeout);\n\n mql.addListener(fn);\n this.changeListeners.push({mql, fn});\n });\n }\n\n /**\n * Handles changes to the matched media. When the new value differs from\n * the old value, a change event is sent.\n * @param {Object} definition A set of named media queries associated\n * with a single custom dimension\n */\n handleChanges(definition) {\n const newValue = this.getMatchName(definition);\n const oldValue = this.tracker.get('dimension' + definition.dimensionIndex);\n\n if (newValue !== oldValue) {\n this.tracker.set('dimension' + definition.dimensionIndex, newValue);\n\n /** @type {FieldsObj} */\n const defaultFields = {\n transport: 'beacon',\n eventCategory: definition.name,\n eventAction: 'change',\n eventLabel: this.opts.changeTemplate(oldValue, newValue),\n nonInteraction: true,\n };\n this.tracker.send('event', createFieldsObj(defaultFields,\n this.opts.fieldsObj, this.tracker, this.opts.hitFilter));\n }\n }\n\n /**\n * Removes all event listeners and instance properties.\n */\n remove() {\n for (let i = 0, listener; listener = this.changeListeners[i]; i++) {\n listener.mql.removeListener(listener.fn);\n }\n }\n\n /**\n * Sets the default formatting of the change event label.\n * This can be overridden by setting the `changeTemplate` option.\n * @param {string} oldValue The value of the media query prior to the change.\n * @param {string} newValue The value of the media query after the change.\n * @return {string} The formatted event label.\n */\n changeTemplate(oldValue, newValue) {\n return oldValue + ' => ' + newValue;\n }\n}\n\n\nprovide('mediaQueryTracker', MediaQueryTracker);\n\n\n/**\n * Accepts a media query and returns a MediaQueryList object.\n * Caches the values to avoid multiple unnecessary instances.\n * @param {string} media A media query value.\n * @return {MediaQueryList} The matched media.\n */\nfunction getMediaList(media) {\n return mediaMap[media] || (mediaMap[media] = window.matchMedia(media));\n}\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport {delegate, parseUrl} from 'dom-utils';\nimport provide from '../provide';\nimport {plugins, trackUsage} from '../usage';\nimport {assign, createFieldsObj,\n getAttributeFields, withTimeout} from '../utilities';\n\n\n/**\n * Class for the `outboundFormTracker` analytics.js plugin.\n * @implements {OutboundFormTrackerPublicInterface}\n */\nclass OutboundFormTracker {\n /**\n * Registers outbound form tracking.\n * @param {!Tracker} tracker Passed internally by analytics.js\n * @param {?Object} opts Passed by the require command.\n */\n constructor(tracker, opts) {\n trackUsage(tracker, plugins.OUTBOUND_FORM_TRACKER);\n\n // Feature detects to prevent errors in unsupporting browsers.\n if (!window.addEventListener) return;\n\n /** @type {OutboundFormTrackerOpts} */\n const defaultOpts = {\n formSelector: 'form',\n shouldTrackOutboundForm: this.shouldTrackOutboundForm,\n fieldsObj: {},\n attributePrefix: 'ga-',\n // hitFilter: undefined\n };\n\n this.opts = /** @type {OutboundFormTrackerOpts} */ (\n assign(defaultOpts, opts));\n\n this.tracker = tracker;\n\n this.delegate = delegate(document, 'submit', this.opts.formSelector,\n this.handleFormSubmits.bind(this), {composed: true, useCapture: true});\n }\n\n /**\n * Handles all submits on form elements. A form submit is considered outbound\n * if its action attribute starts with http and does not contain\n * location.hostname.\n * When the beacon transport method is not available, the event's default\n * action is prevented and re-emitted after the hit is sent.\n * @param {Event} event The DOM submit event.\n * @param {Element} form The delegated event target.\n */\n handleFormSubmits(event, form) {\n const action = parseUrl(form.action).href;\n\n /** @type {FieldsObj} */\n const defaultFields = {\n transport: 'beacon',\n eventCategory: 'Outbound Form',\n eventAction: 'submit',\n eventLabel: action,\n };\n\n if (this.opts.shouldTrackOutboundForm(form, parseUrl)) {\n if (!navigator.sendBeacon) {\n // Stops the submit and waits until the hit is complete (with timeout)\n // for browsers that don't support beacon.\n event.preventDefault();\n defaultFields.hitCallback = withTimeout(function() {\n form.submit();\n });\n }\n\n const userFields = assign({}, this.opts.fieldsObj,\n getAttributeFields(form, this.opts.attributePrefix));\n\n this.tracker.send('event', createFieldsObj(\n defaultFields, userFields,\n this.tracker, this.opts.hitFilter, form, event));\n }\n }\n\n /**\n * Determines whether or not the tracker should send a hit when a form is\n * submitted. By default, forms with an action attribute that starts with\n * \"http\" and doesn't contain the current hostname are tracked.\n * @param {Element} form The form that was submitted.\n * @param {Function} parseUrlFn A cross-browser utility method for url\n * parsing (note: renamed to disambiguate when compiling).\n * @return {boolean} Whether or not the form should be tracked.\n */\n shouldTrackOutboundForm(form, parseUrlFn) {\n const url = parseUrlFn(form.action);\n return url.hostname != location.hostname &&\n url.protocol.slice(0, 4) == 'http';\n }\n\n /**\n * Removes all event listeners and instance properties.\n */\n remove() {\n this.delegate.destroy();\n }\n}\n\n\nprovide('outboundFormTracker', OutboundFormTracker);\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport {delegate, parseUrl} from 'dom-utils';\nimport provide from '../provide';\nimport {plugins, trackUsage} from '../usage';\nimport {assign, createFieldsObj,\n getAttributeFields, withTimeout} from '../utilities';\n\n\n/**\n * Class for the `outboundLinkTracker` analytics.js plugin.\n * @implements {OutboundLinkTrackerPublicInterface}\n */\nclass OutboundLinkTracker {\n /**\n * Registers outbound link tracking on a tracker object.\n * @param {!Tracker} tracker Passed internally by analytics.js\n * @param {?Object} opts Passed by the require command.\n */\n constructor(tracker, opts) {\n trackUsage(tracker, plugins.OUTBOUND_LINK_TRACKER);\n\n // Feature detects to prevent errors in unsupporting browsers.\n if (!window.addEventListener) return;\n\n /** @type {OutboundLinkTrackerOpts} */\n const defaultOpts = {\n events: ['click'],\n linkSelector: 'a, area',\n shouldTrackOutboundLink: this.shouldTrackOutboundLink,\n fieldsObj: {},\n attributePrefix: 'ga-',\n // hitFilter: undefined,\n };\n\n this.opts = /** @type {OutboundLinkTrackerOpts} */ (\n assign(defaultOpts, opts));\n\n this.tracker = tracker;\n\n // Binds methods.\n this.handleLinkInteractions = this.handleLinkInteractions.bind(this);\n\n // Creates a mapping of events to their delegates\n this.delegates = {};\n this.opts.events.forEach((event) => {\n this.delegates[event] = delegate(document, event, this.opts.linkSelector,\n this.handleLinkInteractions, {composed: true, useCapture: true});\n });\n }\n\n /**\n * Handles all interactions on link elements. A link is considered an outbound\n * link if its hostname property does not match location.hostname. When the\n * beacon transport method is not available, the links target is set to\n * \"_blank\" to ensure the hit can be sent.\n * @param {Event} event The DOM click event.\n * @param {Element} link The delegated event target.\n */\n handleLinkInteractions(event, link) {\n if (this.opts.shouldTrackOutboundLink(link, parseUrl)) {\n const href = link.getAttribute('href') || link.getAttribute('xlink:href');\n const url = parseUrl(href);\n\n /** @type {FieldsObj} */\n const defaultFields = {\n transport: 'beacon',\n eventCategory: 'Outbound Link',\n eventAction: event.type,\n eventLabel: url.href,\n };\n\n /** @type {FieldsObj} */\n const userFields = assign({}, this.opts.fieldsObj,\n getAttributeFields(link, this.opts.attributePrefix));\n\n const fieldsObj = createFieldsObj(defaultFields, userFields,\n this.tracker, this.opts.hitFilter, link, event);\n\n if (!navigator.sendBeacon &&\n linkClickWillUnloadCurrentPage(event, link)) {\n // Adds a new event handler at the last minute to minimize the chances\n // that another event handler for this click will run after this logic.\n const clickHandler = () => {\n window.removeEventListener('click', clickHandler);\n\n // Checks to make sure another event handler hasn't already prevented\n // the default action. If it has the custom redirect isn't needed.\n if (!event.defaultPrevented) {\n // Stops the click and waits until the hit is complete (with\n // timeout) for browsers that don't support beacon.\n event.preventDefault();\n\n const oldHitCallback = fieldsObj.hitCallback;\n fieldsObj.hitCallback = withTimeout(function() {\n if (typeof oldHitCallback == 'function') oldHitCallback();\n location.href = href;\n });\n }\n this.tracker.send('event', fieldsObj);\n };\n window.addEventListener('click', clickHandler);\n } else {\n this.tracker.send('event', fieldsObj);\n }\n }\n }\n\n /**\n * Determines whether or not the tracker should send a hit when a link is\n * clicked. By default links with a hostname property not equal to the current\n * hostname are tracked.\n * @param {Element} link The link that was clicked on.\n * @param {Function} parseUrlFn A cross-browser utility method for url\n * parsing (note: renamed to disambiguate when compiling).\n * @return {boolean} Whether or not the link should be tracked.\n */\n shouldTrackOutboundLink(link, parseUrlFn) {\n const href = link.getAttribute('href') || link.getAttribute('xlink:href');\n const url = parseUrlFn(href);\n return url.hostname != location.hostname &&\n url.protocol.slice(0, 4) == 'http';\n }\n\n /**\n * Removes all event listeners and instance properties.\n */\n remove() {\n Object.keys(this.delegates).forEach((key) => {\n this.delegates[key].destroy();\n });\n }\n}\n\n\nprovide('outboundLinkTracker', OutboundLinkTracker);\n\n\n/**\n * Determines if a link click event will cause the current page to upload.\n * Note: most link clicks *will* cause the current page to unload because they\n * initiate a page navigation. The most common reason a link click won't cause\n * the page to unload is if the clicked was to open the link in a new tab.\n * @param {Event} event The DOM event.\n * @param {Element} link The link element clicked on.\n * @return {boolean} True if the current page will be unloaded.\n */\nfunction linkClickWillUnloadCurrentPage(event, link) {\n return !(\n // The event type can be customized; we only care about clicks here.\n event.type != 'click' ||\n // Links with target=\"_blank\" set will open in a new window/tab.\n link.target == '_blank' ||\n // On mac, command clicking will open a link in a new tab. Control\n // clicking does this on windows.\n event.metaKey || event.ctrlKey ||\n // Shift clicking in Chrome/Firefox opens the link in a new window\n // In Safari it adds the URL to a favorites list.\n event.shiftKey ||\n // On Mac, clicking with the option key is used to download a resouce.\n event.altKey ||\n // Middle mouse button clicks (which == 2) are used to open a link\n // in a new tab, and right clicks (which == 3) on Firefox trigger\n // a click event.\n event.which > 1);\n}\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport {NULL_DIMENSION} from '../constants';\nimport MethodChain from '../method-chain';\nimport provide from '../provide';\nimport Session from '../session';\nimport Store from '../store';\nimport {plugins, trackUsage} from '../usage';\nimport {assign, createFieldsObj, deferUntilPluginsLoaded,\n isObject, now, uuid} from '../utilities';\n\n\nconst HIDDEN = 'hidden';\nconst VISIBLE = 'visible';\nconst PAGE_ID = uuid();\nconst SECONDS = 1000;\n\n\n/**\n * Class for the `pageVisibilityTracker` analytics.js plugin.\n * @implements {PageVisibilityTrackerPublicInterface}\n */\nclass PageVisibilityTracker {\n /**\n * Registers outbound link tracking on tracker object.\n * @param {!Tracker} tracker Passed internally by analytics.js\n * @param {?Object} opts Passed by the require command.\n */\n constructor(tracker, opts) {\n trackUsage(tracker, plugins.PAGE_VISIBILITY_TRACKER);\n\n // Feature detects to prevent errors in unsupporting browsers.\n if (!document.visibilityState) return;\n\n /** @type {PageVisibilityTrackerOpts} */\n const defaultOpts = {\n sessionTimeout: Session.DEFAULT_TIMEOUT,\n visibleThreshold: 5 * SECONDS,\n // timeZone: undefined,\n sendInitialPageview: false,\n // pageLoadsMetricIndex: undefined,\n // visibleMetricIndex: undefined,\n fieldsObj: {},\n // hitFilter: undefined\n };\n\n this.opts = /** @type {PageVisibilityTrackerOpts} */ (\n assign(defaultOpts, opts));\n\n this.tracker = tracker;\n this.lastPageState = document.visibilityState;\n this.visibleThresholdTimeout_ = null;\n this.isInitialPageviewSent_ = false;\n\n // Binds methods to `this`.\n this.trackerSetOverride = this.trackerSetOverride.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleWindowUnload = this.handleWindowUnload.bind(this);\n this.handleExternalStoreSet = this.handleExternalStoreSet.bind(this);\n\n // Creates the store and binds storage change events.\n this.store = Store.getOrCreate(\n tracker.get('trackingId'), 'plugins/page-visibility-tracker');\n this.store.on('externalSet', this.handleExternalStoreSet);\n\n // Creates the session and binds session events.\n this.session = Session.getOrCreate(\n tracker, this.opts.sessionTimeout, this.opts.timeZone);\n\n // Override the built-in tracker.set method to watch for changes.\n MethodChain.add(tracker, 'set', this.trackerSetOverride);\n\n window.addEventListener('unload', this.handleWindowUnload);\n document.addEventListener('visibilitychange', this.handleChange);\n\n // Postpone sending any hits until the next call stack, which allows all\n // autotrack plugins to be required sync before any hits are sent.\n deferUntilPluginsLoaded(this.tracker, () => {\n if (document.visibilityState == VISIBLE) {\n if (this.opts.sendInitialPageview) {\n this.sendPageview({isPageLoad: true});\n this.isInitialPageviewSent_ = true;\n }\n this.store.set(/** @type {PageVisibilityStoreData} */ ({\n time: now(),\n state: VISIBLE,\n pageId: PAGE_ID,\n sessionId: this.session.getId(),\n }));\n } else {\n if (this.opts.sendInitialPageview && this.opts.pageLoadsMetricIndex) {\n this.sendPageLoad();\n }\n }\n });\n }\n\n /**\n * Inspects the last visibility state change data and determines if a\n * visibility event needs to be tracked based on the current visibility\n * state and whether or not the session has expired. If the session has\n * expired, a change to `visible` will trigger an additional pageview.\n * This method also sends as the event value (and optionally a custom metric)\n * the elapsed time between this event and the previously reported change\n * in the same session, allowing you to more accurately determine when users\n * were actually looking at your page versus when it was in the background.\n */\n handleChange() {\n if (!(document.visibilityState == VISIBLE ||\n document.visibilityState == HIDDEN)) {\n return;\n }\n\n const lastStoredChange = this.getAndValidateChangeData();\n\n /** @type {PageVisibilityStoreData} */\n const change = {\n time: now(),\n state: document.visibilityState,\n pageId: PAGE_ID,\n sessionId: this.session.getId(),\n };\n\n // If the visibilityState has changed to visible and the initial pageview\n // has not been sent (and the `sendInitialPageview` option is `true`).\n // Send the initial pageview now.\n if (document.visibilityState == VISIBLE &&\n this.opts.sendInitialPageview && !this.isInitialPageviewSent_) {\n this.sendPageview();\n this.isInitialPageviewSent_ = true;\n }\n\n // If the visibilityState has changed to hidden, clear any scheduled\n // pageviews waiting for the visibleThreshold timeout.\n if (document.visibilityState == HIDDEN && this.visibleThresholdTimeout_) {\n clearTimeout(this.visibleThresholdTimeout_);\n }\n\n if (this.session.isExpired(lastStoredChange.sessionId)) {\n this.store.clear();\n if (this.lastPageState == HIDDEN &&\n document.visibilityState == VISIBLE) {\n // If the session has expired, changes from hidden to visible should\n // be considered a new pageview rather than a visibility event.\n // This behavior ensures all sessions contain a pageview so\n // session-level page dimensions and metrics (e.g. ga:landingPagePath\n // and ga:entrances) are correct.\n // Also, in order to prevent false positives, we add a small timeout\n // that is cleared if the visibilityState changes to hidden shortly\n // after the change to visible. This can happen if a user is quickly\n // switching through their open tabs but not actually interacting with\n // and of them. It can also happen when a user goes to a tab just to\n // immediately close it. Such cases should not be considered pageviews.\n clearTimeout(this.visibleThresholdTimeout_);\n this.visibleThresholdTimeout_ = setTimeout(() => {\n this.store.set(change);\n this.sendPageview({hitTime: change.time});\n }, this.opts.visibleThreshold);\n }\n } else {\n if (lastStoredChange.pageId == PAGE_ID &&\n lastStoredChange.state == VISIBLE) {\n this.sendPageVisibilityEvent(lastStoredChange);\n }\n this.store.set(change);\n }\n\n this.lastPageState = document.visibilityState;\n }\n\n /**\n * Retroactively updates the stored change data in cases where it's known to\n * be out of sync.\n * This plugin keeps track of each visiblity change and stores the last one\n * in localStorage. LocalStorage is used to handle situations where the user\n * has multiple page open at the same time and we don't want to\n * double-report page visibility in those cases.\n * However, a problem can occur if a user closes a page when one or more\n * visible pages are still open. In such cases it's impossible to know\n * which of the remaining pages the user will interact with next.\n * To solve this problem we wait for the next change on any page and then\n * retroactively update the stored data to reflect the current page as being\n * the page on which the last change event occured and measure visibility\n * from that point.\n * @return {!PageVisibilityStoreData}\n */\n getAndValidateChangeData() {\n const lastStoredChange =\n /** @type {PageVisibilityStoreData} */ (this.store.get());\n\n if (this.lastPageState == VISIBLE &&\n lastStoredChange.state == HIDDEN &&\n lastStoredChange.pageId != PAGE_ID) {\n lastStoredChange.state = VISIBLE;\n lastStoredChange.pageId = PAGE_ID;\n this.store.set(lastStoredChange);\n }\n return lastStoredChange;\n }\n\n /**\n * Sends a Page Visibility event to track the time this page was in the\n * visible state (assuming it was in that state long enough to meet the\n * threshold).\n * @param {!PageVisibilityStoreData} lastStoredChange\n * @param {{hitTime: (number|undefined)}=} param1\n * - hitTime: A hit timestap used to help ensure original order in cases\n * where the send is delayed.\n */\n sendPageVisibilityEvent(lastStoredChange, {hitTime} = {}) {\n const delta = this.getTimeSinceLastStoredChange(\n lastStoredChange, {hitTime});\n\n // If the detla is greater than the visibileThreshold, report it.\n if (delta && delta >= this.opts.visibleThreshold) {\n const deltaInSeconds = Math.round(delta / SECONDS);\n\n /** @type {FieldsObj} */\n const defaultFields = {\n transport: 'beacon',\n nonInteraction: true,\n eventCategory: 'Page Visibility',\n eventAction: 'track',\n eventValue: deltaInSeconds,\n eventLabel: NULL_DIMENSION,\n };\n\n if (hitTime) {\n defaultFields.queueTime = now() - hitTime;\n }\n\n // If a custom metric was specified, set it equal to the event value.\n if (this.opts.visibleMetricIndex) {\n defaultFields['metric' + this.opts.visibleMetricIndex] = deltaInSeconds;\n }\n\n this.tracker.send('event',\n createFieldsObj(defaultFields, this.opts.fieldsObj,\n this.tracker, this.opts.hitFilter));\n }\n }\n\n /**\n * Sends a page load event.\n */\n sendPageLoad() {\n /** @type {FieldsObj} */\n const defaultFields = {\n transport: 'beacon',\n eventCategory: 'Page Visibility',\n eventAction: 'page load',\n eventLabel: NULL_DIMENSION,\n ['metric' + this.opts.pageLoadsMetricIndex]: 1,\n nonInteraction: true,\n };\n this.tracker.send('event',\n createFieldsObj(defaultFields, this.opts.fieldsObj,\n this.tracker, this.opts.hitFilter));\n }\n\n /**\n * Sends a pageview, optionally calculating an offset if hitTime is passed.\n * @param {{\n * hitTime: (number|undefined),\n * isPageLoad: (boolean|undefined)\n * }=} param1\n * hitTime: The timestamp of the current hit.\n * isPageLoad: True if this pageview was also a page load.\n */\n sendPageview({hitTime, isPageLoad} = {}) {\n /** @type {FieldsObj} */\n const defaultFields = {transport: 'beacon'};\n if (hitTime) {\n defaultFields.queueTime = now() - hitTime;\n }\n if (isPageLoad && this.opts.pageLoadsMetricIndex) {\n defaultFields['metric' + this.opts.pageLoadsMetricIndex] = 1;\n }\n\n this.tracker.send('pageview',\n createFieldsObj(defaultFields, this.opts.fieldsObj,\n this.tracker, this.opts.hitFilter));\n }\n\n /**\n * Detects changes to the tracker object and triggers an update if the page\n * field has changed.\n * @param {function((Object|string), (string|undefined))} originalMethod\n * A reference to the overridden method.\n * @return {function((Object|string), (string|undefined))}\n */\n trackerSetOverride(originalMethod) {\n return (field, value) => {\n /** @type {!FieldsObj} */\n const fields = isObject(field) ? field : {[field]: value};\n if (fields.page && fields.page !== this.tracker.get('page')) {\n if (this.lastPageState == VISIBLE) {\n this.handleChange();\n }\n }\n originalMethod(field, value);\n };\n }\n\n /**\n * Calculates the time since the last visibility change event in the current\n * session. If the session has expired the reported time is zero.\n * @param {PageVisibilityStoreData} lastStoredChange\n * @param {{hitTime: (number|undefined)}=} param1\n * hitTime: The time of the current hit (defaults to now).\n * @return {number} The time (in ms) since the last change.\n */\n getTimeSinceLastStoredChange(lastStoredChange, {hitTime} = {}) {\n return lastStoredChange.time ?\n (hitTime || now()) - lastStoredChange.time : 0;\n }\n\n /**\n * Handles responding to the `storage` event.\n * The code on this page needs to be informed when other tabs or windows are\n * updating the stored page visibility state data. This method checks to see\n * if a hidden state is stored when there are still visible tabs open, which\n * can happen if multiple windows are open at the same time.\n * @param {PageVisibilityStoreData} newData\n * @param {PageVisibilityStoreData} oldData\n */\n handleExternalStoreSet(newData, oldData) {\n // If the change times are the same, then the previous write only\n // updated the active page ID. It didn't enter a new state and thus no\n // hits should be sent.\n if (newData.time == oldData.time) return;\n\n // Page Visibility events must be sent by the tracker on the page\n // where the original event occurred. So if a change happens on another\n // page, but this page is where the previous change event occurred, then\n // this page is the one that needs to send the event (so all dimension\n // data is correct).\n if (oldData.pageId == PAGE_ID &&\n oldData.state == VISIBLE &&\n !this.session.isExpired(oldData.sessionId)) {\n this.sendPageVisibilityEvent(oldData, {hitTime: newData.time});\n }\n }\n\n /**\n * Handles responding to the `unload` event.\n * Since some browsers don't emit a `visibilitychange` event in all cases\n * where a page might be unloaded, it's necessary to hook into the `unload`\n * event to ensure the correct state is always stored.\n */\n handleWindowUnload() {\n // If the stored visibility state isn't hidden when the unload event\n // fires, it means the visibilitychange event didn't fire as the document\n // was being unloaded, so we invoke it manually.\n if (this.lastPageState != HIDDEN) {\n this.handleChange();\n }\n }\n\n /**\n * Removes all event listeners and restores overridden methods.\n */\n remove() {\n this.store.destroy();\n this.session.destroy();\n MethodChain.remove(this.tracker, 'set', this.trackerSetOverride);\n window.removeEventListener('unload', this.handleWindowUnload);\n document.removeEventListener('visibilitychange', this.handleChange);\n }\n}\n\n\nprovide('pageVisibilityTracker', PageVisibilityTracker);\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport provide from '../provide';\nimport {plugins, trackUsage} from '../usage';\nimport {assign, createFieldsObj} from '../utilities';\n\n\n/**\n * Class for the `socialWidgetTracker` analytics.js plugin.\n * @implements {SocialWidgetTrackerPublicInterface}\n */\nclass SocialWidgetTracker {\n /**\n * Registers social tracking on tracker object.\n * Supports both declarative social tracking via HTML attributes as well as\n * tracking for social events when using official Twitter or Facebook widgets.\n * @param {!Tracker} tracker Passed internally by analytics.js\n * @param {?Object} opts Passed by the require command.\n */\n constructor(tracker, opts) {\n trackUsage(tracker, plugins.SOCIAL_WIDGET_TRACKER);\n\n // Feature detects to prevent errors in unsupporting browsers.\n if (!window.addEventListener) return;\n\n /** @type {SocialWidgetTrackerOpts} */\n const defaultOpts = {\n fieldsObj: {},\n hitFilter: null,\n };\n\n this.opts = /** @type {SocialWidgetTrackerOpts} */ (\n assign(defaultOpts, opts));\n\n this.tracker = tracker;\n\n // Binds methods to `this`.\n this.addWidgetListeners = this.addWidgetListeners.bind(this);\n this.addTwitterEventHandlers = this.addTwitterEventHandlers.bind(this);\n this.handleTweetEvents = this.handleTweetEvents.bind(this);\n this.handleFollowEvents = this.handleFollowEvents.bind(this);\n this.handleLikeEvents = this.handleLikeEvents.bind(this);\n this.handleUnlikeEvents = this.handleUnlikeEvents.bind(this);\n\n if (document.readyState != 'complete') {\n // Adds the widget listeners after the window's `load` event fires.\n // If loading widgets using the officially recommended snippets, they\n // will be available at `window.load`. If not users can call the\n // `addWidgetListeners` method manually.\n window.addEventListener('load', this.addWidgetListeners);\n } else {\n this.addWidgetListeners();\n }\n }\n\n\n /**\n * Invokes the methods to add Facebook and Twitter widget event listeners.\n * Ensures the respective global namespaces are present before adding.\n */\n addWidgetListeners() {\n if (window.FB) this.addFacebookEventHandlers();\n if (window.twttr) this.addTwitterEventHandlers();\n }\n\n /**\n * Adds event handlers for the \"tweet\" and \"follow\" events emitted by the\n * official tweet and follow buttons. Note: this does not capture tweet or\n * follow events emitted by other Twitter widgets (tweet, timeline, etc.).\n */\n addTwitterEventHandlers() {\n try {\n window.twttr.ready(() => {\n window.twttr.events.bind('tweet', this.handleTweetEvents);\n window.twttr.events.bind('follow', this.handleFollowEvents);\n });\n } catch(err) {\n // Do nothing.\n }\n }\n\n /**\n * Removes event handlers for the \"tweet\" and \"follow\" events emitted by the\n * official tweet and follow buttons.\n */\n removeTwitterEventHandlers() {\n try {\n window.twttr.ready(() => {\n window.twttr.events.unbind('tweet', this.handleTweetEvents);\n window.twttr.events.unbind('follow', this.handleFollowEvents);\n });\n } catch(err) {\n // Do nothing.\n }\n }\n\n /**\n * Adds event handlers for the \"like\" and \"unlike\" events emitted by the\n * official Facebook like button.\n */\n addFacebookEventHandlers() {\n try {\n window.FB.Event.subscribe('edge.create', this.handleLikeEvents);\n window.FB.Event.subscribe('edge.remove', this.handleUnlikeEvents);\n } catch(err) {\n // Do nothing.\n }\n }\n\n /**\n * Removes event handlers for the \"like\" and \"unlike\" events emitted by the\n * official Facebook like button.\n */\n removeFacebookEventHandlers() {\n try {\n window.FB.Event.unsubscribe('edge.create', this.handleLikeEvents);\n window.FB.Event.unsubscribe('edge.remove', this.handleUnlikeEvents);\n } catch(err) {\n // Do nothing.\n }\n }\n\n /**\n * Handles `tweet` events emitted by the Twitter JS SDK.\n * @param {TwttrEvent} event The Twitter event object passed to the handler.\n */\n handleTweetEvents(event) {\n // Ignores tweets from widgets that aren't the tweet button.\n if (event.region != 'tweet') return;\n\n const url = event.data.url || event.target.getAttribute('data-url') ||\n location.href;\n\n /** @type {FieldsObj} */\n const defaultFields = {\n transport: 'beacon',\n socialNetwork: 'Twitter',\n socialAction: 'tweet',\n socialTarget: url,\n };\n this.tracker.send('social',\n createFieldsObj(defaultFields, this.opts.fieldsObj,\n this.tracker, this.opts.hitFilter, event.target, event));\n }\n\n /**\n * Handles `follow` events emitted by the Twitter JS SDK.\n * @param {TwttrEvent} event The Twitter event object passed to the handler.\n */\n handleFollowEvents(event) {\n // Ignore follows from widgets that aren't the follow button.\n if (event.region != 'follow') return;\n\n const screenName = event.data.screen_name ||\n event.target.getAttribute('data-screen-name');\n\n /** @type {FieldsObj} */\n const defaultFields = {\n transport: 'beacon',\n socialNetwork: 'Twitter',\n socialAction: 'follow',\n socialTarget: screenName,\n };\n this.tracker.send('social',\n createFieldsObj(defaultFields, this.opts.fieldsObj,\n this.tracker, this.opts.hitFilter, event.target, event));\n }\n\n /**\n * Handles `like` events emitted by the Facebook JS SDK.\n * @param {string} url The URL corresponding to the like event.\n */\n handleLikeEvents(url) {\n /** @type {FieldsObj} */\n const defaultFields = {\n transport: 'beacon',\n socialNetwork: 'Facebook',\n socialAction: 'like',\n socialTarget: url,\n };\n this.tracker.send('social', createFieldsObj(defaultFields,\n this.opts.fieldsObj, this.tracker, this.opts.hitFilter));\n }\n\n /**\n * Handles `unlike` events emitted by the Facebook JS SDK.\n * @param {string} url The URL corresponding to the unlike event.\n */\n handleUnlikeEvents(url) {\n /** @type {FieldsObj} */\n const defaultFields = {\n transport: 'beacon',\n socialNetwork: 'Facebook',\n socialAction: 'unlike',\n socialTarget: url,\n };\n this.tracker.send('social', createFieldsObj(defaultFields,\n this.opts.fieldsObj, this.tracker, this.opts.hitFilter));\n }\n\n /**\n * Removes all event listeners and instance properties.\n */\n remove() {\n window.removeEventListener('load', this.addWidgetListeners);\n this.removeFacebookEventHandlers();\n this.removeTwitterEventHandlers();\n }\n}\n\n\nprovide('socialWidgetTracker', SocialWidgetTracker);\n","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport MethodChain from '../method-chain';\nimport provide from '../provide';\nimport {plugins, trackUsage} from '../usage';\nimport {assign, createFieldsObj} from '../utilities';\n\n\n/**\n * Class for the `urlChangeTracker` analytics.js plugin.\n * @implements {UrlChangeTrackerPublicInterface}\n */\nclass UrlChangeTracker {\n /**\n * Adds handler for the history API methods\n * @param {!Tracker} tracker Passed internally by analytics.js\n * @param {?Object} opts Passed by the require command.\n */\n constructor(tracker, opts) {\n trackUsage(tracker, plugins.URL_CHANGE_TRACKER);\n\n // Feature detects to prevent errors in unsupporting browsers.\n if (!history.pushState || !window.addEventListener) return;\n\n /** @type {UrlChangeTrackerOpts} */\n const defaultOpts = {\n shouldTrackUrlChange: this.shouldTrackUrlChange,\n trackReplaceState: false,\n fieldsObj: {},\n hitFilter: null,\n };\n\n this.opts = /** @type {UrlChangeTrackerOpts} */ (assign(defaultOpts, opts));\n\n this.tracker = tracker;\n\n // Sets the initial page field.\n // Don't set this on the tracker yet so campaign data can be retreived\n // from the location field.\n this.path = getPath();\n\n // Binds methods.\n this.pushStateOverride = this.pushStateOverride.bind(this);\n this.replaceStateOverride = this.replaceStateOverride.bind(this);\n this.handlePopState = this.handlePopState.bind(this);\n\n // Watches for history changes.\n MethodChain.add(history, 'pushState', this.pushStateOverride);\n MethodChain.add(history, 'replaceState', this.replaceStateOverride);\n window.addEventListener('popstate', this.handlePopState);\n }\n\n /**\n * Handles invocations of the native `history.pushState` and calls\n * `handleUrlChange()` indicating that the history updated.\n * @param {!Function} originalMethod A reference to the overridden method.\n * @return {!Function}\n */\n pushStateOverride(originalMethod) {\n return (...args) => {\n originalMethod(...args);\n this.handleUrlChange(true);\n };\n }\n\n /**\n * Handles invocations of the native `history.replaceState` and calls\n * `handleUrlChange()` indicating that history was replaced.\n * @param {!Function} originalMethod A reference to the overridden method.\n * @return {!Function}\n */\n replaceStateOverride(originalMethod) {\n return (...args) => {\n originalMethod(...args);\n this.handleUrlChange(false);\n };\n }\n\n /**\n * Handles responding to the popstate event and calls\n * `handleUrlChange()` indicating that history was updated.\n */\n handlePopState() {\n this.handleUrlChange(true);\n }\n\n /**\n * Updates the page and title fields on the tracker and sends a pageview\n * if a new history entry was created.\n * @param {boolean} historyDidUpdate True if the history was changed via\n * `pushState()` or the `popstate` event. False if the history was just\n * modified via `replaceState()`.\n */\n handleUrlChange(historyDidUpdate) {\n // Calls the update logic asychronously to help ensure that app logic\n // responding to the URL change happens prior to this.\n setTimeout(() => {\n const oldPath = this.path;\n const newPath = getPath();\n\n if (oldPath != newPath &&\n this.opts.shouldTrackUrlChange.call(this, newPath, oldPath)) {\n this.path = newPath;\n this.tracker.set({\n page: newPath,\n title: document.title,\n });\n\n if (historyDidUpdate || this.opts.trackReplaceState) {\n /** @type {FieldsObj} */\n const defaultFields = {transport: 'beacon'};\n this.tracker.send('pageview', createFieldsObj(defaultFields,\n this.opts.fieldsObj, this.tracker, this.opts.hitFilter));\n }\n }\n }, 0);\n }\n\n /**\n * Determines whether or not the tracker should send a hit with the new page\n * data. This default implementation can be overrided in the config options.\n * @param {string} newPath The path after the URL change.\n * @param {string} oldPath The path prior to the URL change.\n * @return {boolean} Whether or not the URL change should be tracked.\n */\n shouldTrackUrlChange(newPath, oldPath) {\n return !!(newPath && oldPath);\n }\n\n /**\n * Removes all event listeners and restores overridden methods.\n */\n remove() {\n MethodChain.remove(history, 'pushState', this.pushStateOverride);\n MethodChain.remove(history, 'replaceState', this.replaceStateOverride);\n window.removeEventListener('popstate', this.handlePopState);\n }\n}\n\n\nprovide('urlChangeTracker', UrlChangeTracker);\n\n\n/**\n * @return {string} The path value of the current URL.\n */\nfunction getPath() {\n return location.pathname + location.search;\n}\n","/*! choices.js v10.2.0 | © 2022 Josh Johnson | https://github.com/jshjohnson/Choices#readme */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Choices\"] = factory();\n\telse\n\t\troot[\"Choices\"] = factory();\n})(window, function() {\nreturn /******/ (function() { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ 282:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.clearChoices = exports.activateChoices = exports.filterChoices = exports.addChoice = void 0;\nvar constants_1 = __webpack_require__(883);\nvar addChoice = function (_a) {\n var value = _a.value,\n label = _a.label,\n id = _a.id,\n groupId = _a.groupId,\n disabled = _a.disabled,\n elementId = _a.elementId,\n customProperties = _a.customProperties,\n placeholder = _a.placeholder,\n keyCode = _a.keyCode;\n return {\n type: constants_1.ACTION_TYPES.ADD_CHOICE,\n value: value,\n label: label,\n id: id,\n groupId: groupId,\n disabled: disabled,\n elementId: elementId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n };\n};\nexports.addChoice = addChoice;\nvar filterChoices = function (results) {\n return {\n type: constants_1.ACTION_TYPES.FILTER_CHOICES,\n results: results\n };\n};\nexports.filterChoices = filterChoices;\nvar activateChoices = function (active) {\n if (active === void 0) {\n active = true;\n }\n return {\n type: constants_1.ACTION_TYPES.ACTIVATE_CHOICES,\n active: active\n };\n};\nexports.activateChoices = activateChoices;\nvar clearChoices = function () {\n return {\n type: constants_1.ACTION_TYPES.CLEAR_CHOICES\n };\n};\nexports.clearChoices = clearChoices;\n\n/***/ }),\n\n/***/ 783:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.addGroup = void 0;\nvar constants_1 = __webpack_require__(883);\nvar addGroup = function (_a) {\n var value = _a.value,\n id = _a.id,\n active = _a.active,\n disabled = _a.disabled;\n return {\n type: constants_1.ACTION_TYPES.ADD_GROUP,\n value: value,\n id: id,\n active: active,\n disabled: disabled\n };\n};\nexports.addGroup = addGroup;\n\n/***/ }),\n\n/***/ 464:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.highlightItem = exports.removeItem = exports.addItem = void 0;\nvar constants_1 = __webpack_require__(883);\nvar addItem = function (_a) {\n var value = _a.value,\n label = _a.label,\n id = _a.id,\n choiceId = _a.choiceId,\n groupId = _a.groupId,\n customProperties = _a.customProperties,\n placeholder = _a.placeholder,\n keyCode = _a.keyCode;\n return {\n type: constants_1.ACTION_TYPES.ADD_ITEM,\n value: value,\n label: label,\n id: id,\n choiceId: choiceId,\n groupId: groupId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n };\n};\nexports.addItem = addItem;\nvar removeItem = function (id, choiceId) {\n return {\n type: constants_1.ACTION_TYPES.REMOVE_ITEM,\n id: id,\n choiceId: choiceId\n };\n};\nexports.removeItem = removeItem;\nvar highlightItem = function (id, highlighted) {\n return {\n type: constants_1.ACTION_TYPES.HIGHLIGHT_ITEM,\n id: id,\n highlighted: highlighted\n };\n};\nexports.highlightItem = highlightItem;\n\n/***/ }),\n\n/***/ 137:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.setIsLoading = exports.resetTo = exports.clearAll = void 0;\nvar constants_1 = __webpack_require__(883);\nvar clearAll = function () {\n return {\n type: constants_1.ACTION_TYPES.CLEAR_ALL\n };\n};\nexports.clearAll = clearAll;\nvar resetTo = function (state) {\n return {\n type: constants_1.ACTION_TYPES.RESET_TO,\n state: state\n };\n};\nexports.resetTo = resetTo;\nvar setIsLoading = function (isLoading) {\n return {\n type: constants_1.ACTION_TYPES.SET_IS_LOADING,\n isLoading: isLoading\n };\n};\nexports.setIsLoading = setIsLoading;\n\n/***/ }),\n\n/***/ 373:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar deepmerge_1 = __importDefault(__webpack_require__(996));\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar fuse_js_1 = __importDefault(__webpack_require__(221));\nvar choices_1 = __webpack_require__(282);\nvar groups_1 = __webpack_require__(783);\nvar items_1 = __webpack_require__(464);\nvar misc_1 = __webpack_require__(137);\nvar components_1 = __webpack_require__(520);\nvar constants_1 = __webpack_require__(883);\nvar defaults_1 = __webpack_require__(789);\nvar utils_1 = __webpack_require__(799);\nvar reducers_1 = __webpack_require__(655);\nvar store_1 = __importDefault(__webpack_require__(744));\nvar templates_1 = __importDefault(__webpack_require__(686));\n/** @see {@link http://browserhacks.com/#hack-acea075d0ac6954f275a70023906050c} */\nvar IS_IE11 = '-ms-scroll-limit' in document.documentElement.style && '-ms-ime-align' in document.documentElement.style;\nvar USER_DEFAULTS = {};\n/**\n * Choices\n * @author Josh Johnson\n */\nvar Choices = /** @class */function () {\n function Choices(element, userConfig) {\n if (element === void 0) {\n element = '[data-choice]';\n }\n if (userConfig === void 0) {\n userConfig = {};\n }\n var _this = this;\n if (userConfig.allowHTML === undefined) {\n console.warn('Deprecation warning: allowHTML will default to false in a future release. To render HTML in Choices, you will need to set it to true. Setting allowHTML will suppress this message.');\n }\n this.config = deepmerge_1.default.all([defaults_1.DEFAULT_CONFIG, Choices.defaults.options, userConfig],\n // When merging array configs, replace with a copy of the userConfig array,\n // instead of concatenating with the default array\n {\n arrayMerge: function (_, sourceArray) {\n return __spreadArray([], sourceArray, true);\n }\n });\n var invalidConfigOptions = (0, utils_1.diff)(this.config, defaults_1.DEFAULT_CONFIG);\n if (invalidConfigOptions.length) {\n console.warn('Unknown config option(s) passed', invalidConfigOptions.join(', '));\n }\n var passedElement = typeof element === 'string' ? document.querySelector(element) : element;\n if (!(passedElement instanceof HTMLInputElement || passedElement instanceof HTMLSelectElement)) {\n throw TypeError('Expected one of the following types text|select-one|select-multiple');\n }\n this._isTextElement = passedElement.type === constants_1.TEXT_TYPE;\n this._isSelectOneElement = passedElement.type === constants_1.SELECT_ONE_TYPE;\n this._isSelectMultipleElement = passedElement.type === constants_1.SELECT_MULTIPLE_TYPE;\n this._isSelectElement = this._isSelectOneElement || this._isSelectMultipleElement;\n this.config.searchEnabled = this._isSelectMultipleElement || this.config.searchEnabled;\n if (!['auto', 'always'].includes(\"\".concat(this.config.renderSelectedChoices))) {\n this.config.renderSelectedChoices = 'auto';\n }\n if (userConfig.addItemFilter && typeof userConfig.addItemFilter !== 'function') {\n var re = userConfig.addItemFilter instanceof RegExp ? userConfig.addItemFilter : new RegExp(userConfig.addItemFilter);\n this.config.addItemFilter = re.test.bind(re);\n }\n if (this._isTextElement) {\n this.passedElement = new components_1.WrappedInput({\n element: passedElement,\n classNames: this.config.classNames,\n delimiter: this.config.delimiter\n });\n } else {\n this.passedElement = new components_1.WrappedSelect({\n element: passedElement,\n classNames: this.config.classNames,\n template: function (data) {\n return _this._templates.option(data);\n }\n });\n }\n this.initialised = false;\n this._store = new store_1.default();\n this._initialState = reducers_1.defaultState;\n this._currentState = reducers_1.defaultState;\n this._prevState = reducers_1.defaultState;\n this._currentValue = '';\n this._canSearch = !!this.config.searchEnabled;\n this._isScrollingOnIe = false;\n this._highlightPosition = 0;\n this._wasTap = true;\n this._placeholderValue = this._generatePlaceholderValue();\n this._baseId = (0, utils_1.generateId)(this.passedElement.element, 'choices-');\n /**\n * setting direction in cases where it's explicitly set on passedElement\n * or when calculated direction is different from the document\n */\n this._direction = this.passedElement.dir;\n if (!this._direction) {\n var elementDirection = window.getComputedStyle(this.passedElement.element).direction;\n var documentDirection = window.getComputedStyle(document.documentElement).direction;\n if (elementDirection !== documentDirection) {\n this._direction = elementDirection;\n }\n }\n this._idNames = {\n itemChoice: 'item-choice'\n };\n if (this._isSelectElement) {\n // Assign preset groups from passed element\n this._presetGroups = this.passedElement.optionGroups;\n // Assign preset options from passed element\n this._presetOptions = this.passedElement.options;\n }\n // Assign preset choices from passed object\n this._presetChoices = this.config.choices;\n // Assign preset items from passed object first\n this._presetItems = this.config.items;\n // Add any values passed from attribute\n if (this.passedElement.value && this._isTextElement) {\n var splitValues = this.passedElement.value.split(this.config.delimiter);\n this._presetItems = this._presetItems.concat(splitValues);\n }\n // Create array of choices from option elements\n if (this.passedElement.options) {\n this.passedElement.options.forEach(function (option) {\n _this._presetChoices.push({\n value: option.value,\n label: option.innerHTML,\n selected: !!option.selected,\n disabled: option.disabled || option.parentNode.disabled,\n placeholder: option.value === '' || option.hasAttribute('placeholder'),\n customProperties: (0, utils_1.parseCustomProperties)(option.dataset.customProperties)\n });\n });\n }\n this._render = this._render.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n this._onKeyUp = this._onKeyUp.bind(this);\n this._onKeyDown = this._onKeyDown.bind(this);\n this._onClick = this._onClick.bind(this);\n this._onTouchMove = this._onTouchMove.bind(this);\n this._onTouchEnd = this._onTouchEnd.bind(this);\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onMouseOver = this._onMouseOver.bind(this);\n this._onFormReset = this._onFormReset.bind(this);\n this._onSelectKey = this._onSelectKey.bind(this);\n this._onEnterKey = this._onEnterKey.bind(this);\n this._onEscapeKey = this._onEscapeKey.bind(this);\n this._onDirectionKey = this._onDirectionKey.bind(this);\n this._onDeleteKey = this._onDeleteKey.bind(this);\n // If element has already been initialised with Choices, fail silently\n if (this.passedElement.isActive) {\n if (!this.config.silent) {\n console.warn('Trying to initialise Choices on element already initialised', {\n element: element\n });\n }\n this.initialised = true;\n return;\n }\n // Let's go\n this.init();\n }\n Object.defineProperty(Choices, \"defaults\", {\n get: function () {\n return Object.preventExtensions({\n get options() {\n return USER_DEFAULTS;\n },\n get templates() {\n return templates_1.default;\n }\n });\n },\n enumerable: false,\n configurable: true\n });\n Choices.prototype.init = function () {\n if (this.initialised) {\n return;\n }\n this._createTemplates();\n this._createElements();\n this._createStructure();\n this._store.subscribe(this._render);\n this._render();\n this._addEventListeners();\n var shouldDisable = !this.config.addItems || this.passedElement.element.hasAttribute('disabled');\n if (shouldDisable) {\n this.disable();\n }\n this.initialised = true;\n var callbackOnInit = this.config.callbackOnInit;\n // Run callback if it is a function\n if (callbackOnInit && typeof callbackOnInit === 'function') {\n callbackOnInit.call(this);\n }\n };\n Choices.prototype.destroy = function () {\n if (!this.initialised) {\n return;\n }\n this._removeEventListeners();\n this.passedElement.reveal();\n this.containerOuter.unwrap(this.passedElement.element);\n this.clearStore();\n if (this._isSelectElement) {\n this.passedElement.options = this._presetOptions;\n }\n this._templates = templates_1.default;\n this.initialised = false;\n };\n Choices.prototype.enable = function () {\n if (this.passedElement.isDisabled) {\n this.passedElement.enable();\n }\n if (this.containerOuter.isDisabled) {\n this._addEventListeners();\n this.input.enable();\n this.containerOuter.enable();\n }\n return this;\n };\n Choices.prototype.disable = function () {\n if (!this.passedElement.isDisabled) {\n this.passedElement.disable();\n }\n if (!this.containerOuter.isDisabled) {\n this._removeEventListeners();\n this.input.disable();\n this.containerOuter.disable();\n }\n return this;\n };\n Choices.prototype.highlightItem = function (item, runEvent) {\n if (runEvent === void 0) {\n runEvent = true;\n }\n if (!item || !item.id) {\n return this;\n }\n var id = item.id,\n _a = item.groupId,\n groupId = _a === void 0 ? -1 : _a,\n _b = item.value,\n value = _b === void 0 ? '' : _b,\n _c = item.label,\n label = _c === void 0 ? '' : _c;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n this._store.dispatch((0, items_1.highlightItem)(id, true));\n if (runEvent) {\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightItem, {\n id: id,\n value: value,\n label: label,\n groupValue: group && group.value ? group.value : null\n });\n }\n return this;\n };\n Choices.prototype.unhighlightItem = function (item) {\n if (!item || !item.id) {\n return this;\n }\n var id = item.id,\n _a = item.groupId,\n groupId = _a === void 0 ? -1 : _a,\n _b = item.value,\n value = _b === void 0 ? '' : _b,\n _c = item.label,\n label = _c === void 0 ? '' : _c;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n this._store.dispatch((0, items_1.highlightItem)(id, false));\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightItem, {\n id: id,\n value: value,\n label: label,\n groupValue: group && group.value ? group.value : null\n });\n return this;\n };\n Choices.prototype.highlightAll = function () {\n var _this = this;\n this._store.items.forEach(function (item) {\n return _this.highlightItem(item);\n });\n return this;\n };\n Choices.prototype.unhighlightAll = function () {\n var _this = this;\n this._store.items.forEach(function (item) {\n return _this.unhighlightItem(item);\n });\n return this;\n };\n Choices.prototype.removeActiveItemsByValue = function (value) {\n var _this = this;\n this._store.activeItems.filter(function (item) {\n return item.value === value;\n }).forEach(function (item) {\n return _this._removeItem(item);\n });\n return this;\n };\n Choices.prototype.removeActiveItems = function (excludedId) {\n var _this = this;\n this._store.activeItems.filter(function (_a) {\n var id = _a.id;\n return id !== excludedId;\n }).forEach(function (item) {\n return _this._removeItem(item);\n });\n return this;\n };\n Choices.prototype.removeHighlightedItems = function (runEvent) {\n var _this = this;\n if (runEvent === void 0) {\n runEvent = false;\n }\n this._store.highlightedActiveItems.forEach(function (item) {\n _this._removeItem(item);\n // If this action was performed by the user\n // trigger the event\n if (runEvent) {\n _this._triggerChange(item.value);\n }\n });\n return this;\n };\n Choices.prototype.showDropdown = function (preventInputFocus) {\n var _this = this;\n if (this.dropdown.isActive) {\n return this;\n }\n requestAnimationFrame(function () {\n _this.dropdown.show();\n _this.containerOuter.open(_this.dropdown.distanceFromTopWindow);\n if (!preventInputFocus && _this._canSearch) {\n _this.input.focus();\n }\n _this.passedElement.triggerEvent(constants_1.EVENTS.showDropdown, {});\n });\n return this;\n };\n Choices.prototype.hideDropdown = function (preventInputBlur) {\n var _this = this;\n if (!this.dropdown.isActive) {\n return this;\n }\n requestAnimationFrame(function () {\n _this.dropdown.hide();\n _this.containerOuter.close();\n if (!preventInputBlur && _this._canSearch) {\n _this.input.removeActiveDescendant();\n _this.input.blur();\n }\n _this.passedElement.triggerEvent(constants_1.EVENTS.hideDropdown, {});\n });\n return this;\n };\n Choices.prototype.getValue = function (valueOnly) {\n if (valueOnly === void 0) {\n valueOnly = false;\n }\n var values = this._store.activeItems.reduce(function (selectedItems, item) {\n var itemValue = valueOnly ? item.value : item;\n selectedItems.push(itemValue);\n return selectedItems;\n }, []);\n return this._isSelectOneElement ? values[0] : values;\n };\n Choices.prototype.setValue = function (items) {\n var _this = this;\n if (!this.initialised) {\n return this;\n }\n items.forEach(function (value) {\n return _this._setChoiceOrItem(value);\n });\n return this;\n };\n Choices.prototype.setChoiceByValue = function (value) {\n var _this = this;\n if (!this.initialised || this._isTextElement) {\n return this;\n }\n // If only one value has been passed, convert to array\n var choiceValue = Array.isArray(value) ? value : [value];\n // Loop through each value and\n choiceValue.forEach(function (val) {\n return _this._findAndSelectChoiceByValue(val);\n });\n return this;\n };\n /**\n * Set choices of select input via an array of objects (or function that returns array of object or promise of it),\n * a value field name and a label field name.\n * This behaves the same as passing items via the choices option but can be called after initialising Choices.\n * This can also be used to add groups of choices (see example 2); Optionally pass a true `replaceChoices` value to remove any existing choices.\n * Optionally pass a `customProperties` object to add additional data to your choices (useful when searching/filtering etc).\n *\n * **Input types affected:** select-one, select-multiple\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices([\n * {value: 'One', label: 'Label One', disabled: true},\n * {value: 'Two', label: 'Label Two', selected: true},\n * {value: 'Three', label: 'Label Three'},\n * ], 'value', 'label', false);\n * ```\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices(async () => {\n * try {\n * const items = await fetch('/items');\n * return items.json()\n * } catch(err) {\n * console.error(err)\n * }\n * });\n * ```\n *\n * @example\n * ```js\n * const example = new Choices(element);\n *\n * example.setChoices([{\n * label: 'Group one',\n * id: 1,\n * disabled: false,\n * choices: [\n * {value: 'Child One', label: 'Child One', selected: true},\n * {value: 'Child Two', label: 'Child Two', disabled: true},\n * {value: 'Child Three', label: 'Child Three'},\n * ]\n * },\n * {\n * label: 'Group two',\n * id: 2,\n * disabled: false,\n * choices: [\n * {value: 'Child Four', label: 'Child Four', disabled: true},\n * {value: 'Child Five', label: 'Child Five'},\n * {value: 'Child Six', label: 'Child Six', customProperties: {\n * description: 'Custom description about child six',\n * random: 'Another random custom property'\n * }},\n * ]\n * }], 'value', 'label', false);\n * ```\n */\n Choices.prototype.setChoices = function (choicesArrayOrFetcher, value, label, replaceChoices) {\n var _this = this;\n if (choicesArrayOrFetcher === void 0) {\n choicesArrayOrFetcher = [];\n }\n if (value === void 0) {\n value = 'value';\n }\n if (label === void 0) {\n label = 'label';\n }\n if (replaceChoices === void 0) {\n replaceChoices = false;\n }\n if (!this.initialised) {\n throw new ReferenceError(\"setChoices was called on a non-initialized instance of Choices\");\n }\n if (!this._isSelectElement) {\n throw new TypeError(\"setChoices can't be used with INPUT based Choices\");\n }\n if (typeof value !== 'string' || !value) {\n throw new TypeError(\"value parameter must be a name of 'value' field in passed objects\");\n }\n // Clear choices if needed\n if (replaceChoices) {\n this.clearChoices();\n }\n if (typeof choicesArrayOrFetcher === 'function') {\n // it's a choices fetcher function\n var fetcher_1 = choicesArrayOrFetcher(this);\n if (typeof Promise === 'function' && fetcher_1 instanceof Promise) {\n // that's a promise\n // eslint-disable-next-line no-promise-executor-return\n return new Promise(function (resolve) {\n return requestAnimationFrame(resolve);\n }).then(function () {\n return _this._handleLoadingState(true);\n }).then(function () {\n return fetcher_1;\n }).then(function (data) {\n return _this.setChoices(data, value, label, replaceChoices);\n }).catch(function (err) {\n if (!_this.config.silent) {\n console.error(err);\n }\n }).then(function () {\n return _this._handleLoadingState(false);\n }).then(function () {\n return _this;\n });\n }\n // function returned something else than promise, let's check if it's an array of choices\n if (!Array.isArray(fetcher_1)) {\n throw new TypeError(\".setChoices first argument function must return either array of choices or Promise, got: \".concat(typeof fetcher_1));\n }\n // recursion with results, it's sync and choices were cleared already\n return this.setChoices(fetcher_1, value, label, false);\n }\n if (!Array.isArray(choicesArrayOrFetcher)) {\n throw new TypeError(\".setChoices must be called either with array of choices with a function resulting into Promise of array of choices\");\n }\n this.containerOuter.removeLoadingState();\n this._startLoading();\n choicesArrayOrFetcher.forEach(function (groupOrChoice) {\n if (groupOrChoice.choices) {\n _this._addGroup({\n id: groupOrChoice.id ? parseInt(\"\".concat(groupOrChoice.id), 10) : null,\n group: groupOrChoice,\n valueKey: value,\n labelKey: label\n });\n } else {\n var choice = groupOrChoice;\n _this._addChoice({\n value: choice[value],\n label: choice[label],\n isSelected: !!choice.selected,\n isDisabled: !!choice.disabled,\n placeholder: !!choice.placeholder,\n customProperties: choice.customProperties\n });\n }\n });\n this._stopLoading();\n return this;\n };\n Choices.prototype.clearChoices = function () {\n this._store.dispatch((0, choices_1.clearChoices)());\n return this;\n };\n Choices.prototype.clearStore = function () {\n this._store.dispatch((0, misc_1.clearAll)());\n return this;\n };\n Choices.prototype.clearInput = function () {\n var shouldSetInputWidth = !this._isSelectOneElement;\n this.input.clear(shouldSetInputWidth);\n if (!this._isTextElement && this._canSearch) {\n this._isSearching = false;\n this._store.dispatch((0, choices_1.activateChoices)(true));\n }\n return this;\n };\n Choices.prototype._render = function () {\n if (this._store.isLoading()) {\n return;\n }\n this._currentState = this._store.state;\n var stateChanged = this._currentState.choices !== this._prevState.choices || this._currentState.groups !== this._prevState.groups || this._currentState.items !== this._prevState.items;\n var shouldRenderChoices = this._isSelectElement;\n var shouldRenderItems = this._currentState.items !== this._prevState.items;\n if (!stateChanged) {\n return;\n }\n if (shouldRenderChoices) {\n this._renderChoices();\n }\n if (shouldRenderItems) {\n this._renderItems();\n }\n this._prevState = this._currentState;\n };\n Choices.prototype._renderChoices = function () {\n var _this = this;\n var _a = this._store,\n activeGroups = _a.activeGroups,\n activeChoices = _a.activeChoices;\n var choiceListFragment = document.createDocumentFragment();\n this.choiceList.clear();\n if (this.config.resetScrollPosition) {\n requestAnimationFrame(function () {\n return _this.choiceList.scrollToTop();\n });\n }\n // If we have grouped options\n if (activeGroups.length >= 1 && !this._isSearching) {\n // If we have a placeholder choice along with groups\n var activePlaceholders = activeChoices.filter(function (activeChoice) {\n return activeChoice.placeholder === true && activeChoice.groupId === -1;\n });\n if (activePlaceholders.length >= 1) {\n choiceListFragment = this._createChoicesFragment(activePlaceholders, choiceListFragment);\n }\n choiceListFragment = this._createGroupsFragment(activeGroups, activeChoices, choiceListFragment);\n } else if (activeChoices.length >= 1) {\n choiceListFragment = this._createChoicesFragment(activeChoices, choiceListFragment);\n }\n // If we have choices to show\n if (choiceListFragment.childNodes && choiceListFragment.childNodes.length > 0) {\n var activeItems = this._store.activeItems;\n var canAddItem = this._canAddItem(activeItems, this.input.value);\n // ...and we can select them\n if (canAddItem.response) {\n // ...append them and highlight the first choice\n this.choiceList.append(choiceListFragment);\n this._highlightChoice();\n } else {\n var notice = this._getTemplate('notice', canAddItem.notice);\n this.choiceList.append(notice);\n }\n } else {\n // Otherwise show a notice\n var dropdownItem = void 0;\n var notice = void 0;\n if (this._isSearching) {\n notice = typeof this.config.noResultsText === 'function' ? this.config.noResultsText() : this.config.noResultsText;\n dropdownItem = this._getTemplate('notice', notice, 'no-results');\n } else {\n notice = typeof this.config.noChoicesText === 'function' ? this.config.noChoicesText() : this.config.noChoicesText;\n dropdownItem = this._getTemplate('notice', notice, 'no-choices');\n }\n this.choiceList.append(dropdownItem);\n }\n };\n Choices.prototype._renderItems = function () {\n var activeItems = this._store.activeItems || [];\n this.itemList.clear();\n // Create a fragment to store our list items\n // (so we don't have to update the DOM for each item)\n var itemListFragment = this._createItemsFragment(activeItems);\n // If we have items to add, append them\n if (itemListFragment.childNodes) {\n this.itemList.append(itemListFragment);\n }\n };\n Choices.prototype._createGroupsFragment = function (groups, choices, fragment) {\n var _this = this;\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n var getGroupChoices = function (group) {\n return choices.filter(function (choice) {\n if (_this._isSelectOneElement) {\n return choice.groupId === group.id;\n }\n return choice.groupId === group.id && (_this.config.renderSelectedChoices === 'always' || !choice.selected);\n });\n };\n // If sorting is enabled, filter groups\n if (this.config.shouldSort) {\n groups.sort(this.config.sorter);\n }\n groups.forEach(function (group) {\n var groupChoices = getGroupChoices(group);\n if (groupChoices.length >= 1) {\n var dropdownGroup = _this._getTemplate('choiceGroup', group);\n fragment.appendChild(dropdownGroup);\n _this._createChoicesFragment(groupChoices, fragment, true);\n }\n });\n return fragment;\n };\n Choices.prototype._createChoicesFragment = function (choices, fragment, withinGroup) {\n var _this = this;\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n if (withinGroup === void 0) {\n withinGroup = false;\n }\n // Create a fragment to store our list items (so we don't have to update the DOM for each item)\n var _a = this.config,\n renderSelectedChoices = _a.renderSelectedChoices,\n searchResultLimit = _a.searchResultLimit,\n renderChoiceLimit = _a.renderChoiceLimit;\n var filter = this._isSearching ? utils_1.sortByScore : this.config.sorter;\n var appendChoice = function (choice) {\n var shouldRender = renderSelectedChoices === 'auto' ? _this._isSelectOneElement || !choice.selected : true;\n if (shouldRender) {\n var dropdownItem = _this._getTemplate('choice', choice, _this.config.itemSelectText);\n fragment.appendChild(dropdownItem);\n }\n };\n var rendererableChoices = choices;\n if (renderSelectedChoices === 'auto' && !this._isSelectOneElement) {\n rendererableChoices = choices.filter(function (choice) {\n return !choice.selected;\n });\n }\n // Split array into placeholders and \"normal\" choices\n var _b = rendererableChoices.reduce(function (acc, choice) {\n if (choice.placeholder) {\n acc.placeholderChoices.push(choice);\n } else {\n acc.normalChoices.push(choice);\n }\n return acc;\n }, {\n placeholderChoices: [],\n normalChoices: []\n }),\n placeholderChoices = _b.placeholderChoices,\n normalChoices = _b.normalChoices;\n // If sorting is enabled or the user is searching, filter choices\n if (this.config.shouldSort || this._isSearching) {\n normalChoices.sort(filter);\n }\n var choiceLimit = rendererableChoices.length;\n // Prepend placeholeder\n var sortedChoices = this._isSelectOneElement ? __spreadArray(__spreadArray([], placeholderChoices, true), normalChoices, true) : normalChoices;\n if (this._isSearching) {\n choiceLimit = searchResultLimit;\n } else if (renderChoiceLimit && renderChoiceLimit > 0 && !withinGroup) {\n choiceLimit = renderChoiceLimit;\n }\n // Add each choice to dropdown within range\n for (var i = 0; i < choiceLimit; i += 1) {\n if (sortedChoices[i]) {\n appendChoice(sortedChoices[i]);\n }\n }\n return fragment;\n };\n Choices.prototype._createItemsFragment = function (items, fragment) {\n var _this = this;\n if (fragment === void 0) {\n fragment = document.createDocumentFragment();\n }\n // Create fragment to add elements to\n var _a = this.config,\n shouldSortItems = _a.shouldSortItems,\n sorter = _a.sorter,\n removeItemButton = _a.removeItemButton;\n // If sorting is enabled, filter items\n if (shouldSortItems && !this._isSelectOneElement) {\n items.sort(sorter);\n }\n if (this._isTextElement) {\n // Update the value of the hidden input\n this.passedElement.value = items.map(function (_a) {\n var value = _a.value;\n return value;\n }).join(this.config.delimiter);\n } else {\n // Update the options of the hidden input\n this.passedElement.options = items;\n }\n var addItemToFragment = function (item) {\n // Create new list element\n var listItem = _this._getTemplate('item', item, removeItemButton);\n // Append it to list\n fragment.appendChild(listItem);\n };\n // Add each list item to list\n items.forEach(addItemToFragment);\n return fragment;\n };\n Choices.prototype._triggerChange = function (value) {\n if (value === undefined || value === null) {\n return;\n }\n this.passedElement.triggerEvent(constants_1.EVENTS.change, {\n value: value\n });\n };\n Choices.prototype._selectPlaceholderChoice = function (placeholderChoice) {\n this._addItem({\n value: placeholderChoice.value,\n label: placeholderChoice.label,\n choiceId: placeholderChoice.id,\n groupId: placeholderChoice.groupId,\n placeholder: placeholderChoice.placeholder\n });\n this._triggerChange(placeholderChoice.value);\n };\n Choices.prototype._handleButtonAction = function (activeItems, element) {\n if (!activeItems || !element || !this.config.removeItems || !this.config.removeItemButton) {\n return;\n }\n var itemId = element.parentNode && element.parentNode.dataset.id;\n var itemToRemove = itemId && activeItems.find(function (item) {\n return item.id === parseInt(itemId, 10);\n });\n if (!itemToRemove) {\n return;\n }\n // Remove item associated with button\n this._removeItem(itemToRemove);\n this._triggerChange(itemToRemove.value);\n if (this._isSelectOneElement && this._store.placeholderChoice) {\n this._selectPlaceholderChoice(this._store.placeholderChoice);\n }\n };\n Choices.prototype._handleItemAction = function (activeItems, element, hasShiftKey) {\n var _this = this;\n if (hasShiftKey === void 0) {\n hasShiftKey = false;\n }\n if (!activeItems || !element || !this.config.removeItems || this._isSelectOneElement) {\n return;\n }\n var passedId = element.dataset.id;\n // We only want to select one item with a click\n // so we deselect any items that aren't the target\n // unless shift is being pressed\n activeItems.forEach(function (item) {\n if (item.id === parseInt(\"\".concat(passedId), 10) && !item.highlighted) {\n _this.highlightItem(item);\n } else if (!hasShiftKey && item.highlighted) {\n _this.unhighlightItem(item);\n }\n });\n // Focus input as without focus, a user cannot do anything with a\n // highlighted item\n this.input.focus();\n };\n Choices.prototype._handleChoiceAction = function (activeItems, element) {\n if (!activeItems || !element) {\n return;\n }\n // If we are clicking on an option\n var id = element.dataset.id;\n var choice = id && this._store.getChoiceById(id);\n if (!choice) {\n return;\n }\n var passedKeyCode = activeItems[0] && activeItems[0].keyCode ? activeItems[0].keyCode : undefined;\n var hasActiveDropdown = this.dropdown.isActive;\n // Update choice keyCode\n choice.keyCode = passedKeyCode;\n this.passedElement.triggerEvent(constants_1.EVENTS.choice, {\n choice: choice\n });\n if (!choice.selected && !choice.disabled) {\n var canAddItem = this._canAddItem(activeItems, choice.value);\n if (canAddItem.response) {\n this._addItem({\n value: choice.value,\n label: choice.label,\n choiceId: choice.id,\n groupId: choice.groupId,\n customProperties: choice.customProperties,\n placeholder: choice.placeholder,\n keyCode: choice.keyCode\n });\n this._triggerChange(choice.value);\n }\n }\n this.clearInput();\n // We want to close the dropdown if we are dealing with a single select box\n if (hasActiveDropdown && this._isSelectOneElement) {\n this.hideDropdown(true);\n this.containerOuter.focus();\n }\n };\n Choices.prototype._handleBackspace = function (activeItems) {\n if (!this.config.removeItems || !activeItems) {\n return;\n }\n var lastItem = activeItems[activeItems.length - 1];\n var hasHighlightedItems = activeItems.some(function (item) {\n return item.highlighted;\n });\n // If editing the last item is allowed and there are not other selected items,\n // we can edit the item value. Otherwise if we can remove items, remove all selected items\n if (this.config.editItems && !hasHighlightedItems && lastItem) {\n this.input.value = lastItem.value;\n this.input.setWidth();\n this._removeItem(lastItem);\n this._triggerChange(lastItem.value);\n } else {\n if (!hasHighlightedItems) {\n // Highlight last item if none already highlighted\n this.highlightItem(lastItem, false);\n }\n this.removeHighlightedItems(true);\n }\n };\n Choices.prototype._startLoading = function () {\n this._store.dispatch((0, misc_1.setIsLoading)(true));\n };\n Choices.prototype._stopLoading = function () {\n this._store.dispatch((0, misc_1.setIsLoading)(false));\n };\n Choices.prototype._handleLoadingState = function (setLoading) {\n if (setLoading === void 0) {\n setLoading = true;\n }\n var placeholderItem = this.itemList.getChild(\".\".concat(this.config.classNames.placeholder));\n if (setLoading) {\n this.disable();\n this.containerOuter.addLoadingState();\n if (this._isSelectOneElement) {\n if (!placeholderItem) {\n placeholderItem = this._getTemplate('placeholder', this.config.loadingText);\n if (placeholderItem) {\n this.itemList.append(placeholderItem);\n }\n } else {\n placeholderItem.innerHTML = this.config.loadingText;\n }\n } else {\n this.input.placeholder = this.config.loadingText;\n }\n } else {\n this.enable();\n this.containerOuter.removeLoadingState();\n if (this._isSelectOneElement) {\n if (placeholderItem) {\n placeholderItem.innerHTML = this._placeholderValue || '';\n }\n } else {\n this.input.placeholder = this._placeholderValue || '';\n }\n }\n };\n Choices.prototype._handleSearch = function (value) {\n if (!this.input.isFocussed) {\n return;\n }\n var choices = this._store.choices;\n var _a = this.config,\n searchFloor = _a.searchFloor,\n searchChoices = _a.searchChoices;\n var hasUnactiveChoices = choices.some(function (option) {\n return !option.active;\n });\n // Check that we have a value to search and the input was an alphanumeric character\n if (value !== null && typeof value !== 'undefined' && value.length >= searchFloor) {\n var resultCount = searchChoices ? this._searchChoices(value) : 0;\n // Trigger search event\n this.passedElement.triggerEvent(constants_1.EVENTS.search, {\n value: value,\n resultCount: resultCount\n });\n } else if (hasUnactiveChoices) {\n // Otherwise reset choices to active\n this._isSearching = false;\n this._store.dispatch((0, choices_1.activateChoices)(true));\n }\n };\n Choices.prototype._canAddItem = function (activeItems, value) {\n var canAddItem = true;\n var notice = typeof this.config.addItemText === 'function' ? this.config.addItemText(value) : this.config.addItemText;\n if (!this._isSelectOneElement) {\n var isDuplicateValue = (0, utils_1.existsInArray)(activeItems, value);\n if (this.config.maxItemCount > 0 && this.config.maxItemCount <= activeItems.length) {\n // If there is a max entry limit and we have reached that limit\n // don't update\n canAddItem = false;\n notice = typeof this.config.maxItemText === 'function' ? this.config.maxItemText(this.config.maxItemCount) : this.config.maxItemText;\n }\n if (!this.config.duplicateItemsAllowed && isDuplicateValue && canAddItem) {\n canAddItem = false;\n notice = typeof this.config.uniqueItemText === 'function' ? this.config.uniqueItemText(value) : this.config.uniqueItemText;\n }\n if (this._isTextElement && this.config.addItems && canAddItem && typeof this.config.addItemFilter === 'function' && !this.config.addItemFilter(value)) {\n canAddItem = false;\n notice = typeof this.config.customAddItemText === 'function' ? this.config.customAddItemText(value) : this.config.customAddItemText;\n }\n }\n return {\n response: canAddItem,\n notice: notice\n };\n };\n Choices.prototype._searchChoices = function (value) {\n var newValue = typeof value === 'string' ? value.trim() : value;\n var currentValue = typeof this._currentValue === 'string' ? this._currentValue.trim() : this._currentValue;\n if (newValue.length < 1 && newValue === \"\".concat(currentValue, \" \")) {\n return 0;\n }\n // If new value matches the desired length and is not the same as the current value with a space\n var haystack = this._store.searchableChoices;\n var needle = newValue;\n var options = Object.assign(this.config.fuseOptions, {\n keys: __spreadArray([], this.config.searchFields, true),\n includeMatches: true\n });\n var fuse = new fuse_js_1.default(haystack, options);\n var results = fuse.search(needle); // see https://github.com/krisk/Fuse/issues/303\n this._currentValue = newValue;\n this._highlightPosition = 0;\n this._isSearching = true;\n this._store.dispatch((0, choices_1.filterChoices)(results));\n return results.length;\n };\n Choices.prototype._addEventListeners = function () {\n var documentElement = document.documentElement;\n // capture events - can cancel event processing or propagation\n documentElement.addEventListener('touchend', this._onTouchEnd, true);\n this.containerOuter.element.addEventListener('keydown', this._onKeyDown, true);\n this.containerOuter.element.addEventListener('mousedown', this._onMouseDown, true);\n // passive events - doesn't call `preventDefault` or `stopPropagation`\n documentElement.addEventListener('click', this._onClick, {\n passive: true\n });\n documentElement.addEventListener('touchmove', this._onTouchMove, {\n passive: true\n });\n this.dropdown.element.addEventListener('mouseover', this._onMouseOver, {\n passive: true\n });\n if (this._isSelectOneElement) {\n this.containerOuter.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.containerOuter.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n }\n this.input.element.addEventListener('keyup', this._onKeyUp, {\n passive: true\n });\n this.input.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.input.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n if (this.input.element.form) {\n this.input.element.form.addEventListener('reset', this._onFormReset, {\n passive: true\n });\n }\n this.input.addEventListeners();\n };\n Choices.prototype._removeEventListeners = function () {\n var documentElement = document.documentElement;\n documentElement.removeEventListener('touchend', this._onTouchEnd, true);\n this.containerOuter.element.removeEventListener('keydown', this._onKeyDown, true);\n this.containerOuter.element.removeEventListener('mousedown', this._onMouseDown, true);\n documentElement.removeEventListener('click', this._onClick);\n documentElement.removeEventListener('touchmove', this._onTouchMove);\n this.dropdown.element.removeEventListener('mouseover', this._onMouseOver);\n if (this._isSelectOneElement) {\n this.containerOuter.element.removeEventListener('focus', this._onFocus);\n this.containerOuter.element.removeEventListener('blur', this._onBlur);\n }\n this.input.element.removeEventListener('keyup', this._onKeyUp);\n this.input.element.removeEventListener('focus', this._onFocus);\n this.input.element.removeEventListener('blur', this._onBlur);\n if (this.input.element.form) {\n this.input.element.form.removeEventListener('reset', this._onFormReset);\n }\n this.input.removeEventListeners();\n };\n Choices.prototype._onKeyDown = function (event) {\n var keyCode = event.keyCode;\n var activeItems = this._store.activeItems;\n var hasFocusedInput = this.input.isFocussed;\n var hasActiveDropdown = this.dropdown.isActive;\n var hasItems = this.itemList.hasChildren();\n var keyString = String.fromCharCode(keyCode);\n // eslint-disable-next-line no-control-regex\n var wasPrintableChar = /[^\\x00-\\x1F]/.test(keyString);\n var BACK_KEY = constants_1.KEY_CODES.BACK_KEY,\n DELETE_KEY = constants_1.KEY_CODES.DELETE_KEY,\n ENTER_KEY = constants_1.KEY_CODES.ENTER_KEY,\n A_KEY = constants_1.KEY_CODES.A_KEY,\n ESC_KEY = constants_1.KEY_CODES.ESC_KEY,\n UP_KEY = constants_1.KEY_CODES.UP_KEY,\n DOWN_KEY = constants_1.KEY_CODES.DOWN_KEY,\n PAGE_UP_KEY = constants_1.KEY_CODES.PAGE_UP_KEY,\n PAGE_DOWN_KEY = constants_1.KEY_CODES.PAGE_DOWN_KEY;\n if (!this._isTextElement && !hasActiveDropdown && wasPrintableChar) {\n this.showDropdown();\n if (!this.input.isFocussed) {\n /*\n We update the input value with the pressed key as\n the input was not focussed at the time of key press\n therefore does not have the value of the key.\n */\n this.input.value += event.key.toLowerCase();\n }\n }\n switch (keyCode) {\n case A_KEY:\n return this._onSelectKey(event, hasItems);\n case ENTER_KEY:\n return this._onEnterKey(event, activeItems, hasActiveDropdown);\n case ESC_KEY:\n return this._onEscapeKey(hasActiveDropdown);\n case UP_KEY:\n case PAGE_UP_KEY:\n case DOWN_KEY:\n case PAGE_DOWN_KEY:\n return this._onDirectionKey(event, hasActiveDropdown);\n case DELETE_KEY:\n case BACK_KEY:\n return this._onDeleteKey(event, activeItems, hasFocusedInput);\n default:\n }\n };\n Choices.prototype._onKeyUp = function (_a) {\n var target = _a.target,\n keyCode = _a.keyCode;\n var value = this.input.value;\n var activeItems = this._store.activeItems;\n var canAddItem = this._canAddItem(activeItems, value);\n var backKey = constants_1.KEY_CODES.BACK_KEY,\n deleteKey = constants_1.KEY_CODES.DELETE_KEY;\n // We are typing into a text input and have a value, we want to show a dropdown\n // notice. Otherwise hide the dropdown\n if (this._isTextElement) {\n var canShowDropdownNotice = canAddItem.notice && value;\n if (canShowDropdownNotice) {\n var dropdownItem = this._getTemplate('notice', canAddItem.notice);\n this.dropdown.element.innerHTML = dropdownItem.outerHTML;\n this.showDropdown(true);\n } else {\n this.hideDropdown(true);\n }\n } else {\n var wasRemovalKeyCode = keyCode === backKey || keyCode === deleteKey;\n var userHasRemovedValue = wasRemovalKeyCode && target && !target.value;\n var canReactivateChoices = !this._isTextElement && this._isSearching;\n var canSearch = this._canSearch && canAddItem.response;\n if (userHasRemovedValue && canReactivateChoices) {\n this._isSearching = false;\n this._store.dispatch((0, choices_1.activateChoices)(true));\n } else if (canSearch) {\n this._handleSearch(this.input.rawValue);\n }\n }\n this._canSearch = this.config.searchEnabled;\n };\n Choices.prototype._onSelectKey = function (event, hasItems) {\n var ctrlKey = event.ctrlKey,\n metaKey = event.metaKey;\n var hasCtrlDownKeyPressed = ctrlKey || metaKey;\n // If CTRL + A or CMD + A have been pressed and there are items to select\n if (hasCtrlDownKeyPressed && hasItems) {\n this._canSearch = false;\n var shouldHightlightAll = this.config.removeItems && !this.input.value && this.input.element === document.activeElement;\n if (shouldHightlightAll) {\n this.highlightAll();\n }\n }\n };\n Choices.prototype._onEnterKey = function (event, activeItems, hasActiveDropdown) {\n var target = event.target;\n var enterKey = constants_1.KEY_CODES.ENTER_KEY;\n var targetWasButton = target && target.hasAttribute('data-button');\n if (this._isTextElement && target && target.value) {\n var value = this.input.value;\n var canAddItem = this._canAddItem(activeItems, value);\n if (canAddItem.response) {\n this.hideDropdown(true);\n this._addItem({\n value: value\n });\n this._triggerChange(value);\n this.clearInput();\n }\n }\n if (targetWasButton) {\n this._handleButtonAction(activeItems, target);\n event.preventDefault();\n }\n if (hasActiveDropdown) {\n var highlightedChoice = this.dropdown.getChild(\".\".concat(this.config.classNames.highlightedState));\n if (highlightedChoice) {\n // add enter keyCode value\n if (activeItems[0]) {\n activeItems[0].keyCode = enterKey; // eslint-disable-line no-param-reassign\n }\n\n this._handleChoiceAction(activeItems, highlightedChoice);\n }\n event.preventDefault();\n } else if (this._isSelectOneElement) {\n this.showDropdown();\n event.preventDefault();\n }\n };\n Choices.prototype._onEscapeKey = function (hasActiveDropdown) {\n if (hasActiveDropdown) {\n this.hideDropdown(true);\n this.containerOuter.focus();\n }\n };\n Choices.prototype._onDirectionKey = function (event, hasActiveDropdown) {\n var keyCode = event.keyCode,\n metaKey = event.metaKey;\n var downKey = constants_1.KEY_CODES.DOWN_KEY,\n pageUpKey = constants_1.KEY_CODES.PAGE_UP_KEY,\n pageDownKey = constants_1.KEY_CODES.PAGE_DOWN_KEY;\n // If up or down key is pressed, traverse through options\n if (hasActiveDropdown || this._isSelectOneElement) {\n this.showDropdown();\n this._canSearch = false;\n var directionInt = keyCode === downKey || keyCode === pageDownKey ? 1 : -1;\n var skipKey = metaKey || keyCode === pageDownKey || keyCode === pageUpKey;\n var selectableChoiceIdentifier = '[data-choice-selectable]';\n var nextEl = void 0;\n if (skipKey) {\n if (directionInt > 0) {\n nextEl = this.dropdown.element.querySelector(\"\".concat(selectableChoiceIdentifier, \":last-of-type\"));\n } else {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n }\n } else {\n var currentEl = this.dropdown.element.querySelector(\".\".concat(this.config.classNames.highlightedState));\n if (currentEl) {\n nextEl = (0, utils_1.getAdjacentEl)(currentEl, selectableChoiceIdentifier, directionInt);\n } else {\n nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);\n }\n }\n if (nextEl) {\n // We prevent default to stop the cursor moving\n // when pressing the arrow\n if (!(0, utils_1.isScrolledIntoView)(nextEl, this.choiceList.element, directionInt)) {\n this.choiceList.scrollToChildElement(nextEl, directionInt);\n }\n this._highlightChoice(nextEl);\n }\n // Prevent default to maintain cursor position whilst\n // traversing dropdown options\n event.preventDefault();\n }\n };\n Choices.prototype._onDeleteKey = function (event, activeItems, hasFocusedInput) {\n var target = event.target;\n // If backspace or delete key is pressed and the input has no value\n if (!this._isSelectOneElement && !target.value && hasFocusedInput) {\n this._handleBackspace(activeItems);\n event.preventDefault();\n }\n };\n Choices.prototype._onTouchMove = function () {\n if (this._wasTap) {\n this._wasTap = false;\n }\n };\n Choices.prototype._onTouchEnd = function (event) {\n var target = (event || event.touches[0]).target;\n var touchWasWithinContainer = this._wasTap && this.containerOuter.element.contains(target);\n if (touchWasWithinContainer) {\n var containerWasExactTarget = target === this.containerOuter.element || target === this.containerInner.element;\n if (containerWasExactTarget) {\n if (this._isTextElement) {\n this.input.focus();\n } else if (this._isSelectMultipleElement) {\n this.showDropdown();\n }\n }\n // Prevents focus event firing\n event.stopPropagation();\n }\n this._wasTap = true;\n };\n /**\n * Handles mousedown event in capture mode for containetOuter.element\n */\n Choices.prototype._onMouseDown = function (event) {\n var target = event.target;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n // If we have our mouse down on the scrollbar and are on IE11...\n if (IS_IE11 && this.choiceList.element.contains(target)) {\n // check if click was on a scrollbar area\n var firstChoice = this.choiceList.element.firstElementChild;\n var isOnScrollbar = this._direction === 'ltr' ? event.offsetX >= firstChoice.offsetWidth : event.offsetX < firstChoice.offsetLeft;\n this._isScrollingOnIe = isOnScrollbar;\n }\n if (target === this.input.element) {\n return;\n }\n var item = target.closest('[data-button],[data-item],[data-choice]');\n if (item instanceof HTMLElement) {\n var hasShiftKey = event.shiftKey;\n var activeItems = this._store.activeItems;\n var dataset = item.dataset;\n if ('button' in dataset) {\n this._handleButtonAction(activeItems, item);\n } else if ('item' in dataset) {\n this._handleItemAction(activeItems, item, hasShiftKey);\n } else if ('choice' in dataset) {\n this._handleChoiceAction(activeItems, item);\n }\n }\n event.preventDefault();\n };\n /**\n * Handles mouseover event over this.dropdown\n * @param {MouseEvent} event\n */\n Choices.prototype._onMouseOver = function (_a) {\n var target = _a.target;\n if (target instanceof HTMLElement && 'choice' in target.dataset) {\n this._highlightChoice(target);\n }\n };\n Choices.prototype._onClick = function (_a) {\n var target = _a.target;\n var clickWasWithinContainer = this.containerOuter.element.contains(target);\n if (clickWasWithinContainer) {\n if (!this.dropdown.isActive && !this.containerOuter.isDisabled) {\n if (this._isTextElement) {\n if (document.activeElement !== this.input.element) {\n this.input.focus();\n }\n } else {\n this.showDropdown();\n this.containerOuter.focus();\n }\n } else if (this._isSelectOneElement && target !== this.input.element && !this.dropdown.element.contains(target)) {\n this.hideDropdown();\n }\n } else {\n var hasHighlightedItems = this._store.highlightedActiveItems.length > 0;\n if (hasHighlightedItems) {\n this.unhighlightAll();\n }\n this.containerOuter.removeFocusState();\n this.hideDropdown(true);\n }\n };\n Choices.prototype._onFocus = function (_a) {\n var _b;\n var _this = this;\n var target = _a.target;\n var focusWasWithinContainer = target && this.containerOuter.element.contains(target);\n if (!focusWasWithinContainer) {\n return;\n }\n var focusActions = (_b = {}, _b[constants_1.TEXT_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.addFocusState();\n }\n }, _b[constants_1.SELECT_ONE_TYPE] = function () {\n _this.containerOuter.addFocusState();\n if (target === _this.input.element) {\n _this.showDropdown(true);\n }\n }, _b[constants_1.SELECT_MULTIPLE_TYPE] = function () {\n if (target === _this.input.element) {\n _this.showDropdown(true);\n // If element is a select box, the focused element is the container and the dropdown\n // isn't already open, focus and show dropdown\n _this.containerOuter.addFocusState();\n }\n }, _b);\n focusActions[this.passedElement.element.type]();\n };\n Choices.prototype._onBlur = function (_a) {\n var _b;\n var _this = this;\n var target = _a.target;\n var blurWasWithinContainer = target && this.containerOuter.element.contains(target);\n if (blurWasWithinContainer && !this._isScrollingOnIe) {\n var activeItems = this._store.activeItems;\n var hasHighlightedItems_1 = activeItems.some(function (item) {\n return item.highlighted;\n });\n var blurActions = (_b = {}, _b[constants_1.TEXT_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.removeFocusState();\n if (hasHighlightedItems_1) {\n _this.unhighlightAll();\n }\n _this.hideDropdown(true);\n }\n }, _b[constants_1.SELECT_ONE_TYPE] = function () {\n _this.containerOuter.removeFocusState();\n if (target === _this.input.element || target === _this.containerOuter.element && !_this._canSearch) {\n _this.hideDropdown(true);\n }\n }, _b[constants_1.SELECT_MULTIPLE_TYPE] = function () {\n if (target === _this.input.element) {\n _this.containerOuter.removeFocusState();\n _this.hideDropdown(true);\n if (hasHighlightedItems_1) {\n _this.unhighlightAll();\n }\n }\n }, _b);\n blurActions[this.passedElement.element.type]();\n } else {\n // On IE11, clicking the scollbar blurs our input and thus\n // closes the dropdown. To stop this, we refocus our input\n // if we know we are on IE *and* are scrolling.\n this._isScrollingOnIe = false;\n this.input.element.focus();\n }\n };\n Choices.prototype._onFormReset = function () {\n this._store.dispatch((0, misc_1.resetTo)(this._initialState));\n };\n Choices.prototype._highlightChoice = function (el) {\n var _this = this;\n if (el === void 0) {\n el = null;\n }\n var choices = Array.from(this.dropdown.element.querySelectorAll('[data-choice-selectable]'));\n if (!choices.length) {\n return;\n }\n var passedEl = el;\n var highlightedChoices = Array.from(this.dropdown.element.querySelectorAll(\".\".concat(this.config.classNames.highlightedState)));\n // Remove any highlighted choices\n highlightedChoices.forEach(function (choice) {\n choice.classList.remove(_this.config.classNames.highlightedState);\n choice.setAttribute('aria-selected', 'false');\n });\n if (passedEl) {\n this._highlightPosition = choices.indexOf(passedEl);\n } else {\n // Highlight choice based on last known highlight location\n if (choices.length > this._highlightPosition) {\n // If we have an option to highlight\n passedEl = choices[this._highlightPosition];\n } else {\n // Otherwise highlight the option before\n passedEl = choices[choices.length - 1];\n }\n if (!passedEl) {\n passedEl = choices[0];\n }\n }\n passedEl.classList.add(this.config.classNames.highlightedState);\n passedEl.setAttribute('aria-selected', 'true');\n this.passedElement.triggerEvent(constants_1.EVENTS.highlightChoice, {\n el: passedEl\n });\n if (this.dropdown.isActive) {\n // IE11 ignores aria-label and blocks virtual keyboard\n // if aria-activedescendant is set without a dropdown\n this.input.setActiveDescendant(passedEl.id);\n this.containerOuter.setActiveDescendant(passedEl.id);\n }\n };\n Choices.prototype._addItem = function (_a) {\n var value = _a.value,\n _b = _a.label,\n label = _b === void 0 ? null : _b,\n _c = _a.choiceId,\n choiceId = _c === void 0 ? -1 : _c,\n _d = _a.groupId,\n groupId = _d === void 0 ? -1 : _d,\n _e = _a.customProperties,\n customProperties = _e === void 0 ? {} : _e,\n _f = _a.placeholder,\n placeholder = _f === void 0 ? false : _f,\n _g = _a.keyCode,\n keyCode = _g === void 0 ? -1 : _g;\n var passedValue = typeof value === 'string' ? value.trim() : value;\n var items = this._store.items;\n var passedLabel = label || passedValue;\n var passedOptionId = choiceId || -1;\n var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;\n var id = items ? items.length + 1 : 1;\n // If a prepended value has been passed, prepend it\n if (this.config.prependValue) {\n passedValue = this.config.prependValue + passedValue.toString();\n }\n // If an appended value has been passed, append it\n if (this.config.appendValue) {\n passedValue += this.config.appendValue.toString();\n }\n this._store.dispatch((0, items_1.addItem)({\n value: passedValue,\n label: passedLabel,\n id: id,\n choiceId: passedOptionId,\n groupId: groupId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n }));\n if (this._isSelectOneElement) {\n this.removeActiveItems(id);\n }\n // Trigger change event\n this.passedElement.triggerEvent(constants_1.EVENTS.addItem, {\n id: id,\n value: passedValue,\n label: passedLabel,\n customProperties: customProperties,\n groupValue: group && group.value ? group.value : null,\n keyCode: keyCode\n });\n };\n Choices.prototype._removeItem = function (item) {\n var id = item.id,\n value = item.value,\n label = item.label,\n customProperties = item.customProperties,\n choiceId = item.choiceId,\n groupId = item.groupId;\n var group = groupId && groupId >= 0 ? this._store.getGroupById(groupId) : null;\n if (!id || !choiceId) {\n return;\n }\n this._store.dispatch((0, items_1.removeItem)(id, choiceId));\n this.passedElement.triggerEvent(constants_1.EVENTS.removeItem, {\n id: id,\n value: value,\n label: label,\n customProperties: customProperties,\n groupValue: group && group.value ? group.value : null\n });\n };\n Choices.prototype._addChoice = function (_a) {\n var value = _a.value,\n _b = _a.label,\n label = _b === void 0 ? null : _b,\n _c = _a.isSelected,\n isSelected = _c === void 0 ? false : _c,\n _d = _a.isDisabled,\n isDisabled = _d === void 0 ? false : _d,\n _e = _a.groupId,\n groupId = _e === void 0 ? -1 : _e,\n _f = _a.customProperties,\n customProperties = _f === void 0 ? {} : _f,\n _g = _a.placeholder,\n placeholder = _g === void 0 ? false : _g,\n _h = _a.keyCode,\n keyCode = _h === void 0 ? -1 : _h;\n if (typeof value === 'undefined' || value === null) {\n return;\n }\n // Generate unique id\n var choices = this._store.choices;\n var choiceLabel = label || value;\n var choiceId = choices ? choices.length + 1 : 1;\n var choiceElementId = \"\".concat(this._baseId, \"-\").concat(this._idNames.itemChoice, \"-\").concat(choiceId);\n this._store.dispatch((0, choices_1.addChoice)({\n id: choiceId,\n groupId: groupId,\n elementId: choiceElementId,\n value: value,\n label: choiceLabel,\n disabled: isDisabled,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n }));\n if (isSelected) {\n this._addItem({\n value: value,\n label: choiceLabel,\n choiceId: choiceId,\n customProperties: customProperties,\n placeholder: placeholder,\n keyCode: keyCode\n });\n }\n };\n Choices.prototype._addGroup = function (_a) {\n var _this = this;\n var group = _a.group,\n id = _a.id,\n _b = _a.valueKey,\n valueKey = _b === void 0 ? 'value' : _b,\n _c = _a.labelKey,\n labelKey = _c === void 0 ? 'label' : _c;\n var groupChoices = (0, utils_1.isType)('Object', group) ? group.choices : Array.from(group.getElementsByTagName('OPTION'));\n var groupId = id || Math.floor(new Date().valueOf() * Math.random());\n var isDisabled = group.disabled ? group.disabled : false;\n if (groupChoices) {\n this._store.dispatch((0, groups_1.addGroup)({\n value: group.label,\n id: groupId,\n active: true,\n disabled: isDisabled\n }));\n var addGroupChoices = function (choice) {\n var isOptDisabled = choice.disabled || choice.parentNode && choice.parentNode.disabled;\n _this._addChoice({\n value: choice[valueKey],\n label: (0, utils_1.isType)('Object', choice) ? choice[labelKey] : choice.innerHTML,\n isSelected: choice.selected,\n isDisabled: isOptDisabled,\n groupId: groupId,\n customProperties: choice.customProperties,\n placeholder: choice.placeholder\n });\n };\n groupChoices.forEach(addGroupChoices);\n } else {\n this._store.dispatch((0, groups_1.addGroup)({\n value: group.label,\n id: group.id,\n active: false,\n disabled: group.disabled\n }));\n }\n };\n Choices.prototype._getTemplate = function (template) {\n var _a;\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return (_a = this._templates[template]).call.apply(_a, __spreadArray([this, this.config], args, false));\n };\n Choices.prototype._createTemplates = function () {\n var callbackOnCreateTemplates = this.config.callbackOnCreateTemplates;\n var userTemplates = {};\n if (callbackOnCreateTemplates && typeof callbackOnCreateTemplates === 'function') {\n userTemplates = callbackOnCreateTemplates.call(this, utils_1.strToEl);\n }\n this._templates = (0, deepmerge_1.default)(templates_1.default, userTemplates);\n };\n Choices.prototype._createElements = function () {\n this.containerOuter = new components_1.Container({\n element: this._getTemplate('containerOuter', this._direction, this._isSelectElement, this._isSelectOneElement, this.config.searchEnabled, this.passedElement.element.type, this.config.labelId),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n position: this.config.position\n });\n this.containerInner = new components_1.Container({\n element: this._getTemplate('containerInner'),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n position: this.config.position\n });\n this.input = new components_1.Input({\n element: this._getTemplate('input', this._placeholderValue),\n classNames: this.config.classNames,\n type: this.passedElement.element.type,\n preventPaste: !this.config.paste\n });\n this.choiceList = new components_1.List({\n element: this._getTemplate('choiceList', this._isSelectOneElement)\n });\n this.itemList = new components_1.List({\n element: this._getTemplate('itemList', this._isSelectOneElement)\n });\n this.dropdown = new components_1.Dropdown({\n element: this._getTemplate('dropdown'),\n classNames: this.config.classNames,\n type: this.passedElement.element.type\n });\n };\n Choices.prototype._createStructure = function () {\n // Hide original element\n this.passedElement.conceal();\n // Wrap input in container preserving DOM ordering\n this.containerInner.wrap(this.passedElement.element);\n // Wrapper inner container with outer container\n this.containerOuter.wrap(this.containerInner.element);\n if (this._isSelectOneElement) {\n this.input.placeholder = this.config.searchPlaceholderValue || '';\n } else if (this._placeholderValue) {\n this.input.placeholder = this._placeholderValue;\n this.input.setWidth();\n }\n this.containerOuter.element.appendChild(this.containerInner.element);\n this.containerOuter.element.appendChild(this.dropdown.element);\n this.containerInner.element.appendChild(this.itemList.element);\n if (!this._isTextElement) {\n this.dropdown.element.appendChild(this.choiceList.element);\n }\n if (!this._isSelectOneElement) {\n this.containerInner.element.appendChild(this.input.element);\n } else if (this.config.searchEnabled) {\n this.dropdown.element.insertBefore(this.input.element, this.dropdown.element.firstChild);\n }\n if (this._isSelectElement) {\n this._highlightPosition = 0;\n this._isSearching = false;\n this._startLoading();\n if (this._presetGroups.length) {\n this._addPredefinedGroups(this._presetGroups);\n } else {\n this._addPredefinedChoices(this._presetChoices);\n }\n this._stopLoading();\n }\n if (this._isTextElement) {\n this._addPredefinedItems(this._presetItems);\n }\n };\n Choices.prototype._addPredefinedGroups = function (groups) {\n var _this = this;\n // If we have a placeholder option\n var placeholderChoice = this.passedElement.placeholderOption;\n if (placeholderChoice && placeholderChoice.parentNode && placeholderChoice.parentNode.tagName === 'SELECT') {\n this._addChoice({\n value: placeholderChoice.value,\n label: placeholderChoice.innerHTML,\n isSelected: placeholderChoice.selected,\n isDisabled: placeholderChoice.disabled,\n placeholder: true\n });\n }\n groups.forEach(function (group) {\n return _this._addGroup({\n group: group,\n id: group.id || null\n });\n });\n };\n Choices.prototype._addPredefinedChoices = function (choices) {\n var _this = this;\n // If sorting is enabled or the user is searching, filter choices\n if (this.config.shouldSort) {\n choices.sort(this.config.sorter);\n }\n var hasSelectedChoice = choices.some(function (choice) {\n return choice.selected;\n });\n var firstEnabledChoiceIndex = choices.findIndex(function (choice) {\n return choice.disabled === undefined || !choice.disabled;\n });\n choices.forEach(function (choice, index) {\n var _a = choice.value,\n value = _a === void 0 ? '' : _a,\n label = choice.label,\n customProperties = choice.customProperties,\n placeholder = choice.placeholder;\n if (_this._isSelectElement) {\n // If the choice is actually a group\n if (choice.choices) {\n _this._addGroup({\n group: choice,\n id: choice.id || null\n });\n } else {\n /**\n * If there is a selected choice already or the choice is not the first in\n * the array, add each choice normally.\n *\n * Otherwise we pre-select the first enabled choice in the array (\"select-one\" only)\n */\n var shouldPreselect = _this._isSelectOneElement && !hasSelectedChoice && index === firstEnabledChoiceIndex;\n var isSelected = shouldPreselect ? true : choice.selected;\n var isDisabled = choice.disabled;\n _this._addChoice({\n value: value,\n label: label,\n isSelected: !!isSelected,\n isDisabled: !!isDisabled,\n placeholder: !!placeholder,\n customProperties: customProperties\n });\n }\n } else {\n _this._addChoice({\n value: value,\n label: label,\n isSelected: !!choice.selected,\n isDisabled: !!choice.disabled,\n placeholder: !!choice.placeholder,\n customProperties: customProperties\n });\n }\n });\n };\n Choices.prototype._addPredefinedItems = function (items) {\n var _this = this;\n items.forEach(function (item) {\n if (typeof item === 'object' && item.value) {\n _this._addItem({\n value: item.value,\n label: item.label,\n choiceId: item.id,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n }\n if (typeof item === 'string') {\n _this._addItem({\n value: item\n });\n }\n });\n };\n Choices.prototype._setChoiceOrItem = function (item) {\n var _this = this;\n var itemType = (0, utils_1.getType)(item).toLowerCase();\n var handleType = {\n object: function () {\n if (!item.value) {\n return;\n }\n // If we are dealing with a select input, we need to create an option first\n // that is then selected. For text inputs we can just add items normally.\n if (!_this._isTextElement) {\n _this._addChoice({\n value: item.value,\n label: item.label,\n isSelected: true,\n isDisabled: false,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n } else {\n _this._addItem({\n value: item.value,\n label: item.label,\n choiceId: item.id,\n customProperties: item.customProperties,\n placeholder: item.placeholder\n });\n }\n },\n string: function () {\n if (!_this._isTextElement) {\n _this._addChoice({\n value: item,\n label: item,\n isSelected: true,\n isDisabled: false\n });\n } else {\n _this._addItem({\n value: item\n });\n }\n }\n };\n handleType[itemType]();\n };\n Choices.prototype._findAndSelectChoiceByValue = function (value) {\n var _this = this;\n var choices = this._store.choices;\n // Check 'value' property exists and the choice isn't already selected\n var foundChoice = choices.find(function (choice) {\n return _this.config.valueComparer(choice.value, value);\n });\n if (foundChoice && !foundChoice.selected) {\n this._addItem({\n value: foundChoice.value,\n label: foundChoice.label,\n choiceId: foundChoice.id,\n groupId: foundChoice.groupId,\n customProperties: foundChoice.customProperties,\n placeholder: foundChoice.placeholder,\n keyCode: foundChoice.keyCode\n });\n }\n };\n Choices.prototype._generatePlaceholderValue = function () {\n if (this._isSelectElement && this.passedElement.placeholderOption) {\n var placeholderOption = this.passedElement.placeholderOption;\n return placeholderOption ? placeholderOption.text : null;\n }\n var _a = this.config,\n placeholder = _a.placeholder,\n placeholderValue = _a.placeholderValue;\n var dataset = this.passedElement.element.dataset;\n if (placeholder) {\n if (placeholderValue) {\n return placeholderValue;\n }\n if (dataset.placeholder) {\n return dataset.placeholder;\n }\n }\n return null;\n };\n return Choices;\n}();\nexports[\"default\"] = Choices;\n\n/***/ }),\n\n/***/ 613:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar utils_1 = __webpack_require__(799);\nvar constants_1 = __webpack_require__(883);\nvar Container = /** @class */function () {\n function Container(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames,\n position = _a.position;\n this.element = element;\n this.classNames = classNames;\n this.type = type;\n this.position = position;\n this.isOpen = false;\n this.isFlipped = false;\n this.isFocussed = false;\n this.isDisabled = false;\n this.isLoading = false;\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n }\n Container.prototype.addEventListeners = function () {\n this.element.addEventListener('focus', this._onFocus);\n this.element.addEventListener('blur', this._onBlur);\n };\n Container.prototype.removeEventListeners = function () {\n this.element.removeEventListener('focus', this._onFocus);\n this.element.removeEventListener('blur', this._onBlur);\n };\n /**\n * Determine whether container should be flipped based on passed\n * dropdown position\n */\n Container.prototype.shouldFlip = function (dropdownPos) {\n if (typeof dropdownPos !== 'number') {\n return false;\n }\n // If flip is enabled and the dropdown bottom position is\n // greater than the window height flip the dropdown.\n var shouldFlip = false;\n if (this.position === 'auto') {\n shouldFlip = !window.matchMedia(\"(min-height: \".concat(dropdownPos + 1, \"px)\")).matches;\n } else if (this.position === 'top') {\n shouldFlip = true;\n }\n return shouldFlip;\n };\n Container.prototype.setActiveDescendant = function (activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n };\n Container.prototype.removeActiveDescendant = function () {\n this.element.removeAttribute('aria-activedescendant');\n };\n Container.prototype.open = function (dropdownPos) {\n this.element.classList.add(this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isOpen = true;\n if (this.shouldFlip(dropdownPos)) {\n this.element.classList.add(this.classNames.flippedState);\n this.isFlipped = true;\n }\n };\n Container.prototype.close = function () {\n this.element.classList.remove(this.classNames.openState);\n this.element.setAttribute('aria-expanded', 'false');\n this.removeActiveDescendant();\n this.isOpen = false;\n // A dropdown flips if it does not have space within the page\n if (this.isFlipped) {\n this.element.classList.remove(this.classNames.flippedState);\n this.isFlipped = false;\n }\n };\n Container.prototype.focus = function () {\n if (!this.isFocussed) {\n this.element.focus();\n }\n };\n Container.prototype.addFocusState = function () {\n this.element.classList.add(this.classNames.focusState);\n };\n Container.prototype.removeFocusState = function () {\n this.element.classList.remove(this.classNames.focusState);\n };\n Container.prototype.enable = function () {\n this.element.classList.remove(this.classNames.disabledState);\n this.element.removeAttribute('aria-disabled');\n if (this.type === constants_1.SELECT_ONE_TYPE) {\n this.element.setAttribute('tabindex', '0');\n }\n this.isDisabled = false;\n };\n Container.prototype.disable = function () {\n this.element.classList.add(this.classNames.disabledState);\n this.element.setAttribute('aria-disabled', 'true');\n if (this.type === constants_1.SELECT_ONE_TYPE) {\n this.element.setAttribute('tabindex', '-1');\n }\n this.isDisabled = true;\n };\n Container.prototype.wrap = function (element) {\n (0, utils_1.wrap)(element, this.element);\n };\n Container.prototype.unwrap = function (element) {\n if (this.element.parentNode) {\n // Move passed element outside this element\n this.element.parentNode.insertBefore(element, this.element);\n // Remove this element\n this.element.parentNode.removeChild(this.element);\n }\n };\n Container.prototype.addLoadingState = function () {\n this.element.classList.add(this.classNames.loadingState);\n this.element.setAttribute('aria-busy', 'true');\n this.isLoading = true;\n };\n Container.prototype.removeLoadingState = function () {\n this.element.classList.remove(this.classNames.loadingState);\n this.element.removeAttribute('aria-busy');\n this.isLoading = false;\n };\n Container.prototype._onFocus = function () {\n this.isFocussed = true;\n };\n Container.prototype._onBlur = function () {\n this.isFocussed = false;\n };\n return Container;\n}();\nexports[\"default\"] = Container;\n\n/***/ }),\n\n/***/ 217:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar Dropdown = /** @class */function () {\n function Dropdown(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames;\n this.element = element;\n this.classNames = classNames;\n this.type = type;\n this.isActive = false;\n }\n Object.defineProperty(Dropdown.prototype, \"distanceFromTopWindow\", {\n /**\n * Bottom position of dropdown in viewport coordinates\n */\n get: function () {\n return this.element.getBoundingClientRect().bottom;\n },\n enumerable: false,\n configurable: true\n });\n Dropdown.prototype.getChild = function (selector) {\n return this.element.querySelector(selector);\n };\n /**\n * Show dropdown to user by adding active state class\n */\n Dropdown.prototype.show = function () {\n this.element.classList.add(this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'true');\n this.isActive = true;\n return this;\n };\n /**\n * Hide dropdown from user\n */\n Dropdown.prototype.hide = function () {\n this.element.classList.remove(this.classNames.activeState);\n this.element.setAttribute('aria-expanded', 'false');\n this.isActive = false;\n return this;\n };\n return Dropdown;\n}();\nexports[\"default\"] = Dropdown;\n\n/***/ }),\n\n/***/ 520:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.WrappedSelect = exports.WrappedInput = exports.List = exports.Input = exports.Container = exports.Dropdown = void 0;\nvar dropdown_1 = __importDefault(__webpack_require__(217));\nexports.Dropdown = dropdown_1.default;\nvar container_1 = __importDefault(__webpack_require__(613));\nexports.Container = container_1.default;\nvar input_1 = __importDefault(__webpack_require__(11));\nexports.Input = input_1.default;\nvar list_1 = __importDefault(__webpack_require__(624));\nexports.List = list_1.default;\nvar wrapped_input_1 = __importDefault(__webpack_require__(541));\nexports.WrappedInput = wrapped_input_1.default;\nvar wrapped_select_1 = __importDefault(__webpack_require__(982));\nexports.WrappedSelect = wrapped_select_1.default;\n\n/***/ }),\n\n/***/ 11:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar utils_1 = __webpack_require__(799);\nvar constants_1 = __webpack_require__(883);\nvar Input = /** @class */function () {\n function Input(_a) {\n var element = _a.element,\n type = _a.type,\n classNames = _a.classNames,\n preventPaste = _a.preventPaste;\n this.element = element;\n this.type = type;\n this.classNames = classNames;\n this.preventPaste = preventPaste;\n this.isFocussed = this.element.isEqualNode(document.activeElement);\n this.isDisabled = element.disabled;\n this._onPaste = this._onPaste.bind(this);\n this._onInput = this._onInput.bind(this);\n this._onFocus = this._onFocus.bind(this);\n this._onBlur = this._onBlur.bind(this);\n }\n Object.defineProperty(Input.prototype, \"placeholder\", {\n set: function (placeholder) {\n this.element.placeholder = placeholder;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"value\", {\n get: function () {\n return (0, utils_1.sanitise)(this.element.value);\n },\n set: function (value) {\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"rawValue\", {\n get: function () {\n return this.element.value;\n },\n enumerable: false,\n configurable: true\n });\n Input.prototype.addEventListeners = function () {\n this.element.addEventListener('paste', this._onPaste);\n this.element.addEventListener('input', this._onInput, {\n passive: true\n });\n this.element.addEventListener('focus', this._onFocus, {\n passive: true\n });\n this.element.addEventListener('blur', this._onBlur, {\n passive: true\n });\n };\n Input.prototype.removeEventListeners = function () {\n this.element.removeEventListener('input', this._onInput);\n this.element.removeEventListener('paste', this._onPaste);\n this.element.removeEventListener('focus', this._onFocus);\n this.element.removeEventListener('blur', this._onBlur);\n };\n Input.prototype.enable = function () {\n this.element.removeAttribute('disabled');\n this.isDisabled = false;\n };\n Input.prototype.disable = function () {\n this.element.setAttribute('disabled', '');\n this.isDisabled = true;\n };\n Input.prototype.focus = function () {\n if (!this.isFocussed) {\n this.element.focus();\n }\n };\n Input.prototype.blur = function () {\n if (this.isFocussed) {\n this.element.blur();\n }\n };\n Input.prototype.clear = function (setWidth) {\n if (setWidth === void 0) {\n setWidth = true;\n }\n if (this.element.value) {\n this.element.value = '';\n }\n if (setWidth) {\n this.setWidth();\n }\n return this;\n };\n /**\n * Set the correct input width based on placeholder\n * value or input value\n */\n Input.prototype.setWidth = function () {\n // Resize input to contents or placeholder\n var _a = this.element,\n style = _a.style,\n value = _a.value,\n placeholder = _a.placeholder;\n style.minWidth = \"\".concat(placeholder.length + 1, \"ch\");\n style.width = \"\".concat(value.length + 1, \"ch\");\n };\n Input.prototype.setActiveDescendant = function (activeDescendantID) {\n this.element.setAttribute('aria-activedescendant', activeDescendantID);\n };\n Input.prototype.removeActiveDescendant = function () {\n this.element.removeAttribute('aria-activedescendant');\n };\n Input.prototype._onInput = function () {\n if (this.type !== constants_1.SELECT_ONE_TYPE) {\n this.setWidth();\n }\n };\n Input.prototype._onPaste = function (event) {\n if (this.preventPaste) {\n event.preventDefault();\n }\n };\n Input.prototype._onFocus = function () {\n this.isFocussed = true;\n };\n Input.prototype._onBlur = function () {\n this.isFocussed = false;\n };\n return Input;\n}();\nexports[\"default\"] = Input;\n\n/***/ }),\n\n/***/ 624:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar constants_1 = __webpack_require__(883);\nvar List = /** @class */function () {\n function List(_a) {\n var element = _a.element;\n this.element = element;\n this.scrollPos = this.element.scrollTop;\n this.height = this.element.offsetHeight;\n }\n List.prototype.clear = function () {\n this.element.innerHTML = '';\n };\n List.prototype.append = function (node) {\n this.element.appendChild(node);\n };\n List.prototype.getChild = function (selector) {\n return this.element.querySelector(selector);\n };\n List.prototype.hasChildren = function () {\n return this.element.hasChildNodes();\n };\n List.prototype.scrollToTop = function () {\n this.element.scrollTop = 0;\n };\n List.prototype.scrollToChildElement = function (element, direction) {\n var _this = this;\n if (!element) {\n return;\n }\n var listHeight = this.element.offsetHeight;\n // Scroll position of dropdown\n var listScrollPosition = this.element.scrollTop + listHeight;\n var elementHeight = element.offsetHeight;\n // Distance from bottom of element to top of parent\n var elementPos = element.offsetTop + elementHeight;\n // Difference between the element and scroll position\n var destination = direction > 0 ? this.element.scrollTop + elementPos - listScrollPosition : element.offsetTop;\n requestAnimationFrame(function () {\n _this._animateScroll(destination, direction);\n });\n };\n List.prototype._scrollDown = function (scrollPos, strength, destination) {\n var easing = (destination - scrollPos) / strength;\n var distance = easing > 1 ? easing : 1;\n this.element.scrollTop = scrollPos + distance;\n };\n List.prototype._scrollUp = function (scrollPos, strength, destination) {\n var easing = (scrollPos - destination) / strength;\n var distance = easing > 1 ? easing : 1;\n this.element.scrollTop = scrollPos - distance;\n };\n List.prototype._animateScroll = function (destination, direction) {\n var _this = this;\n var strength = constants_1.SCROLLING_SPEED;\n var choiceListScrollTop = this.element.scrollTop;\n var continueAnimation = false;\n if (direction > 0) {\n this._scrollDown(choiceListScrollTop, strength, destination);\n if (choiceListScrollTop < destination) {\n continueAnimation = true;\n }\n } else {\n this._scrollUp(choiceListScrollTop, strength, destination);\n if (choiceListScrollTop > destination) {\n continueAnimation = true;\n }\n }\n if (continueAnimation) {\n requestAnimationFrame(function () {\n _this._animateScroll(destination, direction);\n });\n }\n };\n return List;\n}();\nexports[\"default\"] = List;\n\n/***/ }),\n\n/***/ 730:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar utils_1 = __webpack_require__(799);\nvar WrappedElement = /** @class */function () {\n function WrappedElement(_a) {\n var element = _a.element,\n classNames = _a.classNames;\n this.element = element;\n this.classNames = classNames;\n if (!(element instanceof HTMLInputElement) && !(element instanceof HTMLSelectElement)) {\n throw new TypeError('Invalid element passed');\n }\n this.isDisabled = false;\n }\n Object.defineProperty(WrappedElement.prototype, \"isActive\", {\n get: function () {\n return this.element.dataset.choice === 'active';\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedElement.prototype, \"dir\", {\n get: function () {\n return this.element.dir;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedElement.prototype, \"value\", {\n get: function () {\n return this.element.value;\n },\n set: function (value) {\n // you must define setter here otherwise it will be readonly property\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n WrappedElement.prototype.conceal = function () {\n // Hide passed input\n this.element.classList.add(this.classNames.input);\n this.element.hidden = true;\n // Remove element from tab index\n this.element.tabIndex = -1;\n // Backup original styles if any\n var origStyle = this.element.getAttribute('style');\n if (origStyle) {\n this.element.setAttribute('data-choice-orig-style', origStyle);\n }\n this.element.setAttribute('data-choice', 'active');\n };\n WrappedElement.prototype.reveal = function () {\n // Reinstate passed element\n this.element.classList.remove(this.classNames.input);\n this.element.hidden = false;\n this.element.removeAttribute('tabindex');\n // Recover original styles if any\n var origStyle = this.element.getAttribute('data-choice-orig-style');\n if (origStyle) {\n this.element.removeAttribute('data-choice-orig-style');\n this.element.setAttribute('style', origStyle);\n } else {\n this.element.removeAttribute('style');\n }\n this.element.removeAttribute('data-choice');\n // Re-assign values - this is weird, I know\n // @todo Figure out why we need to do this\n this.element.value = this.element.value; // eslint-disable-line no-self-assign\n };\n\n WrappedElement.prototype.enable = function () {\n this.element.removeAttribute('disabled');\n this.element.disabled = false;\n this.isDisabled = false;\n };\n WrappedElement.prototype.disable = function () {\n this.element.setAttribute('disabled', '');\n this.element.disabled = true;\n this.isDisabled = true;\n };\n WrappedElement.prototype.triggerEvent = function (eventType, data) {\n (0, utils_1.dispatchEvent)(this.element, eventType, data);\n };\n return WrappedElement;\n}();\nexports[\"default\"] = WrappedElement;\n\n/***/ }),\n\n/***/ 541:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar wrapped_element_1 = __importDefault(__webpack_require__(730));\nvar WrappedInput = /** @class */function (_super) {\n __extends(WrappedInput, _super);\n function WrappedInput(_a) {\n var element = _a.element,\n classNames = _a.classNames,\n delimiter = _a.delimiter;\n var _this = _super.call(this, {\n element: element,\n classNames: classNames\n }) || this;\n _this.delimiter = delimiter;\n return _this;\n }\n Object.defineProperty(WrappedInput.prototype, \"value\", {\n get: function () {\n return this.element.value;\n },\n set: function (value) {\n this.element.setAttribute('value', value);\n this.element.value = value;\n },\n enumerable: false,\n configurable: true\n });\n return WrappedInput;\n}(wrapped_element_1.default);\nexports[\"default\"] = WrappedInput;\n\n/***/ }),\n\n/***/ 982:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __extends = this && this.__extends || function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() {\n this.constructor = d;\n }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar wrapped_element_1 = __importDefault(__webpack_require__(730));\nvar WrappedSelect = /** @class */function (_super) {\n __extends(WrappedSelect, _super);\n function WrappedSelect(_a) {\n var element = _a.element,\n classNames = _a.classNames,\n template = _a.template;\n var _this = _super.call(this, {\n element: element,\n classNames: classNames\n }) || this;\n _this.template = template;\n return _this;\n }\n Object.defineProperty(WrappedSelect.prototype, \"placeholderOption\", {\n get: function () {\n return this.element.querySelector('option[value=\"\"]') ||\n // Backward compatibility layer for the non-standard placeholder attribute supported in older versions.\n this.element.querySelector('option[placeholder]');\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedSelect.prototype, \"optionGroups\", {\n get: function () {\n return Array.from(this.element.getElementsByTagName('OPTGROUP'));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WrappedSelect.prototype, \"options\", {\n get: function () {\n return Array.from(this.element.options);\n },\n set: function (options) {\n var _this = this;\n var fragment = document.createDocumentFragment();\n var addOptionToFragment = function (data) {\n // Create a standard select option\n var option = _this.template(data);\n // Append it to fragment\n fragment.appendChild(option);\n };\n // Add each list item to list\n options.forEach(function (optionData) {\n return addOptionToFragment(optionData);\n });\n this.appendDocFragment(fragment);\n },\n enumerable: false,\n configurable: true\n });\n WrappedSelect.prototype.appendDocFragment = function (fragment) {\n this.element.innerHTML = '';\n this.element.appendChild(fragment);\n };\n return WrappedSelect;\n}(wrapped_element_1.default);\nexports[\"default\"] = WrappedSelect;\n\n/***/ }),\n\n/***/ 883:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.SCROLLING_SPEED = exports.SELECT_MULTIPLE_TYPE = exports.SELECT_ONE_TYPE = exports.TEXT_TYPE = exports.KEY_CODES = exports.ACTION_TYPES = exports.EVENTS = void 0;\nexports.EVENTS = {\n showDropdown: 'showDropdown',\n hideDropdown: 'hideDropdown',\n change: 'change',\n choice: 'choice',\n search: 'search',\n addItem: 'addItem',\n removeItem: 'removeItem',\n highlightItem: 'highlightItem',\n highlightChoice: 'highlightChoice',\n unhighlightItem: 'unhighlightItem'\n};\nexports.ACTION_TYPES = {\n ADD_CHOICE: 'ADD_CHOICE',\n FILTER_CHOICES: 'FILTER_CHOICES',\n ACTIVATE_CHOICES: 'ACTIVATE_CHOICES',\n CLEAR_CHOICES: 'CLEAR_CHOICES',\n ADD_GROUP: 'ADD_GROUP',\n ADD_ITEM: 'ADD_ITEM',\n REMOVE_ITEM: 'REMOVE_ITEM',\n HIGHLIGHT_ITEM: 'HIGHLIGHT_ITEM',\n CLEAR_ALL: 'CLEAR_ALL',\n RESET_TO: 'RESET_TO',\n SET_IS_LOADING: 'SET_IS_LOADING'\n};\nexports.KEY_CODES = {\n BACK_KEY: 46,\n DELETE_KEY: 8,\n ENTER_KEY: 13,\n A_KEY: 65,\n ESC_KEY: 27,\n UP_KEY: 38,\n DOWN_KEY: 40,\n PAGE_UP_KEY: 33,\n PAGE_DOWN_KEY: 34\n};\nexports.TEXT_TYPE = 'text';\nexports.SELECT_ONE_TYPE = 'select-one';\nexports.SELECT_MULTIPLE_TYPE = 'select-multiple';\nexports.SCROLLING_SPEED = 4;\n\n/***/ }),\n\n/***/ 789:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.DEFAULT_CONFIG = exports.DEFAULT_CLASSNAMES = void 0;\nvar utils_1 = __webpack_require__(799);\nexports.DEFAULT_CLASSNAMES = {\n containerOuter: 'choices',\n containerInner: 'choices__inner',\n input: 'choices__input',\n inputCloned: 'choices__input--cloned',\n list: 'choices__list',\n listItems: 'choices__list--multiple',\n listSingle: 'choices__list--single',\n listDropdown: 'choices__list--dropdown',\n item: 'choices__item',\n itemSelectable: 'choices__item--selectable',\n itemDisabled: 'choices__item--disabled',\n itemChoice: 'choices__item--choice',\n placeholder: 'choices__placeholder',\n group: 'choices__group',\n groupHeading: 'choices__heading',\n button: 'choices__button',\n activeState: 'is-active',\n focusState: 'is-focused',\n openState: 'is-open',\n disabledState: 'is-disabled',\n highlightedState: 'is-highlighted',\n selectedState: 'is-selected',\n flippedState: 'is-flipped',\n loadingState: 'is-loading',\n noResults: 'has-no-results',\n noChoices: 'has-no-choices'\n};\nexports.DEFAULT_CONFIG = {\n items: [],\n choices: [],\n silent: false,\n renderChoiceLimit: -1,\n maxItemCount: -1,\n addItems: true,\n addItemFilter: null,\n removeItems: true,\n removeItemButton: false,\n editItems: false,\n allowHTML: true,\n duplicateItemsAllowed: true,\n delimiter: ',',\n paste: true,\n searchEnabled: true,\n searchChoices: true,\n searchFloor: 1,\n searchResultLimit: 4,\n searchFields: ['label', 'value'],\n position: 'auto',\n resetScrollPosition: true,\n shouldSort: true,\n shouldSortItems: false,\n sorter: utils_1.sortByAlpha,\n placeholder: true,\n placeholderValue: null,\n searchPlaceholderValue: null,\n prependValue: null,\n appendValue: null,\n renderSelectedChoices: 'auto',\n loadingText: 'Loading...',\n noResultsText: 'No results found',\n noChoicesText: 'No choices to choose from',\n itemSelectText: 'Press to select',\n uniqueItemText: 'Only unique values can be added',\n customAddItemText: 'Only values matching specific conditions can be added',\n addItemText: function (value) {\n return \"Press Enter to add \\\"\".concat((0, utils_1.sanitise)(value), \"\\\"\");\n },\n maxItemText: function (maxItemCount) {\n return \"Only \".concat(maxItemCount, \" values can be added\");\n },\n valueComparer: function (value1, value2) {\n return value1 === value2;\n },\n fuseOptions: {\n includeScore: true\n },\n labelId: '',\n callbackOnInit: null,\n callbackOnCreateTemplates: null,\n classNames: exports.DEFAULT_CLASSNAMES\n};\n\n/***/ }),\n\n/***/ 18:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 978:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 948:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 359:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 285:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 533:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 187:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = {\n enumerable: true,\n get: function () {\n return m[k];\n }\n };\n }\n Object.defineProperty(o, k2, desc);\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n__exportStar(__webpack_require__(18), exports);\n__exportStar(__webpack_require__(978), exports);\n__exportStar(__webpack_require__(948), exports);\n__exportStar(__webpack_require__(359), exports);\n__exportStar(__webpack_require__(285), exports);\n__exportStar(__webpack_require__(533), exports);\n__exportStar(__webpack_require__(287), exports);\n__exportStar(__webpack_require__(132), exports);\n__exportStar(__webpack_require__(837), exports);\n__exportStar(__webpack_require__(598), exports);\n__exportStar(__webpack_require__(369), exports);\n__exportStar(__webpack_require__(37), exports);\n__exportStar(__webpack_require__(47), exports);\n__exportStar(__webpack_require__(923), exports);\n__exportStar(__webpack_require__(876), exports);\n\n/***/ }),\n\n/***/ 287:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 132:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 837:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 598:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 37:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 369:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 47:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 923:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 876:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n\n/***/ }),\n\n/***/ 799:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.parseCustomProperties = exports.diff = exports.cloneObject = exports.existsInArray = exports.dispatchEvent = exports.sortByScore = exports.sortByAlpha = exports.strToEl = exports.sanitise = exports.isScrolledIntoView = exports.getAdjacentEl = exports.wrap = exports.isType = exports.getType = exports.generateId = exports.generateChars = exports.getRandomNumber = void 0;\nvar getRandomNumber = function (min, max) {\n return Math.floor(Math.random() * (max - min) + min);\n};\nexports.getRandomNumber = getRandomNumber;\nvar generateChars = function (length) {\n return Array.from({\n length: length\n }, function () {\n return (0, exports.getRandomNumber)(0, 36).toString(36);\n }).join('');\n};\nexports.generateChars = generateChars;\nvar generateId = function (element, prefix) {\n var id = element.id || element.name && \"\".concat(element.name, \"-\").concat((0, exports.generateChars)(2)) || (0, exports.generateChars)(4);\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = \"\".concat(prefix, \"-\").concat(id);\n return id;\n};\nexports.generateId = generateId;\nvar getType = function (obj) {\n return Object.prototype.toString.call(obj).slice(8, -1);\n};\nexports.getType = getType;\nvar isType = function (type, obj) {\n return obj !== undefined && obj !== null && (0, exports.getType)(obj) === type;\n};\nexports.isType = isType;\nvar wrap = function (element, wrapper) {\n if (wrapper === void 0) {\n wrapper = document.createElement('div');\n }\n if (element.parentNode) {\n if (element.nextSibling) {\n element.parentNode.insertBefore(wrapper, element.nextSibling);\n } else {\n element.parentNode.appendChild(wrapper);\n }\n }\n return wrapper.appendChild(element);\n};\nexports.wrap = wrap;\nvar getAdjacentEl = function (startEl, selector, direction) {\n if (direction === void 0) {\n direction = 1;\n }\n var prop = \"\".concat(direction > 0 ? 'next' : 'previous', \"ElementSibling\");\n var sibling = startEl[prop];\n while (sibling) {\n if (sibling.matches(selector)) {\n return sibling;\n }\n sibling = sibling[prop];\n }\n return sibling;\n};\nexports.getAdjacentEl = getAdjacentEl;\nvar isScrolledIntoView = function (element, parent, direction) {\n if (direction === void 0) {\n direction = 1;\n }\n if (!element) {\n return false;\n }\n var isVisible;\n if (direction > 0) {\n // In view from bottom\n isVisible = parent.scrollTop + parent.offsetHeight >= element.offsetTop + element.offsetHeight;\n } else {\n // In view from top\n isVisible = element.offsetTop >= parent.scrollTop;\n }\n return isVisible;\n};\nexports.isScrolledIntoView = isScrolledIntoView;\nvar sanitise = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n return value.replace(/&/g, '&').replace(/>/g, '>').replace(/ -1) {\n return state.map(function (obj) {\n var choice = obj;\n if (choice.id === parseInt(\"\".concat(addItemAction_1.choiceId), 10)) {\n choice.selected = true;\n }\n return choice;\n });\n }\n return state;\n }\n case 'REMOVE_ITEM':\n {\n var removeItemAction_1 = action;\n // When an item is removed and it has an associated choice,\n // we want to re-enable it so it can be chosen again\n if (removeItemAction_1.choiceId && removeItemAction_1.choiceId > -1) {\n return state.map(function (obj) {\n var choice = obj;\n if (choice.id === parseInt(\"\".concat(removeItemAction_1.choiceId), 10)) {\n choice.selected = false;\n }\n return choice;\n });\n }\n return state;\n }\n case 'FILTER_CHOICES':\n {\n var filterChoicesAction_1 = action;\n return state.map(function (obj) {\n var choice = obj;\n // Set active state based on whether choice is\n // within filtered results\n choice.active = filterChoicesAction_1.results.some(function (_a) {\n var item = _a.item,\n score = _a.score;\n if (item.id === choice.id) {\n choice.score = score;\n return true;\n }\n return false;\n });\n return choice;\n });\n }\n case 'ACTIVATE_CHOICES':\n {\n var activateChoicesAction_1 = action;\n return state.map(function (obj) {\n var choice = obj;\n choice.active = activateChoicesAction_1.active;\n return choice;\n });\n }\n case 'CLEAR_CHOICES':\n {\n return exports.defaultState;\n }\n default:\n {\n return state;\n }\n }\n}\nexports[\"default\"] = choices;\n\n/***/ }),\n\n/***/ 871:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = [];\nfunction groups(state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n if (action === void 0) {\n action = {};\n }\n switch (action.type) {\n case 'ADD_GROUP':\n {\n var addGroupAction = action;\n return __spreadArray(__spreadArray([], state, true), [{\n id: addGroupAction.id,\n value: addGroupAction.value,\n active: addGroupAction.active,\n disabled: addGroupAction.disabled\n }], false);\n }\n case 'CLEAR_CHOICES':\n {\n return [];\n }\n default:\n {\n return state;\n }\n }\n}\nexports[\"default\"] = groups;\n\n/***/ }),\n\n/***/ 655:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nvar redux_1 = __webpack_require__(791);\nvar items_1 = __importDefault(__webpack_require__(52));\nvar groups_1 = __importDefault(__webpack_require__(871));\nvar choices_1 = __importDefault(__webpack_require__(273));\nvar loading_1 = __importDefault(__webpack_require__(502));\nvar utils_1 = __webpack_require__(799);\nexports.defaultState = {\n groups: [],\n items: [],\n choices: [],\n loading: false\n};\nvar appReducer = (0, redux_1.combineReducers)({\n items: items_1.default,\n groups: groups_1.default,\n choices: choices_1.default,\n loading: loading_1.default\n});\nvar rootReducer = function (passedState, action) {\n var state = passedState;\n // If we are clearing all items, groups and options we reassign\n // state and then pass that state to our proper reducer. This isn't\n // mutating our actual state\n // See: http://stackoverflow.com/a/35641992\n if (action.type === 'CLEAR_ALL') {\n state = exports.defaultState;\n } else if (action.type === 'RESET_TO') {\n return (0, utils_1.cloneObject)(action.state);\n }\n return appReducer(state, action);\n};\nexports[\"default\"] = rootReducer;\n\n/***/ }),\n\n/***/ 52:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = [];\nfunction items(state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n if (action === void 0) {\n action = {};\n }\n switch (action.type) {\n case 'ADD_ITEM':\n {\n var addItemAction = action;\n // Add object to items array\n var newState = __spreadArray(__spreadArray([], state, true), [{\n id: addItemAction.id,\n choiceId: addItemAction.choiceId,\n groupId: addItemAction.groupId,\n value: addItemAction.value,\n label: addItemAction.label,\n active: true,\n highlighted: false,\n customProperties: addItemAction.customProperties,\n placeholder: addItemAction.placeholder || false,\n keyCode: null\n }], false);\n return newState.map(function (obj) {\n var item = obj;\n item.highlighted = false;\n return item;\n });\n }\n case 'REMOVE_ITEM':\n {\n // Set item to inactive\n return state.map(function (obj) {\n var item = obj;\n if (item.id === action.id) {\n item.active = false;\n }\n return item;\n });\n }\n case 'HIGHLIGHT_ITEM':\n {\n var highlightItemAction_1 = action;\n return state.map(function (obj) {\n var item = obj;\n if (item.id === highlightItemAction_1.id) {\n item.highlighted = highlightItemAction_1.highlighted;\n }\n return item;\n });\n }\n default:\n {\n return state;\n }\n }\n}\nexports[\"default\"] = items;\n\n/***/ }),\n\n/***/ 502:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.defaultState = void 0;\nexports.defaultState = false;\nvar general = function (state, action) {\n if (state === void 0) {\n state = exports.defaultState;\n }\n if (action === void 0) {\n action = {};\n }\n switch (action.type) {\n case 'SET_IS_LOADING':\n {\n return action.isLoading;\n }\n default:\n {\n return state;\n }\n }\n};\nexports[\"default\"] = general;\n\n/***/ }),\n\n/***/ 744:\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\n\nvar __spreadArray = this && this.__spreadArray || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar __importDefault = this && this.__importDefault || function (mod) {\n return mod && mod.__esModule ? mod : {\n \"default\": mod\n };\n};\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar redux_1 = __webpack_require__(791);\nvar index_1 = __importDefault(__webpack_require__(655));\nvar Store = /** @class */function () {\n function Store() {\n this._store = (0, redux_1.createStore)(index_1.default, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());\n }\n /**\n * Subscribe store to function call (wrapped Redux method)\n */\n Store.prototype.subscribe = function (onChange) {\n this._store.subscribe(onChange);\n };\n /**\n * Dispatch event to store (wrapped Redux method)\n */\n Store.prototype.dispatch = function (action) {\n this._store.dispatch(action);\n };\n Object.defineProperty(Store.prototype, \"state\", {\n /**\n * Get store object (wrapping Redux method)\n */\n get: function () {\n return this._store.getState();\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"items\", {\n /**\n * Get items from store\n */\n get: function () {\n return this.state.items;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeItems\", {\n /**\n * Get active items from store\n */\n get: function () {\n return this.items.filter(function (item) {\n return item.active === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"highlightedActiveItems\", {\n /**\n * Get highlighted items from store\n */\n get: function () {\n return this.items.filter(function (item) {\n return item.active && item.highlighted;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"choices\", {\n /**\n * Get choices from store\n */\n get: function () {\n return this.state.choices;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeChoices\", {\n /**\n * Get active choices from store\n */\n get: function () {\n return this.choices.filter(function (choice) {\n return choice.active === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"selectableChoices\", {\n /**\n * Get selectable choices from store\n */\n get: function () {\n return this.choices.filter(function (choice) {\n return choice.disabled !== true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"searchableChoices\", {\n /**\n * Get choices that can be searched (excluding placeholders)\n */\n get: function () {\n return this.selectableChoices.filter(function (choice) {\n return choice.placeholder !== true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"placeholderChoice\", {\n /**\n * Get placeholder choice from store\n */\n get: function () {\n return __spreadArray([], this.choices, true).reverse().find(function (choice) {\n return choice.placeholder === true;\n });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"groups\", {\n /**\n * Get groups from store\n */\n get: function () {\n return this.state.groups;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Store.prototype, \"activeGroups\", {\n /**\n * Get active groups from store\n */\n get: function () {\n var _a = this,\n groups = _a.groups,\n choices = _a.choices;\n return groups.filter(function (group) {\n var isActive = group.active === true && group.disabled === false;\n var hasActiveOptions = choices.some(function (choice) {\n return choice.active === true && choice.disabled === false;\n });\n return isActive && hasActiveOptions;\n }, []);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Get loading state from store\n */\n Store.prototype.isLoading = function () {\n return this.state.loading;\n };\n /**\n * Get single choice by it's ID\n */\n Store.prototype.getChoiceById = function (id) {\n return this.activeChoices.find(function (choice) {\n return choice.id === parseInt(id, 10);\n });\n };\n /**\n * Get group by group id\n */\n Store.prototype.getGroupById = function (id) {\n return this.groups.find(function (group) {\n return group.id === id;\n });\n };\n return Store;\n}();\nexports[\"default\"] = Store;\n\n/***/ }),\n\n/***/ 686:\n/***/ (function(__unused_webpack_module, exports) {\n\n\n\n/**\n * Helpers to create HTML elements used by Choices\n * Can be overridden by providing `callbackOnCreateTemplates` option\n */\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nvar templates = {\n containerOuter: function (_a, dir, isSelectElement, isSelectOneElement, searchEnabled, passedElementType, labelId) {\n var containerOuter = _a.classNames.containerOuter;\n var div = Object.assign(document.createElement('div'), {\n className: containerOuter\n });\n div.dataset.type = passedElementType;\n if (dir) {\n div.dir = dir;\n }\n if (isSelectOneElement) {\n div.tabIndex = 0;\n }\n if (isSelectElement) {\n div.setAttribute('role', searchEnabled ? 'combobox' : 'listbox');\n if (searchEnabled) {\n div.setAttribute('aria-autocomplete', 'list');\n }\n }\n div.setAttribute('aria-haspopup', 'true');\n div.setAttribute('aria-expanded', 'false');\n if (labelId) {\n div.setAttribute('aria-labelledby', labelId);\n }\n return div;\n },\n containerInner: function (_a) {\n var containerInner = _a.classNames.containerInner;\n return Object.assign(document.createElement('div'), {\n className: containerInner\n });\n },\n itemList: function (_a, isSelectOneElement) {\n var _b = _a.classNames,\n list = _b.list,\n listSingle = _b.listSingle,\n listItems = _b.listItems;\n return Object.assign(document.createElement('div'), {\n className: \"\".concat(list, \" \").concat(isSelectOneElement ? listSingle : listItems)\n });\n },\n placeholder: function (_a, value) {\n var _b;\n var allowHTML = _a.allowHTML,\n placeholder = _a.classNames.placeholder;\n return Object.assign(document.createElement('div'), (_b = {\n className: placeholder\n }, _b[allowHTML ? 'innerHTML' : 'innerText'] = value, _b));\n },\n item: function (_a, _b, removeItemButton) {\n var _c, _d;\n var allowHTML = _a.allowHTML,\n _e = _a.classNames,\n item = _e.item,\n button = _e.button,\n highlightedState = _e.highlightedState,\n itemSelectable = _e.itemSelectable,\n placeholder = _e.placeholder;\n var id = _b.id,\n value = _b.value,\n label = _b.label,\n customProperties = _b.customProperties,\n active = _b.active,\n disabled = _b.disabled,\n highlighted = _b.highlighted,\n isPlaceholder = _b.placeholder;\n var div = Object.assign(document.createElement('div'), (_c = {\n className: item\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = label, _c));\n Object.assign(div.dataset, {\n item: '',\n id: id,\n value: value,\n customProperties: customProperties\n });\n if (active) {\n div.setAttribute('aria-selected', 'true');\n }\n if (disabled) {\n div.setAttribute('aria-disabled', 'true');\n }\n if (isPlaceholder) {\n div.classList.add(placeholder);\n }\n div.classList.add(highlighted ? highlightedState : itemSelectable);\n if (removeItemButton) {\n if (disabled) {\n div.classList.remove(itemSelectable);\n }\n div.dataset.deletable = '';\n /** @todo This MUST be localizable, not hardcoded! */\n var REMOVE_ITEM_TEXT = 'Remove item';\n var removeButton = Object.assign(document.createElement('button'), (_d = {\n type: 'button',\n className: button\n }, _d[allowHTML ? 'innerHTML' : 'innerText'] = REMOVE_ITEM_TEXT, _d));\n removeButton.setAttribute('aria-label', \"\".concat(REMOVE_ITEM_TEXT, \": '\").concat(value, \"'\"));\n removeButton.dataset.button = '';\n div.appendChild(removeButton);\n }\n return div;\n },\n choiceList: function (_a, isSelectOneElement) {\n var list = _a.classNames.list;\n var div = Object.assign(document.createElement('div'), {\n className: list\n });\n if (!isSelectOneElement) {\n div.setAttribute('aria-multiselectable', 'true');\n }\n div.setAttribute('role', 'listbox');\n return div;\n },\n choiceGroup: function (_a, _b) {\n var _c;\n var allowHTML = _a.allowHTML,\n _d = _a.classNames,\n group = _d.group,\n groupHeading = _d.groupHeading,\n itemDisabled = _d.itemDisabled;\n var id = _b.id,\n value = _b.value,\n disabled = _b.disabled;\n var div = Object.assign(document.createElement('div'), {\n className: \"\".concat(group, \" \").concat(disabled ? itemDisabled : '')\n });\n div.setAttribute('role', 'group');\n Object.assign(div.dataset, {\n group: '',\n id: id,\n value: value\n });\n if (disabled) {\n div.setAttribute('aria-disabled', 'true');\n }\n div.appendChild(Object.assign(document.createElement('div'), (_c = {\n className: groupHeading\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = value, _c)));\n return div;\n },\n choice: function (_a, _b, selectText) {\n var _c;\n var allowHTML = _a.allowHTML,\n _d = _a.classNames,\n item = _d.item,\n itemChoice = _d.itemChoice,\n itemSelectable = _d.itemSelectable,\n selectedState = _d.selectedState,\n itemDisabled = _d.itemDisabled,\n placeholder = _d.placeholder;\n var id = _b.id,\n value = _b.value,\n label = _b.label,\n groupId = _b.groupId,\n elementId = _b.elementId,\n isDisabled = _b.disabled,\n isSelected = _b.selected,\n isPlaceholder = _b.placeholder;\n var div = Object.assign(document.createElement('div'), (_c = {\n id: elementId\n }, _c[allowHTML ? 'innerHTML' : 'innerText'] = label, _c.className = \"\".concat(item, \" \").concat(itemChoice), _c));\n if (isSelected) {\n div.classList.add(selectedState);\n }\n if (isPlaceholder) {\n div.classList.add(placeholder);\n }\n div.setAttribute('role', groupId && groupId > 0 ? 'treeitem' : 'option');\n Object.assign(div.dataset, {\n choice: '',\n id: id,\n value: value,\n selectText: selectText\n });\n if (isDisabled) {\n div.classList.add(itemDisabled);\n div.dataset.choiceDisabled = '';\n div.setAttribute('aria-disabled', 'true');\n } else {\n div.classList.add(itemSelectable);\n div.dataset.choiceSelectable = '';\n }\n return div;\n },\n input: function (_a, placeholderValue) {\n var _b = _a.classNames,\n input = _b.input,\n inputCloned = _b.inputCloned;\n var inp = Object.assign(document.createElement('input'), {\n type: 'search',\n name: 'search_terms',\n className: \"\".concat(input, \" \").concat(inputCloned),\n autocomplete: 'off',\n autocapitalize: 'off',\n spellcheck: false\n });\n inp.setAttribute('role', 'textbox');\n inp.setAttribute('aria-autocomplete', 'list');\n inp.setAttribute('aria-label', placeholderValue);\n return inp;\n },\n dropdown: function (_a) {\n var _b = _a.classNames,\n list = _b.list,\n listDropdown = _b.listDropdown;\n var div = document.createElement('div');\n div.classList.add(list, listDropdown);\n div.setAttribute('aria-expanded', 'false');\n return div;\n },\n notice: function (_a, innerText, type) {\n var _b;\n var allowHTML = _a.allowHTML,\n _c = _a.classNames,\n item = _c.item,\n itemChoice = _c.itemChoice,\n noResults = _c.noResults,\n noChoices = _c.noChoices;\n if (type === void 0) {\n type = '';\n }\n var classes = [item, itemChoice];\n if (type === 'no-choices') {\n classes.push(noChoices);\n } else if (type === 'no-results') {\n classes.push(noResults);\n }\n return Object.assign(document.createElement('div'), (_b = {}, _b[allowHTML ? 'innerHTML' : 'innerText'] = innerText, _b.className = classes.join(' '), _b));\n },\n option: function (_a) {\n var label = _a.label,\n value = _a.value,\n customProperties = _a.customProperties,\n active = _a.active,\n disabled = _a.disabled;\n var opt = new Option(label, value, false, active);\n if (customProperties) {\n opt.dataset.customProperties = \"\".concat(customProperties);\n }\n opt.disabled = !!disabled;\n return opt;\n }\n};\nexports[\"default\"] = templates;\n\n/***/ }),\n\n/***/ 996:\n/***/ (function(module) {\n\n\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction propertyIsOnObject(object, property) {\n\ttry {\n\t\treturn property in object\n\t} catch(_) {\n\t\treturn false\n\t}\n}\n\n// Protects from prototype poisoning and unexpected merging up the prototype chain.\nfunction propertyIsUnsafe(target, key) {\n\treturn propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,\n\t\t&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,\n\t\t\t&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (propertyIsUnsafe(target, key)) {\n\t\t\treturn\n\t\t}\n\n\t\tif (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\t// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()\n\t// implementations can use it. The caller may not replace it.\n\toptions.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n\n\n/***/ }),\n\n/***/ 221:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ Fuse; }\n/* harmony export */ });\n/**\n * Fuse.js v6.6.2 - Lightweight fuzzy-search (http://fusejs.io)\n *\n * Copyright (c) 2022 Kiro Risk (http://kiro.me)\n * All Rights Reserved. Apache Software License 2.0\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n */\n\nfunction isArray(value) {\n return !Array.isArray\n ? getTag(value) === '[object Array]'\n : Array.isArray(value)\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/baseToString.js\nconst INFINITY = 1 / 0;\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value\n }\n let result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result\n}\n\nfunction toString(value) {\n return value == null ? '' : baseToString(value)\n}\n\nfunction isString(value) {\n return typeof value === 'string'\n}\n\nfunction isNumber(value) {\n return typeof value === 'number'\n}\n\n// Adapted from: https://github.com/lodash/lodash/blob/master/isBoolean.js\nfunction isBoolean(value) {\n return (\n value === true ||\n value === false ||\n (isObjectLike(value) && getTag(value) == '[object Boolean]')\n )\n}\n\nfunction isObject(value) {\n return typeof value === 'object'\n}\n\n// Checks if `value` is object-like.\nfunction isObjectLike(value) {\n return isObject(value) && value !== null\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null\n}\n\nfunction isBlank(value) {\n return !value.trim().length\n}\n\n// Gets the `toStringTag` of `value`.\n// Adapted from: https://github.com/lodash/lodash/blob/master/.internal/getTag.js\nfunction getTag(value) {\n return value == null\n ? value === undefined\n ? '[object Undefined]'\n : '[object Null]'\n : Object.prototype.toString.call(value)\n}\n\nconst EXTENDED_SEARCH_UNAVAILABLE = 'Extended search is not available';\n\nconst INCORRECT_INDEX_TYPE = \"Incorrect 'index' type\";\n\nconst LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY = (key) =>\n `Invalid value for key ${key}`;\n\nconst PATTERN_LENGTH_TOO_LARGE = (max) =>\n `Pattern length exceeds max of ${max}.`;\n\nconst MISSING_KEY_PROPERTY = (name) => `Missing ${name} property in key`;\n\nconst INVALID_KEY_WEIGHT_VALUE = (key) =>\n `Property 'weight' in key '${key}' must be a positive integer`;\n\nconst hasOwn = Object.prototype.hasOwnProperty;\n\nclass KeyStore {\n constructor(keys) {\n this._keys = [];\n this._keyMap = {};\n\n let totalWeight = 0;\n\n keys.forEach((key) => {\n let obj = createKey(key);\n\n totalWeight += obj.weight;\n\n this._keys.push(obj);\n this._keyMap[obj.id] = obj;\n\n totalWeight += obj.weight;\n });\n\n // Normalize weights so that their sum is equal to 1\n this._keys.forEach((key) => {\n key.weight /= totalWeight;\n });\n }\n get(keyId) {\n return this._keyMap[keyId]\n }\n keys() {\n return this._keys\n }\n toJSON() {\n return JSON.stringify(this._keys)\n }\n}\n\nfunction createKey(key) {\n let path = null;\n let id = null;\n let src = null;\n let weight = 1;\n let getFn = null;\n\n if (isString(key) || isArray(key)) {\n src = key;\n path = createKeyPath(key);\n id = createKeyId(key);\n } else {\n if (!hasOwn.call(key, 'name')) {\n throw new Error(MISSING_KEY_PROPERTY('name'))\n }\n\n const name = key.name;\n src = name;\n\n if (hasOwn.call(key, 'weight')) {\n weight = key.weight;\n\n if (weight <= 0) {\n throw new Error(INVALID_KEY_WEIGHT_VALUE(name))\n }\n }\n\n path = createKeyPath(name);\n id = createKeyId(name);\n getFn = key.getFn;\n }\n\n return { path, id, weight, src, getFn }\n}\n\nfunction createKeyPath(key) {\n return isArray(key) ? key : key.split('.')\n}\n\nfunction createKeyId(key) {\n return isArray(key) ? key.join('.') : key\n}\n\nfunction get(obj, path) {\n let list = [];\n let arr = false;\n\n const deepGet = (obj, path, index) => {\n if (!isDefined(obj)) {\n return\n }\n if (!path[index]) {\n // If there's no path left, we've arrived at the object we care about.\n list.push(obj);\n } else {\n let key = path[index];\n\n const value = obj[key];\n\n if (!isDefined(value)) {\n return\n }\n\n // If we're at the last value in the path, and if it's a string/number/bool,\n // add it to the list\n if (\n index === path.length - 1 &&\n (isString(value) || isNumber(value) || isBoolean(value))\n ) {\n list.push(toString(value));\n } else if (isArray(value)) {\n arr = true;\n // Search each item in the array.\n for (let i = 0, len = value.length; i < len; i += 1) {\n deepGet(value[i], path, index + 1);\n }\n } else if (path.length) {\n // An object. Recurse further.\n deepGet(value, path, index + 1);\n }\n }\n };\n\n // Backwards compatibility (since path used to be a string)\n deepGet(obj, isString(path) ? path.split('.') : path, 0);\n\n return arr ? list : list[0]\n}\n\nconst MatchOptions = {\n // Whether the matches should be included in the result set. When `true`, each record in the result\n // set will include the indices of the matched characters.\n // These can consequently be used for highlighting purposes.\n includeMatches: false,\n // When `true`, the matching function will continue to the end of a search pattern even if\n // a perfect match has already been located in the string.\n findAllMatches: false,\n // Minimum number of characters that must be matched before a result is considered a match\n minMatchCharLength: 1\n};\n\nconst BasicOptions = {\n // When `true`, the algorithm continues searching to the end of the input even if a perfect\n // match is found before the end of the same input.\n isCaseSensitive: false,\n // When true, the matching function will continue to the end of a search pattern even if\n includeScore: false,\n // List of properties that will be searched. This also supports nested properties.\n keys: [],\n // Whether to sort the result list, by score\n shouldSort: true,\n // Default sort function: sort by ascending score, ascending index\n sortFn: (a, b) =>\n a.score === b.score ? (a.idx < b.idx ? -1 : 1) : a.score < b.score ? -1 : 1\n};\n\nconst FuzzyOptions = {\n // Approximately where in the text is the pattern expected to be found?\n location: 0,\n // At what point does the match algorithm give up. A threshold of '0.0' requires a perfect match\n // (of both letters and location), a threshold of '1.0' would match anything.\n threshold: 0.6,\n // Determines how close the match must be to the fuzzy location (specified above).\n // An exact letter match which is 'distance' characters away from the fuzzy location\n // would score as a complete mismatch. A distance of '0' requires the match be at\n // the exact location specified, a threshold of '1000' would require a perfect match\n // to be within 800 characters of the fuzzy location to be found using a 0.8 threshold.\n distance: 100\n};\n\nconst AdvancedOptions = {\n // When `true`, it enables the use of unix-like search commands\n useExtendedSearch: false,\n // The get function to use when fetching an object's properties.\n // The default will search nested paths *ie foo.bar.baz*\n getFn: get,\n // When `true`, search will ignore `location` and `distance`, so it won't matter\n // where in the string the pattern appears.\n // More info: https://fusejs.io/concepts/scoring-theory.html#fuzziness-score\n ignoreLocation: false,\n // When `true`, the calculation for the relevance score (used for sorting) will\n // ignore the field-length norm.\n // More info: https://fusejs.io/concepts/scoring-theory.html#field-length-norm\n ignoreFieldNorm: false,\n // The weight to determine how much field length norm effects scoring.\n fieldNormWeight: 1\n};\n\nvar Config = {\n ...BasicOptions,\n ...MatchOptions,\n ...FuzzyOptions,\n ...AdvancedOptions\n};\n\nconst SPACE = /[^ ]+/g;\n\n// Field-length norm: the shorter the field, the higher the weight.\n// Set to 3 decimals to reduce index size.\nfunction norm(weight = 1, mantissa = 3) {\n const cache = new Map();\n const m = Math.pow(10, mantissa);\n\n return {\n get(value) {\n const numTokens = value.match(SPACE).length;\n\n if (cache.has(numTokens)) {\n return cache.get(numTokens)\n }\n\n // Default function is 1/sqrt(x), weight makes that variable\n const norm = 1 / Math.pow(numTokens, 0.5 * weight);\n\n // In place of `toFixed(mantissa)`, for faster computation\n const n = parseFloat(Math.round(norm * m) / m);\n\n cache.set(numTokens, n);\n\n return n\n },\n clear() {\n cache.clear();\n }\n }\n}\n\nclass FuseIndex {\n constructor({\n getFn = Config.getFn,\n fieldNormWeight = Config.fieldNormWeight\n } = {}) {\n this.norm = norm(fieldNormWeight, 3);\n this.getFn = getFn;\n this.isCreated = false;\n\n this.setIndexRecords();\n }\n setSources(docs = []) {\n this.docs = docs;\n }\n setIndexRecords(records = []) {\n this.records = records;\n }\n setKeys(keys = []) {\n this.keys = keys;\n this._keysMap = {};\n keys.forEach((key, idx) => {\n this._keysMap[key.id] = idx;\n });\n }\n create() {\n if (this.isCreated || !this.docs.length) {\n return\n }\n\n this.isCreated = true;\n\n // List is Array\n if (isString(this.docs[0])) {\n this.docs.forEach((doc, docIndex) => {\n this._addString(doc, docIndex);\n });\n } else {\n // List is Array\n this.docs.forEach((doc, docIndex) => {\n this._addObject(doc, docIndex);\n });\n }\n\n this.norm.clear();\n }\n // Adds a doc to the end of the index\n add(doc) {\n const idx = this.size();\n\n if (isString(doc)) {\n this._addString(doc, idx);\n } else {\n this._addObject(doc, idx);\n }\n }\n // Removes the doc at the specified index of the index\n removeAt(idx) {\n this.records.splice(idx, 1);\n\n // Change ref index of every subsquent doc\n for (let i = idx, len = this.size(); i < len; i += 1) {\n this.records[i].i -= 1;\n }\n }\n getValueForItemAtKeyId(item, keyId) {\n return item[this._keysMap[keyId]]\n }\n size() {\n return this.records.length\n }\n _addString(doc, docIndex) {\n if (!isDefined(doc) || isBlank(doc)) {\n return\n }\n\n let record = {\n v: doc,\n i: docIndex,\n n: this.norm.get(doc)\n };\n\n this.records.push(record);\n }\n _addObject(doc, docIndex) {\n let record = { i: docIndex, $: {} };\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n this.keys.forEach((key, keyIndex) => {\n let value = key.getFn ? key.getFn(doc) : this.getFn(doc, key.path);\n\n if (!isDefined(value)) {\n return\n }\n\n if (isArray(value)) {\n let subRecords = [];\n const stack = [{ nestedArrIndex: -1, value }];\n\n while (stack.length) {\n const { nestedArrIndex, value } = stack.pop();\n\n if (!isDefined(value)) {\n continue\n }\n\n if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n i: nestedArrIndex,\n n: this.norm.get(value)\n };\n\n subRecords.push(subRecord);\n } else if (isArray(value)) {\n value.forEach((item, k) => {\n stack.push({\n nestedArrIndex: k,\n value: item\n });\n });\n } else ;\n }\n record.$[keyIndex] = subRecords;\n } else if (isString(value) && !isBlank(value)) {\n let subRecord = {\n v: value,\n n: this.norm.get(value)\n };\n\n record.$[keyIndex] = subRecord;\n }\n });\n\n this.records.push(record);\n }\n toJSON() {\n return {\n keys: this.keys,\n records: this.records\n }\n }\n}\n\nfunction createIndex(\n keys,\n docs,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys.map(createKey));\n myIndex.setSources(docs);\n myIndex.create();\n return myIndex\n}\n\nfunction parseIndex(\n data,\n { getFn = Config.getFn, fieldNormWeight = Config.fieldNormWeight } = {}\n) {\n const { keys, records } = data;\n const myIndex = new FuseIndex({ getFn, fieldNormWeight });\n myIndex.setKeys(keys);\n myIndex.setIndexRecords(records);\n return myIndex\n}\n\nfunction computeScore$1(\n pattern,\n {\n errors = 0,\n currentLocation = 0,\n expectedLocation = 0,\n distance = Config.distance,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n const accuracy = errors / pattern.length;\n\n if (ignoreLocation) {\n return accuracy\n }\n\n const proximity = Math.abs(expectedLocation - currentLocation);\n\n if (!distance) {\n // Dodge divide by zero error.\n return proximity ? 1.0 : accuracy\n }\n\n return accuracy + proximity / distance\n}\n\nfunction convertMaskToIndices(\n matchmask = [],\n minMatchCharLength = Config.minMatchCharLength\n) {\n let indices = [];\n let start = -1;\n let end = -1;\n let i = 0;\n\n for (let len = matchmask.length; i < len; i += 1) {\n let match = matchmask[i];\n if (match && start === -1) {\n start = i;\n } else if (!match && start !== -1) {\n end = i - 1;\n if (end - start + 1 >= minMatchCharLength) {\n indices.push([start, end]);\n }\n start = -1;\n }\n }\n\n // (i-1 - start) + 1 => i - start\n if (matchmask[i - 1] && i - start >= minMatchCharLength) {\n indices.push([start, i - 1]);\n }\n\n return indices\n}\n\n// Machine word size\nconst MAX_BITS = 32;\n\nfunction search(\n text,\n pattern,\n patternAlphabet,\n {\n location = Config.location,\n distance = Config.distance,\n threshold = Config.threshold,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n includeMatches = Config.includeMatches,\n ignoreLocation = Config.ignoreLocation\n } = {}\n) {\n if (pattern.length > MAX_BITS) {\n throw new Error(PATTERN_LENGTH_TOO_LARGE(MAX_BITS))\n }\n\n const patternLen = pattern.length;\n // Set starting location at beginning text and initialize the alphabet.\n const textLen = text.length;\n // Handle the case when location > text.length\n const expectedLocation = Math.max(0, Math.min(location, textLen));\n // Highest score beyond which we give up.\n let currentThreshold = threshold;\n // Is there a nearby exact match? (speedup)\n let bestLocation = expectedLocation;\n\n // Performance: only computer matches when the minMatchCharLength > 1\n // OR if `includeMatches` is true.\n const computeMatches = minMatchCharLength > 1 || includeMatches;\n // A mask of the matches, used for building the indices\n const matchMask = computeMatches ? Array(textLen) : [];\n\n let index;\n\n // Get all exact matches, here for speed up\n while ((index = text.indexOf(pattern, bestLocation)) > -1) {\n let score = computeScore$1(pattern, {\n currentLocation: index,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n currentThreshold = Math.min(score, currentThreshold);\n bestLocation = index + patternLen;\n\n if (computeMatches) {\n let i = 0;\n while (i < patternLen) {\n matchMask[index + i] = 1;\n i += 1;\n }\n }\n }\n\n // Reset the best location\n bestLocation = -1;\n\n let lastBitArr = [];\n let finalScore = 1;\n let binMax = patternLen + textLen;\n\n const mask = 1 << (patternLen - 1);\n\n for (let i = 0; i < patternLen; i += 1) {\n // Scan for the best match; each iteration allows for one more error.\n // Run a binary search to determine how far from the match location we can stray\n // at this error level.\n let binMin = 0;\n let binMid = binMax;\n\n while (binMin < binMid) {\n const score = computeScore$1(pattern, {\n errors: i,\n currentLocation: expectedLocation + binMid,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score <= currentThreshold) {\n binMin = binMid;\n } else {\n binMax = binMid;\n }\n\n binMid = Math.floor((binMax - binMin) / 2 + binMin);\n }\n\n // Use the result from this iteration as the maximum for the next.\n binMax = binMid;\n\n let start = Math.max(1, expectedLocation - binMid + 1);\n let finish = findAllMatches\n ? textLen\n : Math.min(expectedLocation + binMid, textLen) + patternLen;\n\n // Initialize the bit array\n let bitArr = Array(finish + 2);\n\n bitArr[finish + 1] = (1 << i) - 1;\n\n for (let j = finish; j >= start; j -= 1) {\n let currentLocation = j - 1;\n let charMatch = patternAlphabet[text.charAt(currentLocation)];\n\n if (computeMatches) {\n // Speed up: quick bool to int conversion (i.e, `charMatch ? 1 : 0`)\n matchMask[currentLocation] = +!!charMatch;\n }\n\n // First pass: exact match\n bitArr[j] = ((bitArr[j + 1] << 1) | 1) & charMatch;\n\n // Subsequent passes: fuzzy match\n if (i) {\n bitArr[j] |=\n ((lastBitArr[j + 1] | lastBitArr[j]) << 1) | 1 | lastBitArr[j + 1];\n }\n\n if (bitArr[j] & mask) {\n finalScore = computeScore$1(pattern, {\n errors: i,\n currentLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n // This match will almost certainly be better than any existing match.\n // But check anyway.\n if (finalScore <= currentThreshold) {\n // Indeed it is\n currentThreshold = finalScore;\n bestLocation = currentLocation;\n\n // Already passed `loc`, downhill from here on in.\n if (bestLocation <= expectedLocation) {\n break\n }\n\n // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.\n start = Math.max(1, 2 * expectedLocation - bestLocation);\n }\n }\n }\n\n // No hope for a (better) match at greater error levels.\n const score = computeScore$1(pattern, {\n errors: i + 1,\n currentLocation: expectedLocation,\n expectedLocation,\n distance,\n ignoreLocation\n });\n\n if (score > currentThreshold) {\n break\n }\n\n lastBitArr = bitArr;\n }\n\n const result = {\n isMatch: bestLocation >= 0,\n // Count exact matches (those with a score of 0) to be \"almost\" exact\n score: Math.max(0.001, finalScore)\n };\n\n if (computeMatches) {\n const indices = convertMaskToIndices(matchMask, minMatchCharLength);\n if (!indices.length) {\n result.isMatch = false;\n } else if (includeMatches) {\n result.indices = indices;\n }\n }\n\n return result\n}\n\nfunction createPatternAlphabet(pattern) {\n let mask = {};\n\n for (let i = 0, len = pattern.length; i < len; i += 1) {\n const char = pattern.charAt(i);\n mask[char] = (mask[char] || 0) | (1 << (len - i - 1));\n }\n\n return mask\n}\n\nclass BitapSearch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n this.options = {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n\n this.chunks = [];\n\n if (!this.pattern.length) {\n return\n }\n\n const addChunk = (pattern, startIndex) => {\n this.chunks.push({\n pattern,\n alphabet: createPatternAlphabet(pattern),\n startIndex\n });\n };\n\n const len = this.pattern.length;\n\n if (len > MAX_BITS) {\n let i = 0;\n const remainder = len % MAX_BITS;\n const end = len - remainder;\n\n while (i < end) {\n addChunk(this.pattern.substr(i, MAX_BITS), i);\n i += MAX_BITS;\n }\n\n if (remainder) {\n const startIndex = len - MAX_BITS;\n addChunk(this.pattern.substr(startIndex), startIndex);\n }\n } else {\n addChunk(this.pattern, 0);\n }\n }\n\n searchIn(text) {\n const { isCaseSensitive, includeMatches } = this.options;\n\n if (!isCaseSensitive) {\n text = text.toLowerCase();\n }\n\n // Exact match\n if (this.pattern === text) {\n let result = {\n isMatch: true,\n score: 0\n };\n\n if (includeMatches) {\n result.indices = [[0, text.length - 1]];\n }\n\n return result\n }\n\n // Otherwise, use Bitap algorithm\n const {\n location,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n ignoreLocation\n } = this.options;\n\n let allIndices = [];\n let totalScore = 0;\n let hasMatches = false;\n\n this.chunks.forEach(({ pattern, alphabet, startIndex }) => {\n const { isMatch, score, indices } = search(text, pattern, alphabet, {\n location: location + startIndex,\n distance,\n threshold,\n findAllMatches,\n minMatchCharLength,\n includeMatches,\n ignoreLocation\n });\n\n if (isMatch) {\n hasMatches = true;\n }\n\n totalScore += score;\n\n if (isMatch && indices) {\n allIndices = [...allIndices, ...indices];\n }\n });\n\n let result = {\n isMatch: hasMatches,\n score: hasMatches ? totalScore / this.chunks.length : 1\n };\n\n if (hasMatches && includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n}\n\nclass BaseMatch {\n constructor(pattern) {\n this.pattern = pattern;\n }\n static isMultiMatch(pattern) {\n return getMatch(pattern, this.multiRegex)\n }\n static isSingleMatch(pattern) {\n return getMatch(pattern, this.singleRegex)\n }\n search(/*text*/) {}\n}\n\nfunction getMatch(pattern, exp) {\n const matches = pattern.match(exp);\n return matches ? matches[1] : null\n}\n\n// Token: 'file\n\nclass ExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'exact'\n }\n static get multiRegex() {\n return /^=\"(.*)\"$/\n }\n static get singleRegex() {\n return /^=(.*)$/\n }\n search(text) {\n const isMatch = text === this.pattern;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !fire\n\nclass InverseExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!(.*)$/\n }\n search(text) {\n const index = text.indexOf(this.pattern);\n const isMatch = index === -1;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: ^file\n\nclass PrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'prefix-exact'\n }\n static get multiRegex() {\n return /^\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^\\^(.*)$/\n }\n search(text) {\n const isMatch = text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, this.pattern.length - 1]\n }\n }\n}\n\n// Token: !^fire\n\nclass InversePrefixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-prefix-exact'\n }\n static get multiRegex() {\n return /^!\\^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^!\\^(.*)$/\n }\n search(text) {\n const isMatch = !text.startsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\n// Token: .file$\n\nclass SuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'suffix-exact'\n }\n static get multiRegex() {\n return /^\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^(.*)\\$$/\n }\n search(text) {\n const isMatch = text.endsWith(this.pattern);\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [text.length - this.pattern.length, text.length - 1]\n }\n }\n}\n\n// Token: !.file$\n\nclass InverseSuffixExactMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'inverse-suffix-exact'\n }\n static get multiRegex() {\n return /^!\"(.*)\"\\$$/\n }\n static get singleRegex() {\n return /^!(.*)\\$$/\n }\n search(text) {\n const isMatch = !text.endsWith(this.pattern);\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices: [0, text.length - 1]\n }\n }\n}\n\nclass FuzzyMatch extends BaseMatch {\n constructor(\n pattern,\n {\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance,\n includeMatches = Config.includeMatches,\n findAllMatches = Config.findAllMatches,\n minMatchCharLength = Config.minMatchCharLength,\n isCaseSensitive = Config.isCaseSensitive,\n ignoreLocation = Config.ignoreLocation\n } = {}\n ) {\n super(pattern);\n this._bitapSearch = new BitapSearch(pattern, {\n location,\n threshold,\n distance,\n includeMatches,\n findAllMatches,\n minMatchCharLength,\n isCaseSensitive,\n ignoreLocation\n });\n }\n static get type() {\n return 'fuzzy'\n }\n static get multiRegex() {\n return /^\"(.*)\"$/\n }\n static get singleRegex() {\n return /^(.*)$/\n }\n search(text) {\n return this._bitapSearch.searchIn(text)\n }\n}\n\n// Token: 'file\n\nclass IncludeMatch extends BaseMatch {\n constructor(pattern) {\n super(pattern);\n }\n static get type() {\n return 'include'\n }\n static get multiRegex() {\n return /^'\"(.*)\"$/\n }\n static get singleRegex() {\n return /^'(.*)$/\n }\n search(text) {\n let location = 0;\n let index;\n\n const indices = [];\n const patternLen = this.pattern.length;\n\n // Get all exact matches\n while ((index = text.indexOf(this.pattern, location)) > -1) {\n location = index + patternLen;\n indices.push([index, location - 1]);\n }\n\n const isMatch = !!indices.length;\n\n return {\n isMatch,\n score: isMatch ? 0 : 1,\n indices\n }\n }\n}\n\n// ❗Order is important. DO NOT CHANGE.\nconst searchers = [\n ExactMatch,\n IncludeMatch,\n PrefixExactMatch,\n InversePrefixExactMatch,\n InverseSuffixExactMatch,\n SuffixExactMatch,\n InverseExactMatch,\n FuzzyMatch\n];\n\nconst searchersLen = searchers.length;\n\n// Regex to split by spaces, but keep anything in quotes together\nconst SPACE_RE = / +(?=(?:[^\\\"]*\\\"[^\\\"]*\\\")*[^\\\"]*$)/;\nconst OR_TOKEN = '|';\n\n// Return a 2D array representation of the query, for simpler parsing.\n// Example:\n// \"^core go$ | rb$ | py$ xy$\" => [[\"^core\", \"go$\"], [\"rb$\"], [\"py$\", \"xy$\"]]\nfunction parseQuery(pattern, options = {}) {\n return pattern.split(OR_TOKEN).map((item) => {\n let query = item\n .trim()\n .split(SPACE_RE)\n .filter((item) => item && !!item.trim());\n\n let results = [];\n for (let i = 0, len = query.length; i < len; i += 1) {\n const queryItem = query[i];\n\n // 1. Handle multiple query match (i.e, once that are quoted, like `\"hello world\"`)\n let found = false;\n let idx = -1;\n while (!found && ++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isMultiMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n found = true;\n }\n }\n\n if (found) {\n continue\n }\n\n // 2. Handle single query matches (i.e, once that are *not* quoted)\n idx = -1;\n while (++idx < searchersLen) {\n const searcher = searchers[idx];\n let token = searcher.isSingleMatch(queryItem);\n if (token) {\n results.push(new searcher(token, options));\n break\n }\n }\n }\n\n return results\n })\n}\n\n// These extended matchers can return an array of matches, as opposed\n// to a singl match\nconst MultiMatchSet = new Set([FuzzyMatch.type, IncludeMatch.type]);\n\n/**\n * Command-like searching\n * ======================\n *\n * Given multiple search terms delimited by spaces.e.g. `^jscript .python$ ruby !java`,\n * search in a given text.\n *\n * Search syntax:\n *\n * | Token | Match type | Description |\n * | ----------- | -------------------------- | -------------------------------------- |\n * | `jscript` | fuzzy-match | Items that fuzzy match `jscript` |\n * | `=scheme` | exact-match | Items that are `scheme` |\n * | `'python` | include-match | Items that include `python` |\n * | `!ruby` | inverse-exact-match | Items that do not include `ruby` |\n * | `^java` | prefix-exact-match | Items that start with `java` |\n * | `!^earlang` | inverse-prefix-exact-match | Items that do not start with `earlang` |\n * | `.js$` | suffix-exact-match | Items that end with `.js` |\n * | `!.go$` | inverse-suffix-exact-match | Items that do not end with `.go` |\n *\n * A single pipe character acts as an OR operator. For example, the following\n * query matches entries that start with `core` and end with either`go`, `rb`,\n * or`py`.\n *\n * ```\n * ^core go$ | rb$ | py$\n * ```\n */\nclass ExtendedSearch {\n constructor(\n pattern,\n {\n isCaseSensitive = Config.isCaseSensitive,\n includeMatches = Config.includeMatches,\n minMatchCharLength = Config.minMatchCharLength,\n ignoreLocation = Config.ignoreLocation,\n findAllMatches = Config.findAllMatches,\n location = Config.location,\n threshold = Config.threshold,\n distance = Config.distance\n } = {}\n ) {\n this.query = null;\n this.options = {\n isCaseSensitive,\n includeMatches,\n minMatchCharLength,\n findAllMatches,\n ignoreLocation,\n location,\n threshold,\n distance\n };\n\n this.pattern = isCaseSensitive ? pattern : pattern.toLowerCase();\n this.query = parseQuery(this.pattern, this.options);\n }\n\n static condition(_, options) {\n return options.useExtendedSearch\n }\n\n searchIn(text) {\n const query = this.query;\n\n if (!query) {\n return {\n isMatch: false,\n score: 1\n }\n }\n\n const { includeMatches, isCaseSensitive } = this.options;\n\n text = isCaseSensitive ? text : text.toLowerCase();\n\n let numMatches = 0;\n let allIndices = [];\n let totalScore = 0;\n\n // ORs\n for (let i = 0, qLen = query.length; i < qLen; i += 1) {\n const searchers = query[i];\n\n // Reset indices\n allIndices.length = 0;\n numMatches = 0;\n\n // ANDs\n for (let j = 0, pLen = searchers.length; j < pLen; j += 1) {\n const searcher = searchers[j];\n const { isMatch, indices, score } = searcher.search(text);\n\n if (isMatch) {\n numMatches += 1;\n totalScore += score;\n if (includeMatches) {\n const type = searcher.constructor.type;\n if (MultiMatchSet.has(type)) {\n allIndices = [...allIndices, ...indices];\n } else {\n allIndices.push(indices);\n }\n }\n } else {\n totalScore = 0;\n numMatches = 0;\n allIndices.length = 0;\n break\n }\n }\n\n // OR condition, so if TRUE, return\n if (numMatches) {\n let result = {\n isMatch: true,\n score: totalScore / numMatches\n };\n\n if (includeMatches) {\n result.indices = allIndices;\n }\n\n return result\n }\n }\n\n // Nothing was matched\n return {\n isMatch: false,\n score: 1\n }\n }\n}\n\nconst registeredSearchers = [];\n\nfunction register(...args) {\n registeredSearchers.push(...args);\n}\n\nfunction createSearcher(pattern, options) {\n for (let i = 0, len = registeredSearchers.length; i < len; i += 1) {\n let searcherClass = registeredSearchers[i];\n if (searcherClass.condition(pattern, options)) {\n return new searcherClass(pattern, options)\n }\n }\n\n return new BitapSearch(pattern, options)\n}\n\nconst LogicalOperator = {\n AND: '$and',\n OR: '$or'\n};\n\nconst KeyType = {\n PATH: '$path',\n PATTERN: '$val'\n};\n\nconst isExpression = (query) =>\n !!(query[LogicalOperator.AND] || query[LogicalOperator.OR]);\n\nconst isPath = (query) => !!query[KeyType.PATH];\n\nconst isLeaf = (query) =>\n !isArray(query) && isObject(query) && !isExpression(query);\n\nconst convertToExplicit = (query) => ({\n [LogicalOperator.AND]: Object.keys(query).map((key) => ({\n [key]: query[key]\n }))\n});\n\n// When `auto` is `true`, the parse function will infer and initialize and add\n// the appropriate `Searcher` instance\nfunction parse(query, options, { auto = true } = {}) {\n const next = (query) => {\n let keys = Object.keys(query);\n\n const isQueryPath = isPath(query);\n\n if (!isQueryPath && keys.length > 1 && !isExpression(query)) {\n return next(convertToExplicit(query))\n }\n\n if (isLeaf(query)) {\n const key = isQueryPath ? query[KeyType.PATH] : keys[0];\n\n const pattern = isQueryPath ? query[KeyType.PATTERN] : query[key];\n\n if (!isString(pattern)) {\n throw new Error(LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY(key))\n }\n\n const obj = {\n keyId: createKeyId(key),\n pattern\n };\n\n if (auto) {\n obj.searcher = createSearcher(pattern, options);\n }\n\n return obj\n }\n\n let node = {\n children: [],\n operator: keys[0]\n };\n\n keys.forEach((key) => {\n const value = query[key];\n\n if (isArray(value)) {\n value.forEach((item) => {\n node.children.push(next(item));\n });\n }\n });\n\n return node\n };\n\n if (!isExpression(query)) {\n query = convertToExplicit(query);\n }\n\n return next(query)\n}\n\n// Practical scoring function\nfunction computeScore(\n results,\n { ignoreFieldNorm = Config.ignoreFieldNorm }\n) {\n results.forEach((result) => {\n let totalScore = 1;\n\n result.matches.forEach(({ key, norm, score }) => {\n const weight = key ? key.weight : null;\n\n totalScore *= Math.pow(\n score === 0 && weight ? Number.EPSILON : score,\n (weight || 1) * (ignoreFieldNorm ? 1 : norm)\n );\n });\n\n result.score = totalScore;\n });\n}\n\nfunction transformMatches(result, data) {\n const matches = result.matches;\n data.matches = [];\n\n if (!isDefined(matches)) {\n return\n }\n\n matches.forEach((match) => {\n if (!isDefined(match.indices) || !match.indices.length) {\n return\n }\n\n const { indices, value } = match;\n\n let obj = {\n indices,\n value\n };\n\n if (match.key) {\n obj.key = match.key.src;\n }\n\n if (match.idx > -1) {\n obj.refIndex = match.idx;\n }\n\n data.matches.push(obj);\n });\n}\n\nfunction transformScore(result, data) {\n data.score = result.score;\n}\n\nfunction format(\n results,\n docs,\n {\n includeMatches = Config.includeMatches,\n includeScore = Config.includeScore\n } = {}\n) {\n const transformers = [];\n\n if (includeMatches) transformers.push(transformMatches);\n if (includeScore) transformers.push(transformScore);\n\n return results.map((result) => {\n const { idx } = result;\n\n const data = {\n item: docs[idx],\n refIndex: idx\n };\n\n if (transformers.length) {\n transformers.forEach((transformer) => {\n transformer(result, data);\n });\n }\n\n return data\n })\n}\n\nclass Fuse {\n constructor(docs, options = {}, index) {\n this.options = { ...Config, ...options };\n\n if (\n this.options.useExtendedSearch &&\n !true\n ) {}\n\n this._keyStore = new KeyStore(this.options.keys);\n\n this.setCollection(docs, index);\n }\n\n setCollection(docs, index) {\n this._docs = docs;\n\n if (index && !(index instanceof FuseIndex)) {\n throw new Error(INCORRECT_INDEX_TYPE)\n }\n\n this._myIndex =\n index ||\n createIndex(this.options.keys, this._docs, {\n getFn: this.options.getFn,\n fieldNormWeight: this.options.fieldNormWeight\n });\n }\n\n add(doc) {\n if (!isDefined(doc)) {\n return\n }\n\n this._docs.push(doc);\n this._myIndex.add(doc);\n }\n\n remove(predicate = (/* doc, idx */) => false) {\n const results = [];\n\n for (let i = 0, len = this._docs.length; i < len; i += 1) {\n const doc = this._docs[i];\n if (predicate(doc, i)) {\n this.removeAt(i);\n i -= 1;\n len -= 1;\n\n results.push(doc);\n }\n }\n\n return results\n }\n\n removeAt(idx) {\n this._docs.splice(idx, 1);\n this._myIndex.removeAt(idx);\n }\n\n getIndex() {\n return this._myIndex\n }\n\n search(query, { limit = -1 } = {}) {\n const {\n includeMatches,\n includeScore,\n shouldSort,\n sortFn,\n ignoreFieldNorm\n } = this.options;\n\n let results = isString(query)\n ? isString(this._docs[0])\n ? this._searchStringList(query)\n : this._searchObjectList(query)\n : this._searchLogical(query);\n\n computeScore(results, { ignoreFieldNorm });\n\n if (shouldSort) {\n results.sort(sortFn);\n }\n\n if (isNumber(limit) && limit > -1) {\n results = results.slice(0, limit);\n }\n\n return format(results, this._docs, {\n includeMatches,\n includeScore\n })\n }\n\n _searchStringList(query) {\n const searcher = createSearcher(query, this.options);\n const { records } = this._myIndex;\n const results = [];\n\n // Iterate over every string in the index\n records.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n results.push({\n item: text,\n idx,\n matches: [{ score, value: text, norm, indices }]\n });\n }\n });\n\n return results\n }\n\n _searchLogical(query) {\n\n const expression = parse(query, this.options);\n\n const evaluate = (node, item, idx) => {\n if (!node.children) {\n const { keyId, searcher } = node;\n\n const matches = this._findMatches({\n key: this._keyStore.get(keyId),\n value: this._myIndex.getValueForItemAtKeyId(item, keyId),\n searcher\n });\n\n if (matches && matches.length) {\n return [\n {\n idx,\n item,\n matches\n }\n ]\n }\n\n return []\n }\n\n const res = [];\n for (let i = 0, len = node.children.length; i < len; i += 1) {\n const child = node.children[i];\n const result = evaluate(child, item, idx);\n if (result.length) {\n res.push(...result);\n } else if (node.operator === LogicalOperator.AND) {\n return []\n }\n }\n return res\n };\n\n const records = this._myIndex.records;\n const resultMap = {};\n const results = [];\n\n records.forEach(({ $: item, i: idx }) => {\n if (isDefined(item)) {\n let expResults = evaluate(expression, item, idx);\n\n if (expResults.length) {\n // Dedupe when adding\n if (!resultMap[idx]) {\n resultMap[idx] = { idx, item, matches: [] };\n results.push(resultMap[idx]);\n }\n expResults.forEach(({ matches }) => {\n resultMap[idx].matches.push(...matches);\n });\n }\n }\n });\n\n return results\n }\n\n _searchObjectList(query) {\n const searcher = createSearcher(query, this.options);\n const { keys, records } = this._myIndex;\n const results = [];\n\n // List is Array\n records.forEach(({ $: item, i: idx }) => {\n if (!isDefined(item)) {\n return\n }\n\n let matches = [];\n\n // Iterate over every key (i.e, path), and fetch the value at that key\n keys.forEach((key, keyIndex) => {\n matches.push(\n ...this._findMatches({\n key,\n value: item[keyIndex],\n searcher\n })\n );\n });\n\n if (matches.length) {\n results.push({\n idx,\n item,\n matches\n });\n }\n });\n\n return results\n }\n _findMatches({ key, value, searcher }) {\n if (!isDefined(value)) {\n return []\n }\n\n let matches = [];\n\n if (isArray(value)) {\n value.forEach(({ v: text, i: idx, n: norm }) => {\n if (!isDefined(text)) {\n return\n }\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({\n score,\n key,\n value: text,\n idx,\n norm,\n indices\n });\n }\n });\n } else {\n const { v: text, n: norm } = value;\n\n const { isMatch, score, indices } = searcher.searchIn(text);\n\n if (isMatch) {\n matches.push({ score, key, value: text, norm, indices });\n }\n }\n\n return matches\n }\n}\n\nFuse.version = '6.6.2';\nFuse.createIndex = createIndex;\nFuse.parseIndex = parseIndex;\nFuse.config = Config;\n\n{\n Fuse.parseQuery = parse;\n}\n\n{\n register(ExtendedSearch);\n}\n\n\n\n\n/***/ }),\n\n/***/ 791:\n/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {\n\n// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n \"__DO_NOT_USE__ActionTypes\": function() { return /* binding */ ActionTypes; },\n \"applyMiddleware\": function() { return /* binding */ applyMiddleware; },\n \"bindActionCreators\": function() { return /* binding */ bindActionCreators; },\n \"combineReducers\": function() { return /* binding */ combineReducers; },\n \"compose\": function() { return /* binding */ compose; },\n \"createStore\": function() { return /* binding */ createStore; },\n \"legacy_createStore\": function() { return /* binding */ legacy_createStore; }\n});\n\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toPrimitive.js\n\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js\n\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n;// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread2.js\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\n;// CONCATENATED MODULE: ./node_modules/redux/es/redux.js\n\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (false) {}\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error( true ? formatProdErrorMessage(0) : 0);\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(1) : 0);\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(2) : 0);\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(3) : 0);\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error( true ? formatProdErrorMessage(4) : 0);\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(5) : 0);\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(6) : 0);\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error( true ? formatProdErrorMessage(7) : 0);\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(8) : 0);\n }\n\n if (isDispatching) {\n throw new Error( true ? formatProdErrorMessage(9) : 0);\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error( true ? formatProdErrorMessage(10) : 0);\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error( true ? formatProdErrorMessage(11) : 0);\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(12) : 0);\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error( true ? formatProdErrorMessage(13) : 0);\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (false) {}\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (false) {}\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (false) { var warningMessage; }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error( true ? formatProdErrorMessage(14) : 0);\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error( true ? formatProdErrorMessage(16) : 0);\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error( true ? formatProdErrorMessage(15) : 0);\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread2(_objectSpread2({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (false) {}\n\n\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/compat get default export */\n/******/ \t!function() {\n/******/ \t\t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t\t__webpack_require__.n = function(module) {\n/******/ \t\t\tvar getter = module && module.__esModule ?\n/******/ \t\t\t\tfunction() { return module['default']; } :\n/******/ \t\t\t\tfunction() { return module; };\n/******/ \t\t\t__webpack_require__.d(getter, { a: getter });\n/******/ \t\t\treturn getter;\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t!function() {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = function(exports, definition) {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t!function() {\n/******/ \t\t__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }\n/******/ \t}();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t!function() {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = function(exports) {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t}();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n!function() {\n/* harmony import */ var _scripts_choices__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(373);\n/* harmony import */ var _scripts_choices__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_scripts_choices__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _scripts_interfaces__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(187);\n/* harmony import */ var _scripts_interfaces__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_scripts_interfaces__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _scripts_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(883);\n/* harmony import */ var _scripts_defaults__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(789);\n/* harmony import */ var _scripts_templates__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(686);\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ((_scripts_choices__WEBPACK_IMPORTED_MODULE_0___default()));\n\n}();\n__webpack_exports__ = __webpack_exports__[\"default\"];\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});","var Buffer = require('safe-buffer').Buffer\nvar Querystring = require('querystring')\nvar defaultRequest = require('./request')\n\nconst DEFAULT_URL_BASE = 'https://example.org/'\n\nvar btoa\nif (typeof Buffer === 'function') {\n btoa = btoaBuffer\n} else {\n btoa = window.btoa.bind(window)\n}\n\n/**\n * Export `ClientOAuth2` class.\n */\nmodule.exports = ClientOAuth2\n\n/**\n * Default headers for executing OAuth 2.0 flows.\n */\nvar DEFAULT_HEADERS = {\n Accept: 'application/json, application/x-www-form-urlencoded',\n 'Content-Type': 'application/x-www-form-urlencoded'\n}\n\n/**\n * Format error response types to regular strings for displaying to clients.\n *\n * Reference: http://tools.ietf.org/html/rfc6749#section-4.1.2.1\n */\nvar ERROR_RESPONSES = {\n invalid_request: [\n 'The request is missing a required parameter, includes an',\n 'invalid parameter value, includes a parameter more than',\n 'once, or is otherwise malformed.'\n ].join(' '),\n invalid_client: [\n 'Client authentication failed (e.g., unknown client, no',\n 'client authentication included, or unsupported',\n 'authentication method).'\n ].join(' '),\n invalid_grant: [\n 'The provided authorization grant (e.g., authorization',\n 'code, resource owner credentials) or refresh token is',\n 'invalid, expired, revoked, does not match the redirection',\n 'URI used in the authorization request, or was issued to',\n 'another client.'\n ].join(' '),\n unauthorized_client: [\n 'The client is not authorized to request an authorization',\n 'code using this method.'\n ].join(' '),\n unsupported_grant_type: [\n 'The authorization grant type is not supported by the',\n 'authorization server.'\n ].join(' '),\n access_denied: [\n 'The resource owner or authorization server denied the request.'\n ].join(' '),\n unsupported_response_type: [\n 'The authorization server does not support obtaining',\n 'an authorization code using this method.'\n ].join(' '),\n invalid_scope: [\n 'The requested scope is invalid, unknown, or malformed.'\n ].join(' '),\n server_error: [\n 'The authorization server encountered an unexpected',\n 'condition that prevented it from fulfilling the request.',\n '(This error code is needed because a 500 Internal Server',\n 'Error HTTP status code cannot be returned to the client',\n 'via an HTTP redirect.)'\n ].join(' '),\n temporarily_unavailable: [\n 'The authorization server is currently unable to handle',\n 'the request due to a temporary overloading or maintenance',\n 'of the server.'\n ].join(' ')\n}\n\n/**\n * Support base64 in node like how it works in the browser.\n *\n * @param {string} string\n * @return {string}\n */\nfunction btoaBuffer (string) {\n return Buffer.from(string).toString('base64')\n}\n\n/**\n * Check if properties exist on an object and throw when they aren't.\n *\n * @throws {TypeError} If an expected property is missing.\n *\n * @param {Object} obj\n * @param {...string} props\n */\nfunction expects (obj) {\n for (var i = 1; i < arguments.length; i++) {\n var prop = arguments[i]\n\n if (obj[prop] == null) {\n throw new TypeError('Expected \"' + prop + '\" to exist')\n }\n }\n}\n\n/**\n * Pull an authentication error from the response data.\n *\n * @param {Object} data\n * @return {string}\n */\nfunction getAuthError (body) {\n var message = ERROR_RESPONSES[body.error] ||\n body.error_description ||\n body.error\n\n if (message) {\n var err = new Error(message)\n err.body = body\n err.code = 'EAUTH'\n return err\n }\n}\n\n/**\n * Attempt to parse response body as JSON, fall back to parsing as a query string.\n *\n * @param {string} body\n * @return {Object}\n */\nfunction parseResponseBody (body) {\n try {\n return JSON.parse(body)\n } catch (e) {\n return Querystring.parse(body)\n }\n}\n\n/**\n * Sanitize the scopes option to be a string.\n *\n * @param {Array} scopes\n * @return {string}\n */\nfunction sanitizeScope (scopes) {\n return Array.isArray(scopes) ? scopes.join(' ') : toString(scopes)\n}\n\n/**\n * Create a request uri based on an options object and token type.\n *\n * @param {Object} options\n * @param {string} tokenType\n * @return {string}\n */\nfunction createUri (options, tokenType) {\n // Check the required parameters are set.\n expects(options, 'clientId', 'authorizationUri')\n\n const qs = {\n client_id: options.clientId,\n redirect_uri: options.redirectUri,\n response_type: tokenType,\n state: options.state\n }\n if (options.scopes !== undefined) {\n qs.scope = sanitizeScope(options.scopes)\n }\n\n const sep = options.authorizationUri.includes('?') ? '&' : '?'\n return options.authorizationUri + sep + Querystring.stringify(\n Object.assign(qs, options.query))\n}\n\n/**\n * Create basic auth header.\n *\n * @param {string} username\n * @param {string} password\n * @return {string}\n */\nfunction auth (username, password) {\n return 'Basic ' + btoa(toString(username) + ':' + toString(password))\n}\n\n/**\n * Ensure a value is a string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction toString (str) {\n return str == null ? '' : String(str)\n}\n\n/**\n * Merge request options from an options object.\n */\nfunction requestOptions (requestOptions, options) {\n return {\n url: requestOptions.url,\n method: requestOptions.method,\n body: Object.assign({}, requestOptions.body, options.body),\n query: Object.assign({}, requestOptions.query, options.query),\n headers: Object.assign({}, requestOptions.headers, options.headers)\n }\n}\n\n/**\n * Construct an object that can handle the multiple OAuth 2.0 flows.\n *\n * @param {Object} options\n */\nfunction ClientOAuth2 (options, request) {\n this.options = options\n this.request = request || defaultRequest\n\n this.code = new CodeFlow(this)\n this.token = new TokenFlow(this)\n this.owner = new OwnerFlow(this)\n this.credentials = new CredentialsFlow(this)\n this.jwt = new JwtBearerFlow(this)\n}\n\n/**\n * Alias the token constructor.\n *\n * @type {Function}\n */\nClientOAuth2.Token = ClientOAuth2Token\n\n/**\n * Create a new token from existing data.\n *\n * @param {string} access\n * @param {string} [refresh]\n * @param {string} [type]\n * @param {Object} [data]\n * @return {Object}\n */\nClientOAuth2.prototype.createToken = function (access, refresh, type, data) {\n var options = Object.assign(\n {},\n data,\n typeof access === 'string' ? { access_token: access } : access,\n typeof refresh === 'string' ? { refresh_token: refresh } : refresh,\n typeof type === 'string' ? { token_type: type } : type\n )\n\n return new ClientOAuth2.Token(this, options)\n}\n\n/**\n * Using the built-in request method, we'll automatically attempt to parse\n * the response.\n *\n * @param {Object} options\n * @return {Promise}\n */\nClientOAuth2.prototype._request = function (options) {\n var url = options.url\n var body = Querystring.stringify(options.body)\n var query = Querystring.stringify(options.query)\n\n if (query) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + query\n }\n\n return this.request(options.method, url, body, options.headers)\n .then(function (res) {\n var body = parseResponseBody(res.body)\n var authErr = getAuthError(body)\n\n if (authErr) {\n return Promise.reject(authErr)\n }\n\n if (res.status < 200 || res.status >= 399) {\n var statusErr = new Error('HTTP status ' + res.status)\n statusErr.status = res.status\n statusErr.body = res.body\n statusErr.code = 'ESTATUS'\n return Promise.reject(statusErr)\n }\n\n return body\n })\n}\n\n/**\n * General purpose client token generator.\n *\n * @param {Object} client\n * @param {Object} data\n */\nfunction ClientOAuth2Token (client, data) {\n this.client = client\n this.data = data\n this.tokenType = data.token_type && data.token_type.toLowerCase()\n this.accessToken = data.access_token\n this.refreshToken = data.refresh_token\n\n this.expiresIn(Number(data.expires_in))\n}\n\n/**\n * Expire the token after some time.\n *\n * @param {number|Date} duration Seconds from now to expire, or a date to expire on.\n * @return {Date}\n */\nClientOAuth2Token.prototype.expiresIn = function (duration) {\n if (typeof duration === 'number') {\n this.expires = new Date()\n this.expires.setSeconds(this.expires.getSeconds() + duration)\n } else if (duration instanceof Date) {\n this.expires = new Date(duration.getTime())\n } else {\n throw new TypeError('Unknown duration: ' + duration)\n }\n\n return this.expires\n}\n\n/**\n * Sign a standardised request object with user authentication information.\n *\n * @param {Object} requestObject\n * @return {Object}\n */\nClientOAuth2Token.prototype.sign = function (requestObject) {\n if (!this.accessToken) {\n throw new Error('Unable to sign without access token')\n }\n\n requestObject.headers = requestObject.headers || {}\n\n if (this.tokenType === 'bearer') {\n requestObject.headers.Authorization = 'Bearer ' + this.accessToken\n } else {\n var parts = requestObject.url.split('#')\n var token = 'access_token=' + this.accessToken\n var url = parts[0].replace(/[?&]access_token=[^&#]/, '')\n var fragment = parts[1] ? '#' + parts[1] : ''\n\n // Prepend the correct query string parameter to the url.\n requestObject.url = url + (url.indexOf('?') > -1 ? '&' : '?') + token + fragment\n\n // Attempt to avoid storing the url in proxies, since the access token\n // is exposed in the query parameters.\n requestObject.headers.Pragma = 'no-store'\n requestObject.headers['Cache-Control'] = 'no-store'\n }\n\n return requestObject\n}\n\n/**\n * Refresh a user access token with the supplied token.\n *\n * @param {Object} opts\n * @return {Promise}\n */\nClientOAuth2Token.prototype.refresh = function (opts) {\n var self = this\n var options = Object.assign({}, this.client.options, opts)\n\n if (!this.refreshToken) {\n return Promise.reject(new Error('No refresh token'))\n }\n\n return this.client._request(requestOptions({\n url: options.accessTokenUri,\n method: 'POST',\n headers: Object.assign({}, DEFAULT_HEADERS, {\n Authorization: auth(options.clientId, options.clientSecret)\n }),\n body: {\n refresh_token: this.refreshToken,\n grant_type: 'refresh_token'\n }\n }, options))\n .then(function (data) {\n return self.client.createToken(Object.assign({}, self.data, data))\n })\n}\n\n/**\n * Check whether the token has expired.\n *\n * @return {boolean}\n */\nClientOAuth2Token.prototype.expired = function () {\n return Date.now() > this.expires.getTime()\n}\n\n/**\n * Support resource owner password credentials OAuth 2.0 grant.\n *\n * Reference: http://tools.ietf.org/html/rfc6749#section-4.3\n *\n * @param {ClientOAuth2} client\n */\nfunction OwnerFlow (client) {\n this.client = client\n}\n\n/**\n * Make a request on behalf of the user credentials to get an access token.\n *\n * @param {string} username\n * @param {string} password\n * @param {Object} [opts]\n * @return {Promise}\n */\nOwnerFlow.prototype.getToken = function (username, password, opts) {\n var self = this\n var options = Object.assign({}, this.client.options, opts)\n\n const body = {\n username: username,\n password: password,\n grant_type: 'password'\n }\n if (options.scopes !== undefined) {\n body.scope = sanitizeScope(options.scopes)\n }\n\n return this.client._request(requestOptions({\n url: options.accessTokenUri,\n method: 'POST',\n headers: Object.assign({}, DEFAULT_HEADERS, {\n Authorization: auth(options.clientId, options.clientSecret)\n }),\n body: body\n }, options))\n .then(function (data) {\n return self.client.createToken(data)\n })\n}\n\n/**\n * Support implicit OAuth 2.0 grant.\n *\n * Reference: http://tools.ietf.org/html/rfc6749#section-4.2\n *\n * @param {ClientOAuth2} client\n */\nfunction TokenFlow (client) {\n this.client = client\n}\n\n/**\n * Get the uri to redirect the user to for implicit authentication.\n *\n * @param {Object} [opts]\n * @return {string}\n */\nTokenFlow.prototype.getUri = function (opts) {\n var options = Object.assign({}, this.client.options, opts)\n\n return createUri(options, 'token')\n}\n\n/**\n * Get the user access token from the uri.\n *\n * @param {string|Object} uri\n * @param {Object} [opts]\n * @return {Promise}\n */\nTokenFlow.prototype.getToken = function (uri, opts) {\n var options = Object.assign({}, this.client.options, opts)\n var url = typeof uri === 'object' ? uri : new URL(uri, DEFAULT_URL_BASE)\n var expectedUrl = new URL(options.redirectUri, DEFAULT_URL_BASE)\n\n if (typeof url.pathname === 'string' && url.pathname !== expectedUrl.pathname) {\n return Promise.reject(\n new TypeError('Redirected path should match configured path, but got: ' + url.pathname)\n )\n }\n\n // If no query string or fragment exists, we won't be able to parse\n // any useful information from the uri.\n if (!url.hash && !url.search) {\n return Promise.reject(new TypeError('Unable to process uri: ' + uri))\n }\n\n // Extract data from both the fragment and query string. The fragment is most\n // important, but the query string is also used because some OAuth 2.0\n // implementations (Instagram) have a bug where state is passed via query.\n var data = Object.assign(\n {},\n typeof url.search === 'string' ? Querystring.parse(url.search.substr(1)) : (url.search || {}),\n typeof url.hash === 'string' ? Querystring.parse(url.hash.substr(1)) : (url.hash || {})\n )\n\n var err = getAuthError(data)\n\n // Check if the query string was populated with a known error.\n if (err) {\n return Promise.reject(err)\n }\n\n // Check whether the state matches.\n if (options.state != null && data.state !== options.state) {\n return Promise.reject(new TypeError('Invalid state: ' + data.state))\n }\n\n // Initalize a new token and return.\n return Promise.resolve(this.client.createToken(data))\n}\n\n/**\n * Support client credentials OAuth 2.0 grant.\n *\n * Reference: http://tools.ietf.org/html/rfc6749#section-4.4\n *\n * @param {ClientOAuth2} client\n */\nfunction CredentialsFlow (client) {\n this.client = client\n}\n\n/**\n * Request an access token using the client credentials.\n *\n * @param {Object} [opts]\n * @return {Promise}\n */\nCredentialsFlow.prototype.getToken = function (opts) {\n var self = this\n var options = Object.assign({}, this.client.options, opts)\n\n expects(options, 'clientId', 'clientSecret', 'accessTokenUri')\n\n const body = {\n grant_type: 'client_credentials'\n }\n\n if (options.scopes !== undefined) {\n body.scope = sanitizeScope(options.scopes)\n }\n\n return this.client._request(requestOptions({\n url: options.accessTokenUri,\n method: 'POST',\n headers: Object.assign({}, DEFAULT_HEADERS, {\n Authorization: auth(options.clientId, options.clientSecret)\n }),\n body: body\n }, options))\n .then(function (data) {\n return self.client.createToken(data)\n })\n}\n\n/**\n * Support authorization code OAuth 2.0 grant.\n *\n * Reference: http://tools.ietf.org/html/rfc6749#section-4.1\n *\n * @param {ClientOAuth2} client\n */\nfunction CodeFlow (client) {\n this.client = client\n}\n\n/**\n * Generate the uri for doing the first redirect.\n *\n * @param {Object} [opts]\n * @return {string}\n */\nCodeFlow.prototype.getUri = function (opts) {\n var options = Object.assign({}, this.client.options, opts)\n\n return createUri(options, 'code')\n}\n\n/**\n * Get the code token from the redirected uri and make another request for\n * the user access token.\n *\n * @param {string|Object} uri\n * @param {Object} [opts]\n * @return {Promise}\n */\nCodeFlow.prototype.getToken = function (uri, opts) {\n var self = this\n var options = Object.assign({}, this.client.options, opts)\n\n expects(options, 'clientId', 'accessTokenUri')\n\n var url = typeof uri === 'object' ? uri : new URL(uri, DEFAULT_URL_BASE)\n\n if (\n typeof options.redirectUri === 'string' &&\n typeof url.pathname === 'string' &&\n url.pathname !== (new URL(options.redirectUri, DEFAULT_URL_BASE)).pathname\n ) {\n return Promise.reject(\n new TypeError('Redirected path should match configured path, but got: ' + url.pathname)\n )\n }\n\n if (!url.search || !url.search.substr(1)) {\n return Promise.reject(new TypeError('Unable to process uri: ' + uri))\n }\n\n var data = typeof url.search === 'string'\n ? Querystring.parse(url.search.substr(1))\n : (url.search || {})\n var err = getAuthError(data)\n\n if (err) {\n return Promise.reject(err)\n }\n\n if (options.state != null && data.state !== options.state) {\n return Promise.reject(new TypeError('Invalid state: ' + data.state))\n }\n\n // Check whether the response code is set.\n if (!data.code) {\n return Promise.reject(new TypeError('Missing code, unable to request token'))\n }\n\n var headers = Object.assign({}, DEFAULT_HEADERS)\n var body = { code: data.code, grant_type: 'authorization_code', redirect_uri: options.redirectUri }\n\n // `client_id`: REQUIRED, if the client is not authenticating with the\n // authorization server as described in Section 3.2.1.\n // Reference: https://tools.ietf.org/html/rfc6749#section-3.2.1\n if (options.clientSecret) {\n headers.Authorization = auth(options.clientId, options.clientSecret)\n } else {\n body.client_id = options.clientId\n }\n\n return this.client._request(requestOptions({\n url: options.accessTokenUri,\n method: 'POST',\n headers: headers,\n body: body\n }, options))\n .then(function (data) {\n return self.client.createToken(data)\n })\n}\n\n/**\n * Support JSON Web Token (JWT) Bearer Token OAuth 2.0 grant.\n *\n * Reference: https://tools.ietf.org/html/draft-ietf-oauth-jwt-bearer-12#section-2.1\n *\n * @param {ClientOAuth2} client\n */\nfunction JwtBearerFlow (client) {\n this.client = client\n}\n\n/**\n * Request an access token using a JWT token.\n *\n * @param {string} token A JWT token.\n * @param {Object} [opts]\n * @return {Promise}\n */\nJwtBearerFlow.prototype.getToken = function (token, opts) {\n var self = this\n var options = Object.assign({}, this.client.options, opts)\n var headers = Object.assign({}, DEFAULT_HEADERS)\n\n expects(options, 'accessTokenUri')\n\n // Authentication of the client is optional, as described in\n // Section 3.2.1 of OAuth 2.0 [RFC6749]\n if (options.clientId) {\n headers.Authorization = auth(options.clientId, options.clientSecret)\n }\n\n const body = {\n grant_type: 'urn:ietf:params:oauth:grant-type:jwt-bearer',\n assertion: token\n }\n\n if (options.scopes !== undefined) {\n body.scope = sanitizeScope(options.scopes)\n }\n\n return this.client._request(requestOptions({\n url: options.accessTokenUri,\n method: 'POST',\n headers: headers,\n body: body\n }, options))\n .then(function (data) {\n return self.client.createToken(data)\n })\n}\n","/**\n * Make a request using `XMLHttpRequest`.\n *\n * @param {string} method\n * @param {string} url\n * @param {string} body\n * @param {Object} headers\n * @returns {Promise}\n */\nmodule.exports = function request (method, url, body, headers) {\n return new Promise(function (resolve, reject) {\n var xhr = new window.XMLHttpRequest()\n\n xhr.open(method, url)\n\n xhr.onload = function () {\n return resolve({\n status: xhr.status,\n body: xhr.responseText\n })\n }\n\n xhr.onerror = xhr.onabort = function () {\n return reject(new Error(xhr.statusText || 'XHR aborted: ' + url))\n }\n\n Object.keys(headers).forEach(function (header) {\n xhr.setRequestHeader(header, headers[header])\n })\n\n xhr.send(body)\n })\n}\n","'use strict';\n\nvar curryN = require('ramda/src/curryN');\n\n// Utility\nfunction isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n}\nfunction trueFn() { return true; }\n\n// Globals\nvar toUpdate = [];\nvar inStream;\nvar order = [];\nvar orderNextIdx = -1;\nvar flushingUpdateQueue = false;\nvar flushingStreamValue = false;\n\nfunction flushing() {\n return flushingUpdateQueue || flushingStreamValue;\n}\n\n\n/** @namespace */\nvar flyd = {}\n\n// /////////////////////////// API ///////////////////////////////// //\n\n/**\n * Creates a new stream\n *\n * __Signature__: `a -> Stream a`\n *\n * @name flyd.stream\n * @param {*} initialValue - (Optional) the initial value of the stream\n * @return {stream} the stream\n *\n * @example\n * var n = flyd.stream(1); // Stream with initial value `1`\n * var s = flyd.stream(); // Stream with no initial value\n */\nflyd.stream = function(initialValue) {\n var endStream = createDependentStream([], trueFn);\n var s = createStream();\n s.end = endStream;\n s.fnArgs = [];\n endStream.listeners.push(s);\n if (arguments.length > 0) s(initialValue);\n return s;\n}\n// fantasy-land Applicative\nflyd.stream['fantasy-land/of'] = flyd.stream.of = flyd.stream;\n\n\n/**\n * Create a new dependent stream\n *\n * __Signature__: `(...Stream * -> Stream b -> b) -> [Stream *] -> Stream b`\n *\n * @name flyd.combine\n * @param {Function} fn - the function used to combine the streams\n * @param {Array} dependencies - the streams that this one depends on\n * @return {stream} the dependent stream\n *\n * @example\n * var n1 = flyd.stream(0);\n * var n2 = flyd.stream(0);\n * var max = flyd.combine(function(n1, n2, self, changed) {\n * return n1() > n2() ? n1() : n2();\n * }, [n1, n2]);\n */\nflyd.combine = curryN(2, combine);\nfunction combine(fn, streams) {\n var i, s, deps, depEndStreams;\n var endStream = createDependentStream([], trueFn);\n deps = []; depEndStreams = [];\n for (i = 0; i < streams.length; ++i) {\n if (streams[i] !== undefined) {\n deps.push(streams[i]);\n if (streams[i].end !== undefined) depEndStreams.push(streams[i].end);\n }\n }\n s = createDependentStream(deps, fn);\n s.depsChanged = [];\n s.fnArgs = s.deps.concat([s, s.depsChanged]);\n s.end = endStream;\n endStream.listeners.push(s);\n addListeners(depEndStreams, endStream);\n endStream.deps = depEndStreams;\n updateStream(s);\n return s;\n}\n\n/**\n * Returns `true` if the supplied argument is a Flyd stream and `false` otherwise.\n *\n * __Signature__: `* -> Boolean`\n *\n * @name flyd.isStream\n * @param {*} value - the value to test\n * @return {Boolean} `true` if is a Flyd streamn, `false` otherwise\n *\n * @example\n * var s = flyd.stream(1);\n * var n = 1;\n * flyd.isStream(s); //=> true\n * flyd.isStream(n); //=> false\n */\nflyd.isStream = function(stream) {\n return isFunction(stream) && 'hasVal' in stream;\n}\n\n/**\n * Invokes the body (the function to calculate the value) of a dependent stream\n *\n * By default the body of a dependent stream is only called when all the streams\n * upon which it depends has a value. `immediate` can circumvent this behaviour.\n * It immediately invokes the body of a dependent stream.\n *\n * __Signature__: `Stream a -> Stream a`\n *\n * @name flyd.immediate\n * @param {stream} stream - the dependent stream\n * @return {stream} the same stream\n *\n * @example\n * var s = flyd.stream();\n * var hasItems = flyd.immediate(flyd.combine(function(s) {\n * return s() !== undefined && s().length > 0;\n * }, [s]);\n * console.log(hasItems()); // logs `false`. Had `immediate` not been\n * // used `hasItems()` would've returned `undefined`\n * s([1]);\n * console.log(hasItems()); // logs `true`.\n * s([]);\n * console.log(hasItems()); // logs `false`.\n */\nflyd.immediate = function(s) {\n if (s.depsMet === false) {\n s.depsMet = true;\n updateStream(s);\n }\n return s;\n}\n\n/**\n * Changes which `endsStream` should trigger the ending of `s`.\n *\n * __Signature__: `Stream a -> Stream b -> Stream b`\n *\n * @name flyd.endsOn\n * @param {stream} endStream - the stream to trigger the ending\n * @param {stream} stream - the stream to be ended by the endStream\n * @param {stream} the stream modified to be ended by endStream\n *\n * @example\n * var n = flyd.stream(1);\n * var killer = flyd.stream();\n * // `double` ends when `n` ends or when `killer` emits any value\n * var double = flyd.endsOn(flyd.merge(n.end, killer), flyd.combine(function(n) {\n * return 2 * n();\n * }, [n]);\n*/\nflyd.endsOn = function(endS, s) {\n detachDeps(s.end);\n endS.listeners.push(s.end);\n s.end.deps.push(endS);\n return s;\n}\n\n/**\n * Map a stream\n *\n * Returns a new stream consisting of every value from `s` passed through\n * `fn`. I.e. `map` creates a new stream that listens to `s` and\n * applies `fn` to every new value.\n * __Signature__: `(a -> result) -> Stream a -> Stream result`\n *\n * @name flyd.map\n * @param {Function} fn - the function that produces the elements of the new stream\n * @param {stream} stream - the stream to map\n * @return {stream} a new stream with the mapped values\n *\n * @example\n * var numbers = flyd.stream(0);\n * var squaredNumbers = flyd.map(function(n) { return n*n; }, numbers);\n */\n// Library functions use self callback to accept (null, undefined) update triggers.\nfunction map(f, s) {\n return combine(function(s, self) { self(f(s.val)); }, [s]);\n}\nflyd.map = curryN(2, map)\n\n/**\n * Chain a stream\n *\n * also known as flatMap\n *\n * Where `fn` returns a stream this function will flatten the resulting streams.\n * Every time `fn` is called the context of the returned stream will \"switch\" to that stream.\n *\n * __Signature__: `(a -> Stream b) -> Stream a -> Stream b`\n *\n * @name flyd.chain\n * @param {Function} fn - the function that produces the streams to be flattened\n * @param {stream} stream - the stream to map\n * @return {stream} a new stream with the mapped values\n *\n * @example\n * var filter = flyd.stream('who');\n * var items = flyd.chain(function(filter){\n * return flyd.stream(findUsers(filter));\n * }, filter);\n */\nflyd.chain = curryN(2, chain);\n\n/**\n * Apply a stream\n *\n * Applies the value in `s2` to the function in `s1`.\n *\n * __Signature__: `Stream (a -> b) -> Stream a -> Stream b`\n *\n * @name flyd.ap\n * @param {stream} s1 - The value to be applied\n * @param {stream} s2 - The function expecting the value\n * @return {stream} a new stream with the mapped values\n *\n * @example\n * var add = stream(a => b => a + b)\n * var n1 = stream(1)\n * var n2 = stream(2)\n *\n * var added = flyd.ap(n2, flyd.ap(n1, add)) // stream(3)\n * // can also be written using pipe\n * var added_pipe = add\n * .pipe(ap(n1))\n * .pipe(ap(n2));\n * added_pipe() // 3\n */\nflyd.ap = curryN(2, ap);\n\n/**\n * Listen to stream events\n *\n * Similar to `map` except that the returned stream is empty. Use `on` for doing\n * side effects in reaction to stream changes. Use the returned stream only if you\n * need to manually end it.\n *\n * __Signature__: `(a -> result) -> Stream a -> Stream undefined`\n *\n * @name flyd.on\n * @param {Function} cb - the callback\n * @param {stream} stream - the stream\n * @return {stream} an empty stream (can be ended)\n */\nflyd.on = curryN(2, function(f, s) {\n return combine(function(s) { f(s.val); }, [s]);\n})\n\n/**\n * Creates a new stream with the results of calling the function on every incoming\n * stream with and accumulator and the incoming value.\n *\n * __Signature__: `(a -> b -> a) -> a -> Stream b -> Stream a`\n *\n * @name flyd.scan\n * @param {Function} fn - the function to call\n * @param {*} val - the initial value of the accumulator\n * @param {stream} stream - the stream source\n * @return {stream} the new stream\n *\n * @example\n * var numbers = flyd.stream();\n * var sum = flyd.scan(function(sum, n) { return sum+n; }, 0, numbers);\n * numbers(2)(3)(5);\n * sum(); // 10\n */\nflyd.scan = curryN(3, function(f, acc, s) {\n var ns = combine(function(s, self) {\n self(acc = f(acc, s.val));\n }, [s]);\n if (!ns.hasVal) ns(acc);\n return ns;\n});\n\n/**\n * Creates a new stream down which all values from both `stream1` and `stream2`\n * will be sent.\n *\n * __Signature__: `Stream a -> Stream a -> Stream a`\n *\n * @name flyd.merge\n * @param {stream} source1 - one stream to be merged\n * @param {stream} source2 - the other stream to be merged\n * @return {stream} a stream with the values from both sources\n *\n * @example\n * var btn1Clicks = flyd.stream();\n * button1Elm.addEventListener(btn1Clicks);\n * var btn2Clicks = flyd.stream();\n * button2Elm.addEventListener(btn2Clicks);\n * var allClicks = flyd.merge(btn1Clicks, btn2Clicks);\n */\nflyd.merge = curryN(2, function(s1, s2) {\n var s = flyd.immediate(combine(function(s1, s2, self, changed) {\n if (changed[0]) {\n self(changed[0]());\n } else if (s1.hasVal) {\n self(s1.val);\n } else if (s2.hasVal) {\n self(s2.val);\n }\n }, [s1, s2]));\n flyd.endsOn(combine(function() {\n return true;\n }, [s1.end, s2.end]), s);\n return s;\n});\n\n/**\n * Creates a new stream resulting from applying `transducer` to `stream`.\n *\n * __Signature__: `Transducer -> Stream a -> Stream b`\n *\n * @name flyd.transduce\n * @param {Transducer} xform - the transducer transformation\n * @param {stream} source - the stream source\n * @return {stream} the new stream\n *\n * @example\n * var t = require('transducers.js');\n *\n * var results = [];\n * var s1 = flyd.stream();\n * var tx = t.compose(t.map(function(x) { return x * 2; }), t.dedupe());\n * var s2 = flyd.transduce(tx, s1);\n * flyd.combine(function(s2) { results.push(s2()); }, [s2]);\n * s1(1)(1)(2)(3)(3)(3)(4);\n * results; // => [2, 4, 6, 8]\n */\nflyd.transduce = curryN(2, function(xform, source) {\n xform = xform(new StreamTransformer());\n return combine(function(source, self) {\n var res = xform['@@transducer/step'](undefined, source.val);\n if (res && res['@@transducer/reduced'] === true) {\n self.end(true);\n return res['@@transducer/value'];\n } else {\n return res;\n }\n }, [source]);\n});\n\n/**\n * Returns `fn` curried to `n`. Use this function to curry functions exposed by\n * modules for Flyd.\n *\n * @name flyd.curryN\n * @function\n * @param {Integer} arity - the function arity\n * @param {Function} fn - the function to curry\n * @return {Function} the curried function\n *\n * @example\n * function add(x, y) { return x + y; };\n * var a = flyd.curryN(2, add);\n * a(2)(4) // => 6\n */\nflyd.curryN = curryN\n\n/**\n * Returns a new stream identical to the original except every\n * value will be passed through `f`.\n *\n * _Note:_ This function is included in order to support the fantasy land\n * specification.\n *\n * __Signature__: Called bound to `Stream a`: `(a -> b) -> Stream b`\n *\n * @name stream.map\n * @param {Function} function - the function to apply\n * @return {stream} a new stream with the values mapped\n *\n * @example\n * var numbers = flyd.stream(0);\n * var squaredNumbers = numbers.map(function(n) { return n*n; });\n */\nfunction boundMap(f) { return map(f, this); }\n\n/**\n * Returns the result of applying function `fn` to this stream\n *\n * __Signature__: Called bound to `Stream a`: `(a -> Stream b) -> Stream b`\n *\n * @name stream.pipe\n * @param {Function} fn - the function to apply\n * @return {stream} A new stream\n *\n * @example\n * var numbers = flyd.stream(0);\n * var squaredNumbers = numbers.pipe(flyd.map(function(n){ return n*n; }));\n */\nfunction operator_pipe(f) { return f(this) }\n\nfunction boundChain(f) {\n return chain(f, this);\n}\n\nfunction chain(f, s) {\n // Internal state to end flat map stream\n var flatEnd = flyd.stream(1);\n var internalEnded = flyd.on(function() {\n var alive = flatEnd() - 1;\n flatEnd(alive);\n if (alive <= 0) {\n flatEnd.end(true);\n }\n });\n\n internalEnded(s.end);\n var last = flyd.stream();\n var flatStream = flyd.combine(function(s, own) {\n last.end(true)\n // Our fn stream makes streams\n var newS = f(s());\n flatEnd(flatEnd() + 1);\n internalEnded(newS.end);\n\n // Update self on call -- newS is never handed out so deps don't matter\n last = map(own, newS);\n }, [s]);\n\n flyd.endsOn(flatEnd.end, flatStream);\n\n return flatStream;\n}\n\nflyd.fromPromise = function fromPromise(p) {\n var s = flyd.stream();\n p.then(function(val) {\n s(val);\n s.end(true);\n });\n return s;\n}\n\nflyd.flattenPromise = function flattenPromise(s) {\n return combine(function(s, self) {\n s().then(self);\n }, [s])\n}\n\n\n/**\n * Returns a new stream which is the result of applying the\n * functions from `this` stream to the values in `stream` parameter.\n *\n * `this` stream must be a stream of functions.\n *\n * _Note:_ This function is included in order to support the fantasy land\n * specification.\n *\n * __Signature__: Called bound to `Stream (a -> b)`: `a -> Stream b`\n *\n * @name stream.ap\n * @param {stream} stream - the values stream\n * @return {stream} a new stream with the functions applied to values\n *\n * @example\n * var add = flyd.curryN(2, function(x, y) { return x + y; });\n * var numbers1 = flyd.stream();\n * var numbers2 = flyd.stream();\n * var addToNumbers1 = flyd.map(add, numbers1);\n * var added = addToNumbers1.ap(numbers2);\n */\nfunction ap(s2, s1) {\n return combine(function(s1, s2, self) { self(s1.val(s2.val)); }, [s1, s2]);\n}\n\nfunction boundAp(s2) {\n return ap(s2, this);\n}\n\n/**\n * @private\n */\nfunction fantasy_land_ap(s1) {\n return ap(this, s1);\n}\n\n/**\n * Get a human readable view of a stream\n * @name stream.toString\n * @return {String} the stream string representation\n */\nfunction streamToString() {\n return 'stream(' + this.val + ')';\n}\n\n/**\n * @name stream.end\n * @memberof stream\n * A stream that emits `true` when the stream ends. If `true` is pushed down the\n * stream the parent stream ends.\n */\n\n/**\n * @name stream.of\n * @function\n * @memberof stream\n * Returns a new stream with `value` as its initial value. It is identical to\n * calling `flyd.stream` with one argument.\n *\n * __Signature__: Called bound to `Stream (a)`: `b -> Stream b`\n *\n * @param {*} value - the initial value\n * @return {stream} the new stream\n *\n * @example\n * var n = flyd.stream(1);\n * var m = n.of(1);\n */\n\n// /////////////////////////// PRIVATE ///////////////////////////////// //\n/**\n * @private\n * Create a stream with no dependencies and no value\n * @return {Function} a flyd stream\n */\nfunction createStream() {\n function s(n) {\n if (arguments.length === 0) return s.val\n updateStreamValue(n, s)\n return s\n }\n s.hasVal = false;\n s.val = undefined;\n s.updaters = [];\n s.listeners = [];\n s.queued = false;\n s.end = undefined;\n\n // fantasy-land compatibility\n s.ap = boundAp;\n s['fantasy-land/map'] = s.map = boundMap;\n s['fantasy-land/ap'] = fantasy_land_ap;\n s['fantasy-land/of'] = s.of = flyd.stream;\n s['fantasy-land/chain'] = s.chain = boundChain;\n\n s.pipe = operator_pipe;\n\n // According to the fantasy-land Applicative specification\n // Given a value f, one can access its type representative via the constructor property:\n // `f.constructor.of`\n s.constructor = flyd.stream;\n\n s.toJSON = function() {\n return s.val;\n }\n s.toString = streamToString;\n return s;\n}\n\n/**\n * @private\n * Create a dependent stream\n * @param {Array} dependencies - an array of the streams\n * @param {Function} fn - the function used to calculate the new stream value\n * from the dependencies\n * @return {stream} the created stream\n */\nfunction createDependentStream(deps, fn) {\n var s = createStream();\n s.fn = fn;\n s.deps = deps;\n s.depsMet = false;\n s.depsChanged = deps.length > 0 ? [] : undefined;\n s.shouldUpdate = false;\n addListeners(deps, s);\n return s;\n}\n\n/**\n * @private\n * Check if all the dependencies have values\n * @param {stream} stream - the stream to check depencencies from\n * @return {Boolean} `true` if all dependencies have vales, `false` otherwise\n */\nfunction initialDependenciesMet(stream) {\n stream.depsMet = stream.deps.every(function(s) {\n return s.hasVal;\n });\n return stream.depsMet;\n}\n\nfunction dependenciesAreMet(stream) {\n return stream.depsMet === true || initialDependenciesMet(stream);\n}\n\nfunction isEnded(stream) {\n return stream.end && stream.end.val === true;\n}\n\nfunction listenersNeedUpdating(s) {\n return s.listeners.some(function(s) { return s.shouldUpdate; });\n}\n\n/**\n * @private\n * Update a dependent stream using its dependencies in an atomic way\n * @param {stream} stream - the stream to update\n */\nfunction updateStream(s) {\n if (isEnded(s) || !dependenciesAreMet(s)) return;\n if (inStream !== undefined) {\n updateLaterUsing(updateStream, s);\n return;\n }\n inStream = s;\n if (s.depsChanged) s.fnArgs[s.fnArgs.length - 1] = s.depsChanged;\n var returnVal = s.fn.apply(s.fn, s.fnArgs);\n if (returnVal !== undefined) {\n s(returnVal);\n }\n inStream = undefined;\n if (s.depsChanged !== undefined) s.depsChanged = [];\n s.shouldUpdate = false;\n if (flushing() === false) flushUpdate();\n if (listenersNeedUpdating(s)) {\n if (!flushingStreamValue) s(s.val)\n else {\n s.listeners.forEach(function(listener) {\n if (listener.shouldUpdate) updateLaterUsing(updateStream, listener);\n });\n }\n }\n}\n\n/**\n * @private\n * Update the dependencies of a stream\n * @param {stream} stream\n */\nfunction updateListeners(s) {\n var i, o, list\n var listeners = s.listeners;\n for (i = 0; i < listeners.length; ++i) {\n list = listeners[i];\n if (list.end === s) {\n endStream(list);\n } else {\n if (list.depsChanged !== undefined) list.depsChanged.push(s);\n list.shouldUpdate = true;\n findDeps(list);\n }\n }\n for (; orderNextIdx >= 0; --orderNextIdx) {\n o = order[orderNextIdx];\n if (o.shouldUpdate === true) updateStream(o);\n o.queued = false;\n }\n}\n\n/**\n * @private\n * Add stream dependencies to the global `order` queue.\n * @param {stream} stream\n * @see updateDeps\n */\nfunction findDeps(s) {\n var i\n var listeners = s.listeners;\n if (s.queued === false) {\n s.queued = true;\n for (i = 0; i < listeners.length; ++i) {\n findDeps(listeners[i]);\n }\n order[++orderNextIdx] = s;\n }\n}\n\nfunction updateLaterUsing(updater, stream) {\n toUpdate.push(stream);\n stream.updaters.push(updater);\n stream.shouldUpdate = true;\n}\n\n/**\n * @private\n */\nfunction flushUpdate() {\n flushingUpdateQueue = true;\n while (toUpdate.length > 0) {\n var stream = toUpdate.shift();\n var nextUpdateFn = stream.updaters.shift();\n if (nextUpdateFn && stream.shouldUpdate) nextUpdateFn(stream);\n }\n flushingUpdateQueue = false;\n}\n\n/**\n * @private\n * Push down a value into a stream\n * @param {stream} stream\n * @param {*} value\n */\nfunction updateStreamValue(n, s) {\n s.val = n;\n s.hasVal = true;\n if (inStream === undefined) {\n flushingStreamValue = true;\n updateListeners(s);\n if (toUpdate.length > 0) flushUpdate();\n flushingStreamValue = false;\n } else if (inStream === s) {\n markListeners(s, s.listeners);\n } else {\n updateLaterUsing(function(s) { updateStreamValue(n, s); }, s);\n }\n}\n\n/**\n * @private\n */\nfunction markListeners(s, lists) {\n var i, list;\n for (i = 0; i < lists.length; ++i) {\n list = lists[i];\n if (list.end !== s) {\n if (list.depsChanged !== undefined) {\n list.depsChanged.push(s);\n }\n list.shouldUpdate = true;\n } else {\n endStream(list);\n }\n }\n}\n\n/**\n * @private\n * Add dependencies to a stream\n * @param {Array} dependencies\n * @param {stream} stream\n */\nfunction addListeners(deps, s) {\n for (var i = 0; i < deps.length; ++i) {\n deps[i].listeners.push(s);\n }\n}\n\n/**\n * @private\n * Removes an stream from a dependency array\n * @param {stream} stream\n * @param {Array} dependencies\n */\nfunction removeListener(s, listeners) {\n var idx = listeners.indexOf(s);\n listeners[idx] = listeners[listeners.length - 1];\n listeners.length--;\n}\n\n/**\n * @private\n * Detach a stream from its dependencies\n * @param {stream} stream\n */\nfunction detachDeps(s) {\n for (var i = 0; i < s.deps.length; ++i) {\n removeListener(s, s.deps[i].listeners);\n }\n s.deps.length = 0;\n}\n\n/**\n * @private\n * Ends a stream\n */\nfunction endStream(s) {\n if (s.deps !== undefined) detachDeps(s);\n if (s.end !== undefined) detachDeps(s.end);\n}\n\n/**\n * @private\n */\n/**\n * @private\n * transducer stream transformer\n */\nfunction StreamTransformer() { }\nStreamTransformer.prototype['@@transducer/init'] = function() { };\nStreamTransformer.prototype['@@transducer/result'] = function() { };\nStreamTransformer.prototype['@@transducer/step'] = function(s, v) { return v; };\n\nmodule.exports = flyd;\n","!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.joi=t():e.joi=t()}(self,(()=>{return e={7629:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(9474),i=r(1687),o=r(8652),l=r(8160),c=r(3292),u=r(6354),f=r(8901),m=r(9708),h=r(6914),d=r(2294),p=r(6133),g=r(1152),y=r(8863),b=r(2036),v={Base:class{constructor(e){this.type=e,this.$_root=null,this._definition={},this._reset()}_reset(){this._ids=new d.Ids,this._preferences=null,this._refs=new p.Manager,this._cache=null,this._valids=null,this._invalids=null,this._flags={},this._rules=[],this._singleRules=new Map,this.$_terms={},this.$_temp={ruleset:null,whens:{}}}describe(){return s(\"function\"==typeof m.describe,\"Manifest functionality disabled\"),m.describe(this)}allow(...e){return l.verifyFlat(e,\"allow\"),this._values(e,\"_valids\")}alter(e){s(e&&\"object\"==typeof e&&!Array.isArray(e),\"Invalid targets argument\"),s(!this._inRuleset(),\"Cannot set alterations inside a ruleset\");const t=this.clone();t.$_terms.alterations=t.$_terms.alterations||[];for(const r in e){const n=e[r];s(\"function\"==typeof n,\"Alteration adjuster for\",r,\"must be a function\"),t.$_terms.alterations.push({target:r,adjuster:n})}return t.$_temp.ruleset=!1,t}artifact(e){return s(void 0!==e,\"Artifact cannot be undefined\"),s(!this._cache,\"Cannot set an artifact with a rule cache\"),this.$_setFlag(\"artifact\",e)}cast(e){return s(!1===e||\"string\"==typeof e,\"Invalid to value\"),s(!1===e||this._definition.cast[e],\"Type\",this.type,\"does not support casting to\",e),this.$_setFlag(\"cast\",!1===e?void 0:e)}default(e,t){return this._default(\"default\",e,t)}description(e){return s(e&&\"string\"==typeof e,\"Description must be a non-empty string\"),this.$_setFlag(\"description\",e)}empty(e){const t=this.clone();return void 0!==e&&(e=t.$_compile(e,{override:!1})),t.$_setFlag(\"empty\",e,{clone:!1})}error(e){return s(e,\"Missing error\"),s(e instanceof Error||\"function\"==typeof e,\"Must provide a valid Error object or a function\"),this.$_setFlag(\"error\",e)}example(e,t={}){return s(void 0!==e,\"Missing example\"),l.assertOptions(t,[\"override\"]),this._inner(\"examples\",e,{single:!0,override:t.override})}external(e,t){return\"object\"==typeof e&&(s(!t,\"Cannot combine options with description\"),t=e.description,e=e.method),s(\"function\"==typeof e,\"Method must be a function\"),s(void 0===t||t&&\"string\"==typeof t,\"Description must be a non-empty string\"),this._inner(\"externals\",{method:e,description:t},{single:!0})}failover(e,t){return this._default(\"failover\",e,t)}forbidden(){return this.presence(\"forbidden\")}id(e){return e?(s(\"string\"==typeof e,\"id must be a non-empty string\"),s(/^[^\\.]+$/.test(e),\"id cannot contain period character\"),this.$_setFlag(\"id\",e)):this.$_setFlag(\"id\",void 0)}invalid(...e){return this._values(e,\"_invalids\")}label(e){return s(e&&\"string\"==typeof e,\"Label name must be a non-empty string\"),this.$_setFlag(\"label\",e)}meta(e){return s(void 0!==e,\"Meta cannot be undefined\"),this._inner(\"metas\",e,{single:!0})}note(...e){s(e.length,\"Missing notes\");for(const t of e)s(t&&\"string\"==typeof t,\"Notes must be non-empty strings\");return this._inner(\"notes\",e)}only(e=!0){return s(\"boolean\"==typeof e,\"Invalid mode:\",e),this.$_setFlag(\"only\",e)}optional(){return this.presence(\"optional\")}prefs(e){s(e,\"Missing preferences\"),s(void 0===e.context,\"Cannot override context\"),s(void 0===e.externals,\"Cannot override externals\"),s(void 0===e.warnings,\"Cannot override warnings\"),s(void 0===e.debug,\"Cannot override debug\"),l.checkPreferences(e);const t=this.clone();return t._preferences=l.preferences(t._preferences,e),t}presence(e){return s([\"optional\",\"required\",\"forbidden\"].includes(e),\"Unknown presence mode\",e),this.$_setFlag(\"presence\",e)}raw(e=!0){return this.$_setFlag(\"result\",e?\"raw\":void 0)}result(e){return s([\"raw\",\"strip\"].includes(e),\"Unknown result mode\",e),this.$_setFlag(\"result\",e)}required(){return this.presence(\"required\")}strict(e){const t=this.clone(),r=void 0!==e&&!e;return t._preferences=l.preferences(t._preferences,{convert:r}),t}strip(e=!0){return this.$_setFlag(\"result\",e?\"strip\":void 0)}tag(...e){s(e.length,\"Missing tags\");for(const t of e)s(t&&\"string\"==typeof t,\"Tags must be non-empty strings\");return this._inner(\"tags\",e)}unit(e){return s(e&&\"string\"==typeof e,\"Unit name must be a non-empty string\"),this.$_setFlag(\"unit\",e)}valid(...e){l.verifyFlat(e,\"valid\");const t=this.allow(...e);return t.$_setFlag(\"only\",!!t._valids,{clone:!1}),t}when(e,t){const r=this.clone();r.$_terms.whens||(r.$_terms.whens=[]);const n=c.when(r,e,t);if(![\"any\",\"link\"].includes(r.type)){const e=n.is?[n]:n.switch;for(const t of e)s(!t.then||\"any\"===t.then.type||t.then.type===r.type,\"Cannot combine\",r.type,\"with\",t.then&&t.then.type),s(!t.otherwise||\"any\"===t.otherwise.type||t.otherwise.type===r.type,\"Cannot combine\",r.type,\"with\",t.otherwise&&t.otherwise.type)}return r.$_terms.whens.push(n),r.$_mutateRebuild()}cache(e){s(!this._inRuleset(),\"Cannot set caching inside a ruleset\"),s(!this._cache,\"Cannot override schema cache\"),s(void 0===this._flags.artifact,\"Cannot cache a rule with an artifact\");const t=this.clone();return t._cache=e||o.provider.provision(),t.$_temp.ruleset=!1,t}clone(){const e=Object.create(Object.getPrototypeOf(this));return this._assign(e)}concat(e){s(l.isSchema(e),\"Invalid schema object\"),s(\"any\"===this.type||\"any\"===e.type||e.type===this.type,\"Cannot merge type\",this.type,\"with another type:\",e.type),s(!this._inRuleset(),\"Cannot concatenate onto a schema with open ruleset\"),s(!e._inRuleset(),\"Cannot concatenate a schema with open ruleset\");let t=this.clone();if(\"any\"===this.type&&\"any\"!==e.type){const r=e.clone();for(const e of Object.keys(t))\"type\"!==e&&(r[e]=t[e]);t=r}t._ids.concat(e._ids),t._refs.register(e,p.toSibling),t._preferences=t._preferences?l.preferences(t._preferences,e._preferences):e._preferences,t._valids=b.merge(t._valids,e._valids,e._invalids),t._invalids=b.merge(t._invalids,e._invalids,e._valids);for(const r of e._singleRules.keys())t._singleRules.has(r)&&(t._rules=t._rules.filter((e=>e.keep||e.name!==r)),t._singleRules.delete(r));for(const r of e._rules)e._definition.rules[r.method].multi||t._singleRules.set(r.name,r),t._rules.push(r);if(t._flags.empty&&e._flags.empty){t._flags.empty=t._flags.empty.concat(e._flags.empty);const r=Object.assign({},e._flags);delete r.empty,i(t._flags,r)}else if(e._flags.empty){t._flags.empty=e._flags.empty;const r=Object.assign({},e._flags);delete r.empty,i(t._flags,r)}else i(t._flags,e._flags);for(const r in e.$_terms){const s=e.$_terms[r];s?t.$_terms[r]?t.$_terms[r]=t.$_terms[r].concat(s):t.$_terms[r]=s.slice():t.$_terms[r]||(t.$_terms[r]=s)}return this.$_root._tracer&&this.$_root._tracer._combine(t,[this,e]),t.$_mutateRebuild()}extend(e){return s(!e.base,\"Cannot extend type with another base\"),f.type(this,e)}extract(e){return e=Array.isArray(e)?e:e.split(\".\"),this._ids.reach(e)}fork(e,t){s(!this._inRuleset(),\"Cannot fork inside a ruleset\");let r=this;for(let s of[].concat(e))s=Array.isArray(s)?s:s.split(\".\"),r=r._ids.fork(s,t,r);return r.$_temp.ruleset=!1,r}rule(e){const t=this._definition;l.assertOptions(e,Object.keys(t.modifiers)),s(!1!==this.$_temp.ruleset,\"Cannot apply rules to empty ruleset or the last rule added does not support rule properties\");const r=null===this.$_temp.ruleset?this._rules.length-1:this.$_temp.ruleset;s(r>=0&&rt.tailor(e),ref:!1}),t.$_temp.ruleset=!1,t.$_mutateRebuild()}tracer(){return g.location?g.location(this):this}validate(e,t){return y.entry(e,this,t)}validateAsync(e,t){return y.entryAsync(e,this,t)}$_addRule(e){\"string\"==typeof e&&(e={name:e}),s(e&&\"object\"==typeof e,\"Invalid options\"),s(e.name&&\"string\"==typeof e.name,\"Invalid rule name\");for(const t in e)s(\"_\"!==t[0],\"Cannot set private rule properties\");const t=Object.assign({},e);t._resolve=[],t.method=t.method||t.name;const r=this._definition.rules[t.method],n=t.args;s(r,\"Unknown rule\",t.method);const a=this.clone();if(n){s(1===Object.keys(n).length||Object.keys(n).length===this._definition.rules[t.name].args.length,\"Invalid rule definition for\",this.type,t.name);for(const e in n){let i=n[e];if(r.argsByName){const o=r.argsByName.get(e);if(o.ref&&l.isResolvable(i))t._resolve.push(e),a.$_mutateRegister(i);else if(o.normalize&&(i=o.normalize(i),n[e]=i),o.assert){const t=l.validateArg(i,e,o);s(!t,t,\"or reference\")}}void 0!==i?n[e]=i:delete n[e]}}return r.multi||(a._ruleRemove(t.name,{clone:!1}),a._singleRules.set(t.name,t)),!1===a.$_temp.ruleset&&(a.$_temp.ruleset=null),r.priority?a._rules.unshift(t):a._rules.push(t),a}$_compile(e,t){return c.schema(this.$_root,e,t)}$_createError(e,t,r,s,n,a={}){const i=!1!==a.flags?this._flags:{},o=a.messages?h.merge(this._definition.messages,a.messages):this._definition.messages;return new u.Report(e,t,r,i,o,s,n)}$_getFlag(e){return this._flags[e]}$_getRule(e){return this._singleRules.get(e)}$_mapLabels(e){return e=Array.isArray(e)?e:e.split(\".\"),this._ids.labels(e)}$_match(e,t,r,s){(r=Object.assign({},r)).abortEarly=!0,r._externals=!1,t.snapshot();const n=!y.validate(e,this,t,r,s).errors;return t.restore(),n}$_modify(e){return l.assertOptions(e,[\"each\",\"once\",\"ref\",\"schema\"]),d.schema(this,e)||this}$_mutateRebuild(){return s(!this._inRuleset(),\"Cannot add this rule inside a ruleset\"),this._refs.reset(),this._ids.reset(),this.$_modify({each:(e,{source:t,name:r,path:s,key:n})=>{const a=this._definition[t][r]&&this._definition[t][r].register;!1!==a&&this.$_mutateRegister(e,{family:a,key:n})}}),this._definition.rebuild&&this._definition.rebuild(this),this.$_temp.ruleset=!1,this}$_mutateRegister(e,{family:t,key:r}={}){this._refs.register(e,t),this._ids.register(e,{key:r})}$_property(e){return this._definition.properties[e]}$_reach(e){return this._ids.reach(e)}$_rootReferences(){return this._refs.roots()}$_setFlag(e,t,r={}){s(\"_\"===e[0]||!this._inRuleset(),\"Cannot set flag inside a ruleset\");const n=this._definition.flags[e]||{};if(a(t,n.default)&&(t=void 0),a(t,this._flags[e]))return this;const i=!1!==r.clone?this.clone():this;return void 0!==t?(i._flags[e]=t,i.$_mutateRegister(t)):delete i._flags[e],\"_\"!==e[0]&&(i.$_temp.ruleset=!1),i}$_parent(e,...t){return this[e][l.symbols.parent].call(this,...t)}$_validate(e,t,r){return y.validate(e,this,t,r)}_assign(e){e.type=this.type,e.$_root=this.$_root,e.$_temp=Object.assign({},this.$_temp),e.$_temp.whens={},e._ids=this._ids.clone(),e._preferences=this._preferences,e._valids=this._valids&&this._valids.clone(),e._invalids=this._invalids&&this._invalids.clone(),e._rules=this._rules.slice(),e._singleRules=n(this._singleRules,{shallow:!0}),e._refs=this._refs.clone(),e._flags=Object.assign({},this._flags),e._cache=null,e.$_terms={};for(const t in this.$_terms)e.$_terms[t]=this.$_terms[t]?this.$_terms[t].slice():null;e.$_super={};for(const t in this.$_super)e.$_super[t]=this._super[t].bind(e);return e}_bare(){const e=this.clone();e._reset();const t=e._definition.terms;for(const r in t){const s=t[r];e.$_terms[r]=s.init}return e.$_mutateRebuild()}_default(e,t,r={}){return l.assertOptions(r,\"literal\"),s(void 0!==t,\"Missing\",e,\"value\"),s(\"function\"==typeof t||!r.literal,\"Only function value supports literal option\"),\"function\"==typeof t&&r.literal&&(t={[l.symbols.literal]:!0,literal:t}),this.$_setFlag(e,t)}_generate(e,t,r){if(!this.$_terms.whens)return{schema:this};const s=[],n=[];for(let a=0;ac)break}const a=n.join(\", \");if(t.mainstay.tracer.debug(t,\"rule\",\"when\",a),!a)return{schema:this};if(!t.mainstay.tracer.active&&this.$_temp.whens[a])return{schema:this.$_temp.whens[a],id:a};let i=this;this._definition.generate&&(i=this._definition.generate(this,e,t,r));for(const e of s)i=i.concat(e);return this.$_root._tracer&&this.$_root._tracer._combine(i,[this,...s]),this.$_temp.whens[a]=i,{schema:i,id:a}}_inner(e,t,r={}){s(!this._inRuleset(),`Cannot set ${e} inside a ruleset`);const n=this.clone();return n.$_terms[e]&&!r.override||(n.$_terms[e]=[]),r.single?n.$_terms[e].push(t):n.$_terms[e].push(...t),n.$_temp.ruleset=!1,n}_inRuleset(){return null!==this.$_temp.ruleset&&!1!==this.$_temp.ruleset}_ruleRemove(e,t={}){if(!this._singleRules.has(e))return this;const r=!1!==t.clone?this.clone():this;r._singleRules.delete(e);const s=[];for(let t=0;t{\"use strict\";const s=r(375),n=r(8571),a=r(8160),i={max:1e3,supported:new Set([\"undefined\",\"boolean\",\"number\",\"string\"])};t.provider={provision:e=>new i.Cache(e)},i.Cache=class{constructor(e={}){a.assertOptions(e,[\"max\"]),s(void 0===e.max||e.max&&e.max>0&&isFinite(e.max),\"Invalid max cache size\"),this._max=e.max||i.max,this._map=new Map,this._list=new i.List}get length(){return this._map.size}set(e,t){if(null!==e&&!i.supported.has(typeof e))return;let r=this._map.get(e);if(r)return r.value=t,void this._list.first(r);r=this._list.unshift({key:e,value:t}),this._map.set(e,r),this._compact()}get(e){const t=this._map.get(e);if(t)return this._list.first(t),n(t.value)}_compact(){if(this._map.size>this._max){const e=this._list.pop();this._map.delete(e.key)}}},i.List=class{constructor(){this.tail=null,this.head=null}unshift(e){return e.next=null,e.prev=this.head,this.head&&(this.head.next=e),this.head=e,this.tail||(this.tail=e),e}first(e){e!==this.head&&(this._remove(e),this.unshift(e))}pop(){return this._remove(this.tail)}_remove(e){const{next:t,prev:r}=e;return t.prev=r,r&&(r.next=t),e===this.tail&&(this.tail=t),e.prev=null,e.next=null,e}}},8160:(e,t,r)=>{\"use strict\";const s=r(375),n=r(7916),a=r(5934);let i,o;const l={isoDate:/^(?:[-+]\\d{2})?(?:\\d{4}(?!\\d{2}\\b))(?:(-?)(?:(?:0[1-9]|1[0-2])(?:\\1(?:[12]\\d|0[1-9]|3[01]))?|W(?:[0-4]\\d|5[0-2])(?:-?[1-7])?|(?:00[1-9]|0[1-9]\\d|[12]\\d{2}|3(?:[0-5]\\d|6[1-6])))(?![T]$|[T][\\d]+Z$)(?:[T\\s](?:(?:(?:[01]\\d|2[0-3])(?:(:?)[0-5]\\d)?|24\\:?00)(?:[.,]\\d+(?!:))?)(?:\\2[0-5]\\d(?:[.,]\\d+)?)?(?:[Z]|(?:[+-])(?:[01]\\d|2[0-3])(?::?[0-5]\\d)?)?)?)?$/};t.version=a.version,t.defaults={abortEarly:!0,allowUnknown:!1,artifacts:!1,cache:!0,context:null,convert:!0,dateFormat:\"iso\",errors:{escapeHtml:!1,label:\"path\",language:null,render:!0,stack:!1,wrap:{label:'\"',array:\"[]\"}},externals:!0,messages:{},nonEnumerables:!1,noDefaults:!1,presence:\"optional\",skipFunctions:!1,stripUnknown:!1,warnings:!1},t.symbols={any:Symbol.for(\"@hapi/joi/schema\"),arraySingle:Symbol(\"arraySingle\"),deepDefault:Symbol(\"deepDefault\"),errors:Symbol(\"errors\"),literal:Symbol(\"literal\"),override:Symbol(\"override\"),parent:Symbol(\"parent\"),prefs:Symbol(\"prefs\"),ref:Symbol(\"ref\"),template:Symbol(\"template\"),values:Symbol(\"values\")},t.assertOptions=function(e,t,r=\"Options\"){s(e&&\"object\"==typeof e&&!Array.isArray(e),\"Options must be of type object\");const n=Object.keys(e).filter((e=>!t.includes(e)));s(0===n.length,`${r} contain unknown keys: ${n}`)},t.checkPreferences=function(e){o=o||r(3378);const t=o.preferences.validate(e);if(t.error)throw new n([t.error.details[0].message])},t.compare=function(e,t,r){switch(r){case\"=\":return e===t;case\">\":return e>t;case\"<\":return e=\":return e>=t;case\"<=\":return e<=t}},t.default=function(e,t){return void 0===e?t:e},t.isIsoDate=function(e){return l.isoDate.test(e)},t.isNumber=function(e){return\"number\"==typeof e&&!isNaN(e)},t.isResolvable=function(e){return!!e&&(e[t.symbols.ref]||e[t.symbols.template])},t.isSchema=function(e,r={}){const n=e&&e[t.symbols.any];return!!n&&(s(r.legacy||n.version===t.version,\"Cannot mix different versions of joi schemas\"),!0)},t.isValues=function(e){return e[t.symbols.values]},t.limit=function(e){return Number.isSafeInteger(e)&&e>=0},t.preferences=function(e,s){i=i||r(6914),e=e||{},s=s||{};const n=Object.assign({},e,s);return s.errors&&e.errors&&(n.errors=Object.assign({},e.errors,s.errors),n.errors.wrap=Object.assign({},e.errors.wrap,s.errors.wrap)),s.messages&&(n.messages=i.compile(s.messages,e.messages)),delete n[t.symbols.prefs],n},t.tryWithPath=function(e,t,r={}){try{return e()}catch(e){throw void 0!==e.path?e.path=t+\".\"+e.path:e.path=t,r.append&&(e.message=`${e.message} (${e.path})`),e}},t.validateArg=function(e,r,{assert:s,message:n}){if(t.isSchema(s)){const t=s.validate(e);if(!t.error)return;return t.error.message}if(!s(e))return r?`${r} ${n}`:n},t.verifyFlat=function(e,t){for(const r of e)s(!Array.isArray(r),\"Method no longer accepts array arguments:\",t)}},3292:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8160),a=r(6133),i={};t.schema=function(e,t,r={}){n.assertOptions(r,[\"appendPath\",\"override\"]);try{return i.schema(e,t,r)}catch(e){throw r.appendPath&&void 0!==e.path&&(e.message=`${e.message} (${e.path})`),e}},i.schema=function(e,t,r){s(void 0!==t,\"Invalid undefined schema\"),Array.isArray(t)&&(s(t.length,\"Invalid empty array schema\"),1===t.length&&(t=t[0]));const a=(t,...s)=>!1!==r.override?t.valid(e.override,...s):t.valid(...s);if(i.simple(t))return a(e,t);if(\"function\"==typeof t)return e.custom(t);if(s(\"object\"==typeof t,\"Invalid schema content:\",typeof t),n.isResolvable(t))return a(e,t);if(n.isSchema(t))return t;if(Array.isArray(t)){for(const r of t)if(!i.simple(r))return e.alternatives().try(...t);return a(e,...t)}return t instanceof RegExp?e.string().regex(t):t instanceof Date?a(e.date(),t):(s(Object.getPrototypeOf(t)===Object.getPrototypeOf({}),\"Schema can only contain plain objects\"),e.object().keys(t))},t.ref=function(e,t){return a.isRef(e)?e:a.create(e,t)},t.compile=function(e,r,a={}){n.assertOptions(a,[\"legacy\"]);const o=r&&r[n.symbols.any];if(o)return s(a.legacy||o.version===n.version,\"Cannot mix different versions of joi schemas:\",o.version,n.version),r;if(\"object\"!=typeof r||!a.legacy)return t.schema(e,r,{appendPath:!0});const l=i.walk(r);return l?l.compile(l.root,r):t.schema(e,r,{appendPath:!0})},i.walk=function(e){if(\"object\"!=typeof e)return null;if(Array.isArray(e)){for(const t of e){const e=i.walk(t);if(e)return e}return null}const t=e[n.symbols.any];if(t)return{root:e[t.root],compile:t.compile};s(Object.getPrototypeOf(e)===Object.getPrototypeOf({}),\"Schema can only contain plain objects\");for(const t in e){const r=i.walk(e[t]);if(r)return r}return null},i.simple=function(e){return null===e||[\"boolean\",\"string\",\"number\"].includes(typeof e)},t.when=function(e,r,o){if(void 0===o&&(s(r&&\"object\"==typeof r,\"Missing options\"),o=r,r=a.create(\".\")),Array.isArray(o)&&(o={switch:o}),n.assertOptions(o,[\"is\",\"not\",\"then\",\"otherwise\",\"switch\",\"break\"]),n.isSchema(r))return s(void 0===o.is,'\"is\" can not be used with a schema condition'),s(void 0===o.not,'\"not\" can not be used with a schema condition'),s(void 0===o.switch,'\"switch\" can not be used with a schema condition'),i.condition(e,{is:r,then:o.then,otherwise:o.otherwise,break:o.break});if(s(a.isRef(r)||\"string\"==typeof r,\"Invalid condition:\",r),s(void 0===o.not||void 0===o.is,'Cannot combine \"is\" with \"not\"'),void 0===o.switch){let l=o;void 0!==o.not&&(l={is:o.not,then:o.otherwise,otherwise:o.then,break:o.break});let c=void 0!==l.is?e.$_compile(l.is):e.$_root.invalid(null,!1,0,\"\").required();return s(void 0!==l.then||void 0!==l.otherwise,'options must have at least one of \"then\", \"otherwise\", or \"switch\"'),s(void 0===l.break||void 0===l.then||void 0===l.otherwise,\"Cannot specify then, otherwise, and break all together\"),void 0===o.is||a.isRef(o.is)||n.isSchema(o.is)||(c=c.required()),i.condition(e,{ref:t.ref(r),is:c,then:l.then,otherwise:l.otherwise,break:l.break})}s(Array.isArray(o.switch),'\"switch\" must be an array'),s(void 0===o.is,'Cannot combine \"switch\" with \"is\"'),s(void 0===o.not,'Cannot combine \"switch\" with \"not\"'),s(void 0===o.then,'Cannot combine \"switch\" with \"then\"');const l={ref:t.ref(r),switch:[],break:o.break};for(let t=0;t{\"use strict\";const s=r(5688),n=r(8160),a=r(3328);t.Report=class{constructor(e,r,s,n,a,i,o){if(this.code=e,this.flags=n,this.messages=a,this.path=i.path,this.prefs=o,this.state=i,this.value=r,this.message=null,this.template=null,this.local=s||{},this.local.label=t.label(this.flags,this.state,this.prefs,this.messages),void 0===this.value||this.local.hasOwnProperty(\"value\")||(this.local.value=this.value),this.path.length){const e=this.path[this.path.length-1];\"object\"!=typeof e&&(this.local.key=e)}}_setTemplate(e){if(this.template=e,!this.flags.label&&0===this.path.length){const e=this._template(this.template,\"root\");e&&(this.local.label=e)}}toString(){if(this.message)return this.message;const e=this.code;if(!this.prefs.errors.render)return this.code;const t=this._template(this.template)||this._template(this.prefs.messages)||this._template(this.messages);return void 0===t?`Error code \"${e}\" is not defined, your custom type is missing the correct messages definition`:(this.message=t.render(this.value,this.state,this.prefs,this.local,{errors:this.prefs.errors,messages:[this.prefs.messages,this.messages]}),this.prefs.errors.label||(this.message=this.message.replace(/^\"\" /,\"\").trim()),this.message)}_template(e,r){return t.template(this.value,e,r||this.code,this.state,this.prefs)}},t.path=function(e){let t=\"\";for(const r of e)\"object\"!=typeof r&&(\"string\"==typeof r?(t&&(t+=\".\"),t+=r):t+=`[${r}]`);return t},t.template=function(e,t,r,s,i){if(!t)return;if(a.isTemplate(t))return\"root\"!==r?t:null;let o=i.errors.language;if(n.isResolvable(o)&&(o=o.resolve(e,s,i)),o&&t[o]){if(void 0!==t[o][r])return t[o][r];if(void 0!==t[o][\"*\"])return t[o][\"*\"]}return t[r]?t[r]:t[\"*\"]},t.label=function(e,r,s,n){if(e.label)return e.label;if(!s.errors.label)return\"\";let a=r.path;\"key\"===s.errors.label&&r.path.length>1&&(a=r.path.slice(-1));return t.path(a)||t.template(null,s.messages,\"root\",r,s)||n&&t.template(null,n,\"root\",r,s)||\"value\"},t.process=function(e,r,s){if(!e)return null;const{override:n,message:a,details:i}=t.details(e);if(n)return n;if(s.errors.stack)return new t.ValidationError(a,i,r);const o=Error.stackTraceLimit;Error.stackTraceLimit=0;const l=new t.ValidationError(a,i,r);return Error.stackTraceLimit=o,l},t.details=function(e,t={}){let r=[];const s=[];for(const n of e){if(n instanceof Error){if(!1!==t.override)return{override:n};const e=n.toString();r.push(e),s.push({message:e,type:\"override\",context:{error:n}});continue}const e=n.toString();r.push(e),s.push({message:e,path:n.path.filter((e=>\"object\"!=typeof e)),type:n.code,context:n.local})}return r.length>1&&(r=[...new Set(r)]),{message:r.join(\". \"),details:s}},t.ValidationError=class extends Error{constructor(e,t,r){super(e),this._original=r,this.details=t}static isError(e){return e instanceof t.ValidationError}},t.ValidationError.prototype.isJoi=!0,t.ValidationError.prototype.name=\"ValidationError\",t.ValidationError.prototype.annotate=s.error},8901:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(8160),i=r(6914),o={};t.type=function(e,t){const r=Object.getPrototypeOf(e),l=n(r),c=e._assign(Object.create(l)),u=Object.assign({},t);delete u.base,l._definition=u;const f=r._definition||{};u.messages=i.merge(f.messages,u.messages),u.properties=Object.assign({},f.properties,u.properties),c.type=u.type,u.flags=Object.assign({},f.flags,u.flags);const m=Object.assign({},f.terms);if(u.terms)for(const e in u.terms){const t=u.terms[e];s(void 0===c.$_terms[e],\"Invalid term override for\",u.type,e),c.$_terms[e]=t.init,m[e]=t}u.terms=m,u.args||(u.args=f.args),u.prepare=o.prepare(u.prepare,f.prepare),u.coerce&&(\"function\"==typeof u.coerce&&(u.coerce={method:u.coerce}),u.coerce.from&&!Array.isArray(u.coerce.from)&&(u.coerce={method:u.coerce.method,from:[].concat(u.coerce.from)})),u.coerce=o.coerce(u.coerce,f.coerce),u.validate=o.validate(u.validate,f.validate);const h=Object.assign({},f.rules);if(u.rules)for(const e in u.rules){const t=u.rules[e];s(\"object\"==typeof t,\"Invalid rule definition for\",u.type,e);let r=t.method;if(void 0===r&&(r=function(){return this.$_addRule(e)}),r&&(s(!l[e],\"Rule conflict in\",u.type,e),l[e]=r),s(!h[e],\"Rule conflict in\",u.type,e),h[e]=t,t.alias){const e=[].concat(t.alias);for(const r of e)l[r]=t.method}t.args&&(t.argsByName=new Map,t.args=t.args.map((e=>(\"string\"==typeof e&&(e={name:e}),s(!t.argsByName.has(e.name),\"Duplicated argument name\",e.name),a.isSchema(e.assert)&&(e.assert=e.assert.strict().label(e.name)),t.argsByName.set(e.name,e),e))))}u.rules=h;const d=Object.assign({},f.modifiers);if(u.modifiers)for(const e in u.modifiers){s(!l[e],\"Rule conflict in\",u.type,e);const t=u.modifiers[e];s(\"function\"==typeof t,\"Invalid modifier definition for\",u.type,e);const r=function(t){return this.rule({[e]:t})};l[e]=r,d[e]=t}if(u.modifiers=d,u.overrides){l._super=r,c.$_super={};for(const e in u.overrides)s(r[e],\"Cannot override missing\",e),u.overrides[e][a.symbols.parent]=r[e],c.$_super[e]=r[e].bind(c);Object.assign(l,u.overrides)}u.cast=Object.assign({},f.cast,u.cast);const p=Object.assign({},f.manifest,u.manifest);return p.build=o.build(u.manifest&&u.manifest.build,f.manifest&&f.manifest.build),u.manifest=p,u.rebuild=o.rebuild(u.rebuild,f.rebuild),c},o.build=function(e,t){return e&&t?function(r,s){return t(e(r,s),s)}:e||t},o.coerce=function(e,t){return e&&t?{from:e.from&&t.from?[...new Set([...e.from,...t.from])]:null,method(r,s){let n;if((!t.from||t.from.includes(typeof r))&&(n=t.method(r,s),n)){if(n.errors||void 0===n.value)return n;r=n.value}if(!e.from||e.from.includes(typeof r)){const t=e.method(r,s);if(t)return t}return n}}:e||t},o.prepare=function(e,t){return e&&t?function(r,s){const n=e(r,s);if(n){if(n.errors||void 0===n.value)return n;r=n.value}return t(r,s)||n}:e||t},o.rebuild=function(e,t){return e&&t?function(r){t(r),e(r)}:e||t},o.validate=function(e,t){return e&&t?function(r,s){const n=t(r,s);if(n){if(n.errors&&(!Array.isArray(n.errors)||n.errors.length))return n;r=n.value}return e(r,s)||n}:e||t}},5107:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(8652),i=r(8160),o=r(3292),l=r(6354),c=r(8901),u=r(9708),f=r(6133),m=r(3328),h=r(1152);let d;const p={types:{alternatives:r(4946),any:r(8068),array:r(546),boolean:r(4937),date:r(7500),function:r(390),link:r(8785),number:r(3832),object:r(8966),string:r(7417),symbol:r(8826)},aliases:{alt:\"alternatives\",bool:\"boolean\",func:\"function\"},root:function(){const e={_types:new Set(Object.keys(p.types))};for(const t of e._types)e[t]=function(...e){return s(!e.length||[\"alternatives\",\"link\",\"object\"].includes(t),\"The\",t,\"type does not allow arguments\"),p.generate(this,p.types[t],e)};for(const t of[\"allow\",\"custom\",\"disallow\",\"equal\",\"exist\",\"forbidden\",\"invalid\",\"not\",\"only\",\"optional\",\"options\",\"prefs\",\"preferences\",\"required\",\"strip\",\"valid\",\"when\"])e[t]=function(...e){return this.any()[t](...e)};Object.assign(e,p.methods);for(const t in p.aliases){const r=p.aliases[t];e[t]=e[r]}return e.x=e.expression,h.setup&&h.setup(e),e}};p.methods={ValidationError:l.ValidationError,version:i.version,cache:a.provider,assert(e,t,...r){p.assert(e,t,!0,r)},attempt:(e,t,...r)=>p.assert(e,t,!1,r),build(e){return s(\"function\"==typeof u.build,\"Manifest functionality disabled\"),u.build(this,e)},checkPreferences(e){i.checkPreferences(e)},compile(e,t){return o.compile(this,e,t)},defaults(e){s(\"function\"==typeof e,\"modifier must be a function\");const t=Object.assign({},this);for(const r of t._types){const n=e(t[r]());s(i.isSchema(n),\"modifier must return a valid schema object\"),t[r]=function(...e){return p.generate(this,n,e)}}return t},expression:(...e)=>new m(...e),extend(...e){i.verifyFlat(e,\"extend\"),d=d||r(3378),s(e.length,\"You need to provide at least one extension\"),this.assert(e,d.extensions);const t=Object.assign({},this);t._types=new Set(t._types);for(let r of e){\"function\"==typeof r&&(r=r(t)),this.assert(r,d.extension);const e=p.expandExtension(r,t);for(const r of e){s(void 0===t[r.type]||t._types.has(r.type),\"Cannot override name\",r.type);const e=r.base||this.any(),n=c.type(e,r);t._types.add(r.type),t[r.type]=function(...e){return p.generate(this,n,e)}}}return t},isError:l.ValidationError.isError,isExpression:m.isTemplate,isRef:f.isRef,isSchema:i.isSchema,in:(...e)=>f.in(...e),override:i.symbols.override,ref:(...e)=>f.create(...e),types(){const e={};for(const t of this._types)e[t]=this[t]();for(const t in p.aliases)e[t]=this[t]();return e}},p.assert=function(e,t,r,s){const a=s[0]instanceof Error||\"string\"==typeof s[0]?s[0]:null,o=null!==a?s[1]:s[0],c=t.validate(e,i.preferences({errors:{stack:!0}},o||{}));let u=c.error;if(!u)return c.value;if(a instanceof Error)throw a;const f=r&&\"function\"==typeof u.annotate?u.annotate():u.message;throw u instanceof l.ValidationError==0&&(u=n(u)),u.message=a?`${a} ${f}`:f,u},p.generate=function(e,t,r){return s(e,\"Must be invoked on a Joi instance.\"),t.$_root=e,t._definition.args&&r.length?t._definition.args(t,...r):t},p.expandExtension=function(e,t){if(\"string\"==typeof e.type)return[e];const r=[];for(const s of t._types)if(e.type.test(s)){const n=Object.assign({},e);n.type=s,n.base=t[s](),r.push(n)}return r},e.exports=p.root()},6914:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(3328);t.compile=function(e,t){if(\"string\"==typeof e)return s(!t,\"Cannot set single message string\"),new a(e);if(a.isTemplate(e))return s(!t,\"Cannot set single message template\"),e;s(\"object\"==typeof e&&!Array.isArray(e),\"Invalid message options\"),t=t?n(t):{};for(let r in e){const n=e[r];if(\"root\"===r||a.isTemplate(n)){t[r]=n;continue}if(\"string\"==typeof n){t[r]=new a(n);continue}s(\"object\"==typeof n&&!Array.isArray(n),\"Invalid message for\",r);const i=r;for(r in t[i]=t[i]||{},n){const e=n[r];\"root\"===r||a.isTemplate(e)?t[i][r]=e:(s(\"string\"==typeof e,\"Invalid message for\",r,\"in\",i),t[i][r]=new a(e))}}return t},t.decompile=function(e){const t={};for(let r in e){const s=e[r];if(\"root\"===r){t.root=s;continue}if(a.isTemplate(s)){t[r]=s.describe({compact:!0});continue}const n=r;for(r in t[n]={},s){const e=s[r];\"root\"!==r?t[n][r]=e.describe({compact:!0}):t[n].root=e}}return t},t.merge=function(e,r){if(!e)return t.compile(r);if(!r)return e;if(\"string\"==typeof r)return new a(r);if(a.isTemplate(r))return r;const i=n(e);for(let e in r){const t=r[e];if(\"root\"===e||a.isTemplate(t)){i[e]=t;continue}if(\"string\"==typeof t){i[e]=new a(t);continue}s(\"object\"==typeof t&&!Array.isArray(t),\"Invalid message for\",e);const n=e;for(e in i[n]=i[n]||{},t){const r=t[e];\"root\"===e||a.isTemplate(r)?i[n][e]=r:(s(\"string\"==typeof r,\"Invalid message for\",e,\"in\",n),i[n][e]=new a(r))}}return i}},2294:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8160),a=r(6133),i={};t.Ids=i.Ids=class{constructor(){this._byId=new Map,this._byKey=new Map,this._schemaChain=!1}clone(){const e=new i.Ids;return e._byId=new Map(this._byId),e._byKey=new Map(this._byKey),e._schemaChain=this._schemaChain,e}concat(e){e._schemaChain&&(this._schemaChain=!0);for(const[t,r]of e._byId.entries())s(!this._byKey.has(t),\"Schema id conflicts with existing key:\",t),this._byId.set(t,r);for(const[t,r]of e._byKey.entries())s(!this._byId.has(t),\"Schema key conflicts with existing id:\",t),this._byKey.set(t,r)}fork(e,t,r){const a=this._collect(e);a.push({schema:r});const o=a.shift();let l={id:o.id,schema:t(o.schema)};s(n.isSchema(l.schema),\"adjuster function failed to return a joi schema type\");for(const e of a)l={id:e.id,schema:i.fork(e.schema,l.id,l.schema)};return l.schema}labels(e,t=[]){const r=e[0],s=this._get(r);if(!s)return[...t,...e].join(\".\");const n=e.slice(1);return t=[...t,s.schema._flags.label||r],n.length?s.schema._ids.labels(n,t):t.join(\".\")}reach(e,t=[]){const r=e[0],n=this._get(r);s(n,\"Schema does not contain path\",[...t,...e].join(\".\"));const a=e.slice(1);return a.length?n.schema._ids.reach(a,[...t,r]):n.schema}register(e,{key:t}={}){if(!e||!n.isSchema(e))return;(e.$_property(\"schemaChain\")||e._ids._schemaChain)&&(this._schemaChain=!0);const r=e._flags.id;if(r){const t=this._byId.get(r);s(!t||t.schema===e,\"Cannot add different schemas with the same id:\",r),s(!this._byKey.has(r),\"Schema id conflicts with existing key:\",r),this._byId.set(r,{schema:e,id:r})}t&&(s(!this._byKey.has(t),\"Schema already contains key:\",t),s(!this._byId.has(t),\"Schema key conflicts with existing id:\",t),this._byKey.set(t,{schema:e,id:t}))}reset(){this._byId=new Map,this._byKey=new Map,this._schemaChain=!1}_collect(e,t=[],r=[]){const n=e[0],a=this._get(n);s(a,\"Schema does not contain path\",[...t,...e].join(\".\")),r=[a,...r];const i=e.slice(1);return i.length?a.schema._ids._collect(i,[...t,n],r):r}_get(e){return this._byId.get(e)||this._byKey.get(e)}},i.fork=function(e,r,s){const n=t.schema(e,{each:(e,{key:t})=>{if(r===(e._flags.id||t))return s},ref:!1});return n?n.$_mutateRebuild():e},t.schema=function(e,t){let r;for(const s in e._flags){if(\"_\"===s[0])continue;const n=i.scan(e._flags[s],{source:\"flags\",name:s},t);void 0!==n&&(r=r||e.clone(),r._flags[s]=n)}for(let s=0;s{\"use strict\";const s=r(375),n=r(8571),a=r(9621),i=r(8160);let o;const l={symbol:Symbol(\"ref\"),defaults:{adjust:null,in:!1,iterables:null,map:null,separator:\".\",type:\"value\"}};t.create=function(e,t={}){s(\"string\"==typeof e,\"Invalid reference key:\",e),i.assertOptions(t,[\"adjust\",\"ancestor\",\"in\",\"iterables\",\"map\",\"prefix\",\"render\",\"separator\"]),s(!t.prefix||\"object\"==typeof t.prefix,\"options.prefix must be of type object\");const r=Object.assign({},l.defaults,t);delete r.prefix;const n=r.separator,a=l.context(e,n,t.prefix);if(r.type=a.type,e=a.key,\"value\"===r.type)if(a.root&&(s(!n||e[0]!==n,\"Cannot specify relative path with root prefix\"),r.ancestor=\"root\",e||(e=null)),n&&n===e)e=null,r.ancestor=0;else if(void 0!==r.ancestor)s(!n||!e||e[0]!==n,\"Cannot combine prefix with ancestor option\");else{const[t,s]=l.ancestor(e,n);s&&\"\"===(e=e.slice(s))&&(e=null),r.ancestor=t}return r.path=n?null===e?[]:e.split(n):[e],new l.Ref(r)},t.in=function(e,r={}){return t.create(e,{...r,in:!0})},t.isRef=function(e){return!!e&&!!e[i.symbols.ref]},l.Ref=class{constructor(e){s(\"object\"==typeof e,\"Invalid reference construction\"),i.assertOptions(e,[\"adjust\",\"ancestor\",\"in\",\"iterables\",\"map\",\"path\",\"render\",\"separator\",\"type\",\"depth\",\"key\",\"root\",\"display\"]),s([!1,void 0].includes(e.separator)||\"string\"==typeof e.separator&&1===e.separator.length,\"Invalid separator\"),s(!e.adjust||\"function\"==typeof e.adjust,\"options.adjust must be a function\"),s(!e.map||Array.isArray(e.map),\"options.map must be an array\"),s(!e.map||!e.adjust,\"Cannot set both map and adjust options\"),Object.assign(this,l.defaults,e),s(\"value\"===this.type||void 0===this.ancestor,\"Non-value references cannot reference ancestors\"),Array.isArray(this.map)&&(this.map=new Map(this.map)),this.depth=this.path.length,this.key=this.path.length?this.path.join(this.separator):null,this.root=this.path[0],this.updateDisplay()}resolve(e,t,r,n,a={}){return s(!this.in||a.in,\"Invalid in() reference usage\"),\"global\"===this.type?this._resolve(r.context,t,a):\"local\"===this.type?this._resolve(n,t,a):this.ancestor?\"root\"===this.ancestor?this._resolve(t.ancestors[t.ancestors.length-1],t,a):(s(this.ancestor<=t.ancestors.length,\"Invalid reference exceeds the schema root:\",this.display),this._resolve(t.ancestors[this.ancestor-1],t,a)):this._resolve(e,t,a)}_resolve(e,t,r){let s;if(\"value\"===this.type&&t.mainstay.shadow&&!1!==r.shadow&&(s=t.mainstay.shadow.get(this.absolute(t))),void 0===s&&(s=a(e,this.path,{iterables:this.iterables,functions:!0})),this.adjust&&(s=this.adjust(s)),this.map){const e=this.map.get(s);void 0!==e&&(s=e)}return t.mainstay&&t.mainstay.tracer.resolve(t,this,s),s}toString(){return this.display}absolute(e){return[...e.path.slice(0,-this.ancestor),...this.path]}clone(){return new l.Ref(this)}describe(){const e={path:this.path};\"value\"!==this.type&&(e.type=this.type),\".\"!==this.separator&&(e.separator=this.separator),\"value\"===this.type&&1!==this.ancestor&&(e.ancestor=this.ancestor),this.map&&(e.map=[...this.map]);for(const t of[\"adjust\",\"iterables\",\"render\"])null!==this[t]&&void 0!==this[t]&&(e[t]=this[t]);return!1!==this.in&&(e.in=!0),{ref:e}}updateDisplay(){const e=null!==this.key?this.key:\"\";if(\"value\"!==this.type)return void(this.display=`ref:${this.type}:${e}`);if(!this.separator)return void(this.display=`ref:${e}`);if(!this.ancestor)return void(this.display=`ref:${this.separator}${e}`);if(\"root\"===this.ancestor)return void(this.display=`ref:root:${e}`);if(1===this.ancestor)return void(this.display=`ref:${e||\"..\"}`);const t=new Array(this.ancestor+1).fill(this.separator).join(\"\");this.display=`ref:${t}${e||\"\"}`}},l.Ref.prototype[i.symbols.ref]=!0,t.build=function(e){return\"value\"===(e=Object.assign({},l.defaults,e)).type&&void 0===e.ancestor&&(e.ancestor=1),new l.Ref(e)},l.context=function(e,t,r={}){if(e=e.trim(),r){const s=void 0===r.global?\"$\":r.global;if(s!==t&&e.startsWith(s))return{key:e.slice(s.length),type:\"global\"};const n=void 0===r.local?\"#\":r.local;if(n!==t&&e.startsWith(n))return{key:e.slice(n.length),type:\"local\"};const a=void 0===r.root?\"/\":r.root;if(a!==t&&e.startsWith(a))return{key:e.slice(a.length),type:\"value\",root:!0}}return{key:e,type:\"value\"}},l.ancestor=function(e,t){if(!t)return[1,0];if(e[0]!==t)return[1,0];if(e[1]!==t)return[0,1];let r=2;for(;e[r]===t;)++r;return[r-1,r]},t.toSibling=0,t.toParent=1,t.Manager=class{constructor(){this.refs=[]}register(e,s){if(e)if(s=void 0===s?t.toParent:s,Array.isArray(e))for(const t of e)this.register(t,s);else if(i.isSchema(e))for(const t of e._refs.refs)t.ancestor-s>=0&&this.refs.push({ancestor:t.ancestor-s,root:t.root});else t.isRef(e)&&\"value\"===e.type&&e.ancestor-s>=0&&this.refs.push({ancestor:e.ancestor-s,root:e.root}),o=o||r(3328),o.isTemplate(e)&&this.register(e.refs(),s)}get length(){return this.refs.length}clone(){const e=new t.Manager;return e.refs=n(this.refs),e}reset(){this.refs=[]}roots(){return this.refs.filter((e=>!e.ancestor)).map((e=>e.root))}}},3378:(e,t,r)=>{\"use strict\";const s=r(5107),n={};n.wrap=s.string().min(1).max(2).allow(!1),t.preferences=s.object({allowUnknown:s.boolean(),abortEarly:s.boolean(),artifacts:s.boolean(),cache:s.boolean(),context:s.object(),convert:s.boolean(),dateFormat:s.valid(\"date\",\"iso\",\"string\",\"time\",\"utc\"),debug:s.boolean(),errors:{escapeHtml:s.boolean(),label:s.valid(\"path\",\"key\",!1),language:[s.string(),s.object().ref()],render:s.boolean(),stack:s.boolean(),wrap:{label:n.wrap,array:n.wrap,string:n.wrap}},externals:s.boolean(),messages:s.object(),noDefaults:s.boolean(),nonEnumerables:s.boolean(),presence:s.valid(\"required\",\"optional\",\"forbidden\"),skipFunctions:s.boolean(),stripUnknown:s.object({arrays:s.boolean(),objects:s.boolean()}).or(\"arrays\",\"objects\").allow(!0,!1),warnings:s.boolean()}).strict(),n.nameRx=/^[a-zA-Z0-9]\\w*$/,n.rule=s.object({alias:s.array().items(s.string().pattern(n.nameRx)).single(),args:s.array().items(s.string(),s.object({name:s.string().pattern(n.nameRx).required(),ref:s.boolean(),assert:s.alternatives([s.function(),s.object().schema()]).conditional(\"ref\",{is:!0,then:s.required()}),normalize:s.function(),message:s.string().when(\"assert\",{is:s.function(),then:s.required()})})),convert:s.boolean(),manifest:s.boolean(),method:s.function().allow(!1),multi:s.boolean(),validate:s.function()}),t.extension=s.object({type:s.alternatives([s.string(),s.object().regex()]).required(),args:s.function(),cast:s.object().pattern(n.nameRx,s.object({from:s.function().maxArity(1).required(),to:s.function().minArity(1).maxArity(2).required()})),base:s.object().schema().when(\"type\",{is:s.object().regex(),then:s.forbidden()}),coerce:[s.function().maxArity(3),s.object({method:s.function().maxArity(3).required(),from:s.array().items(s.string()).single()})],flags:s.object().pattern(n.nameRx,s.object({setter:s.string(),default:s.any()})),manifest:{build:s.function().arity(2)},messages:[s.object(),s.string()],modifiers:s.object().pattern(n.nameRx,s.function().minArity(1).maxArity(2)),overrides:s.object().pattern(n.nameRx,s.function()),prepare:s.function().maxArity(3),rebuild:s.function().arity(1),rules:s.object().pattern(n.nameRx,n.rule),terms:s.object().pattern(n.nameRx,s.object({init:s.array().allow(null).required(),manifest:s.object().pattern(/.+/,[s.valid(\"schema\",\"single\"),s.object({mapped:s.object({from:s.string().required(),to:s.string().required()}).required()})])})),validate:s.function().maxArity(3)}).strict(),t.extensions=s.array().items(s.object(),s.function().arity(1)).strict(),n.desc={buffer:s.object({buffer:s.string()}),func:s.object({function:s.function().required(),options:{literal:!0}}),override:s.object({override:!0}),ref:s.object({ref:s.object({type:s.valid(\"value\",\"global\",\"local\"),path:s.array().required(),separator:s.string().length(1).allow(!1),ancestor:s.number().min(0).integer().allow(\"root\"),map:s.array().items(s.array().length(2)).min(1),adjust:s.function(),iterables:s.boolean(),in:s.boolean(),render:s.boolean()}).required()}),regex:s.object({regex:s.string().min(3)}),special:s.object({special:s.valid(\"deep\").required()}),template:s.object({template:s.string().required(),options:s.object()}),value:s.object({value:s.alternatives([s.object(),s.array()]).required()})},n.desc.entity=s.alternatives([s.array().items(s.link(\"...\")),s.boolean(),s.function(),s.number(),s.string(),n.desc.buffer,n.desc.func,n.desc.ref,n.desc.regex,n.desc.special,n.desc.template,n.desc.value,s.link(\"/\")]),n.desc.values=s.array().items(null,s.boolean(),s.function(),s.number().allow(1/0,-1/0),s.string().allow(\"\"),s.symbol(),n.desc.buffer,n.desc.func,n.desc.override,n.desc.ref,n.desc.regex,n.desc.template,n.desc.value),n.desc.messages=s.object().pattern(/.+/,[s.string(),n.desc.template,s.object().pattern(/.+/,[s.string(),n.desc.template])]),t.description=s.object({type:s.string().required(),flags:s.object({cast:s.string(),default:s.any(),description:s.string(),empty:s.link(\"/\"),failover:n.desc.entity,id:s.string(),label:s.string(),only:!0,presence:[\"optional\",\"required\",\"forbidden\"],result:[\"raw\",\"strip\"],strip:s.boolean(),unit:s.string()}).unknown(),preferences:{allowUnknown:s.boolean(),abortEarly:s.boolean(),artifacts:s.boolean(),cache:s.boolean(),convert:s.boolean(),dateFormat:[\"date\",\"iso\",\"string\",\"time\",\"utc\"],errors:{escapeHtml:s.boolean(),label:[\"path\",\"key\"],language:[s.string(),n.desc.ref],wrap:{label:n.wrap,array:n.wrap}},externals:s.boolean(),messages:n.desc.messages,noDefaults:s.boolean(),nonEnumerables:s.boolean(),presence:[\"required\",\"optional\",\"forbidden\"],skipFunctions:s.boolean(),stripUnknown:s.object({arrays:s.boolean(),objects:s.boolean()}).or(\"arrays\",\"objects\").allow(!0,!1),warnings:s.boolean()},allow:n.desc.values,invalid:n.desc.values,rules:s.array().min(1).items({name:s.string().required(),args:s.object().min(1),keep:s.boolean(),message:[s.string(),n.desc.messages],warn:s.boolean()}),keys:s.object().pattern(/.*/,s.link(\"/\")),link:n.desc.ref}).pattern(/^[a-z]\\w*$/,s.any())},493:(e,t,r)=>{\"use strict\";const s=r(8571),n=r(9621),a=r(8160),i={value:Symbol(\"value\")};e.exports=i.State=class{constructor(e,t,r){this.path=e,this.ancestors=t,this.mainstay=r.mainstay,this.schemas=r.schemas,this.debug=null}localize(e,t=null,r=null){const s=new i.State(e,t,this);return r&&s.schemas&&(s.schemas=[i.schemas(r),...s.schemas]),s}nest(e,t){const r=new i.State(this.path,this.ancestors,this);return r.schemas=r.schemas&&[i.schemas(e),...r.schemas],r.debug=t,r}shadow(e,t){this.mainstay.shadow=this.mainstay.shadow||new i.Shadow,this.mainstay.shadow.set(this.path,e,t)}snapshot(){this.mainstay.shadow&&(this._snapshot=s(this.mainstay.shadow.node(this.path))),this.mainstay.snapshot()}restore(){this.mainstay.shadow&&(this.mainstay.shadow.override(this.path,this._snapshot),this._snapshot=void 0),this.mainstay.restore()}commit(){this.mainstay.shadow&&(this.mainstay.shadow.override(this.path,this._snapshot),this._snapshot=void 0),this.mainstay.commit()}},i.schemas=function(e){return a.isSchema(e)?{schema:e}:e},i.Shadow=class{constructor(){this._values=null}set(e,t,r){if(!e.length)return;if(\"strip\"===r&&\"number\"==typeof e[e.length-1])return;this._values=this._values||new Map;let s=this._values;for(let t=0;t{\"use strict\";const s=r(375),n=r(8571),a=r(5277),i=r(1447),o=r(8160),l=r(6354),c=r(6133),u={symbol:Symbol(\"template\"),opens:new Array(1e3).join(\"\\0\"),closes:new Array(1e3).join(\"\u0001\"),dateFormat:{date:Date.prototype.toDateString,iso:Date.prototype.toISOString,string:Date.prototype.toString,time:Date.prototype.toTimeString,utc:Date.prototype.toUTCString}};e.exports=u.Template=class{constructor(e,t){if(s(\"string\"==typeof e,\"Template source must be a string\"),s(!e.includes(\"\\0\")&&!e.includes(\"\u0001\"),\"Template source cannot contain reserved control characters\"),this.source=e,this.rendered=e,this._template=null,t){const{functions:e,...r}=t;this._settings=Object.keys(r).length?n(r):void 0,this._functions=e,this._functions&&(s(Object.keys(this._functions).every((e=>\"string\"==typeof e)),\"Functions keys must be strings\"),s(Object.values(this._functions).every((e=>\"function\"==typeof e)),\"Functions values must be functions\"))}else this._settings=void 0,this._functions=void 0;this._parse()}_parse(){if(!this.source.includes(\"{\"))return;const e=u.encode(this.source),t=u.split(e);let r=!1;const s=[],n=t.shift();n&&s.push(n);for(const e of t){const t=\"{\"!==e[0],n=t?\"}\":\"}}\",a=e.indexOf(n);if(-1===a||\"{\"===e[1]){s.push(`{${u.decode(e)}`);continue}let i=e.slice(t?0:1,a);const o=\":\"===i[0];o&&(i=i.slice(1));const l=this._ref(u.decode(i),{raw:t,wrapped:o});s.push(l),\"string\"!=typeof l&&(r=!0);const c=e.slice(a+n.length);c&&s.push(u.decode(c))}r?this._template=s:this.rendered=s.join(\"\")}static date(e,t){return u.dateFormat[t.dateFormat].call(e)}describe(e={}){if(!this._settings&&e.compact)return this.source;const t={template:this.source};return this._settings&&(t.options=this._settings),this._functions&&(t.functions=this._functions),t}static build(e){return new u.Template(e.template,e.options||e.functions?{...e.options,functions:e.functions}:void 0)}isDynamic(){return!!this._template}static isTemplate(e){return!!e&&!!e[o.symbols.template]}refs(){if(!this._template)return;const e=[];for(const t of this._template)\"string\"!=typeof t&&e.push(...t.refs);return e}resolve(e,t,r,s){return this._template&&1===this._template.length?this._part(this._template[0],e,t,r,s,{}):this.render(e,t,r,s)}_part(e,...t){return e.ref?e.ref.resolve(...t):e.formula.evaluate(t)}render(e,t,r,s,n={}){if(!this.isDynamic())return this.rendered;const i=[];for(const o of this._template)if(\"string\"==typeof o)i.push(o);else{const l=this._part(o,e,t,r,s,n),c=u.stringify(l,e,t,r,s,n);if(void 0!==c){const e=o.raw||!1===(n.errors&&n.errors.escapeHtml)?c:a(c);i.push(u.wrap(e,o.wrapped&&r.errors.wrap.label))}}return i.join(\"\")}_ref(e,{raw:t,wrapped:r}){const s=[],n=e=>{const t=c.create(e,this._settings);return s.push(t),e=>{const r=t.resolve(...e);return void 0!==r?r:null}};try{const t=this._functions?{...u.functions,...this._functions}:u.functions;var a=new i.Parser(e,{reference:n,functions:t,constants:u.constants})}catch(t){throw t.message=`Invalid template variable \"${e}\" fails due to: ${t.message}`,t}if(a.single){if(\"reference\"===a.single.type){const e=s[0];return{ref:e,raw:t,refs:s,wrapped:r||\"local\"===e.type&&\"label\"===e.key}}return u.stringify(a.single.value)}return{formula:a,raw:t,refs:s}}toString(){return this.source}},u.Template.prototype[o.symbols.template]=!0,u.Template.prototype.isImmutable=!0,u.encode=function(e){return e.replace(/\\\\(\\{+)/g,((e,t)=>u.opens.slice(0,t.length))).replace(/\\\\(\\}+)/g,((e,t)=>u.closes.slice(0,t.length)))},u.decode=function(e){return e.replace(/\\u0000/g,\"{\").replace(/\\u0001/g,\"}\")},u.split=function(e){const t=[];let r=\"\";for(let s=0;s ${s.toString()}`);e=t}if(!Array.isArray(e))return e.toString();const f=[];for(const i of e)f.push(u.stringify(i,t,r,s,n,{arrayItems:!0,...a}));return u.wrap(f.join(\", \"),!l&&o.array)},u.constants={true:!0,false:!1,null:null,second:1e3,minute:6e4,hour:36e5,day:864e5},u.functions={if:(e,t,r)=>e?t:r,length:e=>\"string\"==typeof e?e.length:e&&\"object\"==typeof e?Array.isArray(e)?e.length:Object.keys(e).length:null,msg(e){const[t,r,s,n,a]=this,i=a.messages;if(!i)return\"\";const o=l.template(t,i[0],e,r,s)||l.template(t,i[1],e,r,s);return o?o.render(t,r,s,n,a):\"\"},number:e=>\"number\"==typeof e?e:\"string\"==typeof e?parseFloat(e):\"boolean\"==typeof e?e?1:0:e instanceof Date?e.getTime():null}},4946:(e,t,r)=>{\"use strict\";const s=r(375),n=r(1687),a=r(8068),i=r(8160),o=r(3292),l=r(6354),c=r(6133),u={};e.exports=a.extend({type:\"alternatives\",flags:{match:{default:\"any\"}},terms:{matches:{init:[],register:c.toSibling}},args:(e,...t)=>1===t.length&&Array.isArray(t[0])?e.try(...t[0]):e.try(...t),validate(e,t){const{schema:r,error:s,state:a,prefs:i}=t;if(r._flags.match){const t=[],o=[];for(let s=0;sl.details(e,{override:!1})))})};if(\"one\"===r._flags.match)return 1===t.length?{value:t[0]}:{errors:s(\"alternatives.one\")};if(t.length!==r.$_terms.matches.length)return{errors:s(\"alternatives.all\",{details:o.map((e=>l.details(e,{override:!1})))})};const c=e=>e.$_terms.matches.some((e=>\"object\"===e.schema.type||\"alternatives\"===e.schema.type&&c(e.schema)));return c(r)?{value:t.reduce(((e,t)=>n(e,t,{mergeArrays:!1})))}:{value:t[t.length-1]}}const o=[];for(let t=0;t\"is\"!==r.path[0]&&\"string\"!=typeof t._flags.label?t.label(e):void 0,ref:!1})}},rebuild(e){e.$_modify({each:t=>{i.isSchema(t)&&\"array\"===t.type&&e.$_setFlag(\"_arrayItems\",!0,{clone:!1})}})},manifest:{build(e,t){if(t.matches)for(const r of t.matches){const{schema:t,ref:s,is:n,not:a,then:i,otherwise:o}=r;e=t?e.try(t):s?e.conditional(s,{is:n,then:i,not:a,otherwise:o,switch:r.switch}):e.conditional(n,{then:i,otherwise:o})}return e}},messages:{\"alternatives.all\":\"{{#label}} does not match all of the required types\",\"alternatives.any\":\"{{#label}} does not match any of the allowed types\",\"alternatives.match\":\"{{#label}} does not match any of the allowed types\",\"alternatives.one\":\"{{#label}} matches more than one allowed type\",\"alternatives.types\":\"{{#label}} must be one of {{#types}}\"}}),u.errors=function(e,{error:t,state:r}){if(!e.length)return{errors:t(\"alternatives.any\")};if(1===e.length)return{errors:e[0].reports};const s=new Set,n=[];for(const{reports:a,schema:i}of e){if(a.length>1)return u.unmatched(e,t);const o=a[0];if(o instanceof l.Report==0)return u.unmatched(e,t);if(o.state.path.length!==r.path.length){n.push({type:i.type,report:o});continue}if(\"any.only\"===o.code){for(const e of o.local.valids)s.add(e);continue}const[c,f]=o.code.split(\".\");\"base\"===f?s.add(c):n.push({type:i.type,report:o})}return n.length?1===n.length?{errors:n[0].report}:u.unmatched(e,t):{errors:t(\"alternatives.types\",{types:[...s]})}},u.unmatched=function(e,t){const r=[];for(const t of e)r.push(...t.reports);return{errors:t(\"alternatives.match\",l.details(r,{override:!1}))}}},8068:(e,t,r)=>{\"use strict\";const s=r(375),n=r(7629),a=r(8160),i=r(6914);e.exports=n.extend({type:\"any\",flags:{only:{default:!1}},terms:{alterations:{init:null},examples:{init:null},externals:{init:null},metas:{init:[]},notes:{init:[]},shared:{init:null},tags:{init:[]},whens:{init:null}},rules:{custom:{method(e,t){return s(\"function\"==typeof e,\"Method must be a function\"),s(void 0===t||t&&\"string\"==typeof t,\"Description must be a non-empty string\"),this.$_addRule({name:\"custom\",args:{method:e,description:t}})},validate(e,t,{method:r}){try{return r(e,t)}catch(e){return t.error(\"any.custom\",{error:e})}},args:[\"method\",\"description\"],multi:!0},messages:{method(e){return this.prefs({messages:e})}},shared:{method(e){s(a.isSchema(e)&&e._flags.id,\"Schema must be a schema with an id\");const t=this.clone();return t.$_terms.shared=t.$_terms.shared||[],t.$_terms.shared.push(e),t.$_mutateRegister(e),t}},warning:{method(e,t){return s(e&&\"string\"==typeof e,\"Invalid warning code\"),this.$_addRule({name:\"warning\",args:{code:e,local:t},warn:!0})},validate:(e,t,{code:r,local:s})=>t.error(r,s),args:[\"code\",\"local\"],multi:!0}},modifiers:{keep(e,t=!0){e.keep=t},message(e,t){e.message=i.compile(t)},warn(e,t=!0){e.warn=t}},manifest:{build(e,t){for(const r in t){const s=t[r];if([\"examples\",\"externals\",\"metas\",\"notes\",\"tags\"].includes(r))for(const t of s)e=e[r.slice(0,-1)](t);else if(\"alterations\"!==r)if(\"whens\"!==r){if(\"shared\"===r)for(const t of s)e=e.shared(t)}else for(const t of s){const{ref:r,is:s,not:n,then:a,otherwise:i,concat:o}=t;e=o?e.concat(o):r?e.when(r,{is:s,not:n,then:a,otherwise:i,switch:t.switch,break:t.break}):e.when(s,{then:a,otherwise:i,break:t.break})}else{const t={};for(const{target:e,adjuster:r}of s)t[e]=r;e=e.alter(t)}}return e}},messages:{\"any.custom\":\"{{#label}} failed custom validation because {{#error.message}}\",\"any.default\":\"{{#label}} threw an error when running default method\",\"any.failover\":\"{{#label}} threw an error when running failover method\",\"any.invalid\":\"{{#label}} contains an invalid value\",\"any.only\":'{{#label}} must be {if(#valids.length == 1, \"\", \"one of \")}{{#valids}}',\"any.ref\":\"{{#label}} {{#arg}} references {{:#ref}} which {{#reason}}\",\"any.required\":\"{{#label}} is required\",\"any.unknown\":\"{{#label}} is not allowed\"}})},546:(e,t,r)=>{\"use strict\";const s=r(375),n=r(9474),a=r(9621),i=r(8068),o=r(8160),l=r(3292),c={};e.exports=i.extend({type:\"array\",flags:{single:{default:!1},sparse:{default:!1}},terms:{items:{init:[],manifest:\"schema\"},ordered:{init:[],manifest:\"schema\"},_exclusions:{init:[]},_inclusions:{init:[]},_requireds:{init:[]}},coerce:{from:\"object\",method(e,{schema:t,state:r,prefs:s}){if(!Array.isArray(e))return;const n=t.$_getRule(\"sort\");return n?c.sort(t,e,n.args.options,r,s):void 0}},validate(e,{schema:t,error:r}){if(!Array.isArray(e)){if(t._flags.single){const t=[e];return t[o.symbols.arraySingle]=!0,{value:t}}return{errors:r(\"array.base\")}}if(t.$_getRule(\"items\")||t.$_terms.externals)return{value:e.slice()}},rules:{has:{method(e){e=this.$_compile(e,{appendPath:!0});const t=this.$_addRule({name:\"has\",args:{schema:e}});return t.$_mutateRegister(e),t},validate(e,{state:t,prefs:r,error:s},{schema:n}){const a=[e,...t.ancestors];for(let s=0;sthis.$_compile(e[r])),r,{append:!0});t.$_terms.items.push(s)}return t.$_mutateRebuild()},validate(e,{schema:t,error:r,state:s,prefs:n,errorsArray:a}){const i=t.$_terms._requireds.slice(),l=t.$_terms.ordered.slice(),u=[...t.$_terms._inclusions,...i],f=!e[o.symbols.arraySingle];delete e[o.symbols.arraySingle];const m=a();let h=e.length;for(let a=0;ao.compare(e.length,r,n)?e:t.error(\"array.\"+s,{limit:a.limit,value:e}),args:[{name:\"limit\",ref:!0,assert:o.limit,message:\"must be a positive integer\"}]},max:{method(e){return this.$_addRule({name:\"max\",method:\"length\",args:{limit:e},operator:\"<=\"})}},min:{method(e){return this.$_addRule({name:\"min\",method:\"length\",args:{limit:e},operator:\">=\"})}},ordered:{method(...e){o.verifyFlat(e,\"ordered\");const t=this.$_addRule(\"items\");for(let r=0;rthis.$_compile(e[r])),r,{append:!0});c.validateSingle(s,t),t.$_mutateRegister(s),t.$_terms.ordered.push(s)}return t.$_mutateRebuild()}},single:{method(e){const t=void 0===e||!!e;return s(!t||!this._flags._arrayItems,\"Cannot specify single rule when array has array items\"),this.$_setFlag(\"single\",t)}},sort:{method(e={}){o.assertOptions(e,[\"by\",\"order\"]);const t={order:e.order||\"ascending\"};return e.by&&(t.by=l.ref(e.by,{ancestor:0}),s(!t.by.ancestor,\"Cannot sort by ancestor\")),this.$_addRule({name:\"sort\",args:{options:t}})},validate(e,{error:t,state:r,prefs:s,schema:n},{options:a}){const{value:i,errors:o}=c.sort(n,e,a,r,s);if(o)return o;for(let r=0;rnew Set(e)}},rebuild(e){e.$_terms._inclusions=[],e.$_terms._exclusions=[],e.$_terms._requireds=[];for(const t of e.$_terms.items)c.validateSingle(t,e),\"required\"===t._flags.presence?e.$_terms._requireds.push(t):\"forbidden\"===t._flags.presence?e.$_terms._exclusions.push(t):e.$_terms._inclusions.push(t);for(const t of e.$_terms.ordered)c.validateSingle(t,e)},manifest:{build:(e,t)=>(t.items&&(e=e.items(...t.items)),t.ordered&&(e=e.ordered(...t.ordered)),e)},messages:{\"array.base\":\"{{#label}} must be an array\",\"array.excludes\":\"{{#label}} contains an excluded value\",\"array.hasKnown\":\"{{#label}} does not contain at least one required match for type {:#patternLabel}\",\"array.hasUnknown\":\"{{#label}} does not contain at least one required match\",\"array.includes\":\"{{#label}} does not match any of the allowed types\",\"array.includesRequiredBoth\":\"{{#label}} does not contain {{#knownMisses}} and {{#unknownMisses}} other required value(s)\",\"array.includesRequiredKnowns\":\"{{#label}} does not contain {{#knownMisses}}\",\"array.includesRequiredUnknowns\":\"{{#label}} does not contain {{#unknownMisses}} required value(s)\",\"array.length\":\"{{#label}} must contain {{#limit}} items\",\"array.max\":\"{{#label}} must contain less than or equal to {{#limit}} items\",\"array.min\":\"{{#label}} must contain at least {{#limit}} items\",\"array.orderedLength\":\"{{#label}} must contain at most {{#limit}} items\",\"array.sort\":\"{{#label}} must be sorted in {#order} order by {{#by}}\",\"array.sort.mismatching\":\"{{#label}} cannot be sorted due to mismatching types\",\"array.sort.unsupported\":\"{{#label}} cannot be sorted due to unsupported type {#type}\",\"array.sparse\":\"{{#label}} must not be a sparse array item\",\"array.unique\":\"{{#label}} contains a duplicate value\"}}),c.fillMissedErrors=function(e,t,r,s,n,a){const i=[];let o=0;for(const e of r){const t=e._flags.label;t?i.push(t):++o}i.length?o?t.push(e.$_createError(\"array.includesRequiredBoth\",s,{knownMisses:i,unknownMisses:o},n,a)):t.push(e.$_createError(\"array.includesRequiredKnowns\",s,{knownMisses:i},n,a)):t.push(e.$_createError(\"array.includesRequiredUnknowns\",s,{unknownMisses:o},n,a))},c.fillOrderedErrors=function(e,t,r,s,n,a){const i=[];for(const e of r)\"required\"===e._flags.presence&&i.push(e);i.length&&c.fillMissedErrors(e,t,i,s,n,a)},c.fillDefault=function(e,t,r,s){const n=[];let a=!0;for(let i=e.length-1;i>=0;--i){const o=e[i],l=[t,...r.ancestors],c=o.$_validate(void 0,r.localize(r.path,l,o),s).value;if(a){if(void 0===c)continue;a=!1}n.unshift(c)}n.length&&t.push(...n)},c.fastSplice=function(e,t){let r=t;for(;r{let f=c.compare(l,u,i,o);if(null!==f)return f;if(r.by&&(l=r.by.resolve(l,s,n),u=r.by.resolve(u,s,n)),f=c.compare(l,u,i,o),null!==f)return f;const m=typeof l;if(m!==typeof u)throw e.$_createError(\"array.sort.mismatching\",t,null,s,n);if(\"number\"!==m&&\"string\"!==m)throw e.$_createError(\"array.sort.unsupported\",t,{type:m},s,n);return\"number\"===m?(l-u)*a:l{\"use strict\";const s=r(375),n=r(8068),a=r(8160),i=r(2036),o={isBool:function(e){return\"boolean\"==typeof e}};e.exports=n.extend({type:\"boolean\",flags:{sensitive:{default:!1}},terms:{falsy:{init:null,manifest:\"values\"},truthy:{init:null,manifest:\"values\"}},coerce(e,{schema:t}){if(\"boolean\"!=typeof e){if(\"string\"==typeof e){const r=t._flags.sensitive?e:e.toLowerCase();e=\"true\"===r||\"false\"!==r&&e}return\"boolean\"!=typeof e&&(e=t.$_terms.truthy&&t.$_terms.truthy.has(e,null,null,!t._flags.sensitive)||(!t.$_terms.falsy||!t.$_terms.falsy.has(e,null,null,!t._flags.sensitive))&&e),{value:e}}},validate(e,{error:t}){if(\"boolean\"!=typeof e)return{value:e,errors:t(\"boolean.base\")}},rules:{truthy:{method(...e){a.verifyFlat(e,\"truthy\");const t=this.clone();t.$_terms.truthy=t.$_terms.truthy||new i;for(let r=0;re?1:0},string:{from:o.isBool,to:(e,t)=>e?\"true\":\"false\"}},manifest:{build:(e,t)=>(t.truthy&&(e=e.truthy(...t.truthy)),t.falsy&&(e=e.falsy(...t.falsy)),e)},messages:{\"boolean.base\":\"{{#label}} must be a boolean\"}})},7500:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8068),a=r(8160),i=r(3328),o={isDate:function(e){return e instanceof Date}};e.exports=n.extend({type:\"date\",coerce:{from:[\"number\",\"string\"],method:(e,{schema:t})=>({value:o.parse(e,t._flags.format)||e})},validate(e,{schema:t,error:r,prefs:s}){if(e instanceof Date&&!isNaN(e.getTime()))return;const n=t._flags.format;return s.convert&&n&&\"string\"==typeof e?{value:e,errors:r(\"date.format\",{format:n})}:{value:e,errors:r(\"date.base\")}},rules:{compare:{method:!1,validate(e,t,{date:r},{name:s,operator:n,args:i}){const o=\"now\"===r?Date.now():r.getTime();return a.compare(e.getTime(),o,n)?e:t.error(\"date.\"+s,{limit:i.date,value:e})},args:[{name:\"date\",ref:!0,normalize:e=>\"now\"===e?e:o.parse(e),assert:e=>null!==e,message:\"must have a valid date format\"}]},format:{method(e){return s([\"iso\",\"javascript\",\"unix\"].includes(e),\"Unknown date format\",e),this.$_setFlag(\"format\",e)}},greater:{method(e){return this.$_addRule({name:\"greater\",method:\"compare\",args:{date:e},operator:\">\"})}},iso:{method(){return this.format(\"iso\")}},less:{method(e){return this.$_addRule({name:\"less\",method:\"compare\",args:{date:e},operator:\"<\"})}},max:{method(e){return this.$_addRule({name:\"max\",method:\"compare\",args:{date:e},operator:\"<=\"})}},min:{method(e){return this.$_addRule({name:\"min\",method:\"compare\",args:{date:e},operator:\">=\"})}},timestamp:{method(e=\"javascript\"){return s([\"javascript\",\"unix\"].includes(e),'\"type\" must be one of \"javascript, unix\"'),this.format(e)}}},cast:{number:{from:o.isDate,to:(e,t)=>e.getTime()},string:{from:o.isDate,to:(e,{prefs:t})=>i.date(e,t)}},messages:{\"date.base\":\"{{#label}} must be a valid date\",\"date.format\":'{{#label}} must be in {msg(\"date.format.\" + #format) || #format} format',\"date.greater\":\"{{#label}} must be greater than {{:#limit}}\",\"date.less\":\"{{#label}} must be less than {{:#limit}}\",\"date.max\":\"{{#label}} must be less than or equal to {{:#limit}}\",\"date.min\":\"{{#label}} must be greater than or equal to {{:#limit}}\",\"date.format.iso\":\"ISO 8601 date\",\"date.format.javascript\":\"timestamp or number of milliseconds\",\"date.format.unix\":\"timestamp or number of seconds\"}}),o.parse=function(e,t){if(e instanceof Date)return e;if(\"string\"!=typeof e&&(isNaN(e)||!isFinite(e)))return null;if(/^\\s*$/.test(e))return null;if(\"iso\"===t)return a.isIsoDate(e)?o.date(e.toString()):null;const r=e;if(\"string\"==typeof e&&/^[+-]?\\d+(\\.\\d+)?$/.test(e)&&(e=parseFloat(e)),t){if(\"javascript\"===t)return o.date(1*e);if(\"unix\"===t)return o.date(1e3*e);if(\"string\"==typeof r)return null}return o.date(e)},o.date=function(e){const t=new Date(e);return isNaN(t.getTime())?null:t}},390:(e,t,r)=>{\"use strict\";const s=r(375),n=r(7824);e.exports=n.extend({type:\"function\",properties:{typeof:\"function\"},rules:{arity:{method(e){return s(Number.isSafeInteger(e)&&e>=0,\"n must be a positive integer\"),this.$_addRule({name:\"arity\",args:{n:e}})},validate:(e,t,{n:r})=>e.length===r?e:t.error(\"function.arity\",{n:r})},class:{method(){return this.$_addRule(\"class\")},validate:(e,t)=>/^\\s*class\\s/.test(e.toString())?e:t.error(\"function.class\",{value:e})},minArity:{method(e){return s(Number.isSafeInteger(e)&&e>0,\"n must be a strict positive integer\"),this.$_addRule({name:\"minArity\",args:{n:e}})},validate:(e,t,{n:r})=>e.length>=r?e:t.error(\"function.minArity\",{n:r})},maxArity:{method(e){return s(Number.isSafeInteger(e)&&e>=0,\"n must be a positive integer\"),this.$_addRule({name:\"maxArity\",args:{n:e}})},validate:(e,t,{n:r})=>e.length<=r?e:t.error(\"function.maxArity\",{n:r})}},messages:{\"function.arity\":\"{{#label}} must have an arity of {{#n}}\",\"function.class\":\"{{#label}} must be a class\",\"function.maxArity\":\"{{#label}} must have an arity lesser or equal to {{#n}}\",\"function.minArity\":\"{{#label}} must have an arity greater or equal to {{#n}}\"}})},7824:(e,t,r)=>{\"use strict\";const s=r(978),n=r(375),a=r(8571),i=r(3652),o=r(8068),l=r(8160),c=r(3292),u=r(6354),f=r(6133),m=r(3328),h={renameDefaults:{alias:!1,multiple:!1,override:!1}};e.exports=o.extend({type:\"_keys\",properties:{typeof:\"object\"},flags:{unknown:{default:!1}},terms:{dependencies:{init:null},keys:{init:null,manifest:{mapped:{from:\"schema\",to:\"key\"}}},patterns:{init:null},renames:{init:null}},args:(e,t)=>e.keys(t),validate(e,{schema:t,error:r,state:s,prefs:n}){if(!e||typeof e!==t.$_property(\"typeof\")||Array.isArray(e))return{value:e,errors:r(\"object.base\",{type:t.$_property(\"typeof\")})};if(!(t.$_terms.renames||t.$_terms.dependencies||t.$_terms.keys||t.$_terms.patterns||t.$_terms.externals))return;e=h.clone(e,n);const a=[];if(t.$_terms.renames&&!h.rename(t,e,s,n,a))return{value:e,errors:a};if(!t.$_terms.keys&&!t.$_terms.patterns&&!t.$_terms.dependencies)return{value:e,errors:a};const i=new Set(Object.keys(e));if(t.$_terms.keys){const r=[e,...s.ancestors];for(const o of t.$_terms.keys){const t=o.key,l=e[t];i.delete(t);const c=s.localize([...s.path,t],r,o),u=o.schema.$_validate(l,c,n);if(u.errors){if(n.abortEarly)return{value:e,errors:u.errors};void 0!==u.value&&(e[t]=u.value),a.push(...u.errors)}else\"strip\"===o.schema._flags.result||void 0===u.value&&void 0!==l?delete e[t]:void 0!==u.value&&(e[t]=u.value)}}if(i.size||t._flags._hasPatternMatch){const r=h.unknown(t,e,i,a,s,n);if(r)return r}if(t.$_terms.dependencies)for(const r of t.$_terms.dependencies){if(null!==r.key&&!1===h.isPresent(r.options)(r.key.resolve(e,s,n,null,{shadow:!1})))continue;const i=h.dependencies[r.rel](t,r,e,s,n);if(i){const r=t.$_createError(i.code,e,i.context,s,n);if(n.abortEarly)return{value:e,errors:r};a.push(r)}}return{value:e,errors:a}},rules:{and:{method(...e){return l.verifyFlat(e,\"and\"),h.dependency(this,\"and\",null,e)}},append:{method(e){return null==e||0===Object.keys(e).length?this:this.keys(e)}},assert:{method(e,t,r){m.isTemplate(e)||(e=c.ref(e)),n(void 0===r||\"string\"==typeof r,\"Message must be a string\"),t=this.$_compile(t,{appendPath:!0});const s=this.$_addRule({name:\"assert\",args:{subject:e,schema:t,message:r}});return s.$_mutateRegister(e),s.$_mutateRegister(t),s},validate(e,{error:t,prefs:r,state:s},{subject:n,schema:a,message:i}){const o=n.resolve(e,s,r),l=f.isRef(n)?n.absolute(s):[];return a.$_match(o,s.localize(l,[e,...s.ancestors],a),r)?e:t(\"object.assert\",{subject:n,message:i})},args:[\"subject\",\"schema\",\"message\"],multi:!0},instance:{method(e,t){return n(\"function\"==typeof e,\"constructor must be a function\"),t=t||e.name,this.$_addRule({name:\"instance\",args:{constructor:e,name:t}})},validate:(e,t,{constructor:r,name:s})=>e instanceof r?e:t.error(\"object.instance\",{type:s,value:e}),args:[\"constructor\",\"name\"]},keys:{method(e){n(void 0===e||\"object\"==typeof e,\"Object schema must be a valid object\"),n(!l.isSchema(e),\"Object schema cannot be a joi schema\");const t=this.clone();if(e)if(Object.keys(e).length){t.$_terms.keys=t.$_terms.keys?t.$_terms.keys.filter((t=>!e.hasOwnProperty(t.key))):new h.Keys;for(const r in e)l.tryWithPath((()=>t.$_terms.keys.push({key:r,schema:this.$_compile(e[r])})),r)}else t.$_terms.keys=new h.Keys;else t.$_terms.keys=null;return t.$_mutateRebuild()}},length:{method(e){return this.$_addRule({name:\"length\",args:{limit:e},operator:\"=\"})},validate:(e,t,{limit:r},{name:s,operator:n,args:a})=>l.compare(Object.keys(e).length,r,n)?e:t.error(\"object.\"+s,{limit:a.limit,value:e}),args:[{name:\"limit\",ref:!0,assert:l.limit,message:\"must be a positive integer\"}]},max:{method(e){return this.$_addRule({name:\"max\",method:\"length\",args:{limit:e},operator:\"<=\"})}},min:{method(e){return this.$_addRule({name:\"min\",method:\"length\",args:{limit:e},operator:\">=\"})}},nand:{method(...e){return l.verifyFlat(e,\"nand\"),h.dependency(this,\"nand\",null,e)}},or:{method(...e){return l.verifyFlat(e,\"or\"),h.dependency(this,\"or\",null,e)}},oxor:{method(...e){return h.dependency(this,\"oxor\",null,e)}},pattern:{method(e,t,r={}){const s=e instanceof RegExp;s||(e=this.$_compile(e,{appendPath:!0})),n(void 0!==t,\"Invalid rule\"),l.assertOptions(r,[\"fallthrough\",\"matches\"]),s&&n(!e.flags.includes(\"g\")&&!e.flags.includes(\"y\"),\"pattern should not use global or sticky mode\"),t=this.$_compile(t,{appendPath:!0});const a=this.clone();a.$_terms.patterns=a.$_terms.patterns||[];const i={[s?\"regex\":\"schema\"]:e,rule:t};return r.matches&&(i.matches=this.$_compile(r.matches),\"array\"!==i.matches.type&&(i.matches=i.matches.$_root.array().items(i.matches)),a.$_mutateRegister(i.matches),a.$_setFlag(\"_hasPatternMatch\",!0,{clone:!1})),r.fallthrough&&(i.fallthrough=!0),a.$_terms.patterns.push(i),a.$_mutateRegister(t),a}},ref:{method(){return this.$_addRule(\"ref\")},validate:(e,t)=>f.isRef(e)?e:t.error(\"object.refType\",{value:e})},regex:{method(){return this.$_addRule(\"regex\")},validate:(e,t)=>e instanceof RegExp?e:t.error(\"object.regex\",{value:e})},rename:{method(e,t,r={}){n(\"string\"==typeof e||e instanceof RegExp,\"Rename missing the from argument\"),n(\"string\"==typeof t||t instanceof m,\"Invalid rename to argument\"),n(t!==e,\"Cannot rename key to same name:\",e),l.assertOptions(r,[\"alias\",\"ignoreUndefined\",\"override\",\"multiple\"]);const a=this.clone();a.$_terms.renames=a.$_terms.renames||[];for(const t of a.$_terms.renames)n(t.from!==e,\"Cannot rename the same key multiple times\");return t instanceof m&&a.$_mutateRegister(t),a.$_terms.renames.push({from:e,to:t,options:s(h.renameDefaults,r)}),a}},schema:{method(e=\"any\"){return this.$_addRule({name:\"schema\",args:{type:e}})},validate:(e,t,{type:r})=>!l.isSchema(e)||\"any\"!==r&&e.type!==r?t.error(\"object.schema\",{type:r}):e},unknown:{method(e){return this.$_setFlag(\"unknown\",!1!==e)}},with:{method(e,t,r={}){return h.dependency(this,\"with\",e,t,r)}},without:{method(e,t,r={}){return h.dependency(this,\"without\",e,t,r)}},xor:{method(...e){return l.verifyFlat(e,\"xor\"),h.dependency(this,\"xor\",null,e)}}},overrides:{default(e,t){return void 0===e&&(e=l.symbols.deepDefault),this.$_parent(\"default\",e,t)}},rebuild(e){if(e.$_terms.keys){const t=new i.Sorter;for(const r of e.$_terms.keys)l.tryWithPath((()=>t.add(r,{after:r.schema.$_rootReferences(),group:r.key})),r.key);e.$_terms.keys=new h.Keys(...t.nodes)}},manifest:{build(e,t){if(t.keys&&(e=e.keys(t.keys)),t.dependencies)for(const{rel:r,key:s=null,peers:n,options:a}of t.dependencies)e=h.dependency(e,r,s,n,a);if(t.patterns)for(const{regex:r,schema:s,rule:n,fallthrough:a,matches:i}of t.patterns)e=e.pattern(r||s,n,{fallthrough:a,matches:i});if(t.renames)for(const{from:r,to:s,options:n}of t.renames)e=e.rename(r,s,n);return e}},messages:{\"object.and\":\"{{#label}} contains {{#presentWithLabels}} without its required peers {{#missingWithLabels}}\",\"object.assert\":'{{#label}} is invalid because {if(#subject.key, `\"` + #subject.key + `\" failed to ` + (#message || \"pass the assertion test\"), #message || \"the assertion failed\")}',\"object.base\":\"{{#label}} must be of type {{#type}}\",\"object.instance\":\"{{#label}} must be an instance of {{:#type}}\",\"object.length\":'{{#label}} must have {{#limit}} key{if(#limit == 1, \"\", \"s\")}',\"object.max\":'{{#label}} must have less than or equal to {{#limit}} key{if(#limit == 1, \"\", \"s\")}',\"object.min\":'{{#label}} must have at least {{#limit}} key{if(#limit == 1, \"\", \"s\")}',\"object.missing\":\"{{#label}} must contain at least one of {{#peersWithLabels}}\",\"object.nand\":\"{{:#mainWithLabel}} must not exist simultaneously with {{#peersWithLabels}}\",\"object.oxor\":\"{{#label}} contains a conflict between optional exclusive peers {{#peersWithLabels}}\",\"object.pattern.match\":\"{{#label}} keys failed to match pattern requirements\",\"object.refType\":\"{{#label}} must be a Joi reference\",\"object.regex\":\"{{#label}} must be a RegExp object\",\"object.rename.multiple\":\"{{#label}} cannot rename {{:#from}} because multiple renames are disabled and another key was already renamed to {{:#to}}\",\"object.rename.override\":\"{{#label}} cannot rename {{:#from}} because override is disabled and target {{:#to}} exists\",\"object.schema\":\"{{#label}} must be a Joi schema of {{#type}} type\",\"object.unknown\":\"{{#label}} is not allowed\",\"object.with\":\"{{:#mainWithLabel}} missing required peer {{:#peerWithLabel}}\",\"object.without\":\"{{:#mainWithLabel}} conflict with forbidden peer {{:#peerWithLabel}}\",\"object.xor\":\"{{#label}} contains a conflict between exclusive peers {{#peersWithLabels}}\"}}),h.clone=function(e,t){if(\"object\"==typeof e){if(t.nonEnumerables)return a(e,{shallow:!0});const r=Object.create(Object.getPrototypeOf(e));return Object.assign(r,e),r}const r=function(...t){return e.apply(this,t)};return r.prototype=a(e.prototype),Object.defineProperty(r,\"name\",{value:e.name,writable:!1}),Object.defineProperty(r,\"length\",{value:e.length,writable:!1}),Object.assign(r,e),r},h.dependency=function(e,t,r,s,a){n(null===r||\"string\"==typeof r,t,\"key must be a strings\"),a||(a=s.length>1&&\"object\"==typeof s[s.length-1]?s.pop():{}),l.assertOptions(a,[\"separator\",\"isPresent\"]),s=[].concat(s);const i=l.default(a.separator,\".\"),o=[];for(const e of s)n(\"string\"==typeof e,t,\"peers must be strings\"),o.push(c.ref(e,{separator:i,ancestor:0,prefix:!1}));null!==r&&(r=c.ref(r,{separator:i,ancestor:0,prefix:!1}));const u=e.clone();return u.$_terms.dependencies=u.$_terms.dependencies||[],u.$_terms.dependencies.push(new h.Dependency(t,r,o,s,a)),u},h.dependencies={and(e,t,r,s,n){const a=[],i=[],o=t.peers.length,l=h.isPresent(t.options);for(const e of t.peers)!1===l(e.resolve(r,s,n,null,{shadow:!1}))?a.push(e.key):i.push(e.key);if(a.length!==o&&i.length!==o)return{code:\"object.and\",context:{present:i,presentWithLabels:h.keysToLabels(e,i),missing:a,missingWithLabels:h.keysToLabels(e,a)}}},nand(e,t,r,s,n){const a=[],i=h.isPresent(t.options);for(const e of t.peers)i(e.resolve(r,s,n,null,{shadow:!1}))&&a.push(e.key);if(a.length!==t.peers.length)return;const o=t.paths[0],l=t.paths.slice(1);return{code:\"object.nand\",context:{main:o,mainWithLabel:h.keysToLabels(e,o),peers:l,peersWithLabels:h.keysToLabels(e,l)}}},or(e,t,r,s,n){const a=h.isPresent(t.options);for(const e of t.peers)if(a(e.resolve(r,s,n,null,{shadow:!1})))return;return{code:\"object.missing\",context:{peers:t.paths,peersWithLabels:h.keysToLabels(e,t.paths)}}},oxor(e,t,r,s,n){const a=[],i=h.isPresent(t.options);for(const e of t.peers)i(e.resolve(r,s,n,null,{shadow:!1}))&&a.push(e.key);if(!a.length||1===a.length)return;const o={peers:t.paths,peersWithLabels:h.keysToLabels(e,t.paths)};return o.present=a,o.presentWithLabels=h.keysToLabels(e,a),{code:\"object.oxor\",context:o}},with(e,t,r,s,n){const a=h.isPresent(t.options);for(const i of t.peers)if(!1===a(i.resolve(r,s,n,null,{shadow:!1})))return{code:\"object.with\",context:{main:t.key.key,mainWithLabel:h.keysToLabels(e,t.key.key),peer:i.key,peerWithLabel:h.keysToLabels(e,i.key)}}},without(e,t,r,s,n){const a=h.isPresent(t.options);for(const i of t.peers)if(a(i.resolve(r,s,n,null,{shadow:!1})))return{code:\"object.without\",context:{main:t.key.key,mainWithLabel:h.keysToLabels(e,t.key.key),peer:i.key,peerWithLabel:h.keysToLabels(e,i.key)}}},xor(e,t,r,s,n){const a=[],i=h.isPresent(t.options);for(const e of t.peers)i(e.resolve(r,s,n,null,{shadow:!1}))&&a.push(e.key);if(1===a.length)return;const o={peers:t.paths,peersWithLabels:h.keysToLabels(e,t.paths)};return 0===a.length?{code:\"object.missing\",context:o}:(o.present=a,o.presentWithLabels=h.keysToLabels(e,a),{code:\"object.xor\",context:o})}},h.keysToLabels=function(e,t){return Array.isArray(t)?t.map((t=>e.$_mapLabels(t))):e.$_mapLabels(t)},h.isPresent=function(e){return\"function\"==typeof e.isPresent?e.isPresent:e=>void 0!==e},h.rename=function(e,t,r,s,n){const a={};for(const i of e.$_terms.renames){const o=[],l=\"string\"!=typeof i.from;if(l)for(const e in t){if(void 0===t[e]&&i.options.ignoreUndefined)continue;if(e===i.to)continue;const r=i.from.exec(e);r&&o.push({from:e,to:i.to,match:r})}else!Object.prototype.hasOwnProperty.call(t,i.from)||void 0===t[i.from]&&i.options.ignoreUndefined||o.push(i);for(const c of o){const o=c.from;let u=c.to;if(u instanceof m&&(u=u.render(t,r,s,c.match)),o!==u){if(!i.options.multiple&&a[u]&&(n.push(e.$_createError(\"object.rename.multiple\",t,{from:o,to:u,pattern:l},r,s)),s.abortEarly))return!1;if(Object.prototype.hasOwnProperty.call(t,u)&&!i.options.override&&!a[u]&&(n.push(e.$_createError(\"object.rename.override\",t,{from:o,to:u,pattern:l},r,s)),s.abortEarly))return!1;void 0===t[o]?delete t[u]:t[u]=t[o],a[u]=!0,i.options.alias||delete t[o]}}}return!0},h.unknown=function(e,t,r,s,n,a){if(e.$_terms.patterns){let i=!1;const o=e.$_terms.patterns.map((e=>{if(e.matches)return i=!0,[]})),l=[t,...n.ancestors];for(const i of r){const c=t[i],u=[...n.path,i];for(let f=0;f{\"use strict\";const s=r(375),n=r(8068),a=r(8160),i=r(3292),o=r(6354),l={};e.exports=n.extend({type:\"link\",properties:{schemaChain:!0},terms:{link:{init:null,manifest:\"single\",register:!1}},args:(e,t)=>e.ref(t),validate(e,{schema:t,state:r,prefs:n}){s(t.$_terms.link,\"Uninitialized link schema\");const a=l.generate(t,e,r,n),i=t.$_terms.link[0].ref;return a.$_validate(e,r.nest(a,`link:${i.display}:${a.type}`),n)},generate:(e,t,r,s)=>l.generate(e,t,r,s),rules:{ref:{method(e){s(!this.$_terms.link,\"Cannot reinitialize schema\"),e=i.ref(e),s(\"value\"===e.type||\"local\"===e.type,\"Invalid reference type:\",e.type),s(\"local\"===e.type||\"root\"===e.ancestor||e.ancestor>0,\"Link cannot reference itself\");const t=this.clone();return t.$_terms.link=[{ref:e}],t}},relative:{method(e=!0){return this.$_setFlag(\"relative\",e)}}},overrides:{concat(e){s(this.$_terms.link,\"Uninitialized link schema\"),s(a.isSchema(e),\"Invalid schema object\"),s(\"link\"!==e.type,\"Cannot merge type link with another link\");const t=this.clone();return t.$_terms.whens||(t.$_terms.whens=[]),t.$_terms.whens.push({concat:e}),t.$_mutateRebuild()}},manifest:{build:(e,t)=>(s(t.link,\"Invalid link description missing link\"),e.ref(t.link))}}),l.generate=function(e,t,r,s){let n=r.mainstay.links.get(e);if(n)return n._generate(t,r,s).schema;const a=e.$_terms.link[0].ref,{perspective:i,path:o}=l.perspective(a,r);l.assert(i,\"which is outside of schema boundaries\",a,e,r,s);try{n=o.length?i.$_reach(o):i}catch(t){l.assert(!1,\"to non-existing schema\",a,e,r,s)}return l.assert(\"link\"!==n.type,\"which is another link\",a,e,r,s),e._flags.relative||r.mainstay.links.set(e,n),n._generate(t,r,s).schema},l.perspective=function(e,t){if(\"local\"===e.type){for(const{schema:r,key:s}of t.schemas){if((r._flags.id||s)===e.path[0])return{perspective:r,path:e.path.slice(1)};if(r.$_terms.shared)for(const t of r.$_terms.shared)if(t._flags.id===e.path[0])return{perspective:t,path:e.path.slice(1)}}return{perspective:null,path:null}}return\"root\"===e.ancestor?{perspective:t.schemas[t.schemas.length-1].schema,path:e.path}:{perspective:t.schemas[e.ancestor]&&t.schemas[e.ancestor].schema,path:e.path}},l.assert=function(e,t,r,n,a,i){e||s(!1,`\"${o.label(n._flags,a,i)}\" contains link reference \"${r.display}\" ${t}`)}},3832:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8068),a=r(8160),i={numberRx:/^\\s*[+-]?(?:(?:\\d+(?:\\.\\d*)?)|(?:\\.\\d+))(?:e([+-]?\\d+))?\\s*$/i,precisionRx:/(?:\\.(\\d+))?(?:[eE]([+-]?\\d+))?$/,exponentialPartRegex:/[eE][+-]?\\d+$/,leadingSignAndZerosRegex:/^[+-]?(0*)?/,dotRegex:/\\./,trailingZerosRegex:/0+$/,decimalPlaces(e){const t=e.toString(),r=t.indexOf(\".\"),s=t.indexOf(\"e\");return(r<0?0:(s<0?t.length:s)-r-1)+(s<0?0:Math.max(0,-parseInt(t.slice(s+1))))}};e.exports=n.extend({type:\"number\",flags:{unsafe:{default:!1}},coerce:{from:\"string\",method(e,{schema:t,error:r}){if(!e.match(i.numberRx))return;e=e.trim();const s={value:parseFloat(e)};if(0===s.value&&(s.value=0),!t._flags.unsafe)if(e.match(/e/i)){if(i.extractSignificantDigits(e)!==i.extractSignificantDigits(String(s.value)))return s.errors=r(\"number.unsafe\"),s}else{const t=s.value.toString();if(t.match(/e/i))return s;if(t!==i.normalizeDecimal(e))return s.errors=r(\"number.unsafe\"),s}return s}},validate(e,{schema:t,error:r,prefs:s}){if(e===1/0||e===-1/0)return{value:e,errors:r(\"number.infinity\")};if(!a.isNumber(e))return{value:e,errors:r(\"number.base\")};const n={value:e};if(s.convert){const e=t.$_getRule(\"precision\");if(e){const t=Math.pow(10,e.args.limit);n.value=Math.round(n.value*t)/t}}return 0===n.value&&(n.value=0),!t._flags.unsafe&&(e>Number.MAX_SAFE_INTEGER||ea.compare(e,r,n)?e:t.error(\"number.\"+s,{limit:i.limit,value:e}),args:[{name:\"limit\",ref:!0,assert:a.isNumber,message:\"must be a number\"}]},greater:{method(e){return this.$_addRule({name:\"greater\",method:\"compare\",args:{limit:e},operator:\">\"})}},integer:{method(){return this.$_addRule(\"integer\")},validate:(e,t)=>Math.trunc(e)-e==0?e:t.error(\"number.integer\")},less:{method(e){return this.$_addRule({name:\"less\",method:\"compare\",args:{limit:e},operator:\"<\"})}},max:{method(e){return this.$_addRule({name:\"max\",method:\"compare\",args:{limit:e},operator:\"<=\"})}},min:{method(e){return this.$_addRule({name:\"min\",method:\"compare\",args:{limit:e},operator:\">=\"})}},multiple:{method(e){const t=\"number\"==typeof e?i.decimalPlaces(e):null,r=Math.pow(10,t);return this.$_addRule({name:\"multiple\",args:{base:e,baseDecimalPlace:t,pfactor:r}})},validate:(e,t,{base:r,baseDecimalPlace:s,pfactor:n},a)=>i.decimalPlaces(e)>s?t.error(\"number.multiple\",{multiple:a.args.base,value:e}):Math.round(n*e)%Math.round(n*r)==0?e:t.error(\"number.multiple\",{multiple:a.args.base,value:e}),args:[{name:\"base\",ref:!0,assert:e=>\"number\"==typeof e&&isFinite(e)&&e>0,message:\"must be a positive number\"},\"baseDecimalPlace\",\"pfactor\"],multi:!0},negative:{method(){return this.sign(\"negative\")}},port:{method(){return this.$_addRule(\"port\")},validate:(e,t)=>Number.isSafeInteger(e)&&e>=0&&e<=65535?e:t.error(\"number.port\")},positive:{method(){return this.sign(\"positive\")}},precision:{method(e){return s(Number.isSafeInteger(e),\"limit must be an integer\"),this.$_addRule({name:\"precision\",args:{limit:e}})},validate(e,t,{limit:r}){const s=e.toString().match(i.precisionRx);return Math.max((s[1]?s[1].length:0)-(s[2]?parseInt(s[2],10):0),0)<=r?e:t.error(\"number.precision\",{limit:r,value:e})},convert:!0},sign:{method(e){return s([\"negative\",\"positive\"].includes(e),\"Invalid sign\",e),this.$_addRule({name:\"sign\",args:{sign:e}})},validate:(e,t,{sign:r})=>\"negative\"===r&&e<0||\"positive\"===r&&e>0?e:t.error(`number.${r}`)},unsafe:{method(e=!0){return s(\"boolean\"==typeof e,\"enabled must be a boolean\"),this.$_setFlag(\"unsafe\",e)}}},cast:{string:{from:e=>\"number\"==typeof e,to:(e,t)=>e.toString()}},messages:{\"number.base\":\"{{#label}} must be a number\",\"number.greater\":\"{{#label}} must be greater than {{#limit}}\",\"number.infinity\":\"{{#label}} cannot be infinity\",\"number.integer\":\"{{#label}} must be an integer\",\"number.less\":\"{{#label}} must be less than {{#limit}}\",\"number.max\":\"{{#label}} must be less than or equal to {{#limit}}\",\"number.min\":\"{{#label}} must be greater than or equal to {{#limit}}\",\"number.multiple\":\"{{#label}} must be a multiple of {{#multiple}}\",\"number.negative\":\"{{#label}} must be a negative number\",\"number.port\":\"{{#label}} must be a valid port\",\"number.positive\":\"{{#label}} must be a positive number\",\"number.precision\":\"{{#label}} must have no more than {{#limit}} decimal places\",\"number.unsafe\":\"{{#label}} must be a safe number\"}}),i.extractSignificantDigits=function(e){return e.replace(i.exponentialPartRegex,\"\").replace(i.dotRegex,\"\").replace(i.trailingZerosRegex,\"\").replace(i.leadingSignAndZerosRegex,\"\")},i.normalizeDecimal=function(e){return(e=e.replace(/^\\+/,\"\").replace(/\\.0*$/,\"\").replace(/^(-?)\\.([^\\.]*)$/,\"$10.$2\").replace(/^(-?)0+([0-9])/,\"$1$2\")).includes(\".\")&&e.endsWith(\"0\")&&(e=e.replace(/0+$/,\"\")),\"-0\"===e?\"0\":e}},8966:(e,t,r)=>{\"use strict\";const s=r(7824);e.exports=s.extend({type:\"object\",cast:{map:{from:e=>e&&\"object\"==typeof e,to:(e,t)=>new Map(Object.entries(e))}}})},7417:(e,t,r)=>{\"use strict\";const s=r(375),n=r(5380),a=r(1745),i=r(9959),o=r(6064),l=r(9926),c=r(5752),u=r(8068),f=r(8160),m={tlds:l instanceof Set&&{tlds:{allow:l,deny:null}},base64Regex:{true:{true:/^(?:[\\w\\-]{2}[\\w\\-]{2})*(?:[\\w\\-]{2}==|[\\w\\-]{3}=)?$/,false:/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}==|[A-Za-z0-9+\\/]{3}=)?$/},false:{true:/^(?:[\\w\\-]{2}[\\w\\-]{2})*(?:[\\w\\-]{2}(==)?|[\\w\\-]{3}=?)?$/,false:/^(?:[A-Za-z0-9+\\/]{2}[A-Za-z0-9+\\/]{2})*(?:[A-Za-z0-9+\\/]{2}(==)?|[A-Za-z0-9+\\/]{3}=?)?$/}},dataUriRegex:/^data:[\\w+.-]+\\/[\\w+.-]+;((charset=[\\w-]+|base64),)?(.*)$/,hexRegex:{withPrefix:/^0x[0-9a-f]+$/i,withOptionalPrefix:/^(?:0x)?[0-9a-f]+$/i,withoutPrefix:/^[0-9a-f]+$/i},ipRegex:i.regex({cidr:\"forbidden\"}).regex,isoDurationRegex:/^P(?!$)(\\d+Y)?(\\d+M)?(\\d+W)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+S)?)?$/,guidBrackets:{\"{\":\"}\",\"[\":\"]\",\"(\":\")\",\"\":\"\"},guidVersions:{uuidv1:\"1\",uuidv2:\"2\",uuidv3:\"3\",uuidv4:\"4\",uuidv5:\"5\",uuidv6:\"6\",uuidv7:\"7\",uuidv8:\"8\"},guidSeparators:new Set([void 0,!0,!1,\"-\",\":\"]),normalizationForms:[\"NFC\",\"NFD\",\"NFKC\",\"NFKD\"]};e.exports=u.extend({type:\"string\",flags:{insensitive:{default:!1},truncate:{default:!1}},terms:{replacements:{init:null}},coerce:{from:\"string\",method(e,{schema:t,state:r,prefs:s}){const n=t.$_getRule(\"normalize\");n&&(e=e.normalize(n.args.form));const a=t.$_getRule(\"case\");a&&(e=\"upper\"===a.args.direction?e.toLocaleUpperCase():e.toLocaleLowerCase());const i=t.$_getRule(\"trim\");if(i&&i.args.enabled&&(e=e.trim()),t.$_terms.replacements)for(const r of t.$_terms.replacements)e=e.replace(r.pattern,r.replacement);const o=t.$_getRule(\"hex\");if(o&&o.args.options.byteAligned&&e.length%2!=0&&(e=`0${e}`),t.$_getRule(\"isoDate\")){const t=m.isoDate(e);t&&(e=t)}if(t._flags.truncate){const n=t.$_getRule(\"max\");if(n){let a=n.args.limit;if(f.isResolvable(a)&&(a=a.resolve(e,r,s),!f.limit(a)))return{value:e,errors:t.$_createError(\"any.ref\",a,{ref:n.args.limit,arg:\"limit\",reason:\"must be a positive integer\"},r,s)};e=e.slice(0,a)}}return{value:e}}},validate(e,{schema:t,error:r}){if(\"string\"!=typeof e)return{value:e,errors:r(\"string.base\")};if(\"\"===e){const s=t.$_getRule(\"min\");if(s&&0===s.args.limit)return;return{value:e,errors:r(\"string.empty\")}}},rules:{alphanum:{method(){return this.$_addRule(\"alphanum\")},validate:(e,t)=>/^[a-zA-Z0-9]+$/.test(e)?e:t.error(\"string.alphanum\")},base64:{method(e={}){return f.assertOptions(e,[\"paddingRequired\",\"urlSafe\"]),e={urlSafe:!1,paddingRequired:!0,...e},s(\"boolean\"==typeof e.paddingRequired,\"paddingRequired must be boolean\"),s(\"boolean\"==typeof e.urlSafe,\"urlSafe must be boolean\"),this.$_addRule({name:\"base64\",args:{options:e}})},validate:(e,t,{options:r})=>m.base64Regex[r.paddingRequired][r.urlSafe].test(e)?e:t.error(\"string.base64\")},case:{method(e){return s([\"lower\",\"upper\"].includes(e),\"Invalid case:\",e),this.$_addRule({name:\"case\",args:{direction:e}})},validate:(e,t,{direction:r})=>\"lower\"===r&&e===e.toLocaleLowerCase()||\"upper\"===r&&e===e.toLocaleUpperCase()?e:t.error(`string.${r}case`),convert:!0},creditCard:{method(){return this.$_addRule(\"creditCard\")},validate(e,t){let r=e.length,s=0,n=1;for(;r--;){const t=e.charAt(r)*n;s+=t-9*(t>9),n^=3}return s>0&&s%10==0?e:t.error(\"string.creditCard\")}},dataUri:{method(e={}){return f.assertOptions(e,[\"paddingRequired\"]),e={paddingRequired:!0,...e},s(\"boolean\"==typeof e.paddingRequired,\"paddingRequired must be boolean\"),this.$_addRule({name:\"dataUri\",args:{options:e}})},validate(e,t,{options:r}){const s=e.match(m.dataUriRegex);if(s){if(!s[2])return e;if(\"base64\"!==s[2])return e;if(m.base64Regex[r.paddingRequired].false.test(s[3]))return e}return t.error(\"string.dataUri\")}},domain:{method(e){e&&f.assertOptions(e,[\"allowFullyQualified\",\"allowUnicode\",\"maxDomainSegments\",\"minDomainSegments\",\"tlds\"]);const t=m.addressOptions(e);return this.$_addRule({name:\"domain\",args:{options:e},address:t})},validate:(e,t,r,{address:s})=>n.isValid(e,s)?e:t.error(\"string.domain\")},email:{method(e={}){f.assertOptions(e,[\"allowFullyQualified\",\"allowUnicode\",\"ignoreLength\",\"maxDomainSegments\",\"minDomainSegments\",\"multiple\",\"separator\",\"tlds\"]),s(void 0===e.multiple||\"boolean\"==typeof e.multiple,\"multiple option must be an boolean\");const t=m.addressOptions(e),r=new RegExp(`\\\\s*[${e.separator?o(e.separator):\",\"}]\\\\s*`);return this.$_addRule({name:\"email\",args:{options:e},regex:r,address:t})},validate(e,t,{options:r},{regex:s,address:n}){const i=r.multiple?e.split(s):[e],o=[];for(const e of i)a.isValid(e,n)||o.push(e);return o.length?t.error(\"string.email\",{value:e,invalids:o}):e}},guid:{alias:\"uuid\",method(e={}){f.assertOptions(e,[\"version\",\"separator\"]);let t=\"\";if(e.version){const r=[].concat(e.version);s(r.length>=1,\"version must have at least 1 valid version specified\");const n=new Set;for(let e=0;e(\"optional\"===r.prefix?m.hexRegex.withOptionalPrefix:!0===r.prefix?m.hexRegex.withPrefix:m.hexRegex.withoutPrefix).test(e)?r.byteAligned&&e.length%2!=0?t.error(\"string.hexAlign\"):e:t.error(\"string.hex\")},hostname:{method(){return this.$_addRule(\"hostname\")},validate:(e,t)=>n.isValid(e,{minDomainSegments:1})||m.ipRegex.test(e)?e:t.error(\"string.hostname\")},insensitive:{method(){return this.$_setFlag(\"insensitive\",!0)}},ip:{method(e={}){f.assertOptions(e,[\"cidr\",\"version\"]);const{cidr:t,versions:r,regex:s}=i.regex(e),n=e.version?r:void 0;return this.$_addRule({name:\"ip\",args:{options:{cidr:t,version:n}},regex:s})},validate:(e,t,{options:r},{regex:s})=>s.test(e)?e:r.version?t.error(\"string.ipVersion\",{value:e,cidr:r.cidr,version:r.version}):t.error(\"string.ip\",{value:e,cidr:r.cidr})},isoDate:{method(){return this.$_addRule(\"isoDate\")},validate:(e,{error:t})=>m.isoDate(e)?e:t(\"string.isoDate\")},isoDuration:{method(){return this.$_addRule(\"isoDuration\")},validate:(e,t)=>m.isoDurationRegex.test(e)?e:t.error(\"string.isoDuration\")},length:{method(e,t){return m.length(this,\"length\",e,\"=\",t)},validate(e,t,{limit:r,encoding:s},{name:n,operator:a,args:i}){const o=!s&&e.length;return f.compare(o,r,a)?e:t.error(\"string.\"+n,{limit:i.limit,value:e,encoding:s})},args:[{name:\"limit\",ref:!0,assert:f.limit,message:\"must be a positive integer\"},\"encoding\"]},lowercase:{method(){return this.case(\"lower\")}},max:{method(e,t){return m.length(this,\"max\",e,\"<=\",t)},args:[\"limit\",\"encoding\"]},min:{method(e,t){return m.length(this,\"min\",e,\">=\",t)},args:[\"limit\",\"encoding\"]},normalize:{method(e=\"NFC\"){return s(m.normalizationForms.includes(e),\"normalization form must be one of \"+m.normalizationForms.join(\", \")),this.$_addRule({name:\"normalize\",args:{form:e}})},validate:(e,{error:t},{form:r})=>e===e.normalize(r)?e:t(\"string.normalize\",{value:e,form:r}),convert:!0},pattern:{alias:\"regex\",method(e,t={}){s(e instanceof RegExp,\"regex must be a RegExp\"),s(!e.flags.includes(\"g\")&&!e.flags.includes(\"y\"),\"regex should not use global or sticky mode\"),\"string\"==typeof t&&(t={name:t}),f.assertOptions(t,[\"invert\",\"name\"]);const r=[\"string.pattern\",t.invert?\".invert\":\"\",t.name?\".name\":\".base\"].join(\"\");return this.$_addRule({name:\"pattern\",args:{regex:e,options:t},errorCode:r})},validate:(e,t,{regex:r,options:s},{errorCode:n})=>r.test(e)^s.invert?e:t.error(n,{name:s.name,regex:r,value:e}),args:[\"regex\",\"options\"],multi:!0},replace:{method(e,t){\"string\"==typeof e&&(e=new RegExp(o(e),\"g\")),s(e instanceof RegExp,\"pattern must be a RegExp\"),s(\"string\"==typeof t,\"replacement must be a String\");const r=this.clone();return r.$_terms.replacements||(r.$_terms.replacements=[]),r.$_terms.replacements.push({pattern:e,replacement:t}),r}},token:{method(){return this.$_addRule(\"token\")},validate:(e,t)=>/^\\w+$/.test(e)?e:t.error(\"string.token\")},trim:{method(e=!0){return s(\"boolean\"==typeof e,\"enabled must be a boolean\"),this.$_addRule({name:\"trim\",args:{enabled:e}})},validate:(e,t,{enabled:r})=>r&&e!==e.trim()?t.error(\"string.trim\"):e,convert:!0},truncate:{method(e=!0){return s(\"boolean\"==typeof e,\"enabled must be a boolean\"),this.$_setFlag(\"truncate\",e)}},uppercase:{method(){return this.case(\"upper\")}},uri:{method(e={}){f.assertOptions(e,[\"allowRelative\",\"allowQuerySquareBrackets\",\"domain\",\"relativeOnly\",\"scheme\"]),e.domain&&f.assertOptions(e.domain,[\"allowFullyQualified\",\"allowUnicode\",\"maxDomainSegments\",\"minDomainSegments\",\"tlds\"]);const{regex:t,scheme:r}=c.regex(e),s=e.domain?m.addressOptions(e.domain):null;return this.$_addRule({name:\"uri\",args:{options:e},regex:t,domain:s,scheme:r})},validate(e,t,{options:r},{regex:s,domain:a,scheme:i}){if([\"http:/\",\"https:/\"].includes(e))return t.error(\"string.uri\");const o=s.exec(e);if(o){const s=o[1]||o[2];return!a||r.allowRelative&&!s||n.isValid(s,a)?e:t.error(\"string.domain\",{value:s})}return r.relativeOnly?t.error(\"string.uriRelativeOnly\"):r.scheme?t.error(\"string.uriCustomScheme\",{scheme:i,value:e}):t.error(\"string.uri\")}}},manifest:{build(e,t){if(t.replacements)for(const{pattern:r,replacement:s}of t.replacements)e=e.replace(r,s);return e}},messages:{\"string.alphanum\":\"{{#label}} must only contain alpha-numeric characters\",\"string.base\":\"{{#label}} must be a string\",\"string.base64\":\"{{#label}} must be a valid base64 string\",\"string.creditCard\":\"{{#label}} must be a credit card\",\"string.dataUri\":\"{{#label}} must be a valid dataUri string\",\"string.domain\":\"{{#label}} must contain a valid domain name\",\"string.email\":\"{{#label}} must be a valid email\",\"string.empty\":\"{{#label}} is not allowed to be empty\",\"string.guid\":\"{{#label}} must be a valid GUID\",\"string.hex\":\"{{#label}} must only contain hexadecimal characters\",\"string.hexAlign\":\"{{#label}} hex decoded representation must be byte aligned\",\"string.hostname\":\"{{#label}} must be a valid hostname\",\"string.ip\":\"{{#label}} must be a valid ip address with a {{#cidr}} CIDR\",\"string.ipVersion\":\"{{#label}} must be a valid ip address of one of the following versions {{#version}} with a {{#cidr}} CIDR\",\"string.isoDate\":\"{{#label}} must be in iso format\",\"string.isoDuration\":\"{{#label}} must be a valid ISO 8601 duration\",\"string.length\":\"{{#label}} length must be {{#limit}} characters long\",\"string.lowercase\":\"{{#label}} must only contain lowercase characters\",\"string.max\":\"{{#label}} length must be less than or equal to {{#limit}} characters long\",\"string.min\":\"{{#label}} length must be at least {{#limit}} characters long\",\"string.normalize\":\"{{#label}} must be unicode normalized in the {{#form}} form\",\"string.token\":\"{{#label}} must only contain alpha-numeric and underscore characters\",\"string.pattern.base\":\"{{#label}} with value {:[.]} fails to match the required pattern: {{#regex}}\",\"string.pattern.name\":\"{{#label}} with value {:[.]} fails to match the {{#name}} pattern\",\"string.pattern.invert.base\":\"{{#label}} with value {:[.]} matches the inverted pattern: {{#regex}}\",\"string.pattern.invert.name\":\"{{#label}} with value {:[.]} matches the inverted {{#name}} pattern\",\"string.trim\":\"{{#label}} must not have leading or trailing whitespace\",\"string.uri\":\"{{#label}} must be a valid uri\",\"string.uriCustomScheme\":\"{{#label}} must be a valid uri with a scheme matching the {{#scheme}} pattern\",\"string.uriRelativeOnly\":\"{{#label}} must be a valid relative uri\",\"string.uppercase\":\"{{#label}} must only contain uppercase characters\"}}),m.addressOptions=function(e){if(!e)return m.tlds||e;if(s(void 0===e.minDomainSegments||Number.isSafeInteger(e.minDomainSegments)&&e.minDomainSegments>0,\"minDomainSegments must be a positive integer\"),s(void 0===e.maxDomainSegments||Number.isSafeInteger(e.maxDomainSegments)&&e.maxDomainSegments>0,\"maxDomainSegments must be a positive integer\"),!1===e.tlds)return e;if(!0===e.tlds||void 0===e.tlds)return s(m.tlds,\"Built-in TLD list disabled\"),Object.assign({},e,m.tlds);s(\"object\"==typeof e.tlds,\"tlds must be true, false, or an object\");const t=e.tlds.deny;if(t)return Array.isArray(t)&&(e=Object.assign({},e,{tlds:{deny:new Set(t)}})),s(e.tlds.deny instanceof Set,\"tlds.deny must be an array, Set, or boolean\"),s(!e.tlds.allow,\"Cannot specify both tlds.allow and tlds.deny lists\"),m.validateTlds(e.tlds.deny,\"tlds.deny\"),e;const r=e.tlds.allow;return r?!0===r?(s(m.tlds,\"Built-in TLD list disabled\"),Object.assign({},e,m.tlds)):(Array.isArray(r)&&(e=Object.assign({},e,{tlds:{allow:new Set(r)}})),s(e.tlds.allow instanceof Set,\"tlds.allow must be an array, Set, or boolean\"),m.validateTlds(e.tlds.allow,\"tlds.allow\"),e):e},m.validateTlds=function(e,t){for(const r of e)s(n.isValid(r,{minDomainSegments:1,maxDomainSegments:1}),`${t} must contain valid top level domain names`)},m.isoDate=function(e){if(!f.isIsoDate(e))return null;/.*T.*[+-]\\d\\d$/.test(e)&&(e+=\"00\");const t=new Date(e);return isNaN(t.getTime())?null:t.toISOString()},m.length=function(e,t,r,n,a){return s(!a||!1,\"Invalid encoding:\",a),e.$_addRule({name:t,method:\"length\",args:{limit:r,encoding:a},operator:n})}},8826:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8068),a={};a.Map=class extends Map{slice(){return new a.Map(this)}},e.exports=n.extend({type:\"symbol\",terms:{map:{init:new a.Map}},coerce:{method(e,{schema:t,error:r}){const s=t.$_terms.map.get(e);return s&&(e=s),t._flags.only&&\"symbol\"!=typeof e?{value:e,errors:r(\"symbol.map\",{map:t.$_terms.map})}:{value:e}}},validate(e,{error:t}){if(\"symbol\"!=typeof e)return{value:e,errors:t(\"symbol.base\")}},rules:{map:{method(e){e&&!e[Symbol.iterator]&&\"object\"==typeof e&&(e=Object.entries(e)),s(e&&e[Symbol.iterator],\"Iterable must be an iterable or object\");const t=this.clone(),r=[];for(const n of e){s(n&&n[Symbol.iterator],\"Entry must be an iterable\");const[e,a]=n;s(\"object\"!=typeof e&&\"function\"!=typeof e&&\"symbol\"!=typeof e,\"Key must not be of type object, function, or Symbol\"),s(\"symbol\"==typeof a,\"Value must be a Symbol\"),t.$_terms.map.set(e,a),r.push(a)}return t.valid(...r)}}},manifest:{build:(e,t)=>(t.map&&(e=e.map(t.map)),e)},messages:{\"symbol.base\":\"{{#label}} must be a symbol\",\"symbol.map\":\"{{#label}} must be one of {{#map}}\"}})},8863:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(738),i=r(9621),o=r(8160),l=r(6354),c=r(493),u={result:Symbol(\"result\")};t.entry=function(e,t,r){let n=o.defaults;r&&(s(void 0===r.warnings,\"Cannot override warnings preference in synchronous validation\"),s(void 0===r.artifacts,\"Cannot override artifacts preference in synchronous validation\"),n=o.preferences(o.defaults,r));const a=u.entry(e,t,n);s(!a.mainstay.externals.length,\"Schema with external rules must use validateAsync()\");const i={value:a.value};return a.error&&(i.error=a.error),a.mainstay.warnings.length&&(i.warning=l.details(a.mainstay.warnings)),a.mainstay.debug&&(i.debug=a.mainstay.debug),a.mainstay.artifacts&&(i.artifacts=a.mainstay.artifacts),i},t.entryAsync=async function(e,t,r){let s=o.defaults;r&&(s=o.preferences(o.defaults,r));const n=u.entry(e,t,s),a=n.mainstay;if(n.error)throw a.debug&&(n.error.debug=a.debug),n.error;if(a.externals.length){let t=n.value;const c=[];for(const n of a.externals){const f=n.state.path,m=\"link\"===n.schema.type?a.links.get(n.schema):null;let h,d,p=t;const g=f.length?[t]:[],y=f.length?i(e,f):e;if(f.length){h=f[f.length-1];let e=t;for(const t of f.slice(0,-1))e=e[t],g.unshift(e);d=g[0],p=d[h]}try{const e=(e,t)=>(m||n.schema).$_createError(e,p,t,n.state,s),i=await n.method(p,{schema:n.schema,linked:m,state:n.state,prefs:r,original:y,error:e,errorsArray:u.errorsArray,warn:(e,t)=>a.warnings.push((m||n.schema).$_createError(e,p,t,n.state,s)),message:(e,t)=>(m||n.schema).$_createError(\"external\",p,t,n.state,s,{messages:e})});if(void 0===i||i===p)continue;if(i instanceof l.Report){if(a.tracer.log(n.schema,n.state,\"rule\",\"external\",\"error\"),c.push(i),s.abortEarly)break;continue}if(Array.isArray(i)&&i[o.symbols.errors]){if(a.tracer.log(n.schema,n.state,\"rule\",\"external\",\"error\"),c.push(...i),s.abortEarly)break;continue}d?(a.tracer.value(n.state,\"rule\",p,i,\"external\"),d[h]=i):(a.tracer.value(n.state,\"rule\",t,i,\"external\"),t=i)}catch(e){throw s.errors.label&&(e.message+=` (${n.label})`),e}}if(n.value=t,c.length)throw n.error=l.process(c,e,s),a.debug&&(n.error.debug=a.debug),n.error}if(!s.warnings&&!s.debug&&!s.artifacts)return n.value;const c={value:n.value};return a.warnings.length&&(c.warning=l.details(a.warnings)),a.debug&&(c.debug=a.debug),a.artifacts&&(c.artifacts=a.artifacts),c},u.Mainstay=class{constructor(e,t,r){this.externals=[],this.warnings=[],this.tracer=e,this.debug=t,this.links=r,this.shadow=null,this.artifacts=null,this._snapshots=[]}snapshot(){this._snapshots.push({externals:this.externals.slice(),warnings:this.warnings.slice()})}restore(){const e=this._snapshots.pop();this.externals=e.externals,this.warnings=e.warnings}commit(){this._snapshots.pop()}},u.entry=function(e,r,s){const{tracer:n,cleanup:a}=u.tracer(r,s),i=s.debug?[]:null,o=r._ids._schemaChain?new Map:null,f=new u.Mainstay(n,i,o),m=r._ids._schemaChain?[{schema:r}]:null,h=new c([],[],{mainstay:f,schemas:m}),d=t.validate(e,r,h,s);a&&r.$_root.untrace();const p=l.process(d.errors,e,s);return{value:d.value,error:p,mainstay:f}},u.tracer=function(e,t){return e.$_root._tracer?{tracer:e.$_root._tracer._register(e)}:t.debug?(s(e.$_root.trace,\"Debug mode not supported\"),{tracer:e.$_root.trace()._register(e),cleanup:!0}):{tracer:u.ignore}},t.validate=function(e,t,r,s,n={}){if(t.$_terms.whens&&(t=t._generate(e,r,s).schema),t._preferences&&(s=u.prefs(t,s)),t._cache&&s.cache){const s=t._cache.get(e);if(r.mainstay.tracer.debug(r,\"validate\",\"cached\",!!s),s)return s}const a=(n,a,i)=>t.$_createError(n,e,a,i||r,s),i={original:e,prefs:s,schema:t,state:r,error:a,errorsArray:u.errorsArray,warn:(e,t,s)=>r.mainstay.warnings.push(a(e,t,s)),message:(n,a)=>t.$_createError(\"custom\",e,a,r,s,{messages:n})};r.mainstay.tracer.entry(t,r);const l=t._definition;if(l.prepare&&void 0!==e&&s.convert){const t=l.prepare(e,i);if(t){if(r.mainstay.tracer.value(r,\"prepare\",e,t.value),t.errors)return u.finalize(t.value,[].concat(t.errors),i);e=t.value}}if(l.coerce&&void 0!==e&&s.convert&&(!l.coerce.from||l.coerce.from.includes(typeof e))){const t=l.coerce.method(e,i);if(t){if(r.mainstay.tracer.value(r,\"coerced\",e,t.value),t.errors)return u.finalize(t.value,[].concat(t.errors),i);e=t.value}}const c=t._flags.empty;c&&c.$_match(u.trim(e,t),r.nest(c),o.defaults)&&(r.mainstay.tracer.value(r,\"empty\",e,void 0),e=void 0);const f=n.presence||t._flags.presence||(t._flags._endedSwitch?null:s.presence);if(void 0===e){if(\"forbidden\"===f)return u.finalize(e,null,i);if(\"required\"===f)return u.finalize(e,[t.$_createError(\"any.required\",e,null,r,s)],i);if(\"optional\"===f){if(t._flags.default!==o.symbols.deepDefault)return u.finalize(e,null,i);r.mainstay.tracer.value(r,\"default\",e,{}),e={}}}else if(\"forbidden\"===f)return u.finalize(e,[t.$_createError(\"any.unknown\",e,null,r,s)],i);const m=[];if(t._valids){const n=t._valids.get(e,r,s,t._flags.insensitive);if(n)return s.convert&&(r.mainstay.tracer.value(r,\"valids\",e,n.value),e=n.value),r.mainstay.tracer.filter(t,r,\"valid\",n),u.finalize(e,null,i);if(t._flags.only){const n=t.$_createError(\"any.only\",e,{valids:t._valids.values({display:!0})},r,s);if(s.abortEarly)return u.finalize(e,[n],i);m.push(n)}}if(t._invalids){const n=t._invalids.get(e,r,s,t._flags.insensitive);if(n){r.mainstay.tracer.filter(t,r,\"invalid\",n);const a=t.$_createError(\"any.invalid\",e,{invalids:t._invalids.values({display:!0})},r,s);if(s.abortEarly)return u.finalize(e,[a],i);m.push(a)}}if(l.validate){const t=l.validate(e,i);if(t&&(r.mainstay.tracer.value(r,\"base\",e,t.value),e=t.value,t.errors)){if(!Array.isArray(t.errors))return m.push(t.errors),u.finalize(e,m,i);if(t.errors.length)return m.push(...t.errors),u.finalize(e,m,i)}}return t._rules.length?u.rules(e,m,i):u.finalize(e,m,i)},u.rules=function(e,t,r){const{schema:s,state:n,prefs:a}=r;for(const i of s._rules){const l=s._definition.rules[i.method];if(l.convert&&a.convert){n.mainstay.tracer.log(s,n,\"rule\",i.name,\"full\");continue}let c,f=i.args;if(i._resolve.length){f=Object.assign({},f);for(const t of i._resolve){const r=l.argsByName.get(t),i=f[t].resolve(e,n,a),u=r.normalize?r.normalize(i):i,m=o.validateArg(u,null,r);if(m){c=s.$_createError(\"any.ref\",i,{arg:t,ref:f[t],reason:m},n,a);break}f[t]=u}}c=c||l.validate(e,r,f,i);const m=u.rule(c,i);if(m.errors){if(n.mainstay.tracer.log(s,n,\"rule\",i.name,\"error\"),i.warn){n.mainstay.warnings.push(...m.errors);continue}if(a.abortEarly)return u.finalize(e,m.errors,r);t.push(...m.errors)}else n.mainstay.tracer.log(s,n,\"rule\",i.name,\"pass\"),n.mainstay.tracer.value(n,\"rule\",e,m.value,i.name),e=m.value}return u.finalize(e,t,r)},u.rule=function(e,t){return e instanceof l.Report?(u.error(e,t),{errors:[e],value:null}):Array.isArray(e)&&e[o.symbols.errors]?(e.forEach((e=>u.error(e,t))),{errors:e,value:null}):{errors:null,value:e}},u.error=function(e,t){return t.message&&e._setTemplate(t.message),e},u.finalize=function(e,t,r){t=t||[];const{schema:n,state:a,prefs:i}=r;if(t.length){const s=u.default(\"failover\",void 0,t,r);void 0!==s&&(a.mainstay.tracer.value(a,\"failover\",e,s),e=s,t=[])}if(t.length&&n._flags.error)if(\"function\"==typeof n._flags.error){t=n._flags.error(t),Array.isArray(t)||(t=[t]);for(const e of t)s(e instanceof Error||e instanceof l.Report,\"error() must return an Error object\")}else t=[n._flags.error];if(void 0===e){const s=u.default(\"default\",e,t,r);a.mainstay.tracer.value(a,\"default\",e,s),e=s}if(n._flags.cast&&void 0!==e){const t=n._definition.cast[n._flags.cast];if(t.from(e)){const s=t.to(e,r);a.mainstay.tracer.value(a,\"cast\",e,s,n._flags.cast),e=s}}if(n.$_terms.externals&&i.externals&&!1!==i._externals)for(const{method:e}of n.$_terms.externals)a.mainstay.externals.push({method:e,schema:n,state:a,label:l.label(n._flags,a,i)});const o={value:e,errors:t.length?t:null};return n._flags.result&&(o.value=\"strip\"===n._flags.result?void 0:r.original,a.mainstay.tracer.value(a,n._flags.result,e,o.value),a.shadow(e,n._flags.result)),n._cache&&!1!==i.cache&&!n._refs.length&&n._cache.set(r.original,o),void 0===e||o.errors||void 0===n._flags.artifact||(a.mainstay.artifacts=a.mainstay.artifacts||new Map,a.mainstay.artifacts.has(n._flags.artifact)||a.mainstay.artifacts.set(n._flags.artifact,[]),a.mainstay.artifacts.get(n._flags.artifact).push(a.path)),o},u.prefs=function(e,t){const r=t===o.defaults;return r&&e._preferences[o.symbols.prefs]?e._preferences[o.symbols.prefs]:(t=o.preferences(t,e._preferences),r&&(e._preferences[o.symbols.prefs]=t),t)},u.default=function(e,t,r,s){const{schema:a,state:i,prefs:l}=s,c=a._flags[e];if(l.noDefaults||void 0===c)return t;if(i.mainstay.tracer.log(a,i,\"rule\",e,\"full\"),!c)return c;if(\"function\"==typeof c){const t=c.length?[n(i.ancestors[0]),s]:[];try{return c(...t)}catch(t){return void r.push(a.$_createError(`any.${e}`,null,{error:t},i,l))}}return\"object\"!=typeof c?c:c[o.symbols.literal]?c.literal:o.isResolvable(c)?c.resolve(t,i,l):n(c)},u.trim=function(e,t){if(\"string\"!=typeof e)return e;const r=t.$_getRule(\"trim\");return r&&r.args.enabled?e.trim():e},u.ignore={active:!1,debug:a,entry:a,filter:a,log:a,resolve:a,value:a},u.errorsArray=function(){const e=[];return e[o.symbols.errors]=!0,e}},2036:(e,t,r)=>{\"use strict\";const s=r(375),n=r(9474),a=r(8160),i={};e.exports=i.Values=class{constructor(e,t){this._values=new Set(e),this._refs=new Set(t),this._lowercase=i.lowercases(e),this._override=!1}get length(){return this._values.size+this._refs.size}add(e,t){a.isResolvable(e)?this._refs.has(e)||(this._refs.add(e),t&&t.register(e)):this.has(e,null,null,!1)||(this._values.add(e),\"string\"==typeof e&&this._lowercase.set(e.toLowerCase(),e))}static merge(e,t,r){if(e=e||new i.Values,t){if(t._override)return t.clone();for(const r of[...t._values,...t._refs])e.add(r)}if(r)for(const t of[...r._values,...r._refs])e.remove(t);return e.length?e:null}remove(e){a.isResolvable(e)?this._refs.delete(e):(this._values.delete(e),\"string\"==typeof e&&this._lowercase.delete(e.toLowerCase()))}has(e,t,r,s){return!!this.get(e,t,r,s)}get(e,t,r,s){if(!this.length)return!1;if(this._values.has(e))return{value:e};if(\"string\"==typeof e&&e&&s){const t=this._lowercase.get(e.toLowerCase());if(t)return{value:t}}if(!this._refs.size&&\"object\"!=typeof e)return!1;if(\"object\"==typeof e)for(const t of this._values)if(n(t,e))return{value:t};if(t)for(const a of this._refs){const i=a.resolve(e,t,r,null,{in:!0});if(void 0===i)continue;const o=a.in&&\"object\"==typeof i?Array.isArray(i)?i:Object.keys(i):[i];for(const t of o)if(typeof t==typeof e)if(s&&e&&\"string\"==typeof e){if(t.toLowerCase()===e.toLowerCase())return{value:t,ref:a}}else if(n(t,e))return{value:t,ref:a}}return!1}override(){this._override=!0}values(e){if(e&&e.display){const e=[];for(const t of[...this._values,...this._refs])void 0!==t&&e.push(t);return e}return Array.from([...this._values,...this._refs])}clone(){const e=new i.Values(this._values,this._refs);return e._override=this._override,e}concat(e){s(!e._override,\"Cannot concat override set of values\");const t=new i.Values([...this._values,...e._values],[...this._refs,...e._refs]);return t._override=this._override,t}describe(){const e=[];this._override&&e.push({override:!0});for(const t of this._values.values())e.push(t&&\"object\"==typeof t?{value:t}:t);for(const t of this._refs.values())e.push(t.describe());return e}},i.Values.prototype[a.symbols.values]=!0,i.Values.prototype.slice=i.Values.prototype.clone,i.lowercases=function(e){const t=new Map;if(e)for(const r of e)\"string\"==typeof r&&t.set(r.toLowerCase(),r);return t}},978:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(1687),i=r(9621),o={};e.exports=function(e,t,r={}){if(s(e&&\"object\"==typeof e,\"Invalid defaults value: must be an object\"),s(!t||!0===t||\"object\"==typeof t,\"Invalid source value: must be true, falsy or an object\"),s(\"object\"==typeof r,\"Invalid options: must be an object\"),!t)return null;if(r.shallow)return o.applyToDefaultsWithShallow(e,t,r);const i=n(e);if(!0===t)return i;const l=void 0!==r.nullOverride&&r.nullOverride;return a(i,t,{nullOverride:l,mergeArrays:!1})},o.applyToDefaultsWithShallow=function(e,t,r){const l=r.shallow;s(Array.isArray(l),\"Invalid keys\");const c=new Map,u=!0===t?null:new Set;for(let r of l){r=Array.isArray(r)?r:r.split(\".\");const s=i(e,r);s&&\"object\"==typeof s?c.set(s,u&&i(t,r)||s):u&&u.add(r)}const f=n(e,{},c);if(!u)return f;for(const e of u)o.reachCopy(f,t,e);const m=void 0!==r.nullOverride&&r.nullOverride;return a(f,t,{nullOverride:m,mergeArrays:!1})},o.reachCopy=function(e,t,r){for(const e of r){if(!(e in t))return;const r=t[e];if(\"object\"!=typeof r||null===r)return;t=r}const s=t;let n=e;for(let e=0;e{\"use strict\";const s=r(7916);e.exports=function(e,...t){if(!e){if(1===t.length&&t[0]instanceof Error)throw t[0];throw new s(t)}}},8571:(e,t,r)=>{\"use strict\";const s=r(9621),n=r(4277),a=r(7043),i={needsProtoHack:new Set([n.set,n.map,n.weakSet,n.weakMap])};e.exports=i.clone=function(e,t={},r=null){if(\"object\"!=typeof e||null===e)return e;let s=i.clone,o=r;if(t.shallow){if(!0!==t.shallow)return i.cloneWithShallow(e,t);s=e=>e}else if(o){const t=o.get(e);if(t)return t}else o=new Map;const l=n.getInternalProto(e);if(l===n.buffer)return!1;if(l===n.date)return new Date(e.getTime());if(l===n.regex)return new RegExp(e);const c=i.base(e,l,t);if(c===e)return e;if(o&&o.set(e,c),l===n.set)for(const r of e)c.add(s(r,t,o));else if(l===n.map)for(const[r,n]of e)c.set(r,s(n,t,o));const u=a.keys(e,t);for(const r of u){if(\"__proto__\"===r)continue;if(l===n.array&&\"length\"===r){c.length=e.length;continue}const a=Object.getOwnPropertyDescriptor(e,r);a?a.get||a.set?Object.defineProperty(c,r,a):a.enumerable?c[r]=s(e[r],t,o):Object.defineProperty(c,r,{enumerable:!1,writable:!0,configurable:!0,value:s(e[r],t,o)}):Object.defineProperty(c,r,{enumerable:!0,writable:!0,configurable:!0,value:s(e[r],t,o)})}return c},i.cloneWithShallow=function(e,t){const r=t.shallow;(t=Object.assign({},t)).shallow=!1;const n=new Map;for(const t of r){const r=s(e,t);\"object\"!=typeof r&&\"function\"!=typeof r||n.set(r,r)}return i.clone(e,t,n)},i.base=function(e,t,r){if(!1===r.prototype)return i.needsProtoHack.has(t)?new t.constructor:t===n.array?[]:{};const s=Object.getPrototypeOf(e);if(s&&s.isImmutable)return e;if(t===n.array){const e=[];return s!==t&&Object.setPrototypeOf(e,s),e}if(i.needsProtoHack.has(t)){const e=new s.constructor;return s!==t&&Object.setPrototypeOf(e,s),e}return Object.create(s)}},9474:(e,t,r)=>{\"use strict\";const s=r(4277),n={mismatched:null};e.exports=function(e,t,r){return r=Object.assign({prototype:!0},r),!!n.isDeepEqual(e,t,r,[])},n.isDeepEqual=function(e,t,r,a){if(e===t)return 0!==e||1/e==1/t;const i=typeof e;if(i!==typeof t)return!1;if(null===e||null===t)return!1;if(\"function\"===i){if(!r.deepFunction||e.toString()!==t.toString())return!1}else if(\"object\"!==i)return e!=e&&t!=t;const o=n.getSharedType(e,t,!!r.prototype);switch(o){case s.buffer:return!1;case s.promise:return e===t;case s.regex:return e.toString()===t.toString();case n.mismatched:return!1}for(let r=a.length-1;r>=0;--r)if(a[r].isSame(e,t))return!0;a.push(new n.SeenEntry(e,t));try{return!!n.isDeepEqualObj(o,e,t,r,a)}finally{a.pop()}},n.getSharedType=function(e,t,r){if(r)return Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?n.mismatched:s.getInternalProto(e);const a=s.getInternalProto(e);return a!==s.getInternalProto(t)?n.mismatched:a},n.valueOf=function(e){const t=e.valueOf;if(void 0===t)return e;try{return t.call(e)}catch(e){return e}},n.hasOwnEnumerableProperty=function(e,t){return Object.prototype.propertyIsEnumerable.call(e,t)},n.isSetSimpleEqual=function(e,t){for(const r of Set.prototype.values.call(e))if(!Set.prototype.has.call(t,r))return!1;return!0},n.isDeepEqualObj=function(e,t,r,a,i){const{isDeepEqual:o,valueOf:l,hasOwnEnumerableProperty:c}=n,{keys:u,getOwnPropertySymbols:f}=Object;if(e===s.array){if(!a.part){if(t.length!==r.length)return!1;for(let e=0;e{\"use strict\";const s=r(8761);e.exports=class extends Error{constructor(e){super(e.filter((e=>\"\"!==e)).map((e=>\"string\"==typeof e?e:e instanceof Error?e.message:s(e))).join(\" \")||\"Unknown error\"),\"function\"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,t.assert)}}},5277:e=>{\"use strict\";const t={};e.exports=function(e){if(!e)return\"\";let r=\"\";for(let s=0;s=256?\"&#\"+e+\";\":`&#x${e.toString(16).padStart(2,\"0\")};`)},t.isSafe=function(e){return t.safeCharCodes.has(e)},t.namedHtml=new Map([[38,\"&\"],[60,\"<\"],[62,\">\"],[34,\""\"],[160,\" \"],[162,\"¢\"],[163,\"£\"],[164,\"¤\"],[169,\"©\"],[174,\"®\"]]),t.safeCharCodes=function(){const e=new Set;for(let t=32;t<123;++t)(t>=97||t>=65&&t<=90||t>=48&&t<=57||32===t||46===t||44===t||45===t||58===t||95===t)&&e.add(t);return e}()},6064:e=>{\"use strict\";e.exports=function(e){return e.replace(/[\\^\\$\\.\\*\\+\\-\\?\\=\\!\\:\\|\\\\\\/\\(\\)\\[\\]\\{\\}\\,]/g,\"\\\\$&\")}},738:e=>{\"use strict\";e.exports=function(){}},1687:(e,t,r)=>{\"use strict\";const s=r(375),n=r(8571),a=r(7043),i={};e.exports=i.merge=function(e,t,r){if(s(e&&\"object\"==typeof e,\"Invalid target value: must be an object\"),s(null==t||\"object\"==typeof t,\"Invalid source value: must be null, undefined, or an object\"),!t)return e;if(r=Object.assign({nullOverride:!0,mergeArrays:!0},r),Array.isArray(t)){s(Array.isArray(e),\"Cannot merge array onto an object\"),r.mergeArrays||(e.length=0);for(let s=0;s{\"use strict\";const s=r(375),n={};e.exports=function(e,t,r){if(!1===t||null==t)return e;\"string\"==typeof(r=r||{})&&(r={separator:r});const a=Array.isArray(t);s(!a||!r.separator,\"Separator option is not valid for array-based chain\");const i=a?t:t.split(r.separator||\".\");let o=e;for(let e=0;e{\"use strict\";e.exports=function(...e){try{return JSON.stringify(...e)}catch(e){return\"[Cannot display object: \"+e.message+\"]\"}}},4277:(e,t)=>{\"use strict\";const r={};t=e.exports={array:Array.prototype,buffer:!1,date:Date.prototype,error:Error.prototype,generic:Object.prototype,map:Map.prototype,promise:Promise.prototype,regex:RegExp.prototype,set:Set.prototype,weakMap:WeakMap.prototype,weakSet:WeakSet.prototype},r.typeMap=new Map([[\"[object Error]\",t.error],[\"[object Map]\",t.map],[\"[object Promise]\",t.promise],[\"[object Set]\",t.set],[\"[object WeakMap]\",t.weakMap],[\"[object WeakSet]\",t.weakSet]]),t.getInternalProto=function(e){if(Array.isArray(e))return t.array;if(e instanceof Date)return t.date;if(e instanceof RegExp)return t.regex;if(e instanceof Error)return t.error;const s=Object.prototype.toString.call(e);return r.typeMap.get(s)||t.generic}},7043:(e,t)=>{\"use strict\";t.keys=function(e,t={}){return!1!==t.symbols?Reflect.ownKeys(e):Object.getOwnPropertyNames(e)}},3652:(e,t,r)=>{\"use strict\";const s=r(375),n={};t.Sorter=class{constructor(){this._items=[],this.nodes=[]}add(e,t){const r=[].concat((t=t||{}).before||[]),n=[].concat(t.after||[]),a=t.group||\"?\",i=t.sort||0;s(!r.includes(a),`Item cannot come before itself: ${a}`),s(!r.includes(\"?\"),\"Item cannot come before unassociated items\"),s(!n.includes(a),`Item cannot come after itself: ${a}`),s(!n.includes(\"?\"),\"Item cannot come after unassociated items\"),Array.isArray(e)||(e=[e]);for(const t of e){const e={seq:this._items.length,sort:i,before:r,after:n,group:a,node:t};this._items.push(e)}if(!t.manual){const e=this._sort();s(e,\"item\",\"?\"!==a?`added into group ${a}`:\"\",\"created a dependencies error\")}return this.nodes}merge(e){Array.isArray(e)||(e=[e]);for(const t of e)if(t)for(const e of t._items)this._items.push(Object.assign({},e));this._items.sort(n.mergeSort);for(let e=0;ee.sort===t.sort?0:e.sort{\"use strict\";const s=r(443),n=r(2178),a={minDomainSegments:2,nonAsciiRx:/[^\\x00-\\x7f]/,domainControlRx:/[\\x00-\\x20@\\:\\/\\\\#!\\$&\\'\\(\\)\\*\\+,;=\\?]/,tldSegmentRx:/^[a-zA-Z](?:[a-zA-Z0-9\\-]*[a-zA-Z0-9])?$/,domainSegmentRx:/^[a-zA-Z0-9](?:[a-zA-Z0-9\\-]*[a-zA-Z0-9])?$/,URL:s.URL||URL};t.analyze=function(e,t={}){if(!e)return n.code(\"DOMAIN_NON_EMPTY_STRING\");if(\"string\"!=typeof e)throw new Error(\"Invalid input: domain must be a string\");if(e.length>256)return n.code(\"DOMAIN_TOO_LONG\");if(a.nonAsciiRx.test(e)){if(!1===t.allowUnicode)return n.code(\"DOMAIN_INVALID_UNICODE_CHARS\");e=e.normalize(\"NFC\")}if(a.domainControlRx.test(e))return n.code(\"DOMAIN_INVALID_CHARS\");e=a.punycode(e),t.allowFullyQualified&&\".\"===e[e.length-1]&&(e=e.slice(0,-1));const r=t.minDomainSegments||a.minDomainSegments,s=e.split(\".\");if(s.lengtht.maxDomainSegments)return n.code(\"DOMAIN_SEGMENTS_COUNT_MAX\");const i=t.tlds;if(i){const e=s[s.length-1].toLowerCase();if(i.deny&&i.deny.has(e)||i.allow&&!i.allow.has(e))return n.code(\"DOMAIN_FORBIDDEN_TLDS\")}for(let e=0;e63)return n.code(\"DOMAIN_LONG_SEGMENT\");if(e{\"use strict\";const s=r(9848),n=r(5380),a=r(2178),i={nonAsciiRx:/[^\\x00-\\x7f]/,encoder:new(s.TextEncoder||TextEncoder)};t.analyze=function(e,t){return i.email(e,t)},t.isValid=function(e,t){return!i.email(e,t)},i.email=function(e,t={}){if(\"string\"!=typeof e)throw new Error(\"Invalid input: email must be a string\");if(!e)return a.code(\"EMPTY_STRING\");const r=!i.nonAsciiRx.test(e);if(!r){if(!1===t.allowUnicode)return a.code(\"FORBIDDEN_UNICODE\");e=e.normalize(\"NFC\")}const s=e.split(\"@\");if(2!==s.length)return s.length>2?a.code(\"MULTIPLE_AT_CHAR\"):a.code(\"MISSING_AT_CHAR\");const[o,l]=s;if(!o)return a.code(\"EMPTY_LOCAL\");if(!t.ignoreLength){if(e.length>254)return a.code(\"ADDRESS_TOO_LONG\");if(i.encoder.encode(o).length>64)return a.code(\"LOCAL_TOO_LONG\")}return i.local(o,r)||n.analyze(l,t)},i.local=function(e,t){const r=e.split(\".\");for(const e of r){if(!e.length)return a.code(\"EMPTY_LOCAL_SEGMENT\");if(t){if(!i.atextRx.test(e))return a.code(\"INVALID_LOCAL_CHARS\")}else for(const t of e){if(i.atextRx.test(t))continue;const e=i.binary(t);if(!i.atomRx.test(e))return a.code(\"INVALID_LOCAL_CHARS\")}}},i.binary=function(e){return Array.from(i.encoder.encode(e)).map((e=>String.fromCharCode(e))).join(\"\")},i.atextRx=/^[\\w!#\\$%&'\\*\\+\\-/=\\?\\^`\\{\\|\\}~]+$/,i.atomRx=new RegExp([\"(?:[\\\\xc2-\\\\xdf][\\\\x80-\\\\xbf])\",\"(?:\\\\xe0[\\\\xa0-\\\\xbf][\\\\x80-\\\\xbf])|(?:[\\\\xe1-\\\\xec][\\\\x80-\\\\xbf]{2})|(?:\\\\xed[\\\\x80-\\\\x9f][\\\\x80-\\\\xbf])|(?:[\\\\xee-\\\\xef][\\\\x80-\\\\xbf]{2})\",\"(?:\\\\xf0[\\\\x90-\\\\xbf][\\\\x80-\\\\xbf]{2})|(?:[\\\\xf1-\\\\xf3][\\\\x80-\\\\xbf]{3})|(?:\\\\xf4[\\\\x80-\\\\x8f][\\\\x80-\\\\xbf]{2})\"].join(\"|\"))},2178:(e,t)=>{\"use strict\";t.codes={EMPTY_STRING:\"Address must be a non-empty string\",FORBIDDEN_UNICODE:\"Address contains forbidden Unicode characters\",MULTIPLE_AT_CHAR:\"Address cannot contain more than one @ character\",MISSING_AT_CHAR:\"Address must contain one @ character\",EMPTY_LOCAL:\"Address local part cannot be empty\",ADDRESS_TOO_LONG:\"Address too long\",LOCAL_TOO_LONG:\"Address local part too long\",EMPTY_LOCAL_SEGMENT:\"Address local part contains empty dot-separated segment\",INVALID_LOCAL_CHARS:\"Address local part contains invalid character\",DOMAIN_NON_EMPTY_STRING:\"Domain must be a non-empty string\",DOMAIN_TOO_LONG:\"Domain too long\",DOMAIN_INVALID_UNICODE_CHARS:\"Domain contains forbidden Unicode characters\",DOMAIN_INVALID_CHARS:\"Domain contains invalid character\",DOMAIN_INVALID_TLDS_CHARS:\"Domain contains invalid tld character\",DOMAIN_SEGMENTS_COUNT:\"Domain lacks the minimum required number of segments\",DOMAIN_SEGMENTS_COUNT_MAX:\"Domain contains too many segments\",DOMAIN_FORBIDDEN_TLDS:\"Domain uses forbidden TLD\",DOMAIN_EMPTY_SEGMENT:\"Domain contains empty dot-separated segment\",DOMAIN_LONG_SEGMENT:\"Domain contains dot-separated segment that is too long\"},t.code=function(e){return{code:e,error:t.codes[e]}}},9959:(e,t,r)=>{\"use strict\";const s=r(375),n=r(5752);t.regex=function(e={}){s(void 0===e.cidr||\"string\"==typeof e.cidr,\"options.cidr must be a string\");const t=e.cidr?e.cidr.toLowerCase():\"optional\";s([\"required\",\"optional\",\"forbidden\"].includes(t),\"options.cidr must be one of required, optional, forbidden\"),s(void 0===e.version||\"string\"==typeof e.version||Array.isArray(e.version),\"options.version must be a string or an array of string\");let r=e.version||[\"ipv4\",\"ipv6\",\"ipvfuture\"];Array.isArray(r)||(r=[r]),s(r.length>=1,\"options.version must have at least 1 version specified\");for(let e=0;e{if(\"forbidden\"===t)return n.ip[e];const r=`\\\\/${\"ipv4\"===e?n.ip.v4Cidr:n.ip.v6Cidr}`;return\"required\"===t?`${n.ip[e]}${r}`:`${n.ip[e]}(?:${r})?`})).join(\"|\")})`,i=new RegExp(`^${a}$`);return{cidr:t,versions:r,regex:i,raw:a}}},5752:(e,t,r)=>{\"use strict\";const s=r(375),n=r(6064),a={generate:function(){const e={},t=\"\\\\dA-Fa-f\",r=\"[\"+t+\"]\",s=\"\\\\w-\\\\.~\",n=\"!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=\",a=\"%\"+t,i=s+a+n+\":@\",o=\"[\"+i+\"]\",l=\"(?:0{0,2}\\\\d|0?[1-9]\\\\d|1\\\\d\\\\d|2[0-4]\\\\d|25[0-5])\";e.ipv4address=\"(?:\"+l+\"\\\\.){3}\"+l;const c=r+\"{1,4}\",u=\"(?:\"+c+\":\"+c+\"|\"+e.ipv4address+\")\",f=\"(?:\"+c+\":){6}\"+u,m=\"::(?:\"+c+\":){5}\"+u,h=\"(?:\"+c+\")?::(?:\"+c+\":){4}\"+u,d=\"(?:(?:\"+c+\":){0,1}\"+c+\")?::(?:\"+c+\":){3}\"+u,p=\"(?:(?:\"+c+\":){0,2}\"+c+\")?::(?:\"+c+\":){2}\"+u,g=\"(?:(?:\"+c+\":){0,3}\"+c+\")?::\"+c+\":\"+u,y=\"(?:(?:\"+c+\":){0,4}\"+c+\")?::\"+u,b=\"(?:(?:\"+c+\":){0,5}\"+c+\")?::\"+c,v=\"(?:(?:\"+c+\":){0,6}\"+c+\")?::\";e.ipv4Cidr=\"(?:\\\\d|[1-2]\\\\d|3[0-2])\",e.ipv6Cidr=\"(?:0{0,2}\\\\d|0?[1-9]\\\\d|1[01]\\\\d|12[0-8])\",e.ipv6address=\"(?:\"+f+\"|\"+m+\"|\"+h+\"|\"+d+\"|\"+p+\"|\"+g+\"|\"+y+\"|\"+b+\"|\"+v+\")\",e.ipvFuture=\"v\"+r+\"+\\\\.[\"+s+n+\":]+\",e.scheme=\"[a-zA-Z][a-zA-Z\\\\d+-\\\\.]*\",e.schemeRegex=new RegExp(e.scheme);const _=\"[\"+s+a+n+\":]*\",w=\"[\"+s+a+n+\"]{1,255}\",$=\"(?:\\\\[(?:\"+e.ipv6address+\"|\"+e.ipvFuture+\")\\\\]|\"+e.ipv4address+\"|\"+w+\")\",x=\"(?:\"+_+\"@)?\"+$+\"(?::\\\\d*)?\",j=\"(?:\"+_+\"@)?(\"+$+\")(?::\\\\d*)?\",k=o+\"*\",R=o+\"+\",S=\"(?:\\\\/\"+k+\")*\",A=\"\\\\/(?:\"+R+S+\")?\",O=R+S,E=\"[\"+s+a+n+\"@]+\"+S,D=\"(?:\\\\/\\\\/\\\\/\"+k+S+\")\";return e.hierPart=\"(?:(?:\\\\/\\\\/\"+x+S+\")|\"+A+\"|\"+O+\"|\"+D+\")\",e.hierPartCapture=\"(?:(?:\\\\/\\\\/\"+j+S+\")|\"+A+\"|\"+O+\")\",e.relativeRef=\"(?:(?:\\\\/\\\\/\"+x+S+\")|\"+A+\"|\"+E+\"|)\",e.relativeRefCapture=\"(?:(?:\\\\/\\\\/\"+j+S+\")|\"+A+\"|\"+E+\"|)\",e.query=\"[\"+i+\"\\\\/\\\\?]*(?=#|$)\",e.queryWithSquareBrackets=\"[\"+i+\"\\\\[\\\\]\\\\/\\\\?]*(?=#|$)\",e.fragment=\"[\"+i+\"\\\\/\\\\?]*\",e}};a.rfc3986=a.generate(),t.ip={v4Cidr:a.rfc3986.ipv4Cidr,v6Cidr:a.rfc3986.ipv6Cidr,ipv4:a.rfc3986.ipv4address,ipv6:a.rfc3986.ipv6address,ipvfuture:a.rfc3986.ipvFuture},a.createRegex=function(e){const t=a.rfc3986,r=\"(?:\\\\?\"+(e.allowQuerySquareBrackets?t.queryWithSquareBrackets:t.query)+\")?(?:#\"+t.fragment+\")?\",i=e.domain?t.relativeRefCapture:t.relativeRef;if(e.relativeOnly)return a.wrap(i+r);let o=\"\";if(e.scheme){s(e.scheme instanceof RegExp||\"string\"==typeof e.scheme||Array.isArray(e.scheme),\"scheme must be a RegExp, String, or Array\");const r=[].concat(e.scheme);s(r.length>=1,\"scheme must have at least 1 scheme specified\");const a=[];for(let e=0;e{\"use strict\";const r={operators:[\"!\",\"^\",\"*\",\"/\",\"%\",\"+\",\"-\",\"<\",\"<=\",\">\",\">=\",\"==\",\"!=\",\"&&\",\"||\",\"??\"],operatorCharacters:[\"!\",\"^\",\"*\",\"/\",\"%\",\"+\",\"-\",\"<\",\"=\",\">\",\"&\",\"|\",\"?\"],operatorsOrder:[[\"^\"],[\"*\",\"/\",\"%\"],[\"+\",\"-\"],[\"<\",\"<=\",\">\",\">=\"],[\"==\",\"!=\"],[\"&&\"],[\"||\",\"??\"]],operatorsPrefix:[\"!\",\"n\"],literals:{'\"':'\"',\"`\":\"`\",\"'\":\"'\",\"[\":\"]\"},numberRx:/^(?:[0-9]*(\\.[0-9]*)?){1}$/,tokenRx:/^[\\w\\$\\#\\.\\@\\:\\{\\}]+$/,symbol:Symbol(\"formula\"),settings:Symbol(\"settings\")};t.Parser=class{constructor(e,t={}){if(!t[r.settings]&&t.constants)for(const e in t.constants){const r=t.constants[e];if(null!==r&&![\"boolean\",\"number\",\"string\"].includes(typeof r))throw new Error(`Formula constant ${e} contains invalid ${typeof r} value type`)}this.settings=t[r.settings]?t:Object.assign({[r.settings]:!0,constants:{},functions:{}},t),this.single=null,this._parts=null,this._parse(e)}_parse(e){let s=[],n=\"\",a=0,i=!1;const o=e=>{if(a)throw new Error(\"Formula missing closing parenthesis\");const o=s.length?s[s.length-1]:null;if(i||n||e){if(o&&\"reference\"===o.type&&\")\"===e)return o.type=\"function\",o.value=this._subFormula(n,o.value),void(n=\"\");if(\")\"===e){const e=new t.Parser(n,this.settings);s.push({type:\"segment\",value:e})}else if(i){if(\"]\"===i)return s.push({type:\"reference\",value:n}),void(n=\"\");s.push({type:\"literal\",value:n})}else if(r.operatorCharacters.includes(n))o&&\"operator\"===o.type&&r.operators.includes(o.value+n)?o.value+=n:s.push({type:\"operator\",value:n});else if(n.match(r.numberRx))s.push({type:\"constant\",value:parseFloat(n)});else if(void 0!==this.settings.constants[n])s.push({type:\"constant\",value:this.settings.constants[n]});else{if(!n.match(r.tokenRx))throw new Error(`Formula contains invalid token: ${n}`);s.push({type:\"reference\",value:n})}n=\"\"}};for(const t of e)i?t===i?(o(),i=!1):n+=t:a?\"(\"===t?(n+=t,++a):\")\"===t?(--a,a?n+=t:o(t)):n+=t:t in r.literals?i=r.literals[t]:\"(\"===t?(o(),++a):r.operatorCharacters.includes(t)?(o(),n=t,o()):\" \"!==t?n+=t:o();o(),s=s.map(((e,t)=>\"operator\"!==e.type||\"-\"!==e.value||t&&\"operator\"!==s[t-1].type?e:{type:\"operator\",value:\"n\"}));let l=!1;for(const e of s){if(\"operator\"===e.type){if(r.operatorsPrefix.includes(e.value))continue;if(!l)throw new Error(\"Formula contains an operator in invalid position\");if(!r.operators.includes(e.value))throw new Error(`Formula contains an unknown operator ${e.value}`)}else if(l)throw new Error(\"Formula missing expected operator\");l=!l}if(!l)throw new Error(\"Formula contains invalid trailing operator\");1===s.length&&[\"reference\",\"literal\",\"constant\"].includes(s[0].type)&&(this.single={type:\"reference\"===s[0].type?\"reference\":\"value\",value:s[0].value}),this._parts=s.map((e=>{if(\"operator\"===e.type)return r.operatorsPrefix.includes(e.value)?e:e.value;if(\"reference\"!==e.type)return e.value;if(this.settings.tokenRx&&!this.settings.tokenRx.test(e.value))throw new Error(`Formula contains invalid reference ${e.value}`);return this.settings.reference?this.settings.reference(e.value):r.reference(e.value)}))}_subFormula(e,s){const n=this.settings.functions[s];if(\"function\"!=typeof n)throw new Error(`Formula contains unknown function ${s}`);let a=[];if(e){let t=\"\",n=0,i=!1;const o=()=>{if(!t)throw new Error(`Formula contains function ${s} with invalid arguments ${e}`);a.push(t),t=\"\"};for(let s=0;snew t.Parser(e,this.settings))),function(e){const t=[];for(const r of a)t.push(r.evaluate(e));return n.call(e,...t)}}evaluate(e){const t=this._parts.slice();for(let s=t.length-2;s>=0;--s){const n=t[s];if(n&&\"operator\"===n.type){const a=t[s+1];t.splice(s+1,1);const i=r.evaluate(a,e);t[s]=r.single(n.value,i)}}return r.operatorsOrder.forEach((s=>{for(let n=1;n\":return t>s;case\">=\":return t>=s;case\"==\":return t===s;case\"!=\":return t!==s;case\"&&\":return t&&s;case\"||\":return t||s}return null},r.exists=function(e){return null!=e}},9926:()=>{},5688:()=>{},9708:()=>{},1152:()=>{},443:()=>{},9848:()=>{},5934:e=>{\"use strict\";e.exports=JSON.parse('{\"version\":\"17.12.2\"}')}},t={},function r(s){var n=t[s];if(void 0!==n)return n.exports;var a=t[s]={exports:{}};return e[s](a,a.exports,r),a.exports}(5107);var e,t}));","// @ts-check\r\n\r\n/* eslint-disable fp/no-mutating-methods */\r\n\r\n/**\r\n * @typedef { (x: VNode ) => VNode } VNodeTransform\r\n * @param { VNodeTransform } f\r\n */\r\nfunction $root(f){\r\n\r\n\t/**\r\n\t * @param { VNode } o\r\n\t */\r\n\tfunction action(o){\r\n\t\tvar r =\r\n\t\t\tf(o)\r\n\r\n\t\treturn typeof r !== 'undefined'\r\n\t\t\t? r\r\n\t\t\t: o\r\n\t}\r\n\treturn action\r\n}\r\n\r\n/**\r\n * @param { VNodeTransform } f\r\n */\r\nfunction $ul(f){\r\n\r\n\t/**\r\n\t * @param { VNode } div\r\n\t */\r\n\tfunction action(div){\r\n\t\tvar r =\r\n\t\t\tf(div.children[1])\r\n\r\n\t\tif( typeof r !== 'undefined' ){\r\n\t\t\t// eslint-disable-next-line fp/no-mutation\r\n\t\t\tdiv.children[1] = r\r\n\t\t}\r\n\t\treturn div\r\n\t}\r\n\treturn action\r\n}\r\n\r\n/**\r\n * @param { ( o: VNode[]) => VNode[] } f\r\n */\r\nfunction $li( f ){\r\n\r\n\treturn $ul(function(ul){\r\n\t\tvar r =\r\n\t\t\tf(ul.children)\r\n\r\n\r\n\t\tif( typeof r !== 'undefined' ){\r\n\t\t\t// eslint-disable-next-line fp/no-mutation\r\n\t\t\tul.children = r\r\n\t\t}\r\n\r\n\t\treturn ul\r\n\t})\r\n}\r\n\r\n/**\r\n * @param { VNodeTransform } f\r\n */\r\nfunction $input(f){\r\n\r\n\t/**\r\n\t * @param { VNode } div\r\n\t */\r\n\tfunction action(div){\r\n\t\tvar r =\r\n\t\t\tf(div.children[0])\r\n\r\n\t\tif( typeof r !== 'undefined' ){\r\n\t\t\t// eslint-disable-next-line fp/no-mutation\r\n\t\t\tdiv.children[0] = r\r\n\t\t}\r\n\r\n\t\treturn div\r\n\t}\r\n\treturn action\r\n}\r\n\r\n/*\r\n* The following utilities are all adapted from\r\n* https://github.com/LeaVerou/awesomplete\r\n*/\r\n\r\n\t/**\r\n\t * @type { (input: string, text: string ) => boolean }\r\n\t */\r\n\tvar contains = function contains(input, text){\r\n\t\treturn input.trim().length\r\n\t\t\t? RegExp(regExpEscape(input.trim()), \"i\").test(text)\r\n\t\t\t: true\r\n\t}\r\n\r\n\t/**\r\n\t * @type { (s: string ) => string }\r\n\t */\r\n\tvar regExpEscape = function regExpEscape(s) {\r\n\t\treturn s.replace(/[-\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\");\r\n\t}\r\n\r\n\t/**\r\n\t * @type { {(a: string, b: string ) : number} }\r\n\t */\r\n\tvar sortByLength = function sortByLength(a, b) {\r\n\r\n\t\tif (a.length !== b.length) {\r\n\t\t\treturn a.length - b.length;\r\n\t\t}\r\n\r\n\t\treturn a < b ? -1 : 1;\r\n\t};\r\n\r\n/**\r\n\t @type {\r\n\t\t(p: { [k: string]: any }, b: [string, any] ) => { [k:string] : any }\r\n\t}\r\n */\r\nvar assignPair = function assignPair(p, pair){\r\n\t// eslint-disable-next-line fp/no-mutation\r\n\tp[ pair[0] ] = pair[1]\r\n\treturn p\r\n}\r\n\r\nvar keyboard = {\r\n\tsubmit:\r\n\t\tfunction submit(\r\n\t\t\t/** @type {number} */code\r\n\t\t\t,/** @type {string} */ highlighted\r\n\t\t) {\r\n\t\t\treturn code == 13 && highlighted\r\n\t\t\t\t? [highlighted]\r\n\t\t\t\t: []\r\n\t\t}\r\n\r\n\t,dismiss:\r\n\r\n\t\tfunction dismiss(\r\n\t\t\t/** @type {number} */ code\r\n\t\t){\r\n\t\t\treturn code == 27\r\n\t\t\t\t? [true]\r\n\t\t\t\t: []\r\n\t\t}\r\n\r\n\t,navigate:\r\n\t\tfunction navigate(\r\n\t\t\t/** @type {boolean} */ showingDrawer\r\n\t\t\t,/** @type {string} */ highlighted\r\n\t\t\t,/** @type {string[]} */ renderedList\r\n\t\t\t,/** @type {number} */ code\r\n\t\t){\r\n\t\t\tvar KEY_UP = 38\r\n\t\t\tvar KEY_DOWN = 40\r\n\t\t\tvar i = renderedList.indexOf(highlighted)\r\n\t\t\tvar NO_MATCH = i == -1\r\n\t\t\tvar LOWER_BOUND = 0\r\n\t\t\tvar UPPER_BOUND = renderedList.length -1\r\n\t\t\tvar MATCH = i >= -1\r\n\t\t\tvar NEXT = i+1\r\n\t\t\tvar PREV = i-1\r\n\r\n\t\t\tif( showingDrawer && (code == KEY_UP || code == KEY_DOWN) ){\r\n\t\t\t\tif( code == KEY_UP && (NO_MATCH || i == LOWER_BOUND) ){\r\n\t\t\t\t\treturn [renderedList[UPPER_BOUND]]\r\n\t\t\t\t} else if(code == KEY_UP && MATCH) {\r\n\t\t\t\t\treturn [renderedList[PREV]]\r\n\t\t\t\t} else if (\r\n\t\t\t\t\tcode == KEY_DOWN && (\r\n\t\t\t\t\t\tNO_MATCH || i == UPPER_BOUND\r\n\t\t\t\t\t)\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn [renderedList[LOWER_BOUND]]\r\n\t\t\t\t} else { // ( code == KEY_DOWN && MATCH )\r\n\t\t\t\t\treturn [renderedList[NEXT]]\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\treturn []\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n/**\r\n\r\n\t@typedef {any} VNode\r\n\t@typedef {\r\n\t\t(tagName: string, attrs: object, children: VNode[] ) => VNode\r\n\t} HyperscriptConstructor\r\n\t@typedef { ( key: any ) => any } FrameworkGet\r\n\t@typedef { ( key: any, value: any ) => any } FrameworkSet\r\n\t@typedef {{\r\n\t\tget: FrameworkGet\r\n\t\tset: FrameworkSet\r\n\t\thyperscript: HyperscriptConstructor\r\n\t}} Framework\r\n\r\n\t@typedef {{\r\n\t\tlist: any\r\n\t\tinput: any\r\n\t\tchosen: any\r\n\t\topen: any\r\n\t\thighlighted: any\r\n\t}} Model\r\n\r\n\t@typedef { Event & { currentTarget: { value: String }} } InputEvent\r\n\t@typedef {{\r\n\t\tminChars: number\r\n\t\tmaxItems: number\r\n\t\tsort: { (input: string, text: string ): number }\r\n\t\tfilter: { (value: string, s: string): boolean }\r\n\t\tfilteredList: string[]\r\n\t\teventNames: { [k:string]: string }\r\n\t\tshowingDrawer: boolean\r\n\t\tchoose: { (x:string) : void }\r\n\t\tclickItem: { (x:string) : void }\r\n\t\tPATTERN_INPUT: RegExp | null\r\n\t\tmark: { (x:string) : VNode }\r\n\t\thighlight: { (x:string) : VNode }\r\n\t\toninput: { (e: InputEvent ): void }\r\n\t\tonfocus: { (e: FocusEvent ): void }\r\n\t\tclose: { (): void }\r\n\t\tonblur: { (e: FocusEvent ): void }\r\n\t\trenderInput: { (config:Overrides) : VNode }\r\n\t\titemClassNames: { (x:string, config: Overrides) : string }\r\n\t\trenderItem: { (x:string, config: Overrides): VNode }\r\n\t\trenderItems: { (config: Overrides): VNode }\r\n\t\tclassNames: { () : string }\r\n\t\trenderRoot: { (config: Overrides): VNode }\r\n\t\tkeyboardSubmit: { (code: number, highlighted: string ): string[] }\r\n\t\tkeyboardDismiss: { (code: number ): boolean[] }\r\n\t\tkeyboardNavigate: {\r\n\t\t\t(\tshowingDrawer: boolean\r\n\t\t\t\t, highlighted: string\r\n\t\t\t\t, renderedList: string[]\r\n\t\t\t\t, code: number\r\n\t\t\t) : string[]\r\n\t\t}\r\n\t\tonkeydown: { (e: KeyboardEvent ): void }\r\n\r\n\t}} Overrides\r\n\r\n\t@param {Framework} framework\r\n */\r\nfunction BaseAutocomplete(framework){\r\n\r\n\tvar h = framework.hyperscript\r\n\tvar get = framework.get\r\n\tvar set = framework.set\r\n\r\n\t/**\r\n\t *\r\n\t * @param {Model} model\r\n\t * @param { Partial } nullableOverrides\r\n\t */\r\n\tfunction Autocomplete(model, nullableOverrides){\r\n\t\tvar overrides = nullableOverrides || {}\r\n\t\tvar list = model.list\r\n\t\tvar input = model.input\r\n\t\tvar chosen = model.chosen\r\n\t\tvar open = model.open\r\n\r\n\t\t/** @type { () => string[] } */\r\n\t\tvar getList = function(){\r\n\t\t\treturn get(list)\r\n\t\t}\r\n\r\n\t\t/** @type { () => string } */\r\n\t\tvar getInput = function(){\r\n\t\t\treturn get(input)\r\n\t\t}\r\n\r\n\t\t/** @type { () => string } */\r\n\t\tvar getChosen = function(){\r\n\t\t\treturn get(chosen)\r\n\t\t}\r\n\r\n\t\t/** @type { () => boolean } */\r\n\t\tvar getOpen = function(){\r\n\t\t\treturn get(open)\r\n\t\t}\r\n\r\n\t\t/** @type { () => string } */\r\n\t\tvar getHighlighted = function(){\r\n\t\t\treturn get(highlighted)\r\n\t\t}\r\n\r\n\t\tvar highlighted = model.highlighted\r\n\r\n\t\tvar value = getInput()\r\n\r\n\t\tvar minChars = typeof overrides.minChars != 'undefined'\r\n\t\t\t? overrides.minChars\r\n\t\t\t: 2\r\n\r\n\t\tvar maxItems = typeof overrides.maxItems != 'undefined'\r\n\t\t\t? overrides.maxItems\r\n\t\t\t: 10\r\n\r\n\t\tvar sort = typeof overrides.sort != 'undefined'\r\n\t\t\t? overrides.sort\r\n\t\t\t: sortByLength\r\n\r\n\t\tvar filter = typeof overrides.filter != 'undefined'\r\n\t\t\t? overrides.filter\r\n\t\t\t: contains\r\n\r\n\t\tvar filteredList =\r\n\t\t\ttypeof overrides.filteredList != 'undefined'\r\n\t\t\t\t? overrides.filteredList\r\n\t\t\t\t: getList()\r\n\t\t\t\t\t.filter(function (s){\r\n\t\t\t\t\t\treturn filter(value, s)\r\n\t\t\t\t\t})\r\n\t\t\t\t\t.sort( sort )\r\n\t\t\t\t\t.slice(0, maxItems)\r\n\r\n\t\tif( getHighlighted() != null\r\n\t\t\t&& filteredList.indexOf( get( highlighted ) ) == -1\r\n\t\t){\r\n\t\t\tset(highlighted, null)\r\n\t\t}\r\n\r\n\t\tif( getChosen() != null\r\n\t\t\t&& getChosen() != value\r\n\t\t){\r\n\t\t\tset(chosen, null)\r\n\t\t}\r\n\r\n\t\t/** @type {Overrides} */\r\n\t\tvar config = {\r\n\r\n\t\t\tfilteredList: filteredList\r\n\t\t\t,minChars: minChars\r\n\t\t\t,maxItems: maxItems\r\n\t\t\t,sort: sort\r\n\t\t\t,filter: filter\r\n\t\t\t,eventNames:\r\n\t\t\t\ttypeof overrides.eventNames != 'undefined'\r\n\t\t\t\t\t? overrides.eventNames\r\n\t\t\t\t\t: { oninput: 'oninput'\r\n\t\t\t\t\t, onfocus: 'onfocus'\r\n\t\t\t\t\t, onblur: 'onblur'\r\n\t\t\t\t\t, onkeydown: 'onkeydown'\r\n\t\t\t\t\t, onmousedown: 'onmousedown'\r\n\t\t\t\t\t}\r\n\t\t\t,showingDrawer:\r\n\t\t\t\ttypeof overrides.showingDrawer != 'undefined'\r\n\t\t\t\t\t? overrides.showingDrawer\r\n\t\t\t\t\t: getOpen()\r\n\t\t\t\t\t\t&& value.length >= minChars\r\n\t\t\t\t\t\t&& filteredList.length > 0\r\n\r\n\t\t\t,choose:\r\n\t\t\t\ttypeof overrides.choose != 'undefined'\r\n\t\t\t\t\t? overrides.choose\r\n\t\t\t\t\t: function choose(x){\r\n\r\n\r\n\t\t\t\t\t\tif( getInput() != x ){\r\n\t\t\t\t\t\t\tset(input, x)\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif( getChosen() != x ){\r\n\t\t\t\t\t\t\tset(chosen, x)\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconfig.close()\r\n\t\t\t\t\t}\r\n\t\t\t,clickItem:\r\n\t\t\t\ttypeof overrides.clickItem != 'undefined'\r\n\t\t\t\t\t? overrides.clickItem\r\n\t\t\t\t\t: function clickItem(x){\r\n\t\t\t\t\t\treturn config.choose(x)\r\n\r\n\t\t\t\t\t}\r\n\t\t\t,PATTERN_INPUT:\r\n\t\t\t\ttypeof overrides.PATTERN_INPUT != 'undefined'\r\n\t\t\t\t\t? overrides.PATTERN_INPUT\r\n\t\t\t\t\t: value\r\n\t\t\t\t\t\t? new RegExp(value, 'gi')\r\n\t\t\t\t\t\t: null\r\n\t\t\t,mark:\r\n\t\t\t\ttypeof overrides.mark != 'undefined'\r\n\t\t\t\t\t? overrides.mark\r\n\t\t\t\t\t: function(x){\r\n\t\t\t\t\t\treturn h('mark', {}, [x])\r\n\t\t\t\t\t}\r\n\r\n\t\t\t,highlight:\r\n\t\t\t\ttypeof overrides.highlight != 'undefined'\r\n\t\t\t\t\t? overrides.highlight\r\n\t\t\t\t\t: function highlight( x ){\r\n\r\n\t\t\t\t\t\t/** @type {string[] | null} */\r\n\t\t\t\t\t\tvar matches =\r\n\t\t\t\t\t\t\tconfig.PATTERN_INPUT != null\r\n\t\t\t\t\t\t\t? x.match( config.PATTERN_INPUT )\r\n\t\t\t\t\t\t\t: null\r\n\r\n\t\t\t\t\t\t/** @type {{ buffer: string, output: string[] }} */\r\n\t\t\t\t\t\tvar initial = {\r\n\t\t\t\t\t\t\tbuffer: x\r\n\t\t\t\t\t\t\t,output: []\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tvar processed =\r\n\t\t\t\t\t\t\tmatches != null\r\n\t\t\t\t\t\t\t? matches\r\n\t\t\t\t\t\t\t\t.reduce(function(p, n){\r\n\t\t\t\t\t\t\t\t\tvar i = p.buffer.indexOf(n)\r\n\r\n\t\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\t\tbuffer: p.buffer.slice(i+n.length)\r\n\t\t\t\t\t\t\t\t\t\t,output: p.output.concat(\r\n\t\t\t\t\t\t\t\t\t\t\ti === 0\r\n\t\t\t\t\t\t\t\t\t\t\t? []\r\n\t\t\t\t\t\t\t\t\t\t\t: p.buffer.slice(0, i)\r\n\t\t\t\t\t\t\t\t\t\t\t,[ config.mark(\r\n\t\t\t\t\t\t\t\t\t\t\t\tp.buffer.slice(i, i+n.length)\r\n\t\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}, initial )\r\n\t\t\t\t\t\t\t: { output: [x], buffer: '' }\r\n\r\n\t\t\t\t\t\treturn processed.output.concat(\r\n\t\t\t\t\t\t\tprocessed.buffer || []\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t}\r\n\t\t\t,oninput:\r\n\t\t\t\ttypeof overrides.oninput != 'undefined'\r\n\t\t\t\t\t? overrides.oninput\r\n\t\t\t\t\t: function oninput(e){\r\n\r\n\t\t\t\t\t\tvar v = e.currentTarget.value\r\n\r\n\t\t\t\t\t\tif( getInput() != v ){\r\n\t\t\t\t\t\t\tset(input, v)\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif( !getOpen() ){\r\n\t\t\t\t\t\t\tset(open, true)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t,onfocus:\r\n\t\t\t\ttypeof overrides.onfocus != 'undefined'\r\n\t\t\t\t\t? overrides.onfocus\r\n\t\t\t\t\t: function onfocus(){\r\n\t\t\t\t\t\tif( !getOpen() ){\r\n\t\t\t\t\t\t\tset(open, true)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t,close:\r\n\t\t\t\ttypeof overrides.close != 'undefined'\r\n\t\t\t\t\t? overrides.close\r\n\t\t\t\t\t: function close(){\r\n\t\t\t\t\t\t//eslint-disable-next-line fp/no-mutation\r\n\t\t\t\t\t\tif( getOpen() ){\r\n\t\t\t\t\t\t\tset(open, false)\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t,onblur:\r\n\t\t\t\ttypeof overrides.onblur != 'undefined'\r\n\t\t\t\t\t? overrides.onblur\r\n\t\t\t\t\t: function onblur(){\r\n\t\t\t\t\t\tconfig.close()\r\n\t\t\t\t\t}\r\n\t\t\t,renderInput:\r\n\t\t\t\ttypeof overrides.renderInput != 'undefined'\r\n\t\t\t\t\t? overrides.renderInput\r\n\t\t\t\t\t: function renderInput(){\r\n\t\t\t\t\t\treturn h('input'\r\n\t\t\t\t\t\t\t,[ ['value', value]\r\n\t\t\t\t\t\t\t, [config.eventNames.oninput, config.oninput]\r\n\t\t\t\t\t\t\t, [config.eventNames.onfocus, config.onfocus]\r\n\t\t\t\t\t\t\t, [config.eventNames.onblur, config.onblur]\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t.reduce(assignPair, {})\r\n\t\t\t\t\t\t\t, []\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t}\r\n\r\n\t\t\t,itemClassNames:\r\n\t\t\t\ttypeof overrides.itemClassNames != 'undefined'\r\n\t\t\t\t\t? overrides.itemClassNames\r\n\t\t\t\t\t: function itemClassNames(x){\r\n\t\t\t\t\t\treturn \tx == get(highlighted)\r\n\t\t\t\t\t\t\t? 'highlight'\r\n\t\t\t\t\t\t\t: ''\r\n\t\t\t\t\t}\r\n\r\n\t\t\t,renderItem:\r\n\t\t\t\ttypeof overrides.renderItem != 'undefined'\r\n\t\t\t\t\t? overrides.renderItem\r\n\t\t\t\t\t: function renderItem(x, config){\r\n\t\t\t\t\t\treturn h(\r\n\t\t\t\t\t\t\t'li'\r\n\t\t\t\t\t\t\t,[ ['className', config.itemClassNames(x, config) ]\r\n\t\t\t\t\t\t\t, [ config.eventNames.onmousedown, function(\r\n\t\t\t\t\t\t\t\t/** @type {Event} */ e\r\n\t\t\t\t\t\t\t){\r\n\t\t\t\t\t\t\t\tconfig.clickItem(x)\r\n\t\t\t\t\t\t\t\te.stopPropagation()\r\n\t\t\t\t\t\t\t}]\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t.reduce(assignPair, {})\r\n\r\n\t\t\t\t\t\t\t, config.highlight(x)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t}\r\n\t\t\t,renderItems:\r\n\t\t\t\ttypeof overrides.renderItems != 'undefined'\r\n\t\t\t\t\t? overrides.renderItems\r\n\t\t\t\t\t: function renderItems(config){\r\n\t\t\t\t\t\treturn h(\r\n\t\t\t\t\t\t\t'ul'\r\n\t\t\t\t\t\t\t, {}\r\n\t\t\t\t\t\t\t, config.filteredList.map(\r\n\t\t\t\t\t\t\t\tfunction filteredList$map(x){\r\n\t\t\t\t\t\t\t\t\treturn config.renderItem(x, config)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t}\r\n\t\t\t,classNames:\r\n\t\t\t\ttypeof overrides.classNames != 'undefined'\r\n\t\t\t\t\t? overrides.classNames\r\n\t\t\t\t\t: function classNames(){\r\n\t\t\t\t\t\treturn ['manuel-complete']\r\n\t\t\t\t\t\t\t.concat(\r\n\t\t\t\t\t\t\t\tconfig.showingDrawer ? ['open'] : []\r\n\t\t\t\t\t\t\t\t,value.length > 0 ? ['not-empty'] : []\r\n\t\t\t\t\t\t\t\t,getList().length > 0 ? ['loaded'] : []\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t\t.join(' ')\r\n\t\t\t\t\t}\r\n\t\t\t,renderRoot:\r\n\t\t\t\ttypeof overrides.renderRoot != 'undefined'\r\n\t\t\t\t\t? overrides.renderRoot\r\n\t\t\t\t\t: function renderRoot(config){\r\n\t\t\t\t\t\treturn h('div'\r\n\t\t\t\t\t\t\t,[[ 'className', config.classNames() ]\r\n\t\t\t\t\t\t\t, [config.eventNames.onkeydown, config.onkeydown]\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t.reduce(assignPair, {})\r\n\t\t\t\t\t\t\t,[ config.renderInput(config)\r\n\t\t\t\t\t\t\t, config.renderItems(config)\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t)\r\n\t\t\t\t\t}\r\n\t\t\t,keyboardSubmit:\r\n\t\t\t\ttypeof overrides.keyboardSubmit != 'undefined'\r\n\t\t\t\t\t? overrides.keyboardSubmit\r\n\t\t\t\t\t: keyboard.submit\r\n\t\t\t,keyboardDismiss:\r\n\t\t\t\ttypeof overrides.keyboardDismiss != 'undefined'\r\n\t\t\t\t\t? overrides.keyboardDismiss\r\n\t\t\t\t\t: keyboard.dismiss\r\n\t\t\t,keyboardNavigate:\r\n\t\t\t\ttypeof overrides.keyboardNavigate != 'undefined'\r\n\t\t\t\t\t? overrides.keyboardNavigate\r\n\t\t\t\t\t: keyboard.navigate\r\n\t\t\t,onkeydown:\r\n\t\t\t\ttypeof overrides.onkeydown != 'undefined'\r\n\t\t\t\t\t? overrides.onkeydown\r\n\t\t\t\t\t: function onkeydown(e){\r\n\t\t\t\t\t\t\tvar new_chosen =\r\n\t\t\t\t\t\t\t\tconfig.keyboardSubmit(\r\n\t\t\t\t\t\t\t\t\te.keyCode\r\n\t\t\t\t\t\t\t\t\t, get(highlighted)\r\n\t\t\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t\t\tvar dismiss = config.keyboardDismiss(\r\n\t\t\t\t\t\t\t\te.keyCode\r\n\t\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t\t\tvar new_highlighted =\r\n\t\t\t\t\t\t\t\te.shiftKey\r\n\t\t\t\t\t\t\t\t? []\r\n\t\t\t\t\t\t\t\t: config.keyboardNavigate(\r\n\t\t\t\t\t\t\t\t\tconfig.showingDrawer\r\n\t\t\t\t\t\t\t\t\t, get(highlighted)\r\n\t\t\t\t\t\t\t\t\t, config.filteredList\r\n\t\t\t\t\t\t\t\t\t, e.keyCode\r\n\t\t\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t\t\tnew_chosen.map(\r\n\t\t\t\t\t\t\t\tconfig.choose\r\n\t\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t\t\tnew_highlighted.map(\r\n\t\t\t\t\t\t\t\tfunction new_highlighted$map(v){\r\n\t\t\t\t\t\t\t\t\treturn set(highlighted, v)\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t)\r\n\r\n\t\t\t\t\t\t\tdismiss.map( config.close )\r\n\r\n\t\t\t\t\t\t\tnew_chosen.length\r\n\t\t\t\t\t\t\t+ dismiss.length\r\n\t\t\t\t\t\t\t+ new_highlighted.length\r\n\t\t\t\t\t\t\t> 0\r\n\r\n\t\t\t\t\t\t\t&& e.preventDefault()\r\n\t\t\t\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn config.renderRoot(config)\r\n\t}\r\n\r\n\treturn Autocomplete\r\n}\r\n\r\nmodule.exports = BaseAutocomplete\r\n\r\n// eslint-disable-next-line fp/no-mutation\r\nBaseAutocomplete.queries = {\r\n\tlistItems: $li\r\n\t, list: $ul\r\n\t, root: $root\r\n\t, input: $input\r\n}","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(render, schedule, console) {\n\tvar subscriptions = []\n\tvar pending = false\n\tvar offset = -1\n\n\tfunction sync() {\n\t\tfor (offset = 0; offset < subscriptions.length; offset += 2) {\n\t\t\ttry { render(subscriptions[offset], Vnode(subscriptions[offset + 1]), redraw) }\n\t\t\tcatch (e) { console.error(e) }\n\t\t}\n\t\toffset = -1\n\t}\n\n\tfunction redraw() {\n\t\tif (!pending) {\n\t\t\tpending = true\n\t\t\tschedule(function() {\n\t\t\t\tpending = false\n\t\t\t\tsync()\n\t\t\t})\n\t\t}\n\t}\n\n\tredraw.sync = sync\n\n\tfunction mount(root, component) {\n\t\tif (component != null && component.view == null && typeof component !== \"function\") {\n\t\t\tthrow new TypeError(\"m.mount expects a component, not a vnode.\")\n\t\t}\n\n\t\tvar index = subscriptions.indexOf(root)\n\t\tif (index >= 0) {\n\t\t\tsubscriptions.splice(index, 2)\n\t\t\tif (index <= offset) offset -= 2\n\t\t\trender(root, [])\n\t\t}\n\n\t\tif (component != null) {\n\t\t\tsubscriptions.push(root, component)\n\t\t\trender(root, Vnode(component), redraw)\n\t\t}\n\t}\n\n\treturn {mount: mount, redraw: redraw}\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar m = require(\"../render/hyperscript\")\nvar Promise = require(\"../promise/promise\")\n\nvar buildPathname = require(\"../pathname/build\")\nvar parsePathname = require(\"../pathname/parse\")\nvar compileTemplate = require(\"../pathname/compileTemplate\")\nvar assign = require(\"../util/assign\")\nvar censor = require(\"../util/censor\")\n\nvar sentinel = {}\n\nfunction decodeURIComponentSave(component) {\n\ttry {\n\t\treturn decodeURIComponent(component)\n\t} catch(e) {\n\t\treturn component\n\t}\n}\n\nmodule.exports = function($window, mountRedraw) {\n\tvar callAsync = $window == null\n\t\t// In case Mithril.js' loaded globally without the DOM, let's not break\n\t\t? null\n\t\t: typeof $window.setImmediate === \"function\" ? $window.setImmediate : $window.setTimeout\n\tvar p = Promise.resolve()\n\n\tvar scheduled = false\n\n\t// state === 0: init\n\t// state === 1: scheduled\n\t// state === 2: done\n\tvar ready = false\n\tvar state = 0\n\n\tvar compiled, fallbackRoute\n\n\tvar currentResolver = sentinel, component, attrs, currentPath, lastUpdate\n\n\tvar RouterRoot = {\n\t\tonbeforeupdate: function() {\n\t\t\tstate = state ? 2 : 1\n\t\t\treturn !(!state || sentinel === currentResolver)\n\t\t},\n\t\tonremove: function() {\n\t\t\t$window.removeEventListener(\"popstate\", fireAsync, false)\n\t\t\t$window.removeEventListener(\"hashchange\", resolveRoute, false)\n\t\t},\n\t\tview: function() {\n\t\t\tif (!state || sentinel === currentResolver) return\n\t\t\t// Wrap in a fragment to preserve existing key semantics\n\t\t\tvar vnode = [Vnode(component, attrs.key, attrs)]\n\t\t\tif (currentResolver) vnode = currentResolver.render(vnode[0])\n\t\t\treturn vnode\n\t\t},\n\t}\n\n\tvar SKIP = route.SKIP = {}\n\n\tfunction resolveRoute() {\n\t\tscheduled = false\n\t\t// Consider the pathname holistically. The prefix might even be invalid,\n\t\t// but that's not our problem.\n\t\tvar prefix = $window.location.hash\n\t\tif (route.prefix[0] !== \"#\") {\n\t\t\tprefix = $window.location.search + prefix\n\t\t\tif (route.prefix[0] !== \"?\") {\n\t\t\t\tprefix = $window.location.pathname + prefix\n\t\t\t\tif (prefix[0] !== \"/\") prefix = \"/\" + prefix\n\t\t\t}\n\t\t}\n\t\t// This seemingly useless `.concat()` speeds up the tests quite a bit,\n\t\t// since the representation is consistently a relatively poorly\n\t\t// optimized cons string.\n\t\tvar path = prefix.concat()\n\t\t\t.replace(/(?:%[a-f89][a-f0-9])+/gim, decodeURIComponentSave)\n\t\t\t.slice(route.prefix.length)\n\t\tvar data = parsePathname(path)\n\n\t\tassign(data.params, $window.history.state)\n\n\t\tfunction reject(e) {\n\t\t\tconsole.error(e)\n\t\t\tsetPath(fallbackRoute, null, {replace: true})\n\t\t}\n\n\t\tloop(0)\n\t\tfunction loop(i) {\n\t\t\t// state === 0: init\n\t\t\t// state === 1: scheduled\n\t\t\t// state === 2: done\n\t\t\tfor (; i < compiled.length; i++) {\n\t\t\t\tif (compiled[i].check(data)) {\n\t\t\t\t\tvar payload = compiled[i].component\n\t\t\t\t\tvar matchedRoute = compiled[i].route\n\t\t\t\t\tvar localComp = payload\n\t\t\t\t\tvar update = lastUpdate = function(comp) {\n\t\t\t\t\t\tif (update !== lastUpdate) return\n\t\t\t\t\t\tif (comp === SKIP) return loop(i + 1)\n\t\t\t\t\t\tcomponent = comp != null && (typeof comp.view === \"function\" || typeof comp === \"function\")? comp : \"div\"\n\t\t\t\t\t\tattrs = data.params, currentPath = path, lastUpdate = null\n\t\t\t\t\t\tcurrentResolver = payload.render ? payload : null\n\t\t\t\t\t\tif (state === 2) mountRedraw.redraw()\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tstate = 2\n\t\t\t\t\t\t\tmountRedraw.redraw.sync()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// There's no understating how much I *wish* I could\n\t\t\t\t\t// use `async`/`await` here...\n\t\t\t\t\tif (payload.view || typeof payload === \"function\") {\n\t\t\t\t\t\tpayload = {}\n\t\t\t\t\t\tupdate(localComp)\n\t\t\t\t\t}\n\t\t\t\t\telse if (payload.onmatch) {\n\t\t\t\t\t\tp.then(function () {\n\t\t\t\t\t\t\treturn payload.onmatch(data.params, path, matchedRoute)\n\t\t\t\t\t\t}).then(update, path === fallbackRoute ? null : reject)\n\t\t\t\t\t}\n\t\t\t\t\telse update(\"div\")\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (path === fallbackRoute) {\n\t\t\t\tthrow new Error(\"Could not resolve default route \" + fallbackRoute + \".\")\n\t\t\t}\n\t\t\tsetPath(fallbackRoute, null, {replace: true})\n\t\t}\n\t}\n\n\t// Set it unconditionally so `m.route.set` and `m.route.Link` both work,\n\t// even if neither `pushState` nor `hashchange` are supported. It's\n\t// cleared if `hashchange` is used, since that makes it automatically\n\t// async.\n\tfunction fireAsync() {\n\t\tif (!scheduled) {\n\t\t\tscheduled = true\n\t\t\t// TODO: just do `mountRedraw.redraw()` here and elide the timer\n\t\t\t// dependency. Note that this will muck with tests a *lot*, so it's\n\t\t\t// not as easy of a change as it sounds.\n\t\t\tcallAsync(resolveRoute)\n\t\t}\n\t}\n\n\tfunction setPath(path, data, options) {\n\t\tpath = buildPathname(path, data)\n\t\tif (ready) {\n\t\t\tfireAsync()\n\t\t\tvar state = options ? options.state : null\n\t\t\tvar title = options ? options.title : null\n\t\t\tif (options && options.replace) $window.history.replaceState(state, title, route.prefix + path)\n\t\t\telse $window.history.pushState(state, title, route.prefix + path)\n\t\t}\n\t\telse {\n\t\t\t$window.location.href = route.prefix + path\n\t\t}\n\t}\n\n\tfunction route(root, defaultRoute, routes) {\n\t\tif (!root) throw new TypeError(\"DOM element being rendered to does not exist.\")\n\n\t\tcompiled = Object.keys(routes).map(function(route) {\n\t\t\tif (route[0] !== \"/\") throw new SyntaxError(\"Routes must start with a '/'.\")\n\t\t\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(route)) {\n\t\t\t\tthrow new SyntaxError(\"Route parameter names must be separated with either '/', '.', or '-'.\")\n\t\t\t}\n\t\t\treturn {\n\t\t\t\troute: route,\n\t\t\t\tcomponent: routes[route],\n\t\t\t\tcheck: compileTemplate(route),\n\t\t\t}\n\t\t})\n\t\tfallbackRoute = defaultRoute\n\t\tif (defaultRoute != null) {\n\t\t\tvar defaultData = parsePathname(defaultRoute)\n\n\t\t\tif (!compiled.some(function (i) { return i.check(defaultData) })) {\n\t\t\t\tthrow new ReferenceError(\"Default route doesn't match any known routes.\")\n\t\t\t}\n\t\t}\n\n\t\tif (typeof $window.history.pushState === \"function\") {\n\t\t\t$window.addEventListener(\"popstate\", fireAsync, false)\n\t\t} else if (route.prefix[0] === \"#\") {\n\t\t\t$window.addEventListener(\"hashchange\", resolveRoute, false)\n\t\t}\n\n\t\tready = true\n\t\tmountRedraw.mount(root, RouterRoot)\n\t\tresolveRoute()\n\t}\n\troute.set = function(path, data, options) {\n\t\tif (lastUpdate != null) {\n\t\t\toptions = options || {}\n\t\t\toptions.replace = true\n\t\t}\n\t\tlastUpdate = null\n\t\tsetPath(path, data, options)\n\t}\n\troute.get = function() {return currentPath}\n\troute.prefix = \"#!\"\n\troute.Link = {\n\t\tview: function(vnode) {\n\t\t\t// Omit the used parameters from the rendered element - they are\n\t\t\t// internal. Also, censor the various lifecycle methods.\n\t\t\t//\n\t\t\t// We don't strip the other parameters because for convenience we\n\t\t\t// let them be specified in the selector as well.\n\t\t\tvar child = m(\n\t\t\t\tvnode.attrs.selector || \"a\",\n\t\t\t\tcensor(vnode.attrs, [\"options\", \"params\", \"selector\", \"onclick\"]),\n\t\t\t\tvnode.children\n\t\t\t)\n\t\t\tvar options, onclick, href\n\n\t\t\t// Let's provide a *right* way to disable a route link, rather than\n\t\t\t// letting people screw up accessibility on accident.\n\t\t\t//\n\t\t\t// The attribute is coerced so users don't get surprised over\n\t\t\t// `disabled: 0` resulting in a button that's somehow routable\n\t\t\t// despite being visibly disabled.\n\t\t\tif (child.attrs.disabled = Boolean(child.attrs.disabled)) {\n\t\t\t\tchild.attrs.href = null\n\t\t\t\tchild.attrs[\"aria-disabled\"] = \"true\"\n\t\t\t\t// If you *really* do want add `onclick` on a disabled link, use\n\t\t\t\t// an `oncreate` hook to add it.\n\t\t\t} else {\n\t\t\t\toptions = vnode.attrs.options\n\t\t\t\tonclick = vnode.attrs.onclick\n\t\t\t\t// Easier to build it now to keep it isomorphic.\n\t\t\t\thref = buildPathname(child.attrs.href, vnode.attrs.params)\n\t\t\t\tchild.attrs.href = route.prefix + href\n\t\t\t\tchild.attrs.onclick = function(e) {\n\t\t\t\t\tvar result\n\t\t\t\t\tif (typeof onclick === \"function\") {\n\t\t\t\t\t\tresult = onclick.call(e.currentTarget, e)\n\t\t\t\t\t} else if (onclick == null || typeof onclick !== \"object\") {\n\t\t\t\t\t\t// do nothing\n\t\t\t\t\t} else if (typeof onclick.handleEvent === \"function\") {\n\t\t\t\t\t\tonclick.handleEvent(e)\n\t\t\t\t\t}\n\n\t\t\t\t\t// Adapted from React Router's implementation:\n\t\t\t\t\t// https://github.com/ReactTraining/react-router/blob/520a0acd48ae1b066eb0b07d6d4d1790a1d02482/packages/react-router-dom/modules/Link.js\n\t\t\t\t\t//\n\t\t\t\t\t// Try to be flexible and intuitive in how we handle links.\n\t\t\t\t\t// Fun fact: links aren't as obvious to get right as you\n\t\t\t\t\t// would expect. There's a lot more valid ways to click a\n\t\t\t\t\t// link than this, and one might want to not simply click a\n\t\t\t\t\t// link, but right click or command-click it to copy the\n\t\t\t\t\t// link target, etc. Nope, this isn't just for blind people.\n\t\t\t\t\tif (\n\t\t\t\t\t\t// Skip if `onclick` prevented default\n\t\t\t\t\t\tresult !== false && !e.defaultPrevented &&\n\t\t\t\t\t\t// Ignore everything but left clicks\n\t\t\t\t\t\t(e.button === 0 || e.which === 0 || e.which === 1) &&\n\t\t\t\t\t\t// Let the browser handle `target=_blank`, etc.\n\t\t\t\t\t\t(!e.currentTarget.target || e.currentTarget.target === \"_self\") &&\n\t\t\t\t\t\t// No modifier keys\n\t\t\t\t\t\t!e.ctrlKey && !e.metaKey && !e.shiftKey && !e.altKey\n\t\t\t\t\t) {\n\t\t\t\t\t\te.preventDefault()\n\t\t\t\t\t\te.redraw = false\n\t\t\t\t\t\troute.set(href, null, options)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn child\n\t\t},\n\t}\n\troute.param = function(key) {\n\t\treturn attrs && key != null ? attrs[key] : attrs\n\t}\n\n\treturn route\n}\n","\"use strict\"\n\nvar hyperscript = require(\"./render/hyperscript\")\n\nhyperscript.trust = require(\"./render/trust\")\nhyperscript.fragment = require(\"./render/fragment\")\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar hyperscript = require(\"./hyperscript\")\nvar request = require(\"./request\")\nvar mountRedraw = require(\"./mount-redraw\")\n\nvar m = function m() { return hyperscript.apply(this, arguments) }\nm.m = hyperscript\nm.trust = hyperscript.trust\nm.fragment = hyperscript.fragment\nm.Fragment = \"[\"\nm.mount = mountRedraw.mount\nm.route = require(\"./route\")\nm.render = require(\"./render\")\nm.redraw = mountRedraw.redraw\nm.request = request.request\nm.jsonp = request.jsonp\nm.parseQueryString = require(\"./querystring/parse\")\nm.buildQueryString = require(\"./querystring/build\")\nm.parsePathname = require(\"./pathname/parse\")\nm.buildPathname = require(\"./pathname/build\")\nm.vnode = require(\"./render/vnode\")\nm.PromisePolyfill = require(\"./promise/polyfill\")\nm.censor = require(\"./util/censor\")\n\nmodule.exports = m\n","\"use strict\"\n\nvar render = require(\"./render\")\n\nmodule.exports = require(\"./api/mount-redraw\")(render, typeof requestAnimationFrame !== \"undefined\" ? requestAnimationFrame : null, typeof console !== \"undefined\" ? console : null)\n","\"use strict\"\n\nvar buildQueryString = require(\"../querystring/build\")\nvar assign = require(\"../util/assign\")\n\n// Returns `path` from `template` + `params`\nmodule.exports = function(template, params) {\n\tif ((/:([^\\/\\.-]+)(\\.{3})?:/).test(template)) {\n\t\tthrow new SyntaxError(\"Template parameter names must be separated by either a '/', '-', or '.'.\")\n\t}\n\tif (params == null) return template\n\tvar queryIndex = template.indexOf(\"?\")\n\tvar hashIndex = template.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? template.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = template.slice(0, pathEnd)\n\tvar query = {}\n\n\tassign(query, params)\n\n\tvar resolved = path.replace(/:([^\\/\\.-]+)(\\.{3})?/g, function(m, key, variadic) {\n\t\tdelete query[key]\n\t\t// If no such parameter exists, don't interpolate it.\n\t\tif (params[key] == null) return m\n\t\t// Escape normal parameters, but not variadic ones.\n\t\treturn variadic ? params[key] : encodeURIComponent(String(params[key]))\n\t})\n\n\t// In case the template substitution adds new query/hash parameters.\n\tvar newQueryIndex = resolved.indexOf(\"?\")\n\tvar newHashIndex = resolved.indexOf(\"#\")\n\tvar newQueryEnd = newHashIndex < 0 ? resolved.length : newHashIndex\n\tvar newPathEnd = newQueryIndex < 0 ? newQueryEnd : newQueryIndex\n\tvar result = resolved.slice(0, newPathEnd)\n\n\tif (queryIndex >= 0) result += template.slice(queryIndex, queryEnd)\n\tif (newQueryIndex >= 0) result += (queryIndex < 0 ? \"?\" : \"&\") + resolved.slice(newQueryIndex, newQueryEnd)\n\tvar querystring = buildQueryString(query)\n\tif (querystring) result += (queryIndex < 0 && newQueryIndex < 0 ? \"?\" : \"&\") + querystring\n\tif (hashIndex >= 0) result += template.slice(hashIndex)\n\tif (newHashIndex >= 0) result += (hashIndex < 0 ? \"\" : \"&\") + resolved.slice(newHashIndex)\n\treturn result\n}\n","\"use strict\"\n\nvar parsePathname = require(\"./parse\")\n\n// Compiles a template into a function that takes a resolved path (without query\n// strings) and returns an object containing the template parameters with their\n// parsed values. This expects the input of the compiled template to be the\n// output of `parsePathname`. Note that it does *not* remove query parameters\n// specified in the template.\nmodule.exports = function(template) {\n\tvar templateData = parsePathname(template)\n\tvar templateKeys = Object.keys(templateData.params)\n\tvar keys = []\n\tvar regexp = new RegExp(\"^\" + templateData.path.replace(\n\t\t// I escape literal text so people can use things like `:file.:ext` or\n\t\t// `:lang-:locale` in routes. This is all merged into one pass so I\n\t\t// don't also accidentally escape `-` and make it harder to detect it to\n\t\t// ban it from template parameters.\n\t\t/:([^\\/.-]+)(\\.{3}|\\.(?!\\.)|-)?|[\\\\^$*+.()|\\[\\]{}]/g,\n\t\tfunction(m, key, extra) {\n\t\t\tif (key == null) return \"\\\\\" + m\n\t\t\tkeys.push({k: key, r: extra === \"...\"})\n\t\t\tif (extra === \"...\") return \"(.*)\"\n\t\t\tif (extra === \".\") return \"([^/]+)\\\\.\"\n\t\t\treturn \"([^/]+)\" + (extra || \"\")\n\t\t}\n\t) + \"$\")\n\treturn function(data) {\n\t\t// First, check the params. Usually, there isn't any, and it's just\n\t\t// checking a static set.\n\t\tfor (var i = 0; i < templateKeys.length; i++) {\n\t\t\tif (templateData.params[templateKeys[i]] !== data.params[templateKeys[i]]) return false\n\t\t}\n\t\t// If no interpolations exist, let's skip all the ceremony\n\t\tif (!keys.length) return regexp.test(data.path)\n\t\tvar values = regexp.exec(data.path)\n\t\tif (values == null) return false\n\t\tfor (var i = 0; i < keys.length; i++) {\n\t\t\tdata.params[keys[i].k] = keys[i].r ? values[i + 1] : decodeURIComponent(values[i + 1])\n\t\t}\n\t\treturn true\n\t}\n}\n","\"use strict\"\n\nvar parseQueryString = require(\"../querystring/parse\")\n\n// Returns `{path, params}` from `url`\nmodule.exports = function(url) {\n\tvar queryIndex = url.indexOf(\"?\")\n\tvar hashIndex = url.indexOf(\"#\")\n\tvar queryEnd = hashIndex < 0 ? url.length : hashIndex\n\tvar pathEnd = queryIndex < 0 ? queryEnd : queryIndex\n\tvar path = url.slice(0, pathEnd).replace(/\\/{2,}/g, \"/\")\n\n\tif (!path) path = \"/\"\n\telse {\n\t\tif (path[0] !== \"/\") path = \"/\" + path\n\t\tif (path.length > 1 && path[path.length - 1] === \"/\") path = path.slice(0, -1)\n\t}\n\treturn {\n\t\tpath: path,\n\t\tparams: queryIndex < 0\n\t\t\t? {}\n\t\t\t: parseQueryString(url.slice(queryIndex + 1, queryEnd)),\n\t}\n}\n","\"use strict\"\n/** @constructor */\nvar PromisePolyfill = function(executor) {\n\tif (!(this instanceof PromisePolyfill)) throw new Error(\"Promise must be called with 'new'.\")\n\tif (typeof executor !== \"function\") throw new TypeError(\"executor must be a function.\")\n\n\tvar self = this, resolvers = [], rejectors = [], resolveCurrent = handler(resolvers, true), rejectCurrent = handler(rejectors, false)\n\tvar instance = self._instance = {resolvers: resolvers, rejectors: rejectors}\n\tvar callAsync = typeof setImmediate === \"function\" ? setImmediate : setTimeout\n\tfunction handler(list, shouldAbsorb) {\n\t\treturn function execute(value) {\n\t\t\tvar then\n\t\t\ttry {\n\t\t\t\tif (shouldAbsorb && value != null && (typeof value === \"object\" || typeof value === \"function\") && typeof (then = value.then) === \"function\") {\n\t\t\t\t\tif (value === self) throw new TypeError(\"Promise can't be resolved with itself.\")\n\t\t\t\t\texecuteOnce(then.bind(value))\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcallAsync(function() {\n\t\t\t\t\t\tif (!shouldAbsorb && list.length === 0) console.error(\"Possible unhandled promise rejection:\", value)\n\t\t\t\t\t\tfor (var i = 0; i < list.length; i++) list[i](value)\n\t\t\t\t\t\tresolvers.length = 0, rejectors.length = 0\n\t\t\t\t\t\tinstance.state = shouldAbsorb\n\t\t\t\t\t\tinstance.retry = function() {execute(value)}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t\tcatch (e) {\n\t\t\t\trejectCurrent(e)\n\t\t\t}\n\t\t}\n\t}\n\tfunction executeOnce(then) {\n\t\tvar runs = 0\n\t\tfunction run(fn) {\n\t\t\treturn function(value) {\n\t\t\t\tif (runs++ > 0) return\n\t\t\t\tfn(value)\n\t\t\t}\n\t\t}\n\t\tvar onerror = run(rejectCurrent)\n\t\ttry {then(run(resolveCurrent), onerror)} catch (e) {onerror(e)}\n\t}\n\n\texecuteOnce(executor)\n}\nPromisePolyfill.prototype.then = function(onFulfilled, onRejection) {\n\tvar self = this, instance = self._instance\n\tfunction handle(callback, list, next, state) {\n\t\tlist.push(function(value) {\n\t\t\tif (typeof callback !== \"function\") next(value)\n\t\t\telse try {resolveNext(callback(value))} catch (e) {if (rejectNext) rejectNext(e)}\n\t\t})\n\t\tif (typeof instance.retry === \"function\" && state === instance.state) instance.retry()\n\t}\n\tvar resolveNext, rejectNext\n\tvar promise = new PromisePolyfill(function(resolve, reject) {resolveNext = resolve, rejectNext = reject})\n\thandle(onFulfilled, instance.resolvers, resolveNext, true), handle(onRejection, instance.rejectors, rejectNext, false)\n\treturn promise\n}\nPromisePolyfill.prototype.catch = function(onRejection) {\n\treturn this.then(null, onRejection)\n}\nPromisePolyfill.prototype.finally = function(callback) {\n\treturn this.then(\n\t\tfunction(value) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn value\n\t\t\t})\n\t\t},\n\t\tfunction(reason) {\n\t\t\treturn PromisePolyfill.resolve(callback()).then(function() {\n\t\t\t\treturn PromisePolyfill.reject(reason);\n\t\t\t})\n\t\t}\n\t)\n}\nPromisePolyfill.resolve = function(value) {\n\tif (value instanceof PromisePolyfill) return value\n\treturn new PromisePolyfill(function(resolve) {resolve(value)})\n}\nPromisePolyfill.reject = function(value) {\n\treturn new PromisePolyfill(function(resolve, reject) {reject(value)})\n}\nPromisePolyfill.all = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tvar total = list.length, count = 0, values = []\n\t\tif (list.length === 0) resolve([])\n\t\telse for (var i = 0; i < list.length; i++) {\n\t\t\t(function(i) {\n\t\t\t\tfunction consume(value) {\n\t\t\t\t\tcount++\n\t\t\t\t\tvalues[i] = value\n\t\t\t\t\tif (count === total) resolve(values)\n\t\t\t\t}\n\t\t\t\tif (list[i] != null && (typeof list[i] === \"object\" || typeof list[i] === \"function\") && typeof list[i].then === \"function\") {\n\t\t\t\t\tlist[i].then(consume, reject)\n\t\t\t\t}\n\t\t\t\telse consume(list[i])\n\t\t\t})(i)\n\t\t}\n\t})\n}\nPromisePolyfill.race = function(list) {\n\treturn new PromisePolyfill(function(resolve, reject) {\n\t\tfor (var i = 0; i < list.length; i++) {\n\t\t\tlist[i].then(resolve, reject)\n\t\t}\n\t})\n}\n\nmodule.exports = PromisePolyfill\n","/* global window */\n\"use strict\"\n\nvar PromisePolyfill = require(\"./polyfill\")\n\nif (typeof window !== \"undefined\") {\n\tif (typeof window.Promise === \"undefined\") {\n\t\twindow.Promise = PromisePolyfill\n\t} else if (!window.Promise.prototype.finally) {\n\t\twindow.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tmodule.exports = window.Promise\n} else if (typeof global !== \"undefined\") {\n\tif (typeof global.Promise === \"undefined\") {\n\t\tglobal.Promise = PromisePolyfill\n\t} else if (!global.Promise.prototype.finally) {\n\t\tglobal.Promise.prototype.finally = PromisePolyfill.prototype.finally\n\t}\n\tmodule.exports = global.Promise\n} else {\n\tmodule.exports = PromisePolyfill\n}\n","\"use strict\"\n\nmodule.exports = function(object) {\n\tif (Object.prototype.toString.call(object) !== \"[object Object]\") return \"\"\n\n\tvar args = []\n\tfor (var key in object) {\n\t\tdestructure(key, object[key])\n\t}\n\n\treturn args.join(\"&\")\n\n\tfunction destructure(key, value) {\n\t\tif (Array.isArray(value)) {\n\t\t\tfor (var i = 0; i < value.length; i++) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse if (Object.prototype.toString.call(value) === \"[object Object]\") {\n\t\t\tfor (var i in value) {\n\t\t\t\tdestructure(key + \"[\" + i + \"]\", value[i])\n\t\t\t}\n\t\t}\n\t\telse args.push(encodeURIComponent(key) + (value != null && value !== \"\" ? \"=\" + encodeURIComponent(value) : \"\"))\n\t}\n}\n","\"use strict\"\n\nfunction decodeURIComponentSave(str) {\n\ttry {\n\t\treturn decodeURIComponent(str)\n\t} catch(err) {\n\t\treturn str\n\t}\n}\n\nmodule.exports = function(string) {\n\tif (string === \"\" || string == null) return {}\n\tif (string.charAt(0) === \"?\") string = string.slice(1)\n\n\tvar entries = string.split(\"&\"), counters = {}, data = {}\n\tfor (var i = 0; i < entries.length; i++) {\n\t\tvar entry = entries[i].split(\"=\")\n\t\tvar key = decodeURIComponentSave(entry[0])\n\t\tvar value = entry.length === 2 ? decodeURIComponentSave(entry[1]) : \"\"\n\n\t\tif (value === \"true\") value = true\n\t\telse if (value === \"false\") value = false\n\n\t\tvar levels = key.split(/\\]\\[?|\\[/)\n\t\tvar cursor = data\n\t\tif (key.indexOf(\"[\") > -1) levels.pop()\n\t\tfor (var j = 0; j < levels.length; j++) {\n\t\t\tvar level = levels[j], nextLevel = levels[j + 1]\n\t\t\tvar isNumber = nextLevel == \"\" || !isNaN(parseInt(nextLevel, 10))\n\t\t\tif (level === \"\") {\n\t\t\t\tvar key = levels.slice(0, j).join()\n\t\t\t\tif (counters[key] == null) {\n\t\t\t\t\tcounters[key] = Array.isArray(cursor) ? cursor.length : 0\n\t\t\t\t}\n\t\t\t\tlevel = counters[key]++\n\t\t\t}\n\t\t\t// Disallow direct prototype pollution\n\t\t\telse if (level === \"__proto__\") break\n\t\t\tif (j === levels.length - 1) cursor[level] = value\n\t\t\telse {\n\t\t\t\t// Read own properties exclusively to disallow indirect\n\t\t\t\t// prototype pollution\n\t\t\t\tvar desc = Object.getOwnPropertyDescriptor(cursor, level)\n\t\t\t\tif (desc != null) desc = desc.value\n\t\t\t\tif (desc == null) cursor[level] = desc = isNumber ? [] : {}\n\t\t\t\tcursor = desc\n\t\t\t}\n\t\t}\n\t}\n\treturn data\n}\n","\"use strict\"\n\nmodule.exports = require(\"./render/render\")(typeof window !== \"undefined\" ? window : null)\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\n\nmodule.exports = function() {\n\tvar vnode = hyperscriptVnode.apply(0, arguments)\n\n\tvnode.tag = \"[\"\n\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\treturn vnode\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\nvar hyperscriptVnode = require(\"./hyperscriptVnode\")\nvar hasOwn = require(\"../util/hasOwn\")\n\nvar selectorParser = /(?:(^|#|\\.)([^#\\.\\[\\]]+))|(\\[(.+?)(?:\\s*=\\s*(\"|'|)((?:\\\\[\"'\\]]|.)*?)\\5)?\\])/g\nvar selectorCache = {}\n\nfunction isEmpty(object) {\n\tfor (var key in object) if (hasOwn.call(object, key)) return false\n\treturn true\n}\n\nfunction compileSelector(selector) {\n\tvar match, tag = \"div\", classes = [], attrs = {}\n\twhile (match = selectorParser.exec(selector)) {\n\t\tvar type = match[1], value = match[2]\n\t\tif (type === \"\" && value !== \"\") tag = value\n\t\telse if (type === \"#\") attrs.id = value\n\t\telse if (type === \".\") classes.push(value)\n\t\telse if (match[3][0] === \"[\") {\n\t\t\tvar attrValue = match[6]\n\t\t\tif (attrValue) attrValue = attrValue.replace(/\\\\([\"'])/g, \"$1\").replace(/\\\\\\\\/g, \"\\\\\")\n\t\t\tif (match[4] === \"class\") classes.push(attrValue)\n\t\t\telse attrs[match[4]] = attrValue === \"\" ? attrValue : attrValue || true\n\t\t}\n\t}\n\tif (classes.length > 0) attrs.className = classes.join(\" \")\n\treturn selectorCache[selector] = {tag: tag, attrs: attrs}\n}\n\nfunction execSelector(state, vnode) {\n\tvar attrs = vnode.attrs\n\tvar hasClass = hasOwn.call(attrs, \"class\")\n\tvar className = hasClass ? attrs.class : attrs.className\n\n\tvnode.tag = state.tag\n\tvnode.attrs = {}\n\n\tif (!isEmpty(state.attrs) && !isEmpty(attrs)) {\n\t\tvar newAttrs = {}\n\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key)) newAttrs[key] = attrs[key]\n\t\t}\n\n\t\tattrs = newAttrs\n\t}\n\n\tfor (var key in state.attrs) {\n\t\tif (hasOwn.call(state.attrs, key) && key !== \"className\" && !hasOwn.call(attrs, key)){\n\t\t\tattrs[key] = state.attrs[key]\n\t\t}\n\t}\n\tif (className != null || state.attrs.className != null) attrs.className =\n\t\tclassName != null\n\t\t\t? state.attrs.className != null\n\t\t\t\t? String(state.attrs.className) + \" \" + String(className)\n\t\t\t\t: className\n\t\t\t: state.attrs.className != null\n\t\t\t\t? state.attrs.className\n\t\t\t\t: null\n\n\tif (hasClass) attrs.class = null\n\n\tfor (var key in attrs) {\n\t\tif (hasOwn.call(attrs, key) && key !== \"key\") {\n\t\t\tvnode.attrs = attrs\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn vnode\n}\n\nfunction hyperscript(selector) {\n\tif (selector == null || typeof selector !== \"string\" && typeof selector !== \"function\" && typeof selector.view !== \"function\") {\n\t\tthrow Error(\"The selector must be either a string or a component.\");\n\t}\n\n\tvar vnode = hyperscriptVnode.apply(1, arguments)\n\n\tif (typeof selector === \"string\") {\n\t\tvnode.children = Vnode.normalizeChildren(vnode.children)\n\t\tif (selector !== \"[\") return execSelector(selectorCache[selector] || compileSelector(selector), vnode)\n\t}\n\n\tvnode.tag = selector\n\treturn vnode\n}\n\nmodule.exports = hyperscript\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\n// Call via `hyperscriptVnode.apply(startOffset, arguments)`\n//\n// The reason I do it this way, forwarding the arguments and passing the start\n// offset in `this`, is so I don't have to create a temporary array in a\n// performance-critical path.\n//\n// In native ES6, I'd instead add a final `...args` parameter to the\n// `hyperscript` and `fragment` factories and define this as\n// `hyperscriptVnode(...args)`, since modern engines do optimize that away. But\n// ES5 (what Mithril.js requires thanks to IE support) doesn't give me that luxury,\n// and engines aren't nearly intelligent enough to do either of these:\n//\n// 1. Elide the allocation for `[].slice.call(arguments, 1)` when it's passed to\n// another function only to be indexed.\n// 2. Elide an `arguments` allocation when it's passed to any function other\n// than `Function.prototype.apply` or `Reflect.apply`.\n//\n// In ES6, it'd probably look closer to this (I'd need to profile it, though):\n// module.exports = function(attrs, ...children) {\n// if (attrs == null || typeof attrs === \"object\" && attrs.tag == null && !Array.isArray(attrs)) {\n// if (children.length === 1 && Array.isArray(children[0])) children = children[0]\n// } else {\n// children = children.length === 0 && Array.isArray(attrs) ? attrs : [attrs, ...children]\n// attrs = undefined\n// }\n//\n// if (attrs == null) attrs = {}\n// return Vnode(\"\", attrs.key, attrs, children)\n// }\nmodule.exports = function() {\n\tvar attrs = arguments[this], start = this + 1, children\n\n\tif (attrs == null) {\n\t\tattrs = {}\n\t} else if (typeof attrs !== \"object\" || attrs.tag != null || Array.isArray(attrs)) {\n\t\tattrs = {}\n\t\tstart = this\n\t}\n\n\tif (arguments.length === start + 1) {\n\t\tchildren = arguments[start]\n\t\tif (!Array.isArray(children)) children = [children]\n\t} else {\n\t\tchildren = []\n\t\twhile (start < arguments.length) children.push(arguments[start++])\n\t}\n\n\treturn Vnode(\"\", attrs.key, attrs, children)\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function($window) {\n\tvar $doc = $window && $window.document\n\tvar currentRedraw\n\n\tvar nameSpace = {\n\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\tmath: \"http://www.w3.org/1998/Math/MathML\"\n\t}\n\n\tfunction getNameSpace(vnode) {\n\t\treturn vnode.attrs && vnode.attrs.xmlns || nameSpace[vnode.tag]\n\t}\n\n\t//sanity check to discourage people from doing `vnode.state = ...`\n\tfunction checkState(vnode, original) {\n\t\tif (vnode.state !== original) throw new Error(\"'vnode.state' must not be modified.\")\n\t}\n\n\t//Note: the hook is passed as the `this` argument to allow proxying the\n\t//arguments without requiring a full array allocation to do so. It also\n\t//takes advantage of the fact the current `vnode` is the first argument in\n\t//all lifecycle methods.\n\tfunction callHook(vnode) {\n\t\tvar original = vnode.state\n\t\ttry {\n\t\t\treturn this.apply(original, arguments)\n\t\t} finally {\n\t\t\tcheckState(vnode, original)\n\t\t}\n\t}\n\n\t// IE11 (at least) throws an UnspecifiedError when accessing document.activeElement when\n\t// inside an iframe. Catch and swallow this error, and heavy-handidly return null.\n\tfunction activeElement() {\n\t\ttry {\n\t\t\treturn $doc.activeElement\n\t\t} catch (e) {\n\t\t\treturn null\n\t\t}\n\t}\n\t//create\n\tfunction createNodes(parent, vnodes, start, end, hooks, nextSibling, ns) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) {\n\t\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t}\n\tfunction createNode(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tif (typeof tag === \"string\") {\n\t\t\tvnode.state = {}\n\t\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\t\tswitch (tag) {\n\t\t\t\tcase \"#\": createText(parent, vnode, nextSibling); break\n\t\t\t\tcase \"<\": createHTML(parent, vnode, ns, nextSibling); break\n\t\t\t\tcase \"[\": createFragment(parent, vnode, hooks, ns, nextSibling); break\n\t\t\t\tdefault: createElement(parent, vnode, hooks, ns, nextSibling)\n\t\t\t}\n\t\t}\n\t\telse createComponent(parent, vnode, hooks, ns, nextSibling)\n\t}\n\tfunction createText(parent, vnode, nextSibling) {\n\t\tvnode.dom = $doc.createTextNode(vnode.children)\n\t\tinsertNode(parent, vnode.dom, nextSibling)\n\t}\n\tvar possibleParents = {caption: \"table\", thead: \"table\", tbody: \"table\", tfoot: \"table\", tr: \"tbody\", th: \"tr\", td: \"tr\", colgroup: \"table\", col: \"colgroup\"}\n\tfunction createHTML(parent, vnode, ns, nextSibling) {\n\t\tvar match = vnode.children.match(/^\\s*?<(\\w+)/im) || []\n\t\t// not using the proper parent makes the child element(s) vanish.\n\t\t// var div = document.createElement(\"div\")\n\t\t// div.innerHTML = \"ij\"\n\t\t// console.log(div.innerHTML)\n\t\t// --> \"ij\", no in sight.\n\t\tvar temp = $doc.createElement(possibleParents[match[1]] || \"div\")\n\t\tif (ns === \"http://www.w3.org/2000/svg\") {\n\t\t\ttemp.innerHTML = \"\" + vnode.children + \"\"\n\t\t\ttemp = temp.firstChild\n\t\t} else {\n\t\t\ttemp.innerHTML = vnode.children\n\t\t}\n\t\tvnode.dom = temp.firstChild\n\t\tvnode.domSize = temp.childNodes.length\n\t\t// Capture nodes to remove, so we don't confuse them.\n\t\tvnode.instance = []\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tvar child\n\t\twhile (child = temp.firstChild) {\n\t\t\tvnode.instance.push(child)\n\t\t\tfragment.appendChild(child)\n\t\t}\n\t\tinsertNode(parent, fragment, nextSibling)\n\t}\n\tfunction createFragment(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar fragment = $doc.createDocumentFragment()\n\t\tif (vnode.children != null) {\n\t\t\tvar children = vnode.children\n\t\t\tcreateNodes(fragment, children, 0, children.length, hooks, null, ns)\n\t\t}\n\t\tvnode.dom = fragment.firstChild\n\t\tvnode.domSize = fragment.childNodes.length\n\t\tinsertNode(parent, fragment, nextSibling)\n\t}\n\tfunction createElement(parent, vnode, hooks, ns, nextSibling) {\n\t\tvar tag = vnode.tag\n\t\tvar attrs = vnode.attrs\n\t\tvar is = attrs && attrs.is\n\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tvar element = ns ?\n\t\t\tis ? $doc.createElementNS(ns, tag, {is: is}) : $doc.createElementNS(ns, tag) :\n\t\t\tis ? $doc.createElement(tag, {is: is}) : $doc.createElement(tag)\n\t\tvnode.dom = element\n\n\t\tif (attrs != null) {\n\t\t\tsetAttrs(vnode, attrs, ns)\n\t\t}\n\n\t\tinsertNode(parent, element, nextSibling)\n\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tif (vnode.children != null) {\n\t\t\t\tvar children = vnode.children\n\t\t\t\tcreateNodes(element, children, 0, children.length, hooks, null, ns)\n\t\t\t\tif (vnode.tag === \"select\" && attrs != null) setLateSelectAttrs(vnode, attrs)\n\t\t\t}\n\t\t}\n\t}\n\tfunction initComponent(vnode, hooks) {\n\t\tvar sentinel\n\t\tif (typeof vnode.tag.view === \"function\") {\n\t\t\tvnode.state = Object.create(vnode.tag)\n\t\t\tsentinel = vnode.state.view\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t} else {\n\t\t\tvnode.state = void 0\n\t\t\tsentinel = vnode.tag\n\t\t\tif (sentinel.$$reentrantLock$$ != null) return\n\t\t\tsentinel.$$reentrantLock$$ = true\n\t\t\tvnode.state = (vnode.tag.prototype != null && typeof vnode.tag.prototype.view === \"function\") ? new vnode.tag(vnode) : vnode.tag(vnode)\n\t\t}\n\t\tinitLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) initLifecycle(vnode.attrs, vnode, hooks)\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tsentinel.$$reentrantLock$$ = null\n\t}\n\tfunction createComponent(parent, vnode, hooks, ns, nextSibling) {\n\t\tinitComponent(vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tcreateNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.dom != null ? vnode.instance.domSize : 0\n\t\t}\n\t\telse {\n\t\t\tvnode.domSize = 0\n\t\t}\n\t}\n\n\t//update\n\t/**\n\t * @param {Element|Fragment} parent - the parent element\n\t * @param {Vnode[] | null} old - the list of vnodes of the last `render()` call for\n\t * this part of the tree\n\t * @param {Vnode[] | null} vnodes - as above, but for the current `render()` call.\n\t * @param {Function[]} hooks - an accumulator of post-render hooks (oncreate/onupdate)\n\t * @param {Element | null} nextSibling - the next DOM node if we're dealing with a\n\t * fragment that is not the last item in its\n\t * parent\n\t * @param {'svg' | 'math' | String | null} ns) - the current XML namespace, if any\n\t * @returns void\n\t */\n\t// This function diffs and patches lists of vnodes, both keyed and unkeyed.\n\t//\n\t// We will:\n\t//\n\t// 1. describe its general structure\n\t// 2. focus on the diff algorithm optimizations\n\t// 3. discuss DOM node operations.\n\n\t// ## Overview:\n\t//\n\t// The updateNodes() function:\n\t// - deals with trivial cases\n\t// - determines whether the lists are keyed or unkeyed based on the first non-null node\n\t// of each list.\n\t// - diffs them and patches the DOM if needed (that's the brunt of the code)\n\t// - manages the leftovers: after diffing, are there:\n\t// - old nodes left to remove?\n\t// \t - new nodes to insert?\n\t// \t deal with them!\n\t//\n\t// The lists are only iterated over once, with an exception for the nodes in `old` that\n\t// are visited in the fourth part of the diff and in the `removeNodes` loop.\n\n\t// ## Diffing\n\t//\n\t// Reading https://github.com/localvoid/ivi/blob/ddc09d06abaef45248e6133f7040d00d3c6be853/packages/ivi/src/vdom/implementation.ts#L617-L837\n\t// may be good for context on longest increasing subsequence-based logic for moving nodes.\n\t//\n\t// In order to diff keyed lists, one has to\n\t//\n\t// 1) match nodes in both lists, per key, and update them accordingly\n\t// 2) create the nodes present in the new list, but absent in the old one\n\t// 3) remove the nodes present in the old list, but absent in the new one\n\t// 4) figure out what nodes in 1) to move in order to minimize the DOM operations.\n\t//\n\t// To achieve 1) one can create a dictionary of keys => index (for the old list), then iterate\n\t// over the new list and for each new vnode, find the corresponding vnode in the old list using\n\t// the map.\n\t// 2) is achieved in the same step: if a new node has no corresponding entry in the map, it is new\n\t// and must be created.\n\t// For the removals, we actually remove the nodes that have been updated from the old list.\n\t// The nodes that remain in that list after 1) and 2) have been performed can be safely removed.\n\t// The fourth step is a bit more complex and relies on the longest increasing subsequence (LIS)\n\t// algorithm.\n\t//\n\t// the longest increasing subsequence is the list of nodes that can remain in place. Imagine going\n\t// from `1,2,3,4,5` to `4,5,1,2,3` where the numbers are not necessarily the keys, but the indices\n\t// corresponding to the keyed nodes in the old list (keyed nodes `e,d,c,b,a` => `b,a,e,d,c` would\n\t// match the above lists, for example).\n\t//\n\t// In there are two increasing subsequences: `4,5` and `1,2,3`, the latter being the longest. We\n\t// can update those nodes without moving them, and only call `insertNode` on `4` and `5`.\n\t//\n\t// @localvoid adapted the algo to also support node deletions and insertions (the `lis` is actually\n\t// the longest increasing subsequence *of old nodes still present in the new list*).\n\t//\n\t// It is a general algorithm that is fireproof in all circumstances, but it requires the allocation\n\t// and the construction of a `key => oldIndex` map, and three arrays (one with `newIndex => oldIndex`,\n\t// the `LIS` and a temporary one to create the LIS).\n\t//\n\t// So we cheat where we can: if the tails of the lists are identical, they are guaranteed to be part of\n\t// the LIS and can be updated without moving them.\n\t//\n\t// If two nodes are swapped, they are guaranteed not to be part of the LIS, and must be moved (with\n\t// the exception of the last node if the list is fully reversed).\n\t//\n\t// ## Finding the next sibling.\n\t//\n\t// `updateNode()` and `createNode()` expect a nextSibling parameter to perform DOM operations.\n\t// When the list is being traversed top-down, at any index, the DOM nodes up to the previous\n\t// vnode reflect the content of the new list, whereas the rest of the DOM nodes reflect the old\n\t// list. The next sibling must be looked for in the old list using `getNextSibling(... oldStart + 1 ...)`.\n\t//\n\t// In the other scenarios (swaps, upwards traversal, map-based diff),\n\t// the new vnodes list is traversed upwards. The DOM nodes at the bottom of the list reflect the\n\t// bottom part of the new vnodes list, and we can use the `v.dom` value of the previous node\n\t// as the next sibling (cached in the `nextSibling` variable).\n\n\n\t// ## DOM node moves\n\t//\n\t// In most scenarios `updateNode()` and `createNode()` perform the DOM operations. However,\n\t// this is not the case if the node moved (second and fourth part of the diff algo). We move\n\t// the old DOM nodes before updateNode runs because it enables us to use the cached `nextSibling`\n\t// variable rather than fetching it using `getNextSibling()`.\n\t//\n\t// The fourth part of the diff currently inserts nodes unconditionally, leading to issues\n\t// like #1791 and #1999. We need to be smarter about those situations where adjascent old\n\t// nodes remain together in the new list in a way that isn't covered by parts one and\n\t// three of the diff algo.\n\n\tfunction updateNodes(parent, old, vnodes, hooks, nextSibling, ns) {\n\t\tif (old === vnodes || old == null && vnodes == null) return\n\t\telse if (old == null || old.length === 0) createNodes(parent, vnodes, 0, vnodes.length, hooks, nextSibling, ns)\n\t\telse if (vnodes == null || vnodes.length === 0) removeNodes(parent, old, 0, old.length)\n\t\telse {\n\t\t\tvar isOldKeyed = old[0] != null && old[0].key != null\n\t\t\tvar isKeyed = vnodes[0] != null && vnodes[0].key != null\n\t\t\tvar start = 0, oldStart = 0\n\t\t\tif (!isOldKeyed) while (oldStart < old.length && old[oldStart] == null) oldStart++\n\t\t\tif (!isKeyed) while (start < vnodes.length && vnodes[start] == null) start++\n\t\t\tif (isOldKeyed !== isKeyed) {\n\t\t\t\tremoveNodes(parent, old, oldStart, old.length)\n\t\t\t\tcreateNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else if (!isKeyed) {\n\t\t\t\t// Don't index past the end of either list (causes deopts).\n\t\t\t\tvar commonLength = old.length < vnodes.length ? old.length : vnodes.length\n\t\t\t\t// Rewind if necessary to the first non-null index on either side.\n\t\t\t\t// We could alternatively either explicitly create or remove nodes when `start !== oldStart`\n\t\t\t\t// but that would be optimizing for sparse lists which are more rare than dense ones.\n\t\t\t\tstart = start < oldStart ? start : oldStart\n\t\t\t\tfor (; start < commonLength; start++) {\n\t\t\t\t\to = old[start]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o === v || o == null && v == null) continue\n\t\t\t\t\telse if (o == null) createNode(parent, v, hooks, ns, getNextSibling(old, start + 1, nextSibling))\n\t\t\t\t\telse if (v == null) removeNode(parent, o)\n\t\t\t\t\telse updateNode(parent, o, v, hooks, getNextSibling(old, start + 1, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\tif (old.length > commonLength) removeNodes(parent, old, start, old.length)\n\t\t\t\tif (vnodes.length > commonLength) createNodes(parent, vnodes, start, vnodes.length, hooks, nextSibling, ns)\n\t\t\t} else {\n\t\t\t\t// keyed diff\n\t\t\t\tvar oldEnd = old.length - 1, end = vnodes.length - 1, map, o, v, oe, ve, topSibling\n\n\t\t\t\t// bottom-up\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t}\n\t\t\t\t// top-down\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t\tif (o.key !== v.key) break\n\t\t\t\t\toldStart++, start++\n\t\t\t\t\tif (o !== v) updateNode(parent, o, v, hooks, getNextSibling(old, oldStart, nextSibling), ns)\n\t\t\t\t}\n\t\t\t\t// swaps and list reversals\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (start === end) break\n\t\t\t\t\tif (o.key !== ve.key || oe.key !== v.key) break\n\t\t\t\t\ttopSibling = getNextSibling(old, oldStart, nextSibling)\n\t\t\t\t\tmoveNodes(parent, oe, topSibling)\n\t\t\t\t\tif (oe !== v) updateNode(parent, oe, v, hooks, topSibling, ns)\n\t\t\t\t\tif (++start <= --end) moveNodes(parent, o, nextSibling)\n\t\t\t\t\tif (o !== ve) updateNode(parent, o, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldStart++; oldEnd--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t\to = old[oldStart]\n\t\t\t\t\tv = vnodes[start]\n\t\t\t\t}\n\t\t\t\t// bottom up once again\n\t\t\t\twhile (oldEnd >= oldStart && end >= start) {\n\t\t\t\t\tif (oe.key !== ve.key) break\n\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\toldEnd--, end--\n\t\t\t\t\toe = old[oldEnd]\n\t\t\t\t\tve = vnodes[end]\n\t\t\t\t}\n\t\t\t\tif (start > end) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\telse if (oldStart > oldEnd) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\telse {\n\t\t\t\t\t// inspired by ivi https://github.com/ivijs/ivi/ by Boris Kaul\n\t\t\t\t\tvar originalNextSibling = nextSibling, vnodesLength = end - start + 1, oldIndices = new Array(vnodesLength), li=0, i=0, pos = 2147483647, matched = 0, map, lisIndices\n\t\t\t\t\tfor (i = 0; i < vnodesLength; i++) oldIndices[i] = -1\n\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\tif (map == null) map = getKeyMap(old, oldStart, oldEnd + 1)\n\t\t\t\t\t\tve = vnodes[i]\n\t\t\t\t\t\tvar oldIndex = map[ve.key]\n\t\t\t\t\t\tif (oldIndex != null) {\n\t\t\t\t\t\t\tpos = (oldIndex < pos) ? oldIndex : -1 // becomes -1 if nodes were re-ordered\n\t\t\t\t\t\t\toldIndices[i-start] = oldIndex\n\t\t\t\t\t\t\toe = old[oldIndex]\n\t\t\t\t\t\t\told[oldIndex] = null\n\t\t\t\t\t\t\tif (oe !== ve) updateNode(parent, oe, ve, hooks, nextSibling, ns)\n\t\t\t\t\t\t\tif (ve.dom != null) nextSibling = ve.dom\n\t\t\t\t\t\t\tmatched++\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tnextSibling = originalNextSibling\n\t\t\t\t\tif (matched !== oldEnd - oldStart + 1) removeNodes(parent, old, oldStart, oldEnd + 1)\n\t\t\t\t\tif (matched === 0) createNodes(parent, vnodes, start, end + 1, hooks, nextSibling, ns)\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (pos === -1) {\n\t\t\t\t\t\t\t// the indices of the indices of the items that are part of the\n\t\t\t\t\t\t\t// longest increasing subsequence in the oldIndices list\n\t\t\t\t\t\t\tlisIndices = makeLisIndices(oldIndices)\n\t\t\t\t\t\t\tli = lisIndices.length - 1\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif (lisIndices[li] === i - start) li--\n\t\t\t\t\t\t\t\t\telse moveNodes(parent, v, nextSibling)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor (i = end; i >= start; i--) {\n\t\t\t\t\t\t\t\tv = vnodes[i]\n\t\t\t\t\t\t\t\tif (oldIndices[i-start] === -1) createNode(parent, v, hooks, ns, nextSibling)\n\t\t\t\t\t\t\t\tif (v.dom != null) nextSibling = vnodes[i].dom\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction updateNode(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvar oldTag = old.tag, tag = vnode.tag\n\t\tif (oldTag === tag) {\n\t\t\tvnode.state = old.state\n\t\t\tvnode.events = old.events\n\t\t\tif (shouldNotUpdate(vnode, old)) return\n\t\t\tif (typeof oldTag === \"string\") {\n\t\t\t\tif (vnode.attrs != null) {\n\t\t\t\t\tupdateLifecycle(vnode.attrs, vnode, hooks)\n\t\t\t\t}\n\t\t\t\tswitch (oldTag) {\n\t\t\t\t\tcase \"#\": updateText(old, vnode); break\n\t\t\t\t\tcase \"<\": updateHTML(parent, old, vnode, ns, nextSibling); break\n\t\t\t\t\tcase \"[\": updateFragment(parent, old, vnode, hooks, nextSibling, ns); break\n\t\t\t\t\tdefault: updateElement(old, vnode, hooks, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t\telse updateComponent(parent, old, vnode, hooks, nextSibling, ns)\n\t\t}\n\t\telse {\n\t\t\tremoveNode(parent, old)\n\t\t\tcreateNode(parent, vnode, hooks, ns, nextSibling)\n\t\t}\n\t}\n\tfunction updateText(old, vnode) {\n\t\tif (old.children.toString() !== vnode.children.toString()) {\n\t\t\told.dom.nodeValue = vnode.children\n\t\t}\n\t\tvnode.dom = old.dom\n\t}\n\tfunction updateHTML(parent, old, vnode, ns, nextSibling) {\n\t\tif (old.children !== vnode.children) {\n\t\t\tremoveHTML(parent, old)\n\t\t\tcreateHTML(parent, vnode, ns, nextSibling)\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t\tvnode.instance = old.instance\n\t\t}\n\t}\n\tfunction updateFragment(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tupdateNodes(parent, old.children, vnode.children, hooks, nextSibling, ns)\n\t\tvar domSize = 0, children = vnode.children\n\t\tvnode.dom = null\n\t\tif (children != null) {\n\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\tvar child = children[i]\n\t\t\t\tif (child != null && child.dom != null) {\n\t\t\t\t\tif (vnode.dom == null) vnode.dom = child.dom\n\t\t\t\t\tdomSize += child.domSize || 1\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (domSize !== 1) vnode.domSize = domSize\n\t\t}\n\t}\n\tfunction updateElement(old, vnode, hooks, ns) {\n\t\tvar element = vnode.dom = old.dom\n\t\tns = getNameSpace(vnode) || ns\n\n\t\tif (vnode.tag === \"textarea\") {\n\t\t\tif (vnode.attrs == null) vnode.attrs = {}\n\t\t}\n\t\tupdateAttrs(vnode, old.attrs, vnode.attrs, ns)\n\t\tif (!maybeSetContentEditable(vnode)) {\n\t\t\tupdateNodes(element, old.children, vnode.children, hooks, null, ns)\n\t\t}\n\t}\n\tfunction updateComponent(parent, old, vnode, hooks, nextSibling, ns) {\n\t\tvnode.instance = Vnode.normalize(callHook.call(vnode.state.view, vnode))\n\t\tif (vnode.instance === vnode) throw Error(\"A view cannot return the vnode it received as argument\")\n\t\tupdateLifecycle(vnode.state, vnode, hooks)\n\t\tif (vnode.attrs != null) updateLifecycle(vnode.attrs, vnode, hooks)\n\t\tif (vnode.instance != null) {\n\t\t\tif (old.instance == null) createNode(parent, vnode.instance, hooks, ns, nextSibling)\n\t\t\telse updateNode(parent, old.instance, vnode.instance, hooks, nextSibling, ns)\n\t\t\tvnode.dom = vnode.instance.dom\n\t\t\tvnode.domSize = vnode.instance.domSize\n\t\t}\n\t\telse if (old.instance != null) {\n\t\t\tremoveNode(parent, old.instance)\n\t\t\tvnode.dom = undefined\n\t\t\tvnode.domSize = 0\n\t\t}\n\t\telse {\n\t\t\tvnode.dom = old.dom\n\t\t\tvnode.domSize = old.domSize\n\t\t}\n\t}\n\tfunction getKeyMap(vnodes, start, end) {\n\t\tvar map = Object.create(null)\n\t\tfor (; start < end; start++) {\n\t\t\tvar vnode = vnodes[start]\n\t\t\tif (vnode != null) {\n\t\t\t\tvar key = vnode.key\n\t\t\t\tif (key != null) map[key] = start\n\t\t\t}\n\t\t}\n\t\treturn map\n\t}\n\t// Lifted from ivi https://github.com/ivijs/ivi/\n\t// takes a list of unique numbers (-1 is special and can\n\t// occur multiple times) and returns an array with the indices\n\t// of the items that are part of the longest increasing\n\t// subsequence\n\tvar lisTemp = []\n\tfunction makeLisIndices(a) {\n\t\tvar result = [0]\n\t\tvar u = 0, v = 0, i = 0\n\t\tvar il = lisTemp.length = a.length\n\t\tfor (var i = 0; i < il; i++) lisTemp[i] = a[i]\n\t\tfor (var i = 0; i < il; ++i) {\n\t\t\tif (a[i] === -1) continue\n\t\t\tvar j = result[result.length - 1]\n\t\t\tif (a[j] < a[i]) {\n\t\t\t\tlisTemp[i] = j\n\t\t\t\tresult.push(i)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tu = 0\n\t\t\tv = result.length - 1\n\t\t\twhile (u < v) {\n\t\t\t\t// Fast integer average without overflow.\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tvar c = (u >>> 1) + (v >>> 1) + (u & v & 1)\n\t\t\t\tif (a[result[c]] < a[i]) {\n\t\t\t\t\tu = c + 1\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tv = c\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (a[i] < a[result[u]]) {\n\t\t\t\tif (u > 0) lisTemp[i] = result[u - 1]\n\t\t\t\tresult[u] = i\n\t\t\t}\n\t\t}\n\t\tu = result.length\n\t\tv = result[u - 1]\n\t\twhile (u-- > 0) {\n\t\t\tresult[u] = v\n\t\t\tv = lisTemp[v]\n\t\t}\n\t\tlisTemp.length = 0\n\t\treturn result\n\t}\n\n\tfunction getNextSibling(vnodes, i, nextSibling) {\n\t\tfor (; i < vnodes.length; i++) {\n\t\t\tif (vnodes[i] != null && vnodes[i].dom != null) return vnodes[i].dom\n\t\t}\n\t\treturn nextSibling\n\t}\n\n\t// This covers a really specific edge case:\n\t// - Parent node is keyed and contains child\n\t// - Child is removed, returns unresolved promise in `onbeforeremove`\n\t// - Parent node is moved in keyed diff\n\t// - Remaining children still need moved appropriately\n\t//\n\t// Ideally, I'd track removed nodes as well, but that introduces a lot more\n\t// complexity and I'm not exactly interested in doing that.\n\tfunction moveNodes(parent, vnode, nextSibling) {\n\t\tvar frag = $doc.createDocumentFragment()\n\t\tmoveChildToFrag(parent, frag, vnode)\n\t\tinsertNode(parent, frag, nextSibling)\n\t}\n\tfunction moveChildToFrag(parent, frag, vnode) {\n\t\t// Dodge the recursion overhead in a few of the most common cases.\n\t\twhile (vnode.dom != null && vnode.dom.parentNode === parent) {\n\t\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\t\tvnode = vnode.instance\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else if (vnode.tag === \"<\") {\n\t\t\t\tfor (var i = 0; i < vnode.instance.length; i++) {\n\t\t\t\t\tfrag.appendChild(vnode.instance[i])\n\t\t\t\t}\n\t\t\t} else if (vnode.tag !== \"[\") {\n\t\t\t\t// Don't recurse for text nodes *or* elements, just fragments\n\t\t\t\tfrag.appendChild(vnode.dom)\n\t\t\t} else if (vnode.children.length === 1) {\n\t\t\t\tvnode = vnode.children[0]\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else {\n\t\t\t\tfor (var i = 0; i < vnode.children.length; i++) {\n\t\t\t\t\tvar child = vnode.children[i]\n\t\t\t\t\tif (child != null) moveChildToFrag(parent, frag, child)\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\tfunction insertNode(parent, dom, nextSibling) {\n\t\tif (nextSibling != null) parent.insertBefore(dom, nextSibling)\n\t\telse parent.appendChild(dom)\n\t}\n\n\tfunction maybeSetContentEditable(vnode) {\n\t\tif (vnode.attrs == null || (\n\t\t\tvnode.attrs.contenteditable == null && // attribute\n\t\t\tvnode.attrs.contentEditable == null // property\n\t\t)) return false\n\t\tvar children = vnode.children\n\t\tif (children != null && children.length === 1 && children[0].tag === \"<\") {\n\t\t\tvar content = children[0].children\n\t\t\tif (vnode.dom.innerHTML !== content) vnode.dom.innerHTML = content\n\t\t}\n\t\telse if (children != null && children.length !== 0) throw new Error(\"Child node of a contenteditable must be trusted.\")\n\t\treturn true\n\t}\n\n\t//remove\n\tfunction removeNodes(parent, vnodes, start, end) {\n\t\tfor (var i = start; i < end; i++) {\n\t\t\tvar vnode = vnodes[i]\n\t\t\tif (vnode != null) removeNode(parent, vnode)\n\t\t}\n\t}\n\tfunction removeNode(parent, vnode) {\n\t\tvar mask = 0\n\t\tvar original = vnode.state\n\t\tvar stateResult, attrsResult\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode.state.onbeforeremove, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\tmask = 1\n\t\t\t\tstateResult = result\n\t\t\t}\n\t\t}\n\t\tif (vnode.attrs && typeof vnode.attrs.onbeforeremove === \"function\") {\n\t\t\tvar result = callHook.call(vnode.attrs.onbeforeremove, vnode)\n\t\t\tif (result != null && typeof result.then === \"function\") {\n\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\tmask |= 2\n\t\t\t\tattrsResult = result\n\t\t\t}\n\t\t}\n\t\tcheckState(vnode, original)\n\n\t\t// If we can, try to fast-path it and avoid all the overhead of awaiting\n\t\tif (!mask) {\n\t\t\tonremove(vnode)\n\t\t\tremoveChild(parent, vnode)\n\t\t} else {\n\t\t\tif (stateResult != null) {\n\t\t\t\tvar next = function () {\n\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\tif (mask & 1) { mask &= 2; if (!mask) reallyRemove() }\n\t\t\t\t}\n\t\t\t\tstateResult.then(next, next)\n\t\t\t}\n\t\t\tif (attrsResult != null) {\n\t\t\t\tvar next = function () {\n\t\t\t\t\t// eslint-disable-next-line no-bitwise\n\t\t\t\t\tif (mask & 2) { mask &= 1; if (!mask) reallyRemove() }\n\t\t\t\t}\n\t\t\t\tattrsResult.then(next, next)\n\t\t\t}\n\t\t}\n\n\t\tfunction reallyRemove() {\n\t\t\tcheckState(vnode, original)\n\t\t\tonremove(vnode)\n\t\t\tremoveChild(parent, vnode)\n\t\t}\n\t}\n\tfunction removeHTML(parent, vnode) {\n\t\tfor (var i = 0; i < vnode.instance.length; i++) {\n\t\t\tparent.removeChild(vnode.instance[i])\n\t\t}\n\t}\n\tfunction removeChild(parent, vnode) {\n\t\t// Dodge the recursion overhead in a few of the most common cases.\n\t\twhile (vnode.dom != null && vnode.dom.parentNode === parent) {\n\t\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\t\tvnode = vnode.instance\n\t\t\t\tif (vnode != null) continue\n\t\t\t} else if (vnode.tag === \"<\") {\n\t\t\t\tremoveHTML(parent, vnode)\n\t\t\t} else {\n\t\t\t\tif (vnode.tag !== \"[\") {\n\t\t\t\t\tparent.removeChild(vnode.dom)\n\t\t\t\t\tif (!Array.isArray(vnode.children)) break\n\t\t\t\t}\n\t\t\t\tif (vnode.children.length === 1) {\n\t\t\t\t\tvnode = vnode.children[0]\n\t\t\t\t\tif (vnode != null) continue\n\t\t\t\t} else {\n\t\t\t\t\tfor (var i = 0; i < vnode.children.length; i++) {\n\t\t\t\t\t\tvar child = vnode.children[i]\n\t\t\t\t\t\tif (child != null) removeChild(parent, child)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\tfunction onremove(vnode) {\n\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onremove === \"function\") callHook.call(vnode.state.onremove, vnode)\n\t\tif (vnode.attrs && typeof vnode.attrs.onremove === \"function\") callHook.call(vnode.attrs.onremove, vnode)\n\t\tif (typeof vnode.tag !== \"string\") {\n\t\t\tif (vnode.instance != null) onremove(vnode.instance)\n\t\t} else {\n\t\t\tvar children = vnode.children\n\t\t\tif (Array.isArray(children)) {\n\t\t\t\tfor (var i = 0; i < children.length; i++) {\n\t\t\t\t\tvar child = children[i]\n\t\t\t\t\tif (child != null) onremove(child)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t//attrs\n\tfunction setAttrs(vnode, attrs, ns) {\n\t\t// If you assign an input type that is not supported by IE 11 with an assignment expression, an error will occur.\n\t\t//\n\t\t// Also, the DOM does things to inputs based on the value, so it needs set first.\n\t\t// See: https://github.com/MithrilJS/mithril.js/issues/2622\n\t\tif (vnode.tag === \"input\" && attrs.type != null) vnode.dom.setAttribute(\"type\", attrs.type)\n\t\tvar isFileInput = attrs != null && vnode.tag === \"input\" && attrs.type === \"file\"\n\t\tfor (var key in attrs) {\n\t\t\tsetAttr(vnode, key, null, attrs[key], ns, isFileInput)\n\t\t}\n\t}\n\tfunction setAttr(vnode, key, old, value, ns, isFileInput) {\n\t\tif (key === \"key\" || key === \"is\" || value == null || isLifecycleMethod(key) || (old === value && !isFormAttribute(vnode, key)) && typeof value !== \"object\" || key === \"type\" && vnode.tag === \"input\") return\n\t\tif (key[0] === \"o\" && key[1] === \"n\") return updateEvent(vnode, key, value)\n\t\tif (key.slice(0, 6) === \"xlink:\") vnode.dom.setAttributeNS(\"http://www.w3.org/1999/xlink\", key.slice(6), value)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, value)\n\t\telse if (hasPropertyKey(vnode, key, ns)) {\n\t\t\tif (key === \"value\") {\n\t\t\t\t// Only do the coercion if we're actually going to check the value.\n\t\t\t\t/* eslint-disable no-implicit-coercion */\n\t\t\t\t//setting input[value] to same value by typing on focused element moves cursor to end in Chrome\n\t\t\t\t//setting input[type=file][value] to same value causes an error to be generated if it's non-empty\n\t\t\t\tif ((vnode.tag === \"input\" || vnode.tag === \"textarea\") && vnode.dom.value === \"\" + value && (isFileInput || vnode.dom === activeElement())) return\n\t\t\t\t//setting select[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"select\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t//setting option[value] to same value while having select open blinks select dropdown in Chrome\n\t\t\t\tif (vnode.tag === \"option\" && old !== null && vnode.dom.value === \"\" + value) return\n\t\t\t\t//setting input[type=file][value] to different value is an error if it's non-empty\n\t\t\t\t// Not ideal, but it at least works around the most common source of uncaught exceptions for now.\n\t\t\t\tif (isFileInput && \"\" + value !== \"\") { console.error(\"`value` is read-only on file inputs!\"); return }\n\t\t\t\t/* eslint-enable no-implicit-coercion */\n\t\t\t}\n\t\t\tvnode.dom[key] = value\n\t\t} else {\n\t\t\tif (typeof value === \"boolean\") {\n\t\t\t\tif (value) vnode.dom.setAttribute(key, \"\")\n\t\t\t\telse vnode.dom.removeAttribute(key)\n\t\t\t}\n\t\t\telse vnode.dom.setAttribute(key === \"className\" ? \"class\" : key, value)\n\t\t}\n\t}\n\tfunction removeAttr(vnode, key, old, ns) {\n\t\tif (key === \"key\" || key === \"is\" || old == null || isLifecycleMethod(key)) return\n\t\tif (key[0] === \"o\" && key[1] === \"n\") updateEvent(vnode, key, undefined)\n\t\telse if (key === \"style\") updateStyle(vnode.dom, old, null)\n\t\telse if (\n\t\t\thasPropertyKey(vnode, key, ns)\n\t\t\t&& key !== \"className\"\n\t\t\t&& key !== \"title\" // creates \"null\" as title\n\t\t\t&& !(key === \"value\" && (\n\t\t\t\tvnode.tag === \"option\"\n\t\t\t\t|| vnode.tag === \"select\" && vnode.dom.selectedIndex === -1 && vnode.dom === activeElement()\n\t\t\t))\n\t\t\t&& !(vnode.tag === \"input\" && key === \"type\")\n\t\t) {\n\t\t\tvnode.dom[key] = null\n\t\t} else {\n\t\t\tvar nsLastIndex = key.indexOf(\":\")\n\t\t\tif (nsLastIndex !== -1) key = key.slice(nsLastIndex + 1)\n\t\t\tif (old !== false) vnode.dom.removeAttribute(key === \"className\" ? \"class\" : key)\n\t\t}\n\t}\n\tfunction setLateSelectAttrs(vnode, attrs) {\n\t\tif (\"value\" in attrs) {\n\t\t\tif(attrs.value === null) {\n\t\t\t\tif (vnode.dom.selectedIndex !== -1) vnode.dom.value = null\n\t\t\t} else {\n\t\t\t\tvar normalized = \"\" + attrs.value // eslint-disable-line no-implicit-coercion\n\t\t\t\tif (vnode.dom.value !== normalized || vnode.dom.selectedIndex === -1) {\n\t\t\t\t\tvnode.dom.value = normalized\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (\"selectedIndex\" in attrs) setAttr(vnode, \"selectedIndex\", null, attrs.selectedIndex, undefined)\n\t}\n\tfunction updateAttrs(vnode, old, attrs, ns) {\n\t\tif (old && old === attrs) {\n\t\t\tconsole.warn(\"Don't reuse attrs object, use new object for every redraw, this will throw in next major\")\n\t\t}\n\t\tif (attrs != null) {\n\t\t\t// If you assign an input type that is not supported by IE 11 with an assignment expression, an error will occur.\n\t\t\t//\n\t\t\t// Also, the DOM does things to inputs based on the value, so it needs set first.\n\t\t\t// See: https://github.com/MithrilJS/mithril.js/issues/2622\n\t\t\tif (vnode.tag === \"input\" && attrs.type != null) vnode.dom.setAttribute(\"type\", attrs.type)\n\t\t\tvar isFileInput = vnode.tag === \"input\" && attrs.type === \"file\"\n\t\t\tfor (var key in attrs) {\n\t\t\t\tsetAttr(vnode, key, old && old[key], attrs[key], ns, isFileInput)\n\t\t\t}\n\t\t}\n\t\tvar val\n\t\tif (old != null) {\n\t\t\tfor (var key in old) {\n\t\t\t\tif (((val = old[key]) != null) && (attrs == null || attrs[key] == null)) {\n\t\t\t\t\tremoveAttr(vnode, key, val, ns)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tfunction isFormAttribute(vnode, attr) {\n\t\treturn attr === \"value\" || attr === \"checked\" || attr === \"selectedIndex\" || attr === \"selected\" && vnode.dom === activeElement() || vnode.tag === \"option\" && vnode.dom.parentNode === $doc.activeElement\n\t}\n\tfunction isLifecycleMethod(attr) {\n\t\treturn attr === \"oninit\" || attr === \"oncreate\" || attr === \"onupdate\" || attr === \"onremove\" || attr === \"onbeforeremove\" || attr === \"onbeforeupdate\"\n\t}\n\tfunction hasPropertyKey(vnode, key, ns) {\n\t\t// Filter out namespaced keys\n\t\treturn ns === undefined && (\n\t\t\t// If it's a custom element, just keep it.\n\t\t\tvnode.tag.indexOf(\"-\") > -1 || vnode.attrs != null && vnode.attrs.is ||\n\t\t\t// If it's a normal element, let's try to avoid a few browser bugs.\n\t\t\tkey !== \"href\" && key !== \"list\" && key !== \"form\" && key !== \"width\" && key !== \"height\"// && key !== \"type\"\n\t\t\t// Defer the property check until *after* we check everything.\n\t\t) && key in vnode.dom\n\t}\n\n\t//style\n\tvar uppercaseRegex = /[A-Z]/g\n\tfunction toLowerCase(capital) { return \"-\" + capital.toLowerCase() }\n\tfunction normalizeKey(key) {\n\t\treturn key[0] === \"-\" && key[1] === \"-\" ? key :\n\t\t\tkey === \"cssFloat\" ? \"float\" :\n\t\t\t\tkey.replace(uppercaseRegex, toLowerCase)\n\t}\n\tfunction updateStyle(element, old, style) {\n\t\tif (old === style) {\n\t\t\t// Styles are equivalent, do nothing.\n\t\t} else if (style == null) {\n\t\t\t// New style is missing, just clear it.\n\t\t\telement.style.cssText = \"\"\n\t\t} else if (typeof style !== \"object\") {\n\t\t\t// New style is a string, let engine deal with patching.\n\t\t\telement.style.cssText = style\n\t\t} else if (old == null || typeof old !== \"object\") {\n\t\t\t// `old` is missing or a string, `style` is an object.\n\t\t\telement.style.cssText = \"\"\n\t\t\t// Add new style properties\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null) element.style.setProperty(normalizeKey(key), String(value))\n\t\t\t}\n\t\t} else {\n\t\t\t// Both old & new are (different) objects.\n\t\t\t// Update style properties that have changed\n\t\t\tfor (var key in style) {\n\t\t\t\tvar value = style[key]\n\t\t\t\tif (value != null && (value = String(value)) !== String(old[key])) {\n\t\t\t\t\telement.style.setProperty(normalizeKey(key), value)\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Remove style properties that no longer exist\n\t\t\tfor (var key in old) {\n\t\t\t\tif (old[key] != null && style[key] == null) {\n\t\t\t\t\telement.style.removeProperty(normalizeKey(key))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Here's an explanation of how this works:\n\t// 1. The event names are always (by design) prefixed by `on`.\n\t// 2. The EventListener interface accepts either a function or an object\n\t// with a `handleEvent` method.\n\t// 3. The object does not inherit from `Object.prototype`, to avoid\n\t// any potential interference with that (e.g. setters).\n\t// 4. The event name is remapped to the handler before calling it.\n\t// 5. In function-based event handlers, `ev.target === this`. We replicate\n\t// that below.\n\t// 6. In function-based event handlers, `return false` prevents the default\n\t// action and stops event propagation. We replicate that below.\n\tfunction EventDict() {\n\t\t// Save this, so the current redraw is correctly tracked.\n\t\tthis._ = currentRedraw\n\t}\n\tEventDict.prototype = Object.create(null)\n\tEventDict.prototype.handleEvent = function (ev) {\n\t\tvar handler = this[\"on\" + ev.type]\n\t\tvar result\n\t\tif (typeof handler === \"function\") result = handler.call(ev.currentTarget, ev)\n\t\telse if (typeof handler.handleEvent === \"function\") handler.handleEvent(ev)\n\t\tif (this._ && ev.redraw !== false) (0, this._)()\n\t\tif (result === false) {\n\t\t\tev.preventDefault()\n\t\t\tev.stopPropagation()\n\t\t}\n\t}\n\n\t//event\n\tfunction updateEvent(vnode, key, value) {\n\t\tif (vnode.events != null) {\n\t\t\tvnode.events._ = currentRedraw\n\t\t\tif (vnode.events[key] === value) return\n\t\t\tif (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\t\tif (vnode.events[key] == null) vnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = value\n\t\t\t} else {\n\t\t\t\tif (vnode.events[key] != null) vnode.dom.removeEventListener(key.slice(2), vnode.events, false)\n\t\t\t\tvnode.events[key] = undefined\n\t\t\t}\n\t\t} else if (value != null && (typeof value === \"function\" || typeof value === \"object\")) {\n\t\t\tvnode.events = new EventDict()\n\t\t\tvnode.dom.addEventListener(key.slice(2), vnode.events, false)\n\t\t\tvnode.events[key] = value\n\t\t}\n\t}\n\n\t//lifecycle\n\tfunction initLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.oninit === \"function\") callHook.call(source.oninit, vnode)\n\t\tif (typeof source.oncreate === \"function\") hooks.push(callHook.bind(source.oncreate, vnode))\n\t}\n\tfunction updateLifecycle(source, vnode, hooks) {\n\t\tif (typeof source.onupdate === \"function\") hooks.push(callHook.bind(source.onupdate, vnode))\n\t}\n\tfunction shouldNotUpdate(vnode, old) {\n\t\tdo {\n\t\t\tif (vnode.attrs != null && typeof vnode.attrs.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.attrs.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\tif (typeof vnode.tag !== \"string\" && typeof vnode.state.onbeforeupdate === \"function\") {\n\t\t\t\tvar force = callHook.call(vnode.state.onbeforeupdate, vnode, old)\n\t\t\t\tif (force !== undefined && !force) break\n\t\t\t}\n\t\t\treturn false\n\t\t} while (false); // eslint-disable-line no-constant-condition\n\t\tvnode.dom = old.dom\n\t\tvnode.domSize = old.domSize\n\t\tvnode.instance = old.instance\n\t\t// One would think having the actual latest attributes would be ideal,\n\t\t// but it doesn't let us properly diff based on our current internal\n\t\t// representation. We have to save not only the old DOM info, but also\n\t\t// the attributes used to create it, as we diff *that*, not against the\n\t\t// DOM directly (with a few exceptions in `setAttr`). And, of course, we\n\t\t// need to save the children and text as they are conceptually not\n\t\t// unlike special \"attributes\" internally.\n\t\tvnode.attrs = old.attrs\n\t\tvnode.children = old.children\n\t\tvnode.text = old.text\n\t\treturn true\n\t}\n\n\tvar currentDOM\n\n\treturn function(dom, vnodes, redraw) {\n\t\tif (!dom) throw new TypeError(\"DOM element being rendered to does not exist.\")\n\t\tif (currentDOM != null && dom.contains(currentDOM)) {\n\t\t\tthrow new TypeError(\"Node is currently being rendered to and thus is locked.\")\n\t\t}\n\t\tvar prevRedraw = currentRedraw\n\t\tvar prevDOM = currentDOM\n\t\tvar hooks = []\n\t\tvar active = activeElement()\n\t\tvar namespace = dom.namespaceURI\n\n\t\tcurrentDOM = dom\n\t\tcurrentRedraw = typeof redraw === \"function\" ? redraw : undefined\n\t\ttry {\n\t\t\t// First time rendering into a node clears it out\n\t\t\tif (dom.vnodes == null) dom.textContent = \"\"\n\t\t\tvnodes = Vnode.normalizeChildren(Array.isArray(vnodes) ? vnodes : [vnodes])\n\t\t\tupdateNodes(dom, dom.vnodes, vnodes, hooks, null, namespace === \"http://www.w3.org/1999/xhtml\" ? undefined : namespace)\n\t\t\tdom.vnodes = vnodes\n\t\t\t// `document.activeElement` can return null: https://html.spec.whatwg.org/multipage/interaction.html#dom-document-activeelement\n\t\t\tif (active != null && activeElement() !== active && typeof active.focus === \"function\") active.focus()\n\t\t\tfor (var i = 0; i < hooks.length; i++) hooks[i]()\n\t\t} finally {\n\t\t\tcurrentRedraw = prevRedraw\n\t\t\tcurrentDOM = prevDOM\n\t\t}\n\t}\n}\n","\"use strict\"\n\nvar Vnode = require(\"../render/vnode\")\n\nmodule.exports = function(html) {\n\tif (html == null) html = \"\"\n\treturn Vnode(\"<\", undefined, undefined, html, undefined, undefined)\n}\n","\"use strict\"\n\nfunction Vnode(tag, key, attrs, children, text, dom) {\n\treturn {tag: tag, key: key, attrs: attrs, children: children, text: text, dom: dom, domSize: undefined, state: undefined, events: undefined, instance: undefined}\n}\nVnode.normalize = function(node) {\n\tif (Array.isArray(node)) return Vnode(\"[\", undefined, undefined, Vnode.normalizeChildren(node), undefined, undefined)\n\tif (node == null || typeof node === \"boolean\") return null\n\tif (typeof node === \"object\") return node\n\treturn Vnode(\"#\", undefined, undefined, String(node), undefined, undefined)\n}\nVnode.normalizeChildren = function(input) {\n\tvar children = []\n\tif (input.length) {\n\t\tvar isKeyed = input[0] != null && input[0].key != null\n\t\t// Note: this is a *very* perf-sensitive check.\n\t\t// Fun fact: merging the loop like this is somehow faster than splitting\n\t\t// it, noticeably so.\n\t\tfor (var i = 1; i < input.length; i++) {\n\t\t\tif ((input[i] != null && input[i].key != null) !== isKeyed) {\n\t\t\t\tthrow new TypeError(\n\t\t\t\t\tisKeyed && (input[i] != null || typeof input[i] === \"boolean\")\n\t\t\t\t\t\t? \"In fragments, vnodes must either all have keys or none have keys. You may wish to consider using an explicit keyed empty fragment, m.fragment({key: ...}), instead of a hole.\"\n\t\t\t\t\t\t: \"In fragments, vnodes must either all have keys or none have keys.\"\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t\tfor (var i = 0; i < input.length; i++) {\n\t\t\tchildren[i] = Vnode.normalize(input[i])\n\t\t}\n\t}\n\treturn children\n}\n\nmodule.exports = Vnode\n","\"use strict\"\n\nvar PromisePolyfill = require(\"./promise/promise\")\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./request/request\")(typeof window !== \"undefined\" ? window : null, PromisePolyfill, mountRedraw.redraw)\n","\"use strict\"\n\nvar buildPathname = require(\"../pathname/build\")\nvar hasOwn = require(\"../util/hasOwn\")\n\nmodule.exports = function($window, Promise, oncompletion) {\n\tvar callbackCount = 0\n\n\tfunction PromiseProxy(executor) {\n\t\treturn new Promise(executor)\n\t}\n\n\t// In case the global Promise is some userland library's where they rely on\n\t// `foo instanceof this.constructor`, `this.constructor.resolve(value)`, or\n\t// similar. Let's *not* break them.\n\tPromiseProxy.prototype = Promise.prototype\n\tPromiseProxy.__proto__ = Promise // eslint-disable-line no-proto\n\n\tfunction makeRequest(factory) {\n\t\treturn function(url, args) {\n\t\t\tif (typeof url !== \"string\") { args = url; url = url.url }\n\t\t\telse if (args == null) args = {}\n\t\t\tvar promise = new Promise(function(resolve, reject) {\n\t\t\t\tfactory(buildPathname(url, args.params), args, function (data) {\n\t\t\t\t\tif (typeof args.type === \"function\") {\n\t\t\t\t\t\tif (Array.isArray(data)) {\n\t\t\t\t\t\t\tfor (var i = 0; i < data.length; i++) {\n\t\t\t\t\t\t\t\tdata[i] = new args.type(data[i])\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse data = new args.type(data)\n\t\t\t\t\t}\n\t\t\t\t\tresolve(data)\n\t\t\t\t}, reject)\n\t\t\t})\n\t\t\tif (args.background === true) return promise\n\t\t\tvar count = 0\n\t\t\tfunction complete() {\n\t\t\t\tif (--count === 0 && typeof oncompletion === \"function\") oncompletion()\n\t\t\t}\n\n\t\t\treturn wrap(promise)\n\n\t\t\tfunction wrap(promise) {\n\t\t\t\tvar then = promise.then\n\t\t\t\t// Set the constructor, so engines know to not await or resolve\n\t\t\t\t// this as a native promise. At the time of writing, this is\n\t\t\t\t// only necessary for V8, but their behavior is the correct\n\t\t\t\t// behavior per spec. See this spec issue for more details:\n\t\t\t\t// https://github.com/tc39/ecma262/issues/1577. Also, see the\n\t\t\t\t// corresponding comment in `request/tests/test-request.js` for\n\t\t\t\t// a bit more background on the issue at hand.\n\t\t\t\tpromise.constructor = PromiseProxy\n\t\t\t\tpromise.then = function() {\n\t\t\t\t\tcount++\n\t\t\t\t\tvar next = then.apply(promise, arguments)\n\t\t\t\t\tnext.then(complete, function(e) {\n\t\t\t\t\t\tcomplete()\n\t\t\t\t\t\tif (count === 0) throw e\n\t\t\t\t\t})\n\t\t\t\t\treturn wrap(next)\n\t\t\t\t}\n\t\t\t\treturn promise\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasHeader(args, name) {\n\t\tfor (var key in args.headers) {\n\t\t\tif (hasOwn.call(args.headers, key) && key.toLowerCase() === name) return true\n\t\t}\n\t\treturn false\n\t}\n\n\treturn {\n\t\trequest: makeRequest(function(url, args, resolve, reject) {\n\t\t\tvar method = args.method != null ? args.method.toUpperCase() : \"GET\"\n\t\t\tvar body = args.body\n\t\t\tvar assumeJSON = (args.serialize == null || args.serialize === JSON.serialize) && !(body instanceof $window.FormData || body instanceof $window.URLSearchParams)\n\t\t\tvar responseType = args.responseType || (typeof args.extract === \"function\" ? \"\" : \"json\")\n\n\t\t\tvar xhr = new $window.XMLHttpRequest(), aborted = false, isTimeout = false\n\t\t\tvar original = xhr, replacedAbort\n\t\t\tvar abort = xhr.abort\n\n\t\t\txhr.abort = function() {\n\t\t\t\taborted = true\n\t\t\t\tabort.call(this)\n\t\t\t}\n\n\t\t\txhr.open(method, url, args.async !== false, typeof args.user === \"string\" ? args.user : undefined, typeof args.password === \"string\" ? args.password : undefined)\n\n\t\t\tif (assumeJSON && body != null && !hasHeader(args, \"content-type\")) {\n\t\t\t\txhr.setRequestHeader(\"Content-Type\", \"application/json; charset=utf-8\")\n\t\t\t}\n\t\t\tif (typeof args.deserialize !== \"function\" && !hasHeader(args, \"accept\")) {\n\t\t\t\txhr.setRequestHeader(\"Accept\", \"application/json, text/*\")\n\t\t\t}\n\t\t\tif (args.withCredentials) xhr.withCredentials = args.withCredentials\n\t\t\tif (args.timeout) xhr.timeout = args.timeout\n\t\t\txhr.responseType = responseType\n\n\t\t\tfor (var key in args.headers) {\n\t\t\t\tif (hasOwn.call(args.headers, key)) {\n\t\t\t\t\txhr.setRequestHeader(key, args.headers[key])\n\t\t\t\t}\n\t\t\t}\n\n\t\t\txhr.onreadystatechange = function(ev) {\n\t\t\t\t// Don't throw errors on xhr.abort().\n\t\t\t\tif (aborted) return\n\n\t\t\t\tif (ev.target.readyState === 4) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tvar success = (ev.target.status >= 200 && ev.target.status < 300) || ev.target.status === 304 || (/^file:\\/\\//i).test(url)\n\t\t\t\t\t\t// When the response type isn't \"\" or \"text\",\n\t\t\t\t\t\t// `xhr.responseText` is the wrong thing to use.\n\t\t\t\t\t\t// Browsers do the right thing and throw here, and we\n\t\t\t\t\t\t// should honor that and do the right thing by\n\t\t\t\t\t\t// preferring `xhr.response` where possible/practical.\n\t\t\t\t\t\tvar response = ev.target.response, message\n\n\t\t\t\t\t\tif (responseType === \"json\") {\n\t\t\t\t\t\t\t// For IE and Edge, which don't implement\n\t\t\t\t\t\t\t// `responseType: \"json\"`.\n\t\t\t\t\t\t\tif (!ev.target.responseType && typeof args.extract !== \"function\") {\n\t\t\t\t\t\t\t\t// Handle no-content which will not parse.\n\t\t\t\t\t\t\t\ttry { response = JSON.parse(ev.target.responseText) }\n\t\t\t\t\t\t\t\tcatch (e) { response = null }\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!responseType || responseType === \"text\") {\n\t\t\t\t\t\t\t// Only use this default if it's text. If a parsed\n\t\t\t\t\t\t\t// document is needed on old IE and friends (all\n\t\t\t\t\t\t\t// unsupported), the user should use a custom\n\t\t\t\t\t\t\t// `config` instead. They're already using this at\n\t\t\t\t\t\t\t// their own risk.\n\t\t\t\t\t\t\tif (response == null) response = ev.target.responseText\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (typeof args.extract === \"function\") {\n\t\t\t\t\t\t\tresponse = args.extract(ev.target, args)\n\t\t\t\t\t\t\tsuccess = true\n\t\t\t\t\t\t} else if (typeof args.deserialize === \"function\") {\n\t\t\t\t\t\t\tresponse = args.deserialize(response)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (success) resolve(response)\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tvar completeErrorResponse = function() {\n\t\t\t\t\t\t\t\ttry { message = ev.target.responseText }\n\t\t\t\t\t\t\t\tcatch (e) { message = response }\n\t\t\t\t\t\t\t\tvar error = new Error(message)\n\t\t\t\t\t\t\t\terror.code = ev.target.status\n\t\t\t\t\t\t\t\terror.response = response\n\t\t\t\t\t\t\t\treject(error)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (xhr.status === 0) {\n\t\t\t\t\t\t\t\t// Use setTimeout to push this code block onto the event queue\n\t\t\t\t\t\t\t\t// This allows `xhr.ontimeout` to run in the case that there is a timeout\n\t\t\t\t\t\t\t\t// Without this setTimeout, `xhr.ontimeout` doesn't have a chance to reject\n\t\t\t\t\t\t\t\t// as `xhr.onreadystatechange` will run before it\n\t\t\t\t\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t\t\t\t\tif (isTimeout) return\n\t\t\t\t\t\t\t\t\tcompleteErrorResponse()\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t} else completeErrorResponse()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\treject(e)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\txhr.ontimeout = function (ev) {\n\t\t\t\tisTimeout = true\n\t\t\t\tvar error = new Error(\"Request timed out\")\n\t\t\t\terror.code = ev.target.status\n\t\t\t\treject(error)\n\t\t\t}\n\n\t\t\tif (typeof args.config === \"function\") {\n\t\t\t\txhr = args.config(xhr, args, url) || xhr\n\n\t\t\t\t// Propagate the `abort` to any replacement XHR as well.\n\t\t\t\tif (xhr !== original) {\n\t\t\t\t\treplacedAbort = xhr.abort\n\t\t\t\t\txhr.abort = function() {\n\t\t\t\t\t\taborted = true\n\t\t\t\t\t\treplacedAbort.call(this)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (body == null) xhr.send()\n\t\t\telse if (typeof args.serialize === \"function\") xhr.send(args.serialize(body))\n\t\t\telse if (body instanceof $window.FormData || body instanceof $window.URLSearchParams) xhr.send(body)\n\t\t\telse xhr.send(JSON.stringify(body))\n\t\t}),\n\t\tjsonp: makeRequest(function(url, args, resolve, reject) {\n\t\t\tvar callbackName = args.callbackName || \"_mithril_\" + Math.round(Math.random() * 1e16) + \"_\" + callbackCount++\n\t\t\tvar script = $window.document.createElement(\"script\")\n\t\t\t$window[callbackName] = function(data) {\n\t\t\t\tdelete $window[callbackName]\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\tresolve(data)\n\t\t\t}\n\t\t\tscript.onerror = function() {\n\t\t\t\tdelete $window[callbackName]\n\t\t\t\tscript.parentNode.removeChild(script)\n\t\t\t\treject(new Error(\"JSONP request failed\"))\n\t\t\t}\n\t\t\tscript.src = url + (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") +\n\t\t\t\tencodeURIComponent(args.callbackKey || \"callback\") + \"=\" +\n\t\t\t\tencodeURIComponent(callbackName)\n\t\t\t$window.document.documentElement.appendChild(script)\n\t\t}),\n\t}\n}\n","\"use strict\"\n\nvar mountRedraw = require(\"./mount-redraw\")\n\nmodule.exports = require(\"./api/router\")(typeof window !== \"undefined\" ? window : null, mountRedraw)\n","// This exists so I'm only saving it once.\n\"use strict\"\n\nvar hasOwn = require(\"./hasOwn\")\n\nmodule.exports = Object.assign || function(target, source) {\n\tfor (var key in source) {\n\t\tif (hasOwn.call(source, key)) target[key] = source[key]\n\t}\n}\n","\"use strict\"\n\n// Note: this is mildly perf-sensitive.\n//\n// It does *not* use `delete` - dynamic `delete`s usually cause objects to bail\n// out into dictionary mode and just generally cause a bunch of optimization\n// issues within engines.\n//\n// Ideally, I would've preferred to do this, if it weren't for the optimization\n// issues:\n//\n// ```js\n// const hasOwn = require(\"./hasOwn\")\n// const magic = [\n// \"key\", \"oninit\", \"oncreate\", \"onbeforeupdate\", \"onupdate\",\n// \"onbeforeremove\", \"onremove\",\n// ]\n// module.exports = (attrs, extras) => {\n// const result = Object.assign(Object.create(null), attrs)\n// for (const key of magic) delete result[key]\n// if (extras != null) for (const key of extras) delete result[key]\n// return result\n// }\n// ```\n\nvar hasOwn = require(\"./hasOwn\")\n// Words in RegExp literals are sometimes mangled incorrectly by the internal bundler, so use RegExp().\nvar magic = new RegExp(\"^(?:key|oninit|oncreate|onbeforeupdate|onupdate|onbeforeremove|onremove)$\")\n\nmodule.exports = function(attrs, extras) {\n\tvar result = {}\n\n\tif (extras != null) {\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key) && !magic.test(key) && extras.indexOf(key) < 0) {\n\t\t\t\tresult[key] = attrs[key]\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (var key in attrs) {\n\t\t\tif (hasOwn.call(attrs, key) && !magic.test(key)) {\n\t\t\t\tresult[key] = attrs[key]\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result\n}\n","// This exists so I'm only saving it once.\n\"use strict\"\n\nmodule.exports = {}.hasOwnProperty\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","var _arity = /*#__PURE__*/require('./internal/_arity');\n\nvar _curry1 = /*#__PURE__*/require('./internal/_curry1');\n\nvar _curry2 = /*#__PURE__*/require('./internal/_curry2');\n\nvar _curryN = /*#__PURE__*/require('./internal/_curryN');\n\n/**\n * Returns a curried equivalent of the provided function, with the specified\n * arity. The curried function has two unusual capabilities. First, its\n * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.5.0\n * @category Function\n * @sig Number -> (* -> a) -> (* -> a)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curry\n * @example\n *\n * var sumArgs = (...args) => R.sum(args);\n *\n * var curriedAddFourNumbers = R.curryN(4, sumArgs);\n * var f = curriedAddFourNumbers(1, 2);\n * var g = f(3);\n * g(4); //=> 10\n */\n\n\nvar curryN = /*#__PURE__*/_curry2(function curryN(length, fn) {\n if (length === 1) {\n return _curry1(fn);\n }\n return _arity(length, _curryN(length, [], fn));\n});\nmodule.exports = curryN;","function _arity(n, fn) {\n /* eslint-disable no-unused-vars */\n switch (n) {\n case 0:\n return function () {\n return fn.apply(this, arguments);\n };\n case 1:\n return function (a0) {\n return fn.apply(this, arguments);\n };\n case 2:\n return function (a0, a1) {\n return fn.apply(this, arguments);\n };\n case 3:\n return function (a0, a1, a2) {\n return fn.apply(this, arguments);\n };\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.apply(this, arguments);\n };\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.apply(this, arguments);\n };\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.apply(this, arguments);\n };\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.apply(this, arguments);\n };\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.apply(this, arguments);\n };\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.apply(this, arguments);\n };\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.apply(this, arguments);\n };\n default:\n throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n }\n}\nmodule.exports = _arity;","var _isPlaceholder = /*#__PURE__*/require('./_isPlaceholder');\n\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\n\nfunction _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}\nmodule.exports = _curry1;","var _curry1 = /*#__PURE__*/require('./_curry1');\n\nvar _isPlaceholder = /*#__PURE__*/require('./_isPlaceholder');\n\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\n\nfunction _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}\nmodule.exports = _curry2;","var _arity = /*#__PURE__*/require('./_arity');\n\nvar _isPlaceholder = /*#__PURE__*/require('./_isPlaceholder');\n\n/**\n * Internal curryN function.\n *\n * @private\n * @category Function\n * @param {Number} length The arity of the curried function.\n * @param {Array} received An array of arguments received thus far.\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\n\n\nfunction _curryN(length, received, fn) {\n return function () {\n var combined = [];\n var argsIdx = 0;\n var left = length;\n var combinedIdx = 0;\n while (combinedIdx < received.length || argsIdx < arguments.length) {\n var result;\n if (combinedIdx < received.length && (!_isPlaceholder(received[combinedIdx]) || argsIdx >= arguments.length)) {\n result = received[combinedIdx];\n } else {\n result = arguments[argsIdx];\n argsIdx += 1;\n }\n combined[combinedIdx] = result;\n if (!_isPlaceholder(result)) {\n left -= 1;\n }\n combinedIdx += 1;\n }\n return left <= 0 ? fn.apply(this, combined) : _arity(left, _curryN(length, combined, fn));\n };\n}\nmodule.exports = _curryN;","function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}\nmodule.exports = _isPlaceholder;","var isObject = function (obj) { return obj && typeof obj === 'object'; };\n\nfunction assemble(parts, replacements, count, opts) {\n var result = opts.array ? parts.slice() : parts[0];\n var len = parts.length;\n for (var i = 1; i < len; i += 2) {\n var part = parts[i];\n var val = replacements[part];\n if (val == null) {\n if (part === 'n' && count != null) {\n val = count;\n } else {\n opts.debug &&\n console.warn('No \"' + part + '\" in placeholder object:', replacements);\n val = '{' + part + '}';\n }\n }\n if (opts.array) {\n result[i] = val;\n } else {\n result += val + parts[i + 1];\n }\n }\n return result\n}\n\nfunction getPluralValue(translation, count, plFunc) {\n // Opinionated assumption: Pluralization rules are the same for negative and positive values.\n // By normalizing all values to positive, pluralization functions become simpler, and less error-prone by accident.\n var mappedCount = Math.abs(count);\n\n mappedCount = plFunc ? plFunc(mappedCount) : mappedCount;\n if (translation[mappedCount] != null) {\n return translation[mappedCount]\n }\n if (translation.n != null) {\n return translation.n\n }\n}\n\nfunction replacePlaceholders(\n translation,\n replacements,\n count,\n replCache,\n opts\n) {\n var result = replCache[translation];\n if (result == null) {\n var parts = translation\n // turn both curly braces around tokens into the a unified\n // (and now unique/safe) token `{x}` signifying boundry between\n // replacement variables and static text.\n .replace(/\\{(\\w+)\\}/g, '{x}$1{x}')\n // Adjacent placeholders will always have an empty string between them.\n // The array will also always start with a static string (at least a '').\n .split('{x}'); // stupid but works™\n\n // NOTE: parts no consists of alternating [text,replacement,text,replacement,text]\n // Cache a function that loops over the parts array - unless there's only text\n // (i.e. parts.length === 1) - then we simply cache the string.\n result = parts.length > 1 ? parts : parts[0];\n replCache[translation] = result;\n }\n result = result.pop ? assemble(result, replacements, count, opts) : result;\n return result\n}\n\nfunction translate(\n translationKey,\n subKey,\n replacements,\n keys,\n opts,\n replCache\n) {\n opts = opts || {};\n var translation = keys[translationKey];\n var translationIsObject = isObject(translation);\n var complex = translationIsObject || subKey != null || replacements != null;\n\n if (complex) {\n if (isObject(subKey)) {\n var tmp = replacements;\n replacements = subKey;\n subKey = tmp;\n }\n replacements = replacements || {};\n\n if (translationIsObject) {\n var propValue =\n (subKey != null && translation[subKey]) || translation['*'];\n if (propValue != null) {\n translation = propValue;\n } else if (typeof subKey === 'number') {\n // get appropriate plural translation string\n var plFunc = opts.pluralize;\n translation = getPluralValue(translation, subKey, plFunc);\n }\n }\n }\n\n if (typeof translation !== 'string') {\n if (opts.useKeyForMissingTranslation === false) {\n return\n }\n translation = translationKey;\n if (opts.debug) {\n if (subKey != null) {\n translation = '@@' + translationKey + '.' + subKey + '@@';\n console.warn(\n 'No translation or pluralization form found for \"' +\n subKey +\n '\" in' +\n translationKey\n );\n } else {\n translation = '@@' + translation + '@@';\n console.warn('Translation for \"' + translationKey + '\" not found.');\n }\n }\n }\n\n if (complex) {\n return replacePlaceholders(\n translation,\n replacements,\n subKey,\n replCache,\n opts\n )\n }\n return translation\n}\n\nfunction translateToArray() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var opts = this.opts;\n var normalArrayOption = opts.array;\n opts.array = true;\n var result = this.apply(null, args);\n opts.array = normalArrayOption;\n return result\n}\n\nfunction translatejs(messageObject, options) {\n messageObject = messageObject || {};\n options = options || {};\n\n if (options.resolveAliases) {\n messageObject = translatejs.resolveAliases(messageObject);\n }\n\n var replCache = {};\n\n function tFunc(translationKey, subKey, replacements) {\n return translate(\n translationKey,\n subKey,\n replacements,\n tFunc.keys,\n tFunc.opts,\n replCache\n )\n }\n\n tFunc.arr = translateToArray; // Convenience function.\n\n tFunc.keys = messageObject || {};\n tFunc.opts = options;\n\n return tFunc\n}\n\nfunction mapValues(obj, fn) {\n return Object.keys(obj).reduce(function (res, key) {\n res[key] = fn(obj[key], key);\n return res\n }, {})\n}\n\ntranslatejs.resolveAliases = function resolveAliases(translations) {\n var keysInProcess = {};\n function resolveAliases(translation) {\n if (isObject(translation)) {\n return mapValues(translation, resolveAliases)\n }\n return translation.replace(/{{(.*?)}}/g, function (_, token) {\n if (keysInProcess[token]) {\n throw new Error('Circular reference for \"' + token + '\" detected')\n }\n keysInProcess[token] = true;\n var key = token;\n var subKey = '';\n var keyParts = token.match(/^(.+)\\[(.+)\\]$/);\n if (keyParts) {\n key = keyParts[1];\n subKey = keyParts[2];\n }\n var target = translations[key];\n if (isObject(target)) {\n if (subKey) {\n target = target[subKey];\n } else {\n throw new Error(\"You can't alias objects\")\n }\n }\n if (target == null) {\n throw new Error('No translation for alias \"' + token + '\"')\n }\n var translation = resolveAliases(target);\n keysInProcess[token] = false;\n return translation\n })\n }\n return resolveAliases(translations)\n};\n\nexport default translatejs;\n","/*!\n * Glide.js v3.6.0\n * (c) 2013-2022 Jędrzej Chałubek (https://github.com/jedrzejchalubek/)\n * Released under the MIT License.\n */\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}\n\nvar defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */\n type: 'slider',\n\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */\n startAt: 0,\n\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */\n perView: 1,\n\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */\n focusAt: 0,\n\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */\n gap: 10,\n\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */\n autoplay: false,\n\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */\n hoverpause: true,\n\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */\n keyboard: true,\n\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */\n bound: false,\n\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */\n swipeThreshold: 80,\n\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */\n dragThreshold: 120,\n\n /**\n * A number of slides moved on single swipe.\n *\n * Available types:\n * `` - Moves slider by one slide per swipe\n * `|` - Moves slider between views per swipe (number of slides defined in `perView` options)\n *\n * @type {String}\n */\n perSwipe: '',\n\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */\n touchRatio: 0.5,\n\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */\n touchAngle: 45,\n\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */\n animationDuration: 400,\n\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */\n rewind: true,\n\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */\n rewindDuration: 800,\n\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */\n animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n /**\n * Wait for the animation to finish until the next user input can be processed\n *\n * @type {boolean}\n */\n waitForTransition: true,\n\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */\n throttle: 10,\n\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */\n direction: 'ltr',\n\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */\n peek: 0,\n\n /**\n * Defines how many clones of current viewport will be generated.\n *\n * @type {Number}\n */\n cloningRatio: 1,\n\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */\n breakpoints: {},\n\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */\n classes: {\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n type: {\n slider: 'glide--slider',\n carousel: 'glide--carousel'\n },\n slide: {\n clone: 'glide__slide--clone',\n active: 'glide__slide--active'\n },\n arrow: {\n disabled: 'glide__arrow--disabled'\n },\n nav: {\n active: 'glide__bullet--active'\n }\n }\n};\n\n/**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\nfunction warn(msg) {\n console.error(\"[Glide warn]: \".concat(msg));\n}\n\n/**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\nfunction toInt(value) {\n return parseInt(value);\n}\n/**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\n\nfunction toFloat(value) {\n return parseFloat(value);\n}\n/**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isString(value) {\n return typeof value === 'string';\n}\n/**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction isObject(value) {\n var type = _typeof(value);\n\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n}\n/**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\n/**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\nfunction isArray(value) {\n return value.constructor === Array;\n}\n\n/**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\n\nfunction mount(glide, extensions, events) {\n var components = {};\n\n for (var name in extensions) {\n if (isFunction(extensions[name])) {\n components[name] = extensions[name](glide, components, events);\n } else {\n warn('Extension must be a function');\n }\n }\n\n for (var _name in components) {\n if (isFunction(components[_name].mount)) {\n components[_name].mount();\n }\n }\n\n return components;\n}\n\n/**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */\nfunction define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n}\n/**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\n\nfunction sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n return r[k], r;\n }, {});\n}\n/**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */\n\nfunction mergeOptions(defaults, settings) {\n var options = Object.assign({}, defaults, settings); // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n\n if (settings.hasOwnProperty('classes')) {\n options.classes = Object.assign({}, defaults.classes, settings.classes);\n\n if (settings.classes.hasOwnProperty('direction')) {\n options.classes.direction = Object.assign({}, defaults.classes.direction, settings.classes.direction);\n }\n\n if (settings.classes.hasOwnProperty('type')) {\n options.classes.type = Object.assign({}, defaults.classes.type, settings.classes.type);\n }\n\n if (settings.classes.hasOwnProperty('slide')) {\n options.classes.slide = Object.assign({}, defaults.classes.slide, settings.classes.slide);\n }\n\n if (settings.classes.hasOwnProperty('arrow')) {\n options.classes.arrow = Object.assign({}, defaults.classes.arrow, settings.classes.arrow);\n }\n\n if (settings.classes.hasOwnProperty('nav')) {\n options.classes.nav = Object.assign({}, defaults.classes.nav, settings.classes.nav);\n }\n }\n\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = Object.assign({}, defaults.breakpoints, settings.breakpoints);\n }\n\n return options;\n}\n\nvar EventsBus = /*#__PURE__*/function () {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */\n function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBus);\n\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n _createClass(EventsBus, [{\n key: \"on\",\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n\n return;\n } // Create the event's object if not yet created\n\n\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n } // Add the handler to queue\n\n\n var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: \"emit\",\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n\n return;\n } // If the event doesn't exist, or there's no handlers in queue, just leave\n\n\n if (!this.hop.call(this.events, event)) {\n return;\n } // Cycle through events queue, fire!\n\n\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n\n return EventsBus;\n}();\n\nvar Glide$1 = /*#__PURE__*/function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Glide);\n\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after');\n\n return this;\n }\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n\n }, {\n key: \"mutate\",\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"update\",\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n * `|>` - Move one viewport forward\r\n * `|<` - Move one viewport backward\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"go\",\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"move\",\n value: function move(distance) {\n this._c.Transition.disable();\n\n this._c.Move.make(distance);\n\n return this;\n }\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"play\",\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"pause\",\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"disable\",\n value: function disable() {\n this.disabled = true;\n return this;\n }\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"enable\",\n value: function enable() {\n this.disabled = false;\n return this;\n }\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n\n }, {\n key: \"on\",\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"isType\",\n value: function isType(name) {\n return this.settings.type === name;\n }\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"settings\",\n get: function get() {\n return this._o;\n }\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */\n ,\n set: function set(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: \"index\",\n get: function get() {\n return this._i;\n }\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */\n ,\n set: function set(i) {\n this._i = toInt(i);\n }\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n\n }, {\n key: \"type\",\n get: function get() {\n return this.settings.type;\n }\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n\n }, {\n key: \"disabled\",\n get: function get() {\n return this._d;\n }\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n ,\n set: function set(status) {\n this._d = !!status;\n }\n }]);\n\n return Glide;\n}();\n\nfunction Run (Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n !Glide.settings.waitForTransition || Glide.disable();\n this.move = move;\n Events.emit('run.before', this.move);\n this.calculate();\n Events.emit('run', this.move);\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n\n if (_this.isOffset()) {\n _this._o = false;\n Events.emit('run.offset', _this.move);\n }\n\n Events.emit('run.after', _this.move);\n Glide.enable();\n });\n }\n },\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Number|Undefined}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction; // By default assume that size of view is equal to one slide\n\n var viewSize = 1; // While direction is `=` we want jump to\n // a specified index described in steps.\n\n if (direction === '=') {\n // Check if bound is true, \n // as we want to avoid whitespaces.\n if (Glide.settings.bound && toInt(steps) > length) {\n Glide.index = length;\n return;\n }\n\n Glide.index = steps;\n return;\n } // When pattern is equal to `>>` we want\n // fast forward to the last slide.\n\n\n if (direction === '>' && steps === '>') {\n Glide.index = length;\n return;\n } // When pattern is equal to `<<` we want\n // fast forward to the first slide.\n\n\n if (direction === '<' && steps === '<') {\n Glide.index = 0;\n return;\n } // pagination movement\n\n\n if (direction === '|') {\n viewSize = Glide.settings.perView || 1;\n } // we are moving forward\n\n\n if (direction === '>' || direction === '|' && steps === '>') {\n var index = calculateForwardIndex(viewSize);\n\n if (index > length) {\n this._o = true;\n }\n\n Glide.index = normalizeForwardIndex(index, viewSize);\n return;\n } // we are moving backward\n\n\n if (direction === '<' || direction === '|' && steps === '<') {\n var _index = calculateBackwardIndex(viewSize);\n\n if (_index < 0) {\n this._o = true;\n }\n\n Glide.index = normalizeBackwardIndex(_index, viewSize);\n return;\n }\n\n warn(\"Invalid direction pattern [\".concat(direction).concat(steps, \"] has been used\"));\n },\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index <= 0;\n },\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index >= this.length;\n },\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset() {\n var direction = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n if (!direction) {\n return this._o;\n }\n\n if (!this._o) {\n return false;\n } // did we view to the right?\n\n\n if (direction === '|>') {\n return this.move.direction === '|' && this.move.steps === '>';\n } // did we view to the left?\n\n\n if (direction === '|<') {\n return this.move.direction === '|' && this.move.steps === '<';\n }\n\n return this.move.direction === direction;\n },\n\n /**\n * Checks if bound mode is active\n *\n * @return {Boolean}\n */\n isBound: function isBound() {\n return Glide.isType('slider') && Glide.settings.focusAt !== 'center' && Glide.settings.bound;\n }\n };\n /**\n * Returns index value to move forward/to the right\n *\n * @param viewSize\n * @returns {Number}\n */\n\n function calculateForwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index + viewSize;\n }\n\n return index + (viewSize - index % viewSize);\n }\n /**\n * Normalizes the given forward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {Number}\n */\n\n\n function normalizeForwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index <= length) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index - (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on the last possible index value given by bound\n if (Run.isBound() && !Run.isEnd()) {\n return length;\n }\n\n return 0;\n }\n\n if (Run.isBound()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n /**\n * Calculates index value to move backward/to the left\n *\n * @param viewSize\n * @returns {Number}\n */\n\n\n function calculateBackwardIndex(viewSize) {\n var index = Glide.index;\n\n if (Glide.isType('carousel')) {\n return index - viewSize;\n } // ensure our back navigation results in the same index as a forward navigation\n // to experience a homogeneous paging\n\n\n var view = Math.ceil(index / viewSize);\n return (view - 1) * viewSize;\n }\n /**\n * Normalizes the given backward index based on glide settings, preventing it to exceed certain boundaries\n *\n * @param index\n * @param length\n * @param viewSize\n * @returns {*}\n */\n\n\n function normalizeBackwardIndex(index, viewSize) {\n var length = Run.length;\n\n if (index >= 0) {\n return index;\n }\n\n if (Glide.isType('carousel')) {\n return index + (length + 1);\n }\n\n if (Glide.settings.rewind) {\n // bound does funny things with the length, therefor we have to be certain\n // that we are on first possible index value before we to rewind to the length given by bound\n if (Run.isBound() && Run.isStart()) {\n return length;\n }\n\n return Math.floor(length / viewSize) * viewSize;\n }\n\n return 0;\n }\n\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length; // If the `bound` option is active, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (this.isBound()) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n return Run;\n}\n\n/**\n * Returns a current time.\n *\n * @return {Number}\n */\nfunction now() {\n return new Date().getTime();\n}\n\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\nfunction throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\nvar MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n};\nfunction Gaps (Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = \"\".concat(this.value / 2, \"px\");\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n define(Gaps, 'grow', {\n /**\n * Gets additional dimensions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * Components.Sizes.length;\n }\n });\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n return Gaps.value * (perView - 1) / perView;\n }\n });\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n return Gaps;\n}\n\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\nfunction siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n}\n/**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\n\nfunction exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\n}\n/**\n * Coerces a NodeList to an Array.\n *\n * @param {NodeList} nodeList\n * @return {Array}\n */\n\nfunction toArray(nodeList) {\n return Array.prototype.slice.call(nodeList);\n}\n\nvar TRACK_SELECTOR = '[data-glide-el=\"track\"]';\nfunction Html (Glide, Components, Events) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.collectSlides();\n },\n\n /**\n * Collect slides\n */\n collectSlides: function collectSlides() {\n this.slides = toArray(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.slide.clone);\n });\n }\n };\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn(\"Could not find track element. Please use \".concat(TRACK_SELECTOR, \" attribute.\"));\n }\n }\n });\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n /**\n * Add/remove/reorder dynamic slides\n */\n\n Events.on('update', function () {\n Html.collectSlides();\n });\n return Html;\n}\n\nfunction Peek (Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n return Peek;\n}\n\nfunction Move (Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.offset = offset;\n Events.emit('move', {\n movement: this.value\n });\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n return Move;\n}\n\nfunction Sizes (Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimensions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = \"\".concat(this.slideWidth, \"px\");\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n /**\n * Setups dimensions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper() {\n Components.Html.wrapper.style.width = \"\".concat(this.wrapperSize, \"px\");\n },\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n define(Sizes, 'width', {\n /**\n * Gets width value of the slider (visible area).\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.track.offsetWidth;\n }\n });\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of a single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimensions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Sizes.remove();\n });\n return Sizes;\n}\n\nfunction Build (Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n this.typeClass();\n this.activeClass();\n Events.emit('build.after');\n },\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes.type[Glide.settings.type]);\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.slide.active);\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.slide.active);\n });\n }\n },\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var _Glide$settings$class = Glide.settings.classes,\n type = _Glide$settings$class.type,\n slide = _Glide$settings$class.slide;\n Components.Html.root.classList.remove(type[Glide.settings.type]);\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(slide.active);\n });\n }\n };\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimensions\n * - on updating settings via API\n */\n\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n\n Events.on('move.after', function () {\n Build.activeClass();\n });\n return Build;\n}\n\nfunction Clones (Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n /**\n * Collect clones with pattern.\n *\n * @return {[]}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes,\n cloningRatio = _Glide$settings.cloningRatio;\n\n if (slides.length !== 0) {\n var peekIncrementer = +!!Glide.settings.peek;\n var cloneCount = perView + peekIncrementer + Math.round(perView / 2);\n var append = slides.slice(0, cloneCount).reverse();\n var prepend = slides.slice(cloneCount * -1);\n\n for (var r = 0; r < Math.max(cloningRatio, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < append.length; i++) {\n var clone = append[i].cloneNode(true);\n clone.classList.add(classes.slide.clone);\n items.push(clone);\n }\n\n for (var _i = 0; _i < prepend.length; _i++) {\n var _clone = prepend[_i].cloneNode(true);\n\n _clone.classList.add(classes.slide.clone);\n\n items.unshift(_clone);\n }\n }\n }\n\n return items;\n },\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half * -1).reverse();\n var width = \"\".concat(Components.Sizes.slideWidth, \"px\");\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n define(Clones, 'grow', {\n /**\n * Gets additional dimensions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n\n Events.on('destroy', function () {\n Clones.remove();\n });\n return Clones;\n}\n\nvar EventsBinder = /*#__PURE__*/function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, EventsBinder);\n\n this.listeners = listeners;\n }\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n _createClass(EventsBinder, [{\n key: \"on\",\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: \"off\",\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n\n return EventsBinder;\n}();\n\nfunction Resize (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n return Resize;\n}\n\nvar VALID_DIRECTIONS = ['ltr', 'rtl'];\nvar FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n};\nfunction Direction (Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n\n Events.on('update', function () {\n Direction.mount();\n });\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n return Direction;\n}\n\n/**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Rtl (Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Gap (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var multiplier = Math.floor(translate / Components.Sizes.slideWidth);\n return translate + Components.Gaps.value * multiplier;\n }\n };\n}\n\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Grow (Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n}\n\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\nfunction Peeking (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n}\n\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\nfunction Focusing (Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n}\n\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\nfunction mutator (Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n}\n\nfunction Translate (Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n var translate3d = \"translate3d(\".concat(-1 * transform, \"px, 0px, 0px)\");\n Components.Html.wrapper.style.mozTransform = translate3d; // needed for supported Firefox 10-15\n\n Components.Html.wrapper.style.webkitTransform = translate3d; // needed for supported Chrome 10-35, Safari 5.1-8, and Opera 15-22\n\n Components.Html.wrapper.style.transform = translate3d;\n },\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n },\n\n /**\n * @return {number}\n */\n getStartIndex: function getStartIndex() {\n var length = Components.Sizes.length;\n var index = Glide.index;\n var perView = Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n return length + (index - perView);\n } // \"modulo length\" converts an index that equals length to zero\n\n\n return (index + perView) % length;\n },\n\n /**\n * @return {number}\n */\n getTravelDistance: function getTravelDistance() {\n var travelDistance = Components.Sizes.slideWidth * Glide.settings.perView;\n\n if (Components.Run.isOffset('>') || Components.Run.isOffset('|>')) {\n // reverse travel distance so that we don't have to change subtract operations\n return travelDistance * -1;\n }\n\n return travelDistance;\n }\n };\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n\n Events.on('move', function (context) {\n if (!Glide.isType('carousel') || !Components.Run.isOffset()) {\n return Translate.set(context.movement);\n }\n\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(Components.Sizes.slideWidth * Glide.index);\n });\n var startWidth = Components.Sizes.slideWidth * Components.Translate.getStartIndex();\n return Translate.set(startWidth - Components.Translate.getTravelDistance());\n });\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Translate.remove();\n });\n return Translate;\n}\n\nfunction Transition (Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (!disabled) {\n return \"\".concat(property, \" \").concat(this.duration, \"ms \").concat(settings.animationTimingFunc);\n }\n\n return \"\".concat(property, \" 0ms \").concat(settings.animationTimingFunc);\n },\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n this.set();\n },\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n this.set();\n }\n };\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n\n Events.on('move', function () {\n Transition.set();\n });\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimensions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n\n Events.on('run', function () {\n Transition.enable();\n });\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Transition.remove();\n });\n return Transition;\n}\n\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\nvar supportsPassive = false;\n\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\n\nvar supportsPassive$1 = supportsPassive;\n\nvar START_EVENTS = ['touchstart', 'mousedown'];\nvar MOVE_EVENTS = ['touchmove', 'mousemove'];\nvar END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\nvar MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\nfunction Swipe (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n var swipe = this.touches(event);\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n this.bindSwipeMove();\n this.bindSwipeEnd();\n Events.emit('swipe.start');\n }\n },\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n var swipe = this.touches(event);\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n Components.Move.make(subExSx * toFloat(touchRatio));\n Components.Html.root.classList.add(classes.dragging);\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var _Glide$settings2 = Glide.settings,\n perSwipe = _Glide$settings2.perSwipe,\n touchAngle = _Glide$settings2.touchAngle,\n classes = _Glide$settings2.classes;\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n } else if (swipeDistance < -threshold && swipeDeg < touchAngle) {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(classes.dragging);\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n Events.emit('swipe.end');\n }\n },\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var _Glide$settings3 = Glide.settings,\n swipeThreshold = _Glide$settings3.swipeThreshold,\n dragThreshold = _Glide$settings3.dragThreshold;\n\n if (swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n Components.Transition.enable();\n return this;\n },\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n Components.Transition.disable();\n return this;\n }\n };\n /**\n * Add component class:\n * - after initial building\n */\n\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n return Swipe;\n}\n\nfunction Images (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n return Images;\n}\n\nfunction Anchors (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n\n var detached = false;\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n\n var prevented = false;\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n this.bind();\n },\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n }\n\n detached = true;\n }\n\n return this;\n },\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n return Anchors;\n}\n\nvar NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\nvar PREVIOUS_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\"<\\\"]\");\nvar NEXT_CONTROLS_SELECTOR = \"\".concat(CONTROLS_SELECTOR, \" [data-glide-dir*=\\\">\\\"]\");\nfunction Controls (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n /**\n * Collection of arrow control HTML elements.\n *\n * @private\n * @type {Object}\n */\n\n this._arrowControls = {\n previous: Components.Html.root.querySelectorAll(PREVIOUS_CONTROLS_SELECTOR),\n next: Components.Html.root.querySelectorAll(NEXT_CONTROLS_SELECTOR)\n };\n this.addBindings();\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (!item) {\n return;\n }\n\n if (item) {\n item.classList.add(settings.classes.nav.active);\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.nav.active);\n });\n }\n },\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.remove(Glide.settings.classes.nav.active);\n }\n },\n\n /**\n * Calculates, removes or adds `Glide.settings.classes.disabledArrow` class on the control arrows\n */\n setArrowState: function setArrowState() {\n if (Glide.settings.rewind) {\n return;\n }\n\n var next = Controls._arrowControls.next;\n var previous = Controls._arrowControls.previous;\n this.resetArrowState(next, previous);\n\n if (Glide.index === 0) {\n this.disableArrow(previous);\n }\n\n if (Glide.index === Components.Run.length) {\n this.disableArrow(next);\n }\n },\n\n /**\n * Removes `Glide.settings.classes.disabledArrow` from given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n resetArrowState: function resetArrowState() {\n var settings = Glide.settings;\n\n for (var _len = arguments.length, lists = new Array(_len), _key = 0; _key < _len; _key++) {\n lists[_key] = arguments[_key];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.remove(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds `Glide.settings.classes.disabledArrow` to given NodeList elements\n *\n * @param {NodeList[]} lists\n */\n disableArrow: function disableArrow() {\n var settings = Glide.settings;\n\n for (var _len2 = arguments.length, lists = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n lists[_key2] = arguments[_key2];\n }\n\n lists.forEach(function (list) {\n toArray(list).forEach(function (element) {\n element.classList.add(settings.classes.arrow.disabled);\n });\n });\n },\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in direction given via the\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {void}\n */\n click: function click(event) {\n if (!supportsPassive$1 && event.type === 'touchstart') {\n event.preventDefault();\n }\n\n var direction = event.currentTarget.getAttribute('data-glide-dir');\n Components.Run.make(Components.Direction.resolve(direction));\n }\n };\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n /**\n * Add or remove disabled class of arrow elements\n */\n\n Events.on(['mount.after', 'run'], function () {\n Controls.setArrowState();\n });\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n return Controls;\n}\n\nfunction Keyboard (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n var perSwipe = Glide.settings.perSwipe;\n\n if (event.code === 'ArrowRight') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \">\")));\n }\n\n if (event.code === 'ArrowLeft') {\n Components.Run.make(Components.Direction.resolve(\"\".concat(perSwipe, \"<\")));\n }\n }\n };\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n\n Events.on('update', function () {\n Keyboard.mount();\n });\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Keyboard;\n}\n\nfunction Autoplay (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.enable();\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n /**\n * Enables autoplaying\n *\n * @returns {Void}\n */\n enable: function enable() {\n this._e = true;\n },\n\n /**\n * Disables autoplaying.\n *\n * @returns {Void}\n */\n disable: function disable() {\n this._e = false;\n },\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (!this._e) {\n return;\n }\n\n this.enable();\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n\n Events.emit('autoplay');\n }, this.time);\n }\n }\n },\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n if (_this2._e) {\n _this2.stop();\n }\n });\n Binder.on('mouseout', Components.Html.root, function () {\n if (_this2._e) {\n _this2.start();\n }\n });\n },\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['run.before', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n Events.on(['pause', 'destroy'], function () {\n Autoplay.disable();\n Autoplay.stop();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['run.after', 'swipe.end'], function () {\n Autoplay.start();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['play'], function () {\n Autoplay.enable();\n Autoplay.start();\n });\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n\n Events.on('update', function () {\n Autoplay.mount();\n });\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Autoplay;\n}\n\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n\nfunction sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn(\"Breakpoints option must be an object\");\n }\n\n return {};\n}\n\nfunction Breakpoints (Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n\n var settings = Glide.settings;\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n\n var points = sortBreakpoints(settings.breakpoints);\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n\n var defaults = Object.assign({}, settings);\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia(\"(max-width: \".concat(point, \"px)\")).matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n\n Object.assign(settings, Breakpoints.match(points));\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n\n Events.on('update', function () {\n points = sortBreakpoints(points);\n defaults = Object.assign({}, settings);\n });\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n return Breakpoints;\n}\n\nvar COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n};\n\nvar Glide = /*#__PURE__*/function (_Core) {\n _inherits(Glide, _Core);\n\n var _super = _createSuper(Glide);\n\n function Glide() {\n _classCallCheck(this, Glide);\n\n return _super.apply(this, arguments);\n }\n\n _createClass(Glide, [{\n key: \"mount\",\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return _get(_getPrototypeOf(Glide.prototype), \"mount\", this).call(this, Object.assign({}, COMPONENTS, extensions));\n }\n }]);\n\n return Glide;\n}(Glide$1);\n\nexport { Glide as default };\n","// these aren't really private, but nor are they really useful to document\n\n/**\n * @private\n */\nclass LuxonError extends Error {}\n\n/**\n * @private\n */\nexport class InvalidDateTimeError extends LuxonError {\n constructor(reason) {\n super(`Invalid DateTime: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidIntervalError extends LuxonError {\n constructor(reason) {\n super(`Invalid Interval: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidDurationError extends LuxonError {\n constructor(reason) {\n super(`Invalid Duration: ${reason.toMessage()}`);\n }\n}\n\n/**\n * @private\n */\nexport class ConflictingSpecificationError extends LuxonError {}\n\n/**\n * @private\n */\nexport class InvalidUnitError extends LuxonError {\n constructor(unit) {\n super(`Invalid unit ${unit}`);\n }\n}\n\n/**\n * @private\n */\nexport class InvalidArgumentError extends LuxonError {}\n\n/**\n * @private\n */\nexport class ZoneIsAbstractError extends LuxonError {\n constructor() {\n super(\"Zone is an abstract class\");\n }\n}\n","import { ZoneIsAbstractError } from \"./errors.js\";\n\n/**\n * @interface\n */\nexport default class Zone {\n /**\n * The type of zone\n * @abstract\n * @type {string}\n */\n get type() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * The name of this zone.\n * @abstract\n * @type {string}\n */\n get name() {\n throw new ZoneIsAbstractError();\n }\n\n get ianaName() {\n return this.name;\n }\n\n /**\n * Returns whether the offset is known to be fixed for the whole year.\n * @abstract\n * @type {boolean}\n */\n get isUniversal() {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's common name (such as EST) at the specified timestamp\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the name\n * @param {Object} opts - Options to affect the format\n * @param {string} opts.format - What style of offset to return. Accepts 'long' or 'short'.\n * @param {string} opts.locale - What locale to return the offset name in.\n * @return {string}\n */\n offsetName(ts, opts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Returns the offset's value as a string\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to get the offset\n * @param {string} format - What style of offset to return.\n * Accepts 'narrow', 'short', or 'techie'. Returning '+6', '+06:00', or '+0600' respectively\n * @return {string}\n */\n formatOffset(ts, format) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return the offset in minutes for this zone at the specified timestamp.\n * @abstract\n * @param {number} ts - Epoch milliseconds for which to compute the offset\n * @return {number}\n */\n offset(ts) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is equal to another zone\n * @abstract\n * @param {Zone} otherZone - the zone to compare\n * @return {boolean}\n */\n equals(otherZone) {\n throw new ZoneIsAbstractError();\n }\n\n /**\n * Return whether this Zone is valid.\n * @abstract\n * @type {boolean}\n */\n get isValid() {\n throw new ZoneIsAbstractError();\n }\n}\n","import { formatOffset, parseZoneInfo, isUndefined, objToLocalTS } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet dtfCache = {};\nfunction makeDTF(zone) {\n if (!dtfCache[zone]) {\n dtfCache[zone] = new Intl.DateTimeFormat(\"en-US\", {\n hour12: false,\n timeZone: zone,\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\",\n era: \"short\",\n });\n }\n return dtfCache[zone];\n}\n\nconst typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n era: 3,\n hour: 4,\n minute: 5,\n second: 6,\n};\n\nfunction hackyOffset(dtf, date) {\n const formatted = dtf.format(date).replace(/\\u200E/g, \"\"),\n parsed = /(\\d+)\\/(\\d+)\\/(\\d+) (AD|BC),? (\\d+):(\\d+):(\\d+)/.exec(formatted),\n [, fMonth, fDay, fYear, fadOrBc, fHour, fMinute, fSecond] = parsed;\n return [fYear, fMonth, fDay, fadOrBc, fHour, fMinute, fSecond];\n}\n\nfunction partsOffset(dtf, date) {\n const formatted = dtf.formatToParts(date);\n const filled = [];\n for (let i = 0; i < formatted.length; i++) {\n const { type, value } = formatted[i];\n const pos = typeToPos[type];\n\n if (type === \"era\") {\n filled[pos] = value;\n } else if (!isUndefined(pos)) {\n filled[pos] = parseInt(value, 10);\n }\n }\n return filled;\n}\n\nlet ianaZoneCache = {};\n/**\n * A zone identified by an IANA identifier, like America/New_York\n * @implements {Zone}\n */\nexport default class IANAZone extends Zone {\n /**\n * @param {string} name - Zone name\n * @return {IANAZone}\n */\n static create(name) {\n if (!ianaZoneCache[name]) {\n ianaZoneCache[name] = new IANAZone(name);\n }\n return ianaZoneCache[name];\n }\n\n /**\n * Reset local caches. Should only be necessary in testing scenarios.\n * @return {void}\n */\n static resetCache() {\n ianaZoneCache = {};\n dtfCache = {};\n }\n\n /**\n * Returns whether the provided string is a valid specifier. This only checks the string's format, not that the specifier identifies a known zone; see isValidZone for that.\n * @param {string} s - The string to check validity on\n * @example IANAZone.isValidSpecifier(\"America/New_York\") //=> true\n * @example IANAZone.isValidSpecifier(\"Sport~~blorp\") //=> false\n * @deprecated This method returns false for some valid IANA names. Use isValidZone instead.\n * @return {boolean}\n */\n static isValidSpecifier(s) {\n return this.isValidZone(s);\n }\n\n /**\n * Returns whether the provided string identifies a real zone\n * @param {string} zone - The string to check\n * @example IANAZone.isValidZone(\"America/New_York\") //=> true\n * @example IANAZone.isValidZone(\"Fantasia/Castle\") //=> false\n * @example IANAZone.isValidZone(\"Sport~~blorp\") //=> false\n * @return {boolean}\n */\n static isValidZone(zone) {\n if (!zone) {\n return false;\n }\n try {\n new Intl.DateTimeFormat(\"en-US\", { timeZone: zone }).format();\n return true;\n } catch (e) {\n return false;\n }\n }\n\n constructor(name) {\n super();\n /** @private **/\n this.zoneName = name;\n /** @private **/\n this.valid = IANAZone.isValidZone(name);\n }\n\n /** @override **/\n get type() {\n return \"iana\";\n }\n\n /** @override **/\n get name() {\n return this.zoneName;\n }\n\n /** @override **/\n get isUniversal() {\n return false;\n }\n\n /** @override **/\n offsetName(ts, { format, locale }) {\n return parseZoneInfo(ts, format, locale, this.name);\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.offset(ts), format);\n }\n\n /** @override **/\n offset(ts) {\n const date = new Date(ts);\n\n if (isNaN(date)) return NaN;\n\n const dtf = makeDTF(this.name);\n let [year, month, day, adOrBc, hour, minute, second] = dtf.formatToParts\n ? partsOffset(dtf, date)\n : hackyOffset(dtf, date);\n\n if (adOrBc === \"BC\") {\n year = -Math.abs(year) + 1;\n }\n\n // because we're using hour12 and https://bugs.chromium.org/p/chromium/issues/detail?id=1025564&can=2&q=%2224%3A00%22%20datetimeformat\n const adjustedHour = hour === 24 ? 0 : hour;\n\n const asUTC = objToLocalTS({\n year,\n month,\n day,\n hour: adjustedHour,\n minute,\n second,\n millisecond: 0,\n });\n\n let asTS = +date;\n const over = asTS % 1000;\n asTS -= over >= 0 ? over : 1000 + over;\n return (asUTC - asTS) / (60 * 1000);\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"iana\" && otherZone.name === this.name;\n }\n\n /** @override **/\n get isValid() {\n return this.valid;\n }\n}\n","import { formatOffset, signedOffset } from \"../impl/util.js\";\nimport Zone from \"../zone.js\";\n\nlet singleton = null;\n\n/**\n * A zone with a fixed offset (meaning no DST)\n * @implements {Zone}\n */\nexport default class FixedOffsetZone extends Zone {\n /**\n * Get a singleton instance of UTC\n * @return {FixedOffsetZone}\n */\n static get utcInstance() {\n if (singleton === null) {\n singleton = new FixedOffsetZone(0);\n }\n return singleton;\n }\n\n /**\n * Get an instance with a specified offset\n * @param {number} offset - The offset in minutes\n * @return {FixedOffsetZone}\n */\n static instance(offset) {\n return offset === 0 ? FixedOffsetZone.utcInstance : new FixedOffsetZone(offset);\n }\n\n /**\n * Get an instance of FixedOffsetZone from a UTC offset string, like \"UTC+6\"\n * @param {string} s - The offset string to parse\n * @example FixedOffsetZone.parseSpecifier(\"UTC+6\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC+06\")\n * @example FixedOffsetZone.parseSpecifier(\"UTC-6:00\")\n * @return {FixedOffsetZone}\n */\n static parseSpecifier(s) {\n if (s) {\n const r = s.match(/^utc(?:([+-]\\d{1,2})(?::(\\d{2}))?)?$/i);\n if (r) {\n return new FixedOffsetZone(signedOffset(r[1], r[2]));\n }\n }\n return null;\n }\n\n constructor(offset) {\n super();\n /** @private **/\n this.fixed = offset;\n }\n\n /** @override **/\n get type() {\n return \"fixed\";\n }\n\n /** @override **/\n get name() {\n return this.fixed === 0 ? \"UTC\" : `UTC${formatOffset(this.fixed, \"narrow\")}`;\n }\n\n get ianaName() {\n if (this.fixed === 0) {\n return \"Etc/UTC\";\n } else {\n return `Etc/GMT${formatOffset(-this.fixed, \"narrow\")}`;\n }\n }\n\n /** @override **/\n offsetName() {\n return this.name;\n }\n\n /** @override **/\n formatOffset(ts, format) {\n return formatOffset(this.fixed, format);\n }\n\n /** @override **/\n get isUniversal() {\n return true;\n }\n\n /** @override **/\n offset() {\n return this.fixed;\n }\n\n /** @override **/\n equals(otherZone) {\n return otherZone.type === \"fixed\" && otherZone.fixed === this.fixed;\n }\n\n /** @override **/\n get isValid() {\n return true;\n }\n}\n","/*\n This is just a junk drawer, containing anything used across multiple classes.\n Because Luxon is small(ish), this should stay small and we won't worry about splitting\n it up into, say, parsingUtil.js and basicUtil.js and so on. But they are divided up by feature area.\n*/\n\nimport { InvalidArgumentError } from \"../errors.js\";\nimport Settings from \"../settings.js\";\nimport { dayOfWeek, isoWeekdayToLocal } from \"./conversions.js\";\n\n/**\n * @private\n */\n\n// TYPES\n\nexport function isUndefined(o) {\n return typeof o === \"undefined\";\n}\n\nexport function isNumber(o) {\n return typeof o === \"number\";\n}\n\nexport function isInteger(o) {\n return typeof o === \"number\" && o % 1 === 0;\n}\n\nexport function isString(o) {\n return typeof o === \"string\";\n}\n\nexport function isDate(o) {\n return Object.prototype.toString.call(o) === \"[object Date]\";\n}\n\n// CAPABILITIES\n\nexport function hasRelative() {\n try {\n return typeof Intl !== \"undefined\" && !!Intl.RelativeTimeFormat;\n } catch (e) {\n return false;\n }\n}\n\nexport function hasLocaleWeekInfo() {\n try {\n return (\n typeof Intl !== \"undefined\" &&\n !!Intl.Locale &&\n (\"weekInfo\" in Intl.Locale.prototype || \"getWeekInfo\" in Intl.Locale.prototype)\n );\n } catch (e) {\n return false;\n }\n}\n\n// OBJECTS AND ARRAYS\n\nexport function maybeArray(thing) {\n return Array.isArray(thing) ? thing : [thing];\n}\n\nexport function bestBy(arr, by, compare) {\n if (arr.length === 0) {\n return undefined;\n }\n return arr.reduce((best, next) => {\n const pair = [by(next), next];\n if (!best) {\n return pair;\n } else if (compare(best[0], pair[0]) === best[0]) {\n return best;\n } else {\n return pair;\n }\n }, null)[1];\n}\n\nexport function pick(obj, keys) {\n return keys.reduce((a, k) => {\n a[k] = obj[k];\n return a;\n }, {});\n}\n\nexport function hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport function validateWeekSettings(settings) {\n if (settings == null) {\n return null;\n } else if (typeof settings !== \"object\") {\n throw new InvalidArgumentError(\"Week settings must be an object\");\n } else {\n if (\n !integerBetween(settings.firstDay, 1, 7) ||\n !integerBetween(settings.minimalDays, 1, 7) ||\n !Array.isArray(settings.weekend) ||\n settings.weekend.some((v) => !integerBetween(v, 1, 7))\n ) {\n throw new InvalidArgumentError(\"Invalid week settings\");\n }\n return {\n firstDay: settings.firstDay,\n minimalDays: settings.minimalDays,\n weekend: Array.from(settings.weekend),\n };\n }\n}\n\n// NUMBERS AND STRINGS\n\nexport function integerBetween(thing, bottom, top) {\n return isInteger(thing) && thing >= bottom && thing <= top;\n}\n\n// x % n but takes the sign of n instead of x\nexport function floorMod(x, n) {\n return x - n * Math.floor(x / n);\n}\n\nexport function padStart(input, n = 2) {\n const isNeg = input < 0;\n let padded;\n if (isNeg) {\n padded = \"-\" + (\"\" + -input).padStart(n, \"0\");\n } else {\n padded = (\"\" + input).padStart(n, \"0\");\n }\n return padded;\n}\n\nexport function parseInteger(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseInt(string, 10);\n }\n}\n\nexport function parseFloating(string) {\n if (isUndefined(string) || string === null || string === \"\") {\n return undefined;\n } else {\n return parseFloat(string);\n }\n}\n\nexport function parseMillis(fraction) {\n // Return undefined (instead of 0) in these cases, where fraction is not set\n if (isUndefined(fraction) || fraction === null || fraction === \"\") {\n return undefined;\n } else {\n const f = parseFloat(\"0.\" + fraction) * 1000;\n return Math.floor(f);\n }\n}\n\nexport function roundTo(number, digits, towardZero = false) {\n const factor = 10 ** digits,\n rounder = towardZero ? Math.trunc : Math.round;\n return rounder(number * factor) / factor;\n}\n\n// DATE BASICS\n\nexport function isLeapYear(year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\nexport function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n}\n\nexport function daysInMonth(year, month) {\n const modMonth = floorMod(month - 1, 12) + 1,\n modYear = year + (month - modMonth) / 12;\n\n if (modMonth === 2) {\n return isLeapYear(modYear) ? 29 : 28;\n } else {\n return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][modMonth - 1];\n }\n}\n\n// convert a calendar object to a local timestamp (epoch, but with the offset baked in)\nexport function objToLocalTS(obj) {\n let d = Date.UTC(\n obj.year,\n obj.month - 1,\n obj.day,\n obj.hour,\n obj.minute,\n obj.second,\n obj.millisecond\n );\n\n // for legacy reasons, years between 0 and 99 are interpreted as 19XX; revert that\n if (obj.year < 100 && obj.year >= 0) {\n d = new Date(d);\n // set the month and day again, this is necessary because year 2000 is a leap year, but year 100 is not\n // so if obj.year is in 99, but obj.day makes it roll over into year 100,\n // the calculations done by Date.UTC are using year 2000 - which is incorrect\n d.setUTCFullYear(obj.year, obj.month - 1, obj.day);\n }\n return +d;\n}\n\n// adapted from moment.js: https://github.com/moment/moment/blob/000ac1800e620f770f4eb31b5ae908f6167b0ab2/src/lib/units/week-calendar-utils.js\nfunction firstWeekOffset(year, minDaysInFirstWeek, startOfWeek) {\n const fwdlw = isoWeekdayToLocal(dayOfWeek(year, 1, minDaysInFirstWeek), startOfWeek);\n return -fwdlw + minDaysInFirstWeek - 1;\n}\n\nexport function weeksInWeekYear(weekYear, minDaysInFirstWeek = 4, startOfWeek = 1) {\n const weekOffset = firstWeekOffset(weekYear, minDaysInFirstWeek, startOfWeek);\n const weekOffsetNext = firstWeekOffset(weekYear + 1, minDaysInFirstWeek, startOfWeek);\n return (daysInYear(weekYear) - weekOffset + weekOffsetNext) / 7;\n}\n\nexport function untruncateYear(year) {\n if (year > 99) {\n return year;\n } else return year > Settings.twoDigitCutoffYear ? 1900 + year : 2000 + year;\n}\n\n// PARSING\n\nexport function parseZoneInfo(ts, offsetFormat, locale, timeZone = null) {\n const date = new Date(ts),\n intlOpts = {\n hourCycle: \"h23\",\n year: \"numeric\",\n month: \"2-digit\",\n day: \"2-digit\",\n hour: \"2-digit\",\n minute: \"2-digit\",\n };\n\n if (timeZone) {\n intlOpts.timeZone = timeZone;\n }\n\n const modified = { timeZoneName: offsetFormat, ...intlOpts };\n\n const parsed = new Intl.DateTimeFormat(locale, modified)\n .formatToParts(date)\n .find((m) => m.type.toLowerCase() === \"timezonename\");\n return parsed ? parsed.value : null;\n}\n\n// signedOffset('-5', '30') -> -330\nexport function signedOffset(offHourStr, offMinuteStr) {\n let offHour = parseInt(offHourStr, 10);\n\n // don't || this because we want to preserve -0\n if (Number.isNaN(offHour)) {\n offHour = 0;\n }\n\n const offMin = parseInt(offMinuteStr, 10) || 0,\n offMinSigned = offHour < 0 || Object.is(offHour, -0) ? -offMin : offMin;\n return offHour * 60 + offMinSigned;\n}\n\n// COERCION\n\nexport function asNumber(value) {\n const numericValue = Number(value);\n if (typeof value === \"boolean\" || value === \"\" || Number.isNaN(numericValue))\n throw new InvalidArgumentError(`Invalid unit value ${value}`);\n return numericValue;\n}\n\nexport function normalizeObject(obj, normalizer) {\n const normalized = {};\n for (const u in obj) {\n if (hasOwnProperty(obj, u)) {\n const v = obj[u];\n if (v === undefined || v === null) continue;\n normalized[normalizer(u)] = asNumber(v);\n }\n }\n return normalized;\n}\n\nexport function formatOffset(offset, format) {\n const hours = Math.trunc(Math.abs(offset / 60)),\n minutes = Math.trunc(Math.abs(offset % 60)),\n sign = offset >= 0 ? \"+\" : \"-\";\n\n switch (format) {\n case \"short\":\n return `${sign}${padStart(hours, 2)}:${padStart(minutes, 2)}`;\n case \"narrow\":\n return `${sign}${hours}${minutes > 0 ? `:${minutes}` : \"\"}`;\n case \"techie\":\n return `${sign}${padStart(hours, 2)}${padStart(minutes, 2)}`;\n default:\n throw new RangeError(`Value format ${format} is out of range for property format`);\n }\n}\n\nexport function timeObject(obj) {\n return pick(obj, [\"hour\", \"minute\", \"second\", \"millisecond\"]);\n}\n","import {\n untruncateYear,\n signedOffset,\n parseInteger,\n parseMillis,\n isUndefined,\n parseFloating,\n} from \"./util.js\";\nimport * as English from \"./english.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\n\n/*\n * This file handles parsing for well-specified formats. Here's how it works:\n * Two things go into parsing: a regex to match with and an extractor to take apart the groups in the match.\n * An extractor is just a function that takes a regex match array and returns a { year: ..., month: ... } object\n * parse() does the work of executing the regex and applying the extractor. It takes multiple regex/extractor pairs to try in sequence.\n * Extractors can take a \"cursor\" representing the offset in the match to look at. This makes it easy to combine extractors.\n * combineExtractors() does the work of combining them, keeping track of the cursor through multiple extractions.\n * Some extractions are super dumb and simpleParse and fromStrings help DRY them.\n */\n\nconst ianaRegex = /[A-Za-z_+-]{1,256}(?::?\\/[A-Za-z0-9_+-]{1,256}(?:\\/[A-Za-z0-9_+-]{1,256})?)?/;\n\nfunction combineRegexes(...regexes) {\n const full = regexes.reduce((f, r) => f + r.source, \"\");\n return RegExp(`^${full}$`);\n}\n\nfunction combineExtractors(...extractors) {\n return (m) =>\n extractors\n .reduce(\n ([mergedVals, mergedZone, cursor], ex) => {\n const [val, zone, next] = ex(m, cursor);\n return [{ ...mergedVals, ...val }, zone || mergedZone, next];\n },\n [{}, null, 1]\n )\n .slice(0, 2);\n}\n\nfunction parse(s, ...patterns) {\n if (s == null) {\n return [null, null];\n }\n\n for (const [regex, extractor] of patterns) {\n const m = regex.exec(s);\n if (m) {\n return extractor(m);\n }\n }\n return [null, null];\n}\n\nfunction simpleParse(...keys) {\n return (match, cursor) => {\n const ret = {};\n let i;\n\n for (i = 0; i < keys.length; i++) {\n ret[keys[i]] = parseInteger(match[cursor + i]);\n }\n return [ret, null, cursor + i];\n };\n}\n\n// ISO and SQL parsing\nconst offsetRegex = /(?:(Z)|([+-]\\d\\d)(?::?(\\d\\d))?)/;\nconst isoExtendedZone = `(?:${offsetRegex.source}?(?:\\\\[(${ianaRegex.source})\\\\])?)?`;\nconst isoTimeBaseRegex = /(\\d\\d)(?::?(\\d\\d)(?::?(\\d\\d)(?:[.,](\\d{1,30}))?)?)?/;\nconst isoTimeRegex = RegExp(`${isoTimeBaseRegex.source}${isoExtendedZone}`);\nconst isoTimeExtensionRegex = RegExp(`(?:T${isoTimeRegex.source})?`);\nconst isoYmdRegex = /([+-]\\d{6}|\\d{4})(?:-?(\\d\\d)(?:-?(\\d\\d))?)?/;\nconst isoWeekRegex = /(\\d{4})-?W(\\d\\d)(?:-?(\\d))?/;\nconst isoOrdinalRegex = /(\\d{4})-?(\\d{3})/;\nconst extractISOWeekData = simpleParse(\"weekYear\", \"weekNumber\", \"weekDay\");\nconst extractISOOrdinalData = simpleParse(\"year\", \"ordinal\");\nconst sqlYmdRegex = /(\\d{4})-(\\d\\d)-(\\d\\d)/; // dumbed-down version of the ISO one\nconst sqlTimeRegex = RegExp(\n `${isoTimeBaseRegex.source} ?(?:${offsetRegex.source}|(${ianaRegex.source}))?`\n);\nconst sqlTimeExtensionRegex = RegExp(`(?: ${sqlTimeRegex.source})?`);\n\nfunction int(match, pos, fallback) {\n const m = match[pos];\n return isUndefined(m) ? fallback : parseInteger(m);\n}\n\nfunction extractISOYmd(match, cursor) {\n const item = {\n year: int(match, cursor),\n month: int(match, cursor + 1, 1),\n day: int(match, cursor + 2, 1),\n };\n\n return [item, null, cursor + 3];\n}\n\nfunction extractISOTime(match, cursor) {\n const item = {\n hours: int(match, cursor, 0),\n minutes: int(match, cursor + 1, 0),\n seconds: int(match, cursor + 2, 0),\n milliseconds: parseMillis(match[cursor + 3]),\n };\n\n return [item, null, cursor + 4];\n}\n\nfunction extractISOOffset(match, cursor) {\n const local = !match[cursor] && !match[cursor + 1],\n fullOffset = signedOffset(match[cursor + 1], match[cursor + 2]),\n zone = local ? null : FixedOffsetZone.instance(fullOffset);\n return [{}, zone, cursor + 3];\n}\n\nfunction extractIANAZone(match, cursor) {\n const zone = match[cursor] ? IANAZone.create(match[cursor]) : null;\n return [{}, zone, cursor + 1];\n}\n\n// ISO time parsing\n\nconst isoTimeOnly = RegExp(`^T?${isoTimeBaseRegex.source}$`);\n\n// ISO duration parsing\n\nconst isoDuration =\n /^-?P(?:(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)Y)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)W)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)D)?(?:T(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)H)?(?:(-?\\d{1,20}(?:\\.\\d{1,20})?)M)?(?:(-?\\d{1,20})(?:[.,](-?\\d{1,20}))?S)?)?)$/;\n\nfunction extractISODuration(match) {\n const [s, yearStr, monthStr, weekStr, dayStr, hourStr, minuteStr, secondStr, millisecondsStr] =\n match;\n\n const hasNegativePrefix = s[0] === \"-\";\n const negativeSeconds = secondStr && secondStr[0] === \"-\";\n\n const maybeNegate = (num, force = false) =>\n num !== undefined && (force || (num && hasNegativePrefix)) ? -num : num;\n\n return [\n {\n years: maybeNegate(parseFloating(yearStr)),\n months: maybeNegate(parseFloating(monthStr)),\n weeks: maybeNegate(parseFloating(weekStr)),\n days: maybeNegate(parseFloating(dayStr)),\n hours: maybeNegate(parseFloating(hourStr)),\n minutes: maybeNegate(parseFloating(minuteStr)),\n seconds: maybeNegate(parseFloating(secondStr), secondStr === \"-0\"),\n milliseconds: maybeNegate(parseMillis(millisecondsStr), negativeSeconds),\n },\n ];\n}\n\n// These are a little braindead. EDT *should* tell us that we're in, say, America/New_York\n// and not just that we're in -240 *right now*. But since I don't think these are used that often\n// I'm just going to ignore that\nconst obsOffsets = {\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n};\n\nfunction fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {\n const result = {\n year: yearStr.length === 2 ? untruncateYear(parseInteger(yearStr)) : parseInteger(yearStr),\n month: English.monthsShort.indexOf(monthStr) + 1,\n day: parseInteger(dayStr),\n hour: parseInteger(hourStr),\n minute: parseInteger(minuteStr),\n };\n\n if (secondStr) result.second = parseInteger(secondStr);\n if (weekdayStr) {\n result.weekday =\n weekdayStr.length > 3\n ? English.weekdaysLong.indexOf(weekdayStr) + 1\n : English.weekdaysShort.indexOf(weekdayStr) + 1;\n }\n\n return result;\n}\n\n// RFC 2822/5322\nconst rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\\d\\d)(\\d\\d)))$/;\n\nfunction extractRFC2822(match) {\n const [\n ,\n weekdayStr,\n dayStr,\n monthStr,\n yearStr,\n hourStr,\n minuteStr,\n secondStr,\n obsOffset,\n milOffset,\n offHourStr,\n offMinuteStr,\n ] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n\n let offset;\n if (obsOffset) {\n offset = obsOffsets[obsOffset];\n } else if (milOffset) {\n offset = 0;\n } else {\n offset = signedOffset(offHourStr, offMinuteStr);\n }\n\n return [result, new FixedOffsetZone(offset)];\n}\n\nfunction preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, \" \")\n .replace(/(\\s\\s+)/g, \" \")\n .trim();\n}\n\n// http date\n\nconst rfc1123 =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d\\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n rfc850 =\n /^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d\\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) GMT$/,\n ascii =\n /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \\d|\\d\\d) (\\d\\d):(\\d\\d):(\\d\\d) (\\d{4})$/;\n\nfunction extractRFC1123Or850(match) {\n const [, weekdayStr, dayStr, monthStr, yearStr, hourStr, minuteStr, secondStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nfunction extractASCII(match) {\n const [, weekdayStr, monthStr, dayStr, hourStr, minuteStr, secondStr, yearStr] = match,\n result = fromStrings(weekdayStr, yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr);\n return [result, FixedOffsetZone.utcInstance];\n}\n\nconst isoYmdWithTimeExtensionRegex = combineRegexes(isoYmdRegex, isoTimeExtensionRegex);\nconst isoWeekWithTimeExtensionRegex = combineRegexes(isoWeekRegex, isoTimeExtensionRegex);\nconst isoOrdinalWithTimeExtensionRegex = combineRegexes(isoOrdinalRegex, isoTimeExtensionRegex);\nconst isoTimeCombinedRegex = combineRegexes(isoTimeRegex);\n\nconst extractISOYmdTimeAndOffset = combineExtractors(\n extractISOYmd,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOWeekTimeAndOffset = combineExtractors(\n extractISOWeekData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOOrdinalDateAndTime = combineExtractors(\n extractISOOrdinalData,\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\nconst extractISOTimeAndOffset = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\n/*\n * @private\n */\n\nexport function parseISODate(s) {\n return parse(\n s,\n [isoYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [isoWeekWithTimeExtensionRegex, extractISOWeekTimeAndOffset],\n [isoOrdinalWithTimeExtensionRegex, extractISOOrdinalDateAndTime],\n [isoTimeCombinedRegex, extractISOTimeAndOffset]\n );\n}\n\nexport function parseRFC2822Date(s) {\n return parse(preprocessRFC2822(s), [rfc2822, extractRFC2822]);\n}\n\nexport function parseHTTPDate(s) {\n return parse(\n s,\n [rfc1123, extractRFC1123Or850],\n [rfc850, extractRFC1123Or850],\n [ascii, extractASCII]\n );\n}\n\nexport function parseISODuration(s) {\n return parse(s, [isoDuration, extractISODuration]);\n}\n\nconst extractISOTimeOnly = combineExtractors(extractISOTime);\n\nexport function parseISOTimeOnly(s) {\n return parse(s, [isoTimeOnly, extractISOTimeOnly]);\n}\n\nconst sqlYmdWithTimeExtensionRegex = combineRegexes(sqlYmdRegex, sqlTimeExtensionRegex);\nconst sqlTimeCombinedRegex = combineRegexes(sqlTimeRegex);\n\nconst extractISOTimeOffsetAndIANAZone = combineExtractors(\n extractISOTime,\n extractISOOffset,\n extractIANAZone\n);\n\nexport function parseSQL(s) {\n return parse(\n s,\n [sqlYmdWithTimeExtensionRegex, extractISOYmdTimeAndOffset],\n [sqlTimeCombinedRegex, extractISOTimeOffsetAndIANAZone]\n );\n}\n","import { InvalidArgumentError, InvalidDurationError, InvalidUnitError } from \"./errors.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Locale from \"./impl/locale.js\";\nimport { parseISODuration, parseISOTimeOnly } from \"./impl/regexParser.js\";\nimport {\n asNumber,\n hasOwnProperty,\n isNumber,\n isUndefined,\n normalizeObject,\n roundTo,\n} from \"./impl/util.js\";\nimport Settings from \"./settings.js\";\nimport DateTime from \"./datetime.js\";\n\nconst INVALID = \"Invalid Duration\";\n\n// unit conversion constants\nexport const lowOrderMatrix = {\n weeks: {\n days: 7,\n hours: 7 * 24,\n minutes: 7 * 24 * 60,\n seconds: 7 * 24 * 60 * 60,\n milliseconds: 7 * 24 * 60 * 60 * 1000,\n },\n days: {\n hours: 24,\n minutes: 24 * 60,\n seconds: 24 * 60 * 60,\n milliseconds: 24 * 60 * 60 * 1000,\n },\n hours: { minutes: 60, seconds: 60 * 60, milliseconds: 60 * 60 * 1000 },\n minutes: { seconds: 60, milliseconds: 60 * 1000 },\n seconds: { milliseconds: 1000 },\n },\n casualMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: 52,\n days: 365,\n hours: 365 * 24,\n minutes: 365 * 24 * 60,\n seconds: 365 * 24 * 60 * 60,\n milliseconds: 365 * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: 13,\n days: 91,\n hours: 91 * 24,\n minutes: 91 * 24 * 60,\n seconds: 91 * 24 * 60 * 60,\n milliseconds: 91 * 24 * 60 * 60 * 1000,\n },\n months: {\n weeks: 4,\n days: 30,\n hours: 30 * 24,\n minutes: 30 * 24 * 60,\n seconds: 30 * 24 * 60 * 60,\n milliseconds: 30 * 24 * 60 * 60 * 1000,\n },\n\n ...lowOrderMatrix,\n },\n daysInYearAccurate = 146097.0 / 400,\n daysInMonthAccurate = 146097.0 / 4800,\n accurateMatrix = {\n years: {\n quarters: 4,\n months: 12,\n weeks: daysInYearAccurate / 7,\n days: daysInYearAccurate,\n hours: daysInYearAccurate * 24,\n minutes: daysInYearAccurate * 24 * 60,\n seconds: daysInYearAccurate * 24 * 60 * 60,\n milliseconds: daysInYearAccurate * 24 * 60 * 60 * 1000,\n },\n quarters: {\n months: 3,\n weeks: daysInYearAccurate / 28,\n days: daysInYearAccurate / 4,\n hours: (daysInYearAccurate * 24) / 4,\n minutes: (daysInYearAccurate * 24 * 60) / 4,\n seconds: (daysInYearAccurate * 24 * 60 * 60) / 4,\n milliseconds: (daysInYearAccurate * 24 * 60 * 60 * 1000) / 4,\n },\n months: {\n weeks: daysInMonthAccurate / 7,\n days: daysInMonthAccurate,\n hours: daysInMonthAccurate * 24,\n minutes: daysInMonthAccurate * 24 * 60,\n seconds: daysInMonthAccurate * 24 * 60 * 60,\n milliseconds: daysInMonthAccurate * 24 * 60 * 60 * 1000,\n },\n ...lowOrderMatrix,\n };\n\n// units ordered by size\nconst orderedUnits = [\n \"years\",\n \"quarters\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\",\n];\n\nconst reverseUnits = orderedUnits.slice(0).reverse();\n\n// clone really means \"create another instance just like this one, but with these changes\"\nfunction clone(dur, alts, clear = false) {\n // deep merge for vals\n const conf = {\n values: clear ? alts.values : { ...dur.values, ...(alts.values || {}) },\n loc: dur.loc.clone(alts.loc),\n conversionAccuracy: alts.conversionAccuracy || dur.conversionAccuracy,\n matrix: alts.matrix || dur.matrix,\n };\n return new Duration(conf);\n}\n\nfunction durationToMillis(matrix, vals) {\n let sum = vals.milliseconds ?? 0;\n for (const unit of reverseUnits.slice(1)) {\n if (vals[unit]) {\n sum += vals[unit] * matrix[unit][\"milliseconds\"];\n }\n }\n return sum;\n}\n\n// NB: mutates parameters\nfunction normalizeValues(matrix, vals) {\n // the logic below assumes the overall value of the duration is positive\n // if this is not the case, factor is used to make it so\n const factor = durationToMillis(matrix, vals) < 0 ? -1 : 1;\n\n orderedUnits.reduceRight((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const previousVal = vals[previous] * factor;\n const conv = matrix[current][previous];\n\n // if (previousVal < 0):\n // lower order unit is negative (e.g. { years: 2, days: -2 })\n // normalize this by reducing the higher order unit by the appropriate amount\n // and increasing the lower order unit\n // this can never make the higher order unit negative, because this function only operates\n // on positive durations, so the amount of time represented by the lower order unit cannot\n // be larger than the higher order unit\n // else:\n // lower order unit is positive (e.g. { years: 2, days: 450 } or { years: -2, days: 450 })\n // in this case we attempt to convert as much as possible from the lower order unit into\n // the higher order one\n //\n // Math.floor takes care of both of these cases, rounding away from 0\n // if previousVal < 0 it makes the absolute value larger\n // if previousVal >= it makes the absolute value smaller\n const rollUp = Math.floor(previousVal / conv);\n vals[current] += rollUp * factor;\n vals[previous] -= rollUp * conv * factor;\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n\n // try to convert any decimals into smaller units if possible\n // for example for { years: 2.5, days: 0, seconds: 0 } we want to get { years: 2, days: 182, hours: 12 }\n orderedUnits.reduce((previous, current) => {\n if (!isUndefined(vals[current])) {\n if (previous) {\n const fraction = vals[previous] % 1;\n vals[previous] -= fraction;\n vals[current] += fraction * matrix[previous][current];\n }\n return current;\n } else {\n return previous;\n }\n }, null);\n}\n\n// Remove all properties with a value of 0 from an object\nfunction removeZeroes(vals) {\n const newVals = {};\n for (const [key, value] of Object.entries(vals)) {\n if (value !== 0) {\n newVals[key] = value;\n }\n }\n return newVals;\n}\n\n/**\n * A Duration object represents a period of time, like \"2 months\" or \"1 day, 1 hour\". Conceptually, it's just a map of units to their quantities, accompanied by some additional configuration and methods for creating, parsing, interrogating, transforming, and formatting them. They can be used on their own or in conjunction with other Luxon types; for example, you can use {@link DateTime#plus} to add a Duration object to a DateTime, producing another DateTime.\n *\n * Here is a brief overview of commonly used methods and getters in Duration:\n *\n * * **Creation** To create a Duration, use {@link Duration.fromMillis}, {@link Duration.fromObject}, or {@link Duration.fromISO}.\n * * **Unit values** See the {@link Duration#years}, {@link Duration#months}, {@link Duration#weeks}, {@link Duration#days}, {@link Duration#hours}, {@link Duration#minutes}, {@link Duration#seconds}, {@link Duration#milliseconds} accessors.\n * * **Configuration** See {@link Duration#locale} and {@link Duration#numberingSystem} accessors.\n * * **Transformation** To create new Durations out of old ones use {@link Duration#plus}, {@link Duration#minus}, {@link Duration#normalize}, {@link Duration#set}, {@link Duration#reconfigure}, {@link Duration#shiftTo}, and {@link Duration#negate}.\n * * **Output** To convert the Duration into other representations, see {@link Duration#as}, {@link Duration#toISO}, {@link Duration#toFormat}, and {@link Duration#toJSON}\n *\n * There's are more methods documented below. In addition, for more information on subtler topics like internationalization and validity, see the external documentation.\n */\nexport default class Duration {\n /**\n * @private\n */\n constructor(config) {\n const accurate = config.conversionAccuracy === \"longterm\" || false;\n let matrix = accurate ? accurateMatrix : casualMatrix;\n\n if (config.matrix) {\n matrix = config.matrix;\n }\n\n /**\n * @access private\n */\n this.values = config.values;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.conversionAccuracy = accurate ? \"longterm\" : \"casual\";\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.matrix = matrix;\n /**\n * @access private\n */\n this.isLuxonDuration = true;\n }\n\n /**\n * Create Duration from a number of milliseconds.\n * @param {number} count of milliseconds\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n static fromMillis(count, opts) {\n return Duration.fromObject({ milliseconds: count }, opts);\n }\n\n /**\n * Create a Duration from a JavaScript object with keys like 'years' and 'hours'.\n * If this object is empty then a zero milliseconds duration is returned.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.years\n * @param {number} obj.quarters\n * @param {number} obj.months\n * @param {number} obj.weeks\n * @param {number} obj.days\n * @param {number} obj.hours\n * @param {number} obj.minutes\n * @param {number} obj.seconds\n * @param {number} obj.milliseconds\n * @param {Object} [opts=[]] - options for creating this Duration\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the custom conversion system to use\n * @return {Duration}\n */\n static fromObject(obj, opts = {}) {\n if (obj == null || typeof obj !== \"object\") {\n throw new InvalidArgumentError(\n `Duration.fromObject: argument expected to be an object, got ${\n obj === null ? \"null\" : typeof obj\n }`\n );\n }\n\n return new Duration({\n values: normalizeObject(obj, Duration.normalizeUnit),\n loc: Locale.fromObject(opts),\n conversionAccuracy: opts.conversionAccuracy,\n matrix: opts.matrix,\n });\n }\n\n /**\n * Create a Duration from DurationLike.\n *\n * @param {Object | number | Duration} durationLike\n * One of:\n * - object with keys like 'years' and 'hours'.\n * - number representing milliseconds\n * - Duration instance\n * @return {Duration}\n */\n static fromDurationLike(durationLike) {\n if (isNumber(durationLike)) {\n return Duration.fromMillis(durationLike);\n } else if (Duration.isDuration(durationLike)) {\n return durationLike;\n } else if (typeof durationLike === \"object\") {\n return Duration.fromObject(durationLike);\n } else {\n throw new InvalidArgumentError(\n `Unknown duration argument ${durationLike} of type ${typeof durationLike}`\n );\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 duration string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the preset conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromISO('P3Y6M1W4DT12H30M5S').toObject() //=> { years: 3, months: 6, weeks: 1, days: 4, hours: 12, minutes: 30, seconds: 5 }\n * @example Duration.fromISO('PT23H').toObject() //=> { hours: 23 }\n * @example Duration.fromISO('P5Y3M').toObject() //=> { years: 5, months: 3 }\n * @return {Duration}\n */\n static fromISO(text, opts) {\n const [parsed] = parseISODuration(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create a Duration from an ISO 8601 time string.\n * @param {string} text - text to parse\n * @param {Object} opts - options for parsing\n * @param {string} [opts.locale='en-US'] - the locale to use\n * @param {string} opts.numberingSystem - the numbering system to use\n * @param {string} [opts.conversionAccuracy='casual'] - the preset conversion system to use\n * @param {string} [opts.matrix=Object] - the conversion system to use\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @example Duration.fromISOTime('11:22:33.444').toObject() //=> { hours: 11, minutes: 22, seconds: 33, milliseconds: 444 }\n * @example Duration.fromISOTime('11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T11:00').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @example Duration.fromISOTime('T1100').toObject() //=> { hours: 11, minutes: 0, seconds: 0 }\n * @return {Duration}\n */\n static fromISOTime(text, opts) {\n const [parsed] = parseISOTimeOnly(text);\n if (parsed) {\n return Duration.fromObject(parsed, opts);\n } else {\n return Duration.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n }\n\n /**\n * Create an invalid Duration.\n * @param {string} reason - simple string of why this datetime is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Duration}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Duration is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDurationError(invalid);\n } else {\n return new Duration({ invalid });\n }\n }\n\n /**\n * @private\n */\n static normalizeUnit(unit) {\n const normalized = {\n year: \"years\",\n years: \"years\",\n quarter: \"quarters\",\n quarters: \"quarters\",\n month: \"months\",\n months: \"months\",\n week: \"weeks\",\n weeks: \"weeks\",\n day: \"days\",\n days: \"days\",\n hour: \"hours\",\n hours: \"hours\",\n minute: \"minutes\",\n minutes: \"minutes\",\n second: \"seconds\",\n seconds: \"seconds\",\n millisecond: \"milliseconds\",\n milliseconds: \"milliseconds\",\n }[unit ? unit.toLowerCase() : unit];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n }\n\n /**\n * Check if an object is a Duration. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDuration(o) {\n return (o && o.isLuxonDuration) || false;\n }\n\n /**\n * Get the locale of a Duration, such 'en-GB'\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a Duration, such 'beng'. The numbering system is used when formatting the Duration\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Returns a string representation of this Duration formatted according to the specified format string. You may use these tokens:\n * * `S` for milliseconds\n * * `s` for seconds\n * * `m` for minutes\n * * `h` for hours\n * * `d` for days\n * * `w` for weeks\n * * `M` for months\n * * `y` for years\n * Notes:\n * * Add padding by repeating the token, e.g. \"yy\" pads the years to two digits, \"hhhh\" pads the hours out to four digits\n * * Tokens can be escaped by wrapping with single quotes.\n * * The duration will be converted to the set of units in the format string using {@link Duration#shiftTo} and the Durations's conversion accuracy setting.\n * @param {string} fmt - the format string\n * @param {Object} opts - options\n * @param {boolean} [opts.floor=true] - floor numerical values\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"y d s\") //=> \"1 6 2\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"yy dd sss\") //=> \"01 06 002\"\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toFormat(\"M S\") //=> \"12 518402000\"\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n // reverse-compat since 1.2; we always round down now, never up, and we do it by default\n const fmtOpts = {\n ...opts,\n floor: opts.round !== false && opts.floor !== false,\n };\n return this.isValid\n ? Formatter.create(this.loc, fmtOpts).formatDurationFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a string representation of a Duration with all units included.\n * To modify its behavior, use `listStyle` and any Intl.NumberFormat option, though `unitDisplay` is especially relevant.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat#options\n * @param {Object} opts - Formatting options. Accepts the same keys as the options parameter of the native `Intl.NumberFormat` constructor, as well as `listStyle`.\n * @param {string} [opts.listStyle='narrow'] - How to format the merged list. Corresponds to the `style` property of the options parameter of the native `Intl.ListFormat` constructor.\n * @example\n * ```js\n * var dur = Duration.fromObject({ days: 1, hours: 5, minutes: 6 })\n * dur.toHuman() //=> '1 day, 5 hours, 6 minutes'\n * dur.toHuman({ listStyle: \"long\" }) //=> '1 day, 5 hours, and 6 minutes'\n * dur.toHuman({ unitDisplay: \"short\" }) //=> '1 day, 5 hr, 6 min'\n * ```\n */\n toHuman(opts = {}) {\n if (!this.isValid) return INVALID;\n\n const l = orderedUnits\n .map((unit) => {\n const val = this.values[unit];\n if (isUndefined(val)) {\n return null;\n }\n return this.loc\n .numberFormatter({ style: \"unit\", unitDisplay: \"long\", ...opts, unit: unit.slice(0, -1) })\n .format(val);\n })\n .filter((n) => n);\n\n return this.loc\n .listFormatter({ type: \"conjunction\", style: opts.listStyle || \"narrow\", ...opts })\n .format(l);\n }\n\n /**\n * Returns a JavaScript object with this Duration's values.\n * @example Duration.fromObject({ years: 1, days: 6, seconds: 2 }).toObject() //=> { years: 1, days: 6, seconds: 2 }\n * @return {Object}\n */\n toObject() {\n if (!this.isValid) return {};\n return { ...this.values };\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Durations\n * @example Duration.fromObject({ years: 3, seconds: 45 }).toISO() //=> 'P3YT45S'\n * @example Duration.fromObject({ months: 4, seconds: 45 }).toISO() //=> 'P4MT45S'\n * @example Duration.fromObject({ months: 5 }).toISO() //=> 'P5M'\n * @example Duration.fromObject({ minutes: 5 }).toISO() //=> 'PT5M'\n * @example Duration.fromObject({ milliseconds: 6 }).toISO() //=> 'PT0.006S'\n * @return {string}\n */\n toISO() {\n // we could use the formatter, but this is an easier way to get the minimum string\n if (!this.isValid) return null;\n\n let s = \"P\";\n if (this.years !== 0) s += this.years + \"Y\";\n if (this.months !== 0 || this.quarters !== 0) s += this.months + this.quarters * 3 + \"M\";\n if (this.weeks !== 0) s += this.weeks + \"W\";\n if (this.days !== 0) s += this.days + \"D\";\n if (this.hours !== 0 || this.minutes !== 0 || this.seconds !== 0 || this.milliseconds !== 0)\n s += \"T\";\n if (this.hours !== 0) s += this.hours + \"H\";\n if (this.minutes !== 0) s += this.minutes + \"M\";\n if (this.seconds !== 0 || this.milliseconds !== 0)\n // this will handle \"floating point madness\" by removing extra decimal places\n // https://stackoverflow.com/questions/588004/is-floating-point-math-broken\n s += roundTo(this.seconds + this.milliseconds / 1000, 3) + \"S\";\n if (s === \"P\") s += \"T0S\";\n return s;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Duration, formatted as a time of day.\n * Note that this will return null if the duration is invalid, negative, or equal to or greater than 24 hours.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Times\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example Duration.fromObject({ hours: 11 }).toISOTime() //=> '11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressMilliseconds: true }) //=> '11:00:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ suppressSeconds: true }) //=> '11:00'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ includePrefix: true }) //=> 'T11:00:00.000'\n * @example Duration.fromObject({ hours: 11 }).toISOTime({ format: 'basic' }) //=> '110000.000'\n * @return {string}\n */\n toISOTime(opts = {}) {\n if (!this.isValid) return null;\n\n const millis = this.toMillis();\n if (millis < 0 || millis >= 86400000) return null;\n\n opts = {\n suppressMilliseconds: false,\n suppressSeconds: false,\n includePrefix: false,\n format: \"extended\",\n ...opts,\n includeOffset: false,\n };\n\n const dateTime = DateTime.fromMillis(millis, { zone: \"UTC\" });\n return dateTime.toISOTime(opts);\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns an ISO 8601 representation of this Duration appropriate for use in debugging.\n * @return {string}\n */\n toString() {\n return this.toISO();\n }\n\n /**\n * Returns a string representation of this Duration appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Duration { values: ${JSON.stringify(this.values)} }`;\n } else {\n return `Duration { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns an milliseconds value of this Duration.\n * @return {number}\n */\n toMillis() {\n if (!this.isValid) return NaN;\n\n return durationToMillis(this.matrix, this.values);\n }\n\n /**\n * Returns an milliseconds value of this Duration. Alias of {@link toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Make this Duration longer by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n plus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration),\n result = {};\n\n for (const k of orderedUnits) {\n if (hasOwnProperty(dur.values, k) || hasOwnProperty(this.values, k)) {\n result[k] = dur.get(k) + this.get(k);\n }\n }\n\n return clone(this, { values: result }, true);\n }\n\n /**\n * Make this Duration shorter by the specified amount. Return a newly-constructed Duration.\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @return {Duration}\n */\n minus(duration) {\n if (!this.isValid) return this;\n\n const dur = Duration.fromDurationLike(duration);\n return this.plus(dur.negate());\n }\n\n /**\n * Scale this Duration by the specified amount. Return a newly-constructed Duration.\n * @param {function} fn - The function to apply to each unit. Arity is 1 or 2: the value of the unit and, optionally, the unit name. Must return a number.\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits(x => x * 2) //=> { hours: 2, minutes: 60 }\n * @example Duration.fromObject({ hours: 1, minutes: 30 }).mapUnits((x, u) => u === \"hours\" ? x * 2 : x) //=> { hours: 2, minutes: 30 }\n * @return {Duration}\n */\n mapUnits(fn) {\n if (!this.isValid) return this;\n const result = {};\n for (const k of Object.keys(this.values)) {\n result[k] = asNumber(fn(this.values[k], k));\n }\n return clone(this, { values: result }, true);\n }\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example Duration.fromObject({years: 2, days: 3}).get('years') //=> 2\n * @example Duration.fromObject({years: 2, days: 3}).get('months') //=> 0\n * @example Duration.fromObject({years: 2, days: 3}).get('days') //=> 3\n * @return {number}\n */\n get(unit) {\n return this[Duration.normalizeUnit(unit)];\n }\n\n /**\n * \"Set\" the values of specified units. Return a newly-constructed Duration.\n * @param {Object} values - a mapping of units to numbers\n * @example dur.set({ years: 2017 })\n * @example dur.set({ hours: 8, minutes: 30 })\n * @return {Duration}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const mixed = { ...this.values, ...normalizeObject(values, Duration.normalizeUnit) };\n return clone(this, { values: mixed });\n }\n\n /**\n * \"Set\" the locale and/or numberingSystem. Returns a newly-constructed Duration.\n * @example dur.reconfigure({ locale: 'en-GB' })\n * @return {Duration}\n */\n reconfigure({ locale, numberingSystem, conversionAccuracy, matrix } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem });\n const opts = { loc, matrix, conversionAccuracy };\n return clone(this, opts);\n }\n\n /**\n * Return the length of the duration in the specified unit.\n * @param {string} unit - a unit such as 'minutes' or 'days'\n * @example Duration.fromObject({years: 1}).as('days') //=> 365\n * @example Duration.fromObject({years: 1}).as('months') //=> 12\n * @example Duration.fromObject({hours: 60}).as('days') //=> 2.5\n * @return {number}\n */\n as(unit) {\n return this.isValid ? this.shiftTo(unit).get(unit) : NaN;\n }\n\n /**\n * Reduce this Duration to its canonical representation in its current units.\n * Assuming the overall value of the Duration is positive, this means:\n * - excessive values for lower-order units are converted to higher-order units (if possible, see first and second example)\n * - negative lower-order units are converted to higher order units (there must be such a higher order unit, otherwise\n * the overall value would be negative, see third example)\n * - fractional values for higher-order units are converted to lower-order units (if possible, see fourth example)\n *\n * If the overall value is negative, the result of this method is equivalent to `this.negate().normalize().negate()`.\n * @example Duration.fromObject({ years: 2, days: 5000 }).normalize().toObject() //=> { years: 15, days: 255 }\n * @example Duration.fromObject({ days: 5000 }).normalize().toObject() //=> { days: 5000 }\n * @example Duration.fromObject({ hours: 12, minutes: -45 }).normalize().toObject() //=> { hours: 11, minutes: 15 }\n * @example Duration.fromObject({ years: 2.5, days: 0, hours: 0 }).normalize().toObject() //=> { years: 2, days: 182, hours: 12 }\n * @return {Duration}\n */\n normalize() {\n if (!this.isValid) return this;\n const vals = this.toObject();\n normalizeValues(this.matrix, vals);\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Rescale units to its largest representation\n * @example Duration.fromObject({ milliseconds: 90000 }).rescale().toObject() //=> { minutes: 1, seconds: 30 }\n * @return {Duration}\n */\n rescale() {\n if (!this.isValid) return this;\n const vals = removeZeroes(this.normalize().shiftToAll().toObject());\n return clone(this, { values: vals }, true);\n }\n\n /**\n * Convert this Duration into its representation in a different set of units.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).shiftTo('minutes', 'milliseconds').toObject() //=> { minutes: 60, milliseconds: 30000 }\n * @return {Duration}\n */\n shiftTo(...units) {\n if (!this.isValid) return this;\n\n if (units.length === 0) {\n return this;\n }\n\n units = units.map((u) => Duration.normalizeUnit(u));\n\n const built = {},\n accumulated = {},\n vals = this.toObject();\n let lastUnit;\n\n for (const k of orderedUnits) {\n if (units.indexOf(k) >= 0) {\n lastUnit = k;\n\n let own = 0;\n\n // anything we haven't boiled down yet should get boiled to this unit\n for (const ak in accumulated) {\n own += this.matrix[ak][k] * accumulated[ak];\n accumulated[ak] = 0;\n }\n\n // plus anything that's already in this unit\n if (isNumber(vals[k])) {\n own += vals[k];\n }\n\n // only keep the integer part for now in the hopes of putting any decimal part\n // into a smaller unit later\n const i = Math.trunc(own);\n built[k] = i;\n accumulated[k] = (own * 1000 - i * 1000) / 1000;\n\n // otherwise, keep it in the wings to boil it later\n } else if (isNumber(vals[k])) {\n accumulated[k] = vals[k];\n }\n }\n\n // anything leftover becomes the decimal for the last unit\n // lastUnit must be defined since units is not empty\n for (const key in accumulated) {\n if (accumulated[key] !== 0) {\n built[lastUnit] +=\n key === lastUnit ? accumulated[key] : accumulated[key] / this.matrix[lastUnit][key];\n }\n }\n\n normalizeValues(this.matrix, built);\n return clone(this, { values: built }, true);\n }\n\n /**\n * Shift this Duration to all available units.\n * Same as shiftTo(\"years\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", \"seconds\", \"milliseconds\")\n * @return {Duration}\n */\n shiftToAll() {\n if (!this.isValid) return this;\n return this.shiftTo(\n \"years\",\n \"months\",\n \"weeks\",\n \"days\",\n \"hours\",\n \"minutes\",\n \"seconds\",\n \"milliseconds\"\n );\n }\n\n /**\n * Return the negative of this Duration.\n * @example Duration.fromObject({ hours: 1, seconds: 30 }).negate().toObject() //=> { hours: -1, seconds: -30 }\n * @return {Duration}\n */\n negate() {\n if (!this.isValid) return this;\n const negated = {};\n for (const k of Object.keys(this.values)) {\n negated[k] = this.values[k] === 0 ? 0 : -this.values[k];\n }\n return clone(this, { values: negated }, true);\n }\n\n /**\n * Get the years.\n * @type {number}\n */\n get years() {\n return this.isValid ? this.values.years || 0 : NaN;\n }\n\n /**\n * Get the quarters.\n * @type {number}\n */\n get quarters() {\n return this.isValid ? this.values.quarters || 0 : NaN;\n }\n\n /**\n * Get the months.\n * @type {number}\n */\n get months() {\n return this.isValid ? this.values.months || 0 : NaN;\n }\n\n /**\n * Get the weeks\n * @type {number}\n */\n get weeks() {\n return this.isValid ? this.values.weeks || 0 : NaN;\n }\n\n /**\n * Get the days.\n * @type {number}\n */\n get days() {\n return this.isValid ? this.values.days || 0 : NaN;\n }\n\n /**\n * Get the hours.\n * @type {number}\n */\n get hours() {\n return this.isValid ? this.values.hours || 0 : NaN;\n }\n\n /**\n * Get the minutes.\n * @type {number}\n */\n get minutes() {\n return this.isValid ? this.values.minutes || 0 : NaN;\n }\n\n /**\n * Get the seconds.\n * @return {number}\n */\n get seconds() {\n return this.isValid ? this.values.seconds || 0 : NaN;\n }\n\n /**\n * Get the milliseconds.\n * @return {number}\n */\n get milliseconds() {\n return this.isValid ? this.values.milliseconds || 0 : NaN;\n }\n\n /**\n * Returns whether the Duration is invalid. Invalid durations are returned by diff operations\n * on invalid DateTimes or Intervals.\n * @return {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this Duration became invalid, or null if the Duration is valid\n * @return {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Duration became invalid, or null if the Duration is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Equality check\n * Two Durations are equal iff they have the same units and the same values for each unit.\n * @param {Duration} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n if (!this.loc.equals(other.loc)) {\n return false;\n }\n\n function eq(v1, v2) {\n // Consider 0 and undefined as equal\n if (v1 === undefined || v1 === 0) return v2 === undefined || v2 === 0;\n return v1 === v2;\n }\n\n for (const u of orderedUnits) {\n if (!eq(this.values[u], other.values[u])) {\n return false;\n }\n }\n return true;\n }\n}\n","import DateTime, { friendlyDateTime } from \"./datetime.js\";\nimport Duration from \"./duration.js\";\nimport Settings from \"./settings.js\";\nimport { InvalidArgumentError, InvalidIntervalError } from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport * as Formats from \"./impl/formats.js\";\n\nconst INVALID = \"Invalid Interval\";\n\n// checks if the start is equal to or before the end\nfunction validateStartEnd(start, end) {\n if (!start || !start.isValid) {\n return Interval.invalid(\"missing or invalid start\");\n } else if (!end || !end.isValid) {\n return Interval.invalid(\"missing or invalid end\");\n } else if (end < start) {\n return Interval.invalid(\n \"end before start\",\n `The end of an interval must be after its start, but you had start=${start.toISO()} and end=${end.toISO()}`\n );\n } else {\n return null;\n }\n}\n\n/**\n * An Interval object represents a half-open interval of time, where each endpoint is a {@link DateTime}. Conceptually, it's a container for those two endpoints, accompanied by methods for creating, parsing, interrogating, comparing, transforming, and formatting them.\n *\n * Here is a brief overview of the most commonly used methods and getters in Interval:\n *\n * * **Creation** To create an Interval, use {@link Interval.fromDateTimes}, {@link Interval.after}, {@link Interval.before}, or {@link Interval.fromISO}.\n * * **Accessors** Use {@link Interval#start} and {@link Interval#end} to get the start and end.\n * * **Interrogation** To analyze the Interval, use {@link Interval#count}, {@link Interval#length}, {@link Interval#hasSame}, {@link Interval#contains}, {@link Interval#isAfter}, or {@link Interval#isBefore}.\n * * **Transformation** To create other Intervals out of this one, use {@link Interval#set}, {@link Interval#splitAt}, {@link Interval#splitBy}, {@link Interval#divideEqually}, {@link Interval.merge}, {@link Interval.xor}, {@link Interval#union}, {@link Interval#intersection}, or {@link Interval#difference}.\n * * **Comparison** To compare this Interval to another one, use {@link Interval#equals}, {@link Interval#overlaps}, {@link Interval#abutsStart}, {@link Interval#abutsEnd}, {@link Interval#engulfs}\n * * **Output** To convert the Interval into other representations, see {@link Interval#toString}, {@link Interval#toLocaleString}, {@link Interval#toISO}, {@link Interval#toISODate}, {@link Interval#toISOTime}, {@link Interval#toFormat}, and {@link Interval#toDuration}.\n */\nexport default class Interval {\n /**\n * @private\n */\n constructor(config) {\n /**\n * @access private\n */\n this.s = config.start;\n /**\n * @access private\n */\n this.e = config.end;\n /**\n * @access private\n */\n this.invalid = config.invalid || null;\n /**\n * @access private\n */\n this.isLuxonInterval = true;\n }\n\n /**\n * Create an invalid Interval.\n * @param {string} reason - simple string of why this Interval is invalid. Should not contain parameters or anything else data-dependent\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {Interval}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the Interval is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidIntervalError(invalid);\n } else {\n return new Interval({ invalid });\n }\n }\n\n /**\n * Create an Interval from a start DateTime and an end DateTime. Inclusive of the start but not the end.\n * @param {DateTime|Date|Object} start\n * @param {DateTime|Date|Object} end\n * @return {Interval}\n */\n static fromDateTimes(start, end) {\n const builtStart = friendlyDateTime(start),\n builtEnd = friendlyDateTime(end);\n\n const validateError = validateStartEnd(builtStart, builtEnd);\n\n if (validateError == null) {\n return new Interval({\n start: builtStart,\n end: builtEnd,\n });\n } else {\n return validateError;\n }\n }\n\n /**\n * Create an Interval from a start DateTime and a Duration to extend to.\n * @param {DateTime|Date|Object} start\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static after(start, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(start);\n return Interval.fromDateTimes(dt, dt.plus(dur));\n }\n\n /**\n * Create an Interval from an end DateTime and a Duration to extend backwards to.\n * @param {DateTime|Date|Object} end\n * @param {Duration|Object|number} duration - the length of the Interval.\n * @return {Interval}\n */\n static before(end, duration) {\n const dur = Duration.fromDurationLike(duration),\n dt = friendlyDateTime(end);\n return Interval.fromDateTimes(dt.minus(dur), dt);\n }\n\n /**\n * Create an Interval from an ISO 8601 string.\n * Accepts `/`, `/`, and `/` formats.\n * @param {string} text - the ISO string to parse\n * @param {Object} [opts] - options to pass {@link DateTime#fromISO} and optionally {@link Duration#fromISO}\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {Interval}\n */\n static fromISO(text, opts) {\n const [s, e] = (text || \"\").split(\"/\", 2);\n if (s && e) {\n let start, startIsValid;\n try {\n start = DateTime.fromISO(s, opts);\n startIsValid = start.isValid;\n } catch (e) {\n startIsValid = false;\n }\n\n let end, endIsValid;\n try {\n end = DateTime.fromISO(e, opts);\n endIsValid = end.isValid;\n } catch (e) {\n endIsValid = false;\n }\n\n if (startIsValid && endIsValid) {\n return Interval.fromDateTimes(start, end);\n }\n\n if (startIsValid) {\n const dur = Duration.fromISO(e, opts);\n if (dur.isValid) {\n return Interval.after(start, dur);\n }\n } else if (endIsValid) {\n const dur = Duration.fromISO(s, opts);\n if (dur.isValid) {\n return Interval.before(end, dur);\n }\n }\n }\n return Interval.invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ISO 8601`);\n }\n\n /**\n * Check if an object is an Interval. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isInterval(o) {\n return (o && o.isLuxonInterval) || false;\n }\n\n /**\n * Returns the start of the Interval\n * @type {DateTime}\n */\n get start() {\n return this.isValid ? this.s : null;\n }\n\n /**\n * Returns the end of the Interval\n * @type {DateTime}\n */\n get end() {\n return this.isValid ? this.e : null;\n }\n\n /**\n * Returns whether this Interval's end is at least its start, meaning that the Interval isn't 'backwards'.\n * @type {boolean}\n */\n get isValid() {\n return this.invalidReason === null;\n }\n\n /**\n * Returns an error code if this Interval is invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this Interval became invalid, or null if the Interval is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Returns the length of the Interval in the specified unit.\n * @param {string} unit - the unit (such as 'hours' or 'days') to return the length in.\n * @return {number}\n */\n length(unit = \"milliseconds\") {\n return this.isValid ? this.toDuration(...[unit]).get(unit) : NaN;\n }\n\n /**\n * Returns the count of minutes, hours, days, months, or years included in the Interval, even in part.\n * Unlike {@link Interval#length} this counts sections of the calendar, not periods of time, e.g. specifying 'day'\n * asks 'what dates are included in this interval?', not 'how many days long is this interval?'\n * @param {string} [unit='milliseconds'] - the unit of time to count.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; this operation will always use the locale of the start DateTime\n * @return {number}\n */\n count(unit = \"milliseconds\", opts) {\n if (!this.isValid) return NaN;\n const start = this.start.startOf(unit, opts);\n let end;\n if (opts?.useLocaleWeeks) {\n end = this.end.reconfigure({ locale: start.locale });\n } else {\n end = this.end;\n }\n end = end.startOf(unit, opts);\n return Math.floor(end.diff(start, unit).get(unit)) + (end.valueOf() !== this.end.valueOf());\n }\n\n /**\n * Returns whether this Interval's start and end are both in the same unit of time\n * @param {string} unit - the unit of time to check sameness on\n * @return {boolean}\n */\n hasSame(unit) {\n return this.isValid ? this.isEmpty() || this.e.minus(1).hasSame(this.s, unit) : false;\n }\n\n /**\n * Return whether this Interval has the same start and end DateTimes.\n * @return {boolean}\n */\n isEmpty() {\n return this.s.valueOf() === this.e.valueOf();\n }\n\n /**\n * Return whether this Interval's start is after the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isAfter(dateTime) {\n if (!this.isValid) return false;\n return this.s > dateTime;\n }\n\n /**\n * Return whether this Interval's end is before the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n isBefore(dateTime) {\n if (!this.isValid) return false;\n return this.e <= dateTime;\n }\n\n /**\n * Return whether this Interval contains the specified DateTime.\n * @param {DateTime} dateTime\n * @return {boolean}\n */\n contains(dateTime) {\n if (!this.isValid) return false;\n return this.s <= dateTime && this.e > dateTime;\n }\n\n /**\n * \"Sets\" the start and/or end dates. Returns a newly-constructed Interval.\n * @param {Object} values - the values to set\n * @param {DateTime} values.start - the starting DateTime\n * @param {DateTime} values.end - the ending DateTime\n * @return {Interval}\n */\n set({ start, end } = {}) {\n if (!this.isValid) return this;\n return Interval.fromDateTimes(start || this.s, end || this.e);\n }\n\n /**\n * Split this Interval at each of the specified DateTimes\n * @param {...DateTime} dateTimes - the unit of time to count.\n * @return {Array}\n */\n splitAt(...dateTimes) {\n if (!this.isValid) return [];\n const sorted = dateTimes\n .map(friendlyDateTime)\n .filter((d) => this.contains(d))\n .sort((a, b) => a.toMillis() - b.toMillis()),\n results = [];\n let { s } = this,\n i = 0;\n\n while (s < this.e) {\n const added = sorted[i] || this.e,\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n i += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into smaller Intervals, each of the specified length.\n * Left over time is grouped into a smaller interval\n * @param {Duration|Object|number} duration - The length of each resulting interval.\n * @return {Array}\n */\n splitBy(duration) {\n const dur = Duration.fromDurationLike(duration);\n\n if (!this.isValid || !dur.isValid || dur.as(\"milliseconds\") === 0) {\n return [];\n }\n\n let { s } = this,\n idx = 1,\n next;\n\n const results = [];\n while (s < this.e) {\n const added = this.start.plus(dur.mapUnits((x) => x * idx));\n next = +added > +this.e ? this.e : added;\n results.push(Interval.fromDateTimes(s, next));\n s = next;\n idx += 1;\n }\n\n return results;\n }\n\n /**\n * Split this Interval into the specified number of smaller intervals.\n * @param {number} numberOfParts - The number of Intervals to divide the Interval into.\n * @return {Array}\n */\n divideEqually(numberOfParts) {\n if (!this.isValid) return [];\n return this.splitBy(this.length() / numberOfParts).slice(0, numberOfParts);\n }\n\n /**\n * Return whether this Interval overlaps with the specified Interval\n * @param {Interval} other\n * @return {boolean}\n */\n overlaps(other) {\n return this.e > other.s && this.s < other.e;\n }\n\n /**\n * Return whether this Interval's end is adjacent to the specified Interval's start.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsStart(other) {\n if (!this.isValid) return false;\n return +this.e === +other.s;\n }\n\n /**\n * Return whether this Interval's start is adjacent to the specified Interval's end.\n * @param {Interval} other\n * @return {boolean}\n */\n abutsEnd(other) {\n if (!this.isValid) return false;\n return +other.e === +this.s;\n }\n\n /**\n * Return whether this Interval engulfs the start and end of the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n engulfs(other) {\n if (!this.isValid) return false;\n return this.s <= other.s && this.e >= other.e;\n }\n\n /**\n * Return whether this Interval has the same start and end as the specified Interval.\n * @param {Interval} other\n * @return {boolean}\n */\n equals(other) {\n if (!this.isValid || !other.isValid) {\n return false;\n }\n\n return this.s.equals(other.s) && this.e.equals(other.e);\n }\n\n /**\n * Return an Interval representing the intersection of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the maximum start time and the minimum end time of the two Intervals.\n * Returns null if the intersection is empty, meaning, the intervals don't intersect.\n * @param {Interval} other\n * @return {Interval}\n */\n intersection(other) {\n if (!this.isValid) return this;\n const s = this.s > other.s ? this.s : other.s,\n e = this.e < other.e ? this.e : other.e;\n\n if (s >= e) {\n return null;\n } else {\n return Interval.fromDateTimes(s, e);\n }\n }\n\n /**\n * Return an Interval representing the union of this Interval and the specified Interval.\n * Specifically, the resulting Interval has the minimum start time and the maximum end time of the two Intervals.\n * @param {Interval} other\n * @return {Interval}\n */\n union(other) {\n if (!this.isValid) return this;\n const s = this.s < other.s ? this.s : other.s,\n e = this.e > other.e ? this.e : other.e;\n return Interval.fromDateTimes(s, e);\n }\n\n /**\n * Merge an array of Intervals into a equivalent minimal set of Intervals.\n * Combines overlapping and adjacent Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static merge(intervals) {\n const [found, final] = intervals\n .sort((a, b) => a.s - b.s)\n .reduce(\n ([sofar, current], item) => {\n if (!current) {\n return [sofar, item];\n } else if (current.overlaps(item) || current.abutsStart(item)) {\n return [sofar, current.union(item)];\n } else {\n return [sofar.concat([current]), item];\n }\n },\n [[], null]\n );\n if (final) {\n found.push(final);\n }\n return found;\n }\n\n /**\n * Return an array of Intervals representing the spans of time that only appear in one of the specified Intervals.\n * @param {Array} intervals\n * @return {Array}\n */\n static xor(intervals) {\n let start = null,\n currentCount = 0;\n const results = [],\n ends = intervals.map((i) => [\n { time: i.s, type: \"s\" },\n { time: i.e, type: \"e\" },\n ]),\n flattened = Array.prototype.concat(...ends),\n arr = flattened.sort((a, b) => a.time - b.time);\n\n for (const i of arr) {\n currentCount += i.type === \"s\" ? 1 : -1;\n\n if (currentCount === 1) {\n start = i.time;\n } else {\n if (start && +start !== +i.time) {\n results.push(Interval.fromDateTimes(start, i.time));\n }\n\n start = null;\n }\n }\n\n return Interval.merge(results);\n }\n\n /**\n * Return an Interval representing the span of time in this Interval that doesn't overlap with any of the specified Intervals.\n * @param {...Interval} intervals\n * @return {Array}\n */\n difference(...intervals) {\n return Interval.xor([this].concat(intervals))\n .map((i) => this.intersection(i))\n .filter((i) => i && !i.isEmpty());\n }\n\n /**\n * Returns a string representation of this Interval appropriate for debugging.\n * @return {string}\n */\n toString() {\n if (!this.isValid) return INVALID;\n return `[${this.s.toISO()} – ${this.e.toISO()})`;\n }\n\n /**\n * Returns a string representation of this Interval appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`;\n } else {\n return `Interval { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns a localized string representing this Interval. Accepts the same options as the\n * Intl.DateTimeFormat constructor and any presets defined by Luxon, such as\n * {@link DateTime.DATE_FULL} or {@link DateTime.TIME_SIMPLE}. The exact behavior of this method\n * is browser-specific, but in general it will return an appropriate representation of the\n * Interval in the assigned locale. Defaults to the system's locale if no locale has been\n * specified.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param {Object} [formatOpts=DateTime.DATE_SHORT] - Either a DateTime preset or\n * Intl.DateTimeFormat constructor options.\n * @param {Object} opts - Options to override the configuration of the start DateTime.\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(); //=> 11/7/2022 – 11/8/2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL); //=> November 7 – 8, 2022\n * @example Interval.fromISO('2022-11-07T09:00Z/2022-11-08T09:00Z').toLocaleString(DateTime.DATE_FULL, { locale: 'fr-FR' }); //=> 7–8 novembre 2022\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString(DateTime.TIME_SIMPLE); //=> 6:00 – 8:00 PM\n * @example Interval.fromISO('2022-11-07T17:00Z/2022-11-07T19:00Z').toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> Mon, Nov 07, 6:00 – 8:00 p\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.s.loc.clone(opts), formatOpts).formatInterval(this)\n : INVALID;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this Interval.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISO(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISO(opts)}/${this.e.toISO(opts)}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of date of this Interval.\n * The time components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @return {string}\n */\n toISODate() {\n if (!this.isValid) return INVALID;\n return `${this.s.toISODate()}/${this.e.toISODate()}`;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of time of this Interval.\n * The date components are ignored.\n * @see https://en.wikipedia.org/wiki/ISO_8601#Time_intervals\n * @param {Object} opts - The same options as {@link DateTime#toISO}\n * @return {string}\n */\n toISOTime(opts) {\n if (!this.isValid) return INVALID;\n return `${this.s.toISOTime(opts)}/${this.e.toISOTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this Interval formatted according to the specified format\n * string. **You may not want this.** See {@link Interval#toLocaleString} for a more flexible\n * formatting tool.\n * @param {string} dateFormat - The format string. This string formats the start and end time.\n * See {@link DateTime#toFormat} for details.\n * @param {Object} opts - Options.\n * @param {string} [opts.separator = ' – '] - A separator to place between the start and end\n * representations.\n * @return {string}\n */\n toFormat(dateFormat, { separator = \" – \" } = {}) {\n if (!this.isValid) return INVALID;\n return `${this.s.toFormat(dateFormat)}${separator}${this.e.toFormat(dateFormat)}`;\n }\n\n /**\n * Return a Duration representing the time spanned by this interval.\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example Interval.fromDateTimes(dt1, dt2).toDuration().toObject() //=> { milliseconds: 88489257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('days').toObject() //=> { days: 1.0241812152777778 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes']).toObject() //=> { hours: 24, minutes: 34.82095 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration(['hours', 'minutes', 'seconds']).toObject() //=> { hours: 24, minutes: 34, seconds: 49.257 }\n * @example Interval.fromDateTimes(dt1, dt2).toDuration('seconds').toObject() //=> { seconds: 88489.257 }\n * @return {Duration}\n */\n toDuration(unit, opts) {\n if (!this.isValid) {\n return Duration.invalid(this.invalidReason);\n }\n return this.e.diff(this.s, unit, opts);\n }\n\n /**\n * Run mapFn on the interval start and end, returning a new Interval from the resulting DateTimes\n * @param {function} mapFn\n * @return {Interval}\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.toUTC())\n * @example Interval.fromDateTimes(dt1, dt2).mapEndpoints(endpoint => endpoint.plus({ hours: 2 }))\n */\n mapEndpoints(mapFn) {\n return Interval.fromDateTimes(mapFn(this.s), mapFn(this.e));\n }\n}\n","const numberingSystems = {\n arab: \"[\\u0660-\\u0669]\",\n arabext: \"[\\u06F0-\\u06F9]\",\n bali: \"[\\u1B50-\\u1B59]\",\n beng: \"[\\u09E6-\\u09EF]\",\n deva: \"[\\u0966-\\u096F]\",\n fullwide: \"[\\uFF10-\\uFF19]\",\n gujr: \"[\\u0AE6-\\u0AEF]\",\n hanidec: \"[〇|一|二|三|四|五|六|七|八|九]\",\n khmr: \"[\\u17E0-\\u17E9]\",\n knda: \"[\\u0CE6-\\u0CEF]\",\n laoo: \"[\\u0ED0-\\u0ED9]\",\n limb: \"[\\u1946-\\u194F]\",\n mlym: \"[\\u0D66-\\u0D6F]\",\n mong: \"[\\u1810-\\u1819]\",\n mymr: \"[\\u1040-\\u1049]\",\n orya: \"[\\u0B66-\\u0B6F]\",\n tamldec: \"[\\u0BE6-\\u0BEF]\",\n telu: \"[\\u0C66-\\u0C6F]\",\n thai: \"[\\u0E50-\\u0E59]\",\n tibt: \"[\\u0F20-\\u0F29]\",\n latn: \"\\\\d\",\n};\n\nconst numberingSystemsUTF16 = {\n arab: [1632, 1641],\n arabext: [1776, 1785],\n bali: [6992, 7001],\n beng: [2534, 2543],\n deva: [2406, 2415],\n fullwide: [65296, 65303],\n gujr: [2790, 2799],\n khmr: [6112, 6121],\n knda: [3302, 3311],\n laoo: [3792, 3801],\n limb: [6470, 6479],\n mlym: [3430, 3439],\n mong: [6160, 6169],\n mymr: [4160, 4169],\n orya: [2918, 2927],\n tamldec: [3046, 3055],\n telu: [3174, 3183],\n thai: [3664, 3673],\n tibt: [3872, 3881],\n};\n\nconst hanidecChars = numberingSystems.hanidec.replace(/[\\[|\\]]/g, \"\").split(\"\");\n\nexport function parseDigits(str) {\n let value = parseInt(str, 10);\n if (isNaN(value)) {\n value = \"\";\n for (let i = 0; i < str.length; i++) {\n const code = str.charCodeAt(i);\n\n if (str[i].search(numberingSystems.hanidec) !== -1) {\n value += hanidecChars.indexOf(str[i]);\n } else {\n for (const key in numberingSystemsUTF16) {\n const [min, max] = numberingSystemsUTF16[key];\n if (code >= min && code <= max) {\n value += code - min;\n }\n }\n }\n }\n return parseInt(value, 10);\n } else {\n return value;\n }\n}\n\nexport function digitRegex({ numberingSystem }, append = \"\") {\n return new RegExp(`${numberingSystems[numberingSystem || \"latn\"]}${append}`);\n}\n","import { parseMillis, isUndefined, untruncateYear, signedOffset, hasOwnProperty } from \"./util.js\";\nimport Formatter from \"./formatter.js\";\nimport FixedOffsetZone from \"../zones/fixedOffsetZone.js\";\nimport IANAZone from \"../zones/IANAZone.js\";\nimport DateTime from \"../datetime.js\";\nimport { digitRegex, parseDigits } from \"./digits.js\";\nimport { ConflictingSpecificationError } from \"../errors.js\";\n\nconst MISSING_FTP = \"missing Intl.DateTimeFormat.formatToParts support\";\n\nfunction intUnit(regex, post = (i) => i) {\n return { regex, deser: ([s]) => post(parseDigits(s)) };\n}\n\nconst NBSP = String.fromCharCode(160);\nconst spaceOrNBSP = `[ ${NBSP}]`;\nconst spaceOrNBSPRegExp = new RegExp(spaceOrNBSP, \"g\");\n\nfunction fixListRegex(s) {\n // make dots optional and also make them literal\n // make space and non breakable space characters interchangeable\n return s.replace(/\\./g, \"\\\\.?\").replace(spaceOrNBSPRegExp, spaceOrNBSP);\n}\n\nfunction stripInsensitivities(s) {\n return s\n .replace(/\\./g, \"\") // ignore dots that were made optional\n .replace(spaceOrNBSPRegExp, \" \") // interchange space and nbsp\n .toLowerCase();\n}\n\nfunction oneOf(strings, startIndex) {\n if (strings === null) {\n return null;\n } else {\n return {\n regex: RegExp(strings.map(fixListRegex).join(\"|\")),\n deser: ([s]) =>\n strings.findIndex((i) => stripInsensitivities(s) === stripInsensitivities(i)) + startIndex,\n };\n }\n}\n\nfunction offset(regex, groups) {\n return { regex, deser: ([, h, m]) => signedOffset(h, m), groups };\n}\n\nfunction simple(regex) {\n return { regex, deser: ([s]) => s };\n}\n\nfunction escapeToken(value) {\n return value.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\");\n}\n\n/**\n * @param token\n * @param {Locale} loc\n */\nfunction unitForToken(token, loc) {\n const one = digitRegex(loc),\n two = digitRegex(loc, \"{2}\"),\n three = digitRegex(loc, \"{3}\"),\n four = digitRegex(loc, \"{4}\"),\n six = digitRegex(loc, \"{6}\"),\n oneOrTwo = digitRegex(loc, \"{1,2}\"),\n oneToThree = digitRegex(loc, \"{1,3}\"),\n oneToSix = digitRegex(loc, \"{1,6}\"),\n oneToNine = digitRegex(loc, \"{1,9}\"),\n twoToFour = digitRegex(loc, \"{2,4}\"),\n fourToSix = digitRegex(loc, \"{4,6}\"),\n literal = (t) => ({ regex: RegExp(escapeToken(t.val)), deser: ([s]) => s, literal: true }),\n unitate = (t) => {\n if (token.literal) {\n return literal(t);\n }\n switch (t.val) {\n // era\n case \"G\":\n return oneOf(loc.eras(\"short\"), 0);\n case \"GG\":\n return oneOf(loc.eras(\"long\"), 0);\n // years\n case \"y\":\n return intUnit(oneToSix);\n case \"yy\":\n return intUnit(twoToFour, untruncateYear);\n case \"yyyy\":\n return intUnit(four);\n case \"yyyyy\":\n return intUnit(fourToSix);\n case \"yyyyyy\":\n return intUnit(six);\n // months\n case \"M\":\n return intUnit(oneOrTwo);\n case \"MM\":\n return intUnit(two);\n case \"MMM\":\n return oneOf(loc.months(\"short\", true), 1);\n case \"MMMM\":\n return oneOf(loc.months(\"long\", true), 1);\n case \"L\":\n return intUnit(oneOrTwo);\n case \"LL\":\n return intUnit(two);\n case \"LLL\":\n return oneOf(loc.months(\"short\", false), 1);\n case \"LLLL\":\n return oneOf(loc.months(\"long\", false), 1);\n // dates\n case \"d\":\n return intUnit(oneOrTwo);\n case \"dd\":\n return intUnit(two);\n // ordinals\n case \"o\":\n return intUnit(oneToThree);\n case \"ooo\":\n return intUnit(three);\n // time\n case \"HH\":\n return intUnit(two);\n case \"H\":\n return intUnit(oneOrTwo);\n case \"hh\":\n return intUnit(two);\n case \"h\":\n return intUnit(oneOrTwo);\n case \"mm\":\n return intUnit(two);\n case \"m\":\n return intUnit(oneOrTwo);\n case \"q\":\n return intUnit(oneOrTwo);\n case \"qq\":\n return intUnit(two);\n case \"s\":\n return intUnit(oneOrTwo);\n case \"ss\":\n return intUnit(two);\n case \"S\":\n return intUnit(oneToThree);\n case \"SSS\":\n return intUnit(three);\n case \"u\":\n return simple(oneToNine);\n case \"uu\":\n return simple(oneOrTwo);\n case \"uuu\":\n return intUnit(one);\n // meridiem\n case \"a\":\n return oneOf(loc.meridiems(), 0);\n // weekYear (k)\n case \"kkkk\":\n return intUnit(four);\n case \"kk\":\n return intUnit(twoToFour, untruncateYear);\n // weekNumber (W)\n case \"W\":\n return intUnit(oneOrTwo);\n case \"WW\":\n return intUnit(two);\n // weekdays\n case \"E\":\n case \"c\":\n return intUnit(one);\n case \"EEE\":\n return oneOf(loc.weekdays(\"short\", false), 1);\n case \"EEEE\":\n return oneOf(loc.weekdays(\"long\", false), 1);\n case \"ccc\":\n return oneOf(loc.weekdays(\"short\", true), 1);\n case \"cccc\":\n return oneOf(loc.weekdays(\"long\", true), 1);\n // offset/zone\n case \"Z\":\n case \"ZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(?::(${two.source}))?`), 2);\n case \"ZZZ\":\n return offset(new RegExp(`([+-]${oneOrTwo.source})(${two.source})?`), 2);\n // we don't support ZZZZ (PST) or ZZZZZ (Pacific Standard Time) in parsing\n // because we don't have any way to figure out what they are\n case \"z\":\n return simple(/[a-z_+-/]{1,256}?/i);\n // this special-case \"token\" represents a place where a macro-token expanded into a white-space literal\n // in this case we accept any non-newline white-space\n case \" \":\n return simple(/[^\\S\\n\\r]/);\n default:\n return literal(t);\n }\n };\n\n const unit = unitate(token) || {\n invalidReason: MISSING_FTP,\n };\n\n unit.token = token;\n\n return unit;\n}\n\nconst partTypeStyleToTokenVal = {\n year: {\n \"2-digit\": \"yy\",\n numeric: \"yyyyy\",\n },\n month: {\n numeric: \"M\",\n \"2-digit\": \"MM\",\n short: \"MMM\",\n long: \"MMMM\",\n },\n day: {\n numeric: \"d\",\n \"2-digit\": \"dd\",\n },\n weekday: {\n short: \"EEE\",\n long: \"EEEE\",\n },\n dayperiod: \"a\",\n dayPeriod: \"a\",\n hour12: {\n numeric: \"h\",\n \"2-digit\": \"hh\",\n },\n hour24: {\n numeric: \"H\",\n \"2-digit\": \"HH\",\n },\n minute: {\n numeric: \"m\",\n \"2-digit\": \"mm\",\n },\n second: {\n numeric: \"s\",\n \"2-digit\": \"ss\",\n },\n timeZoneName: {\n long: \"ZZZZZ\",\n short: \"ZZZ\",\n },\n};\n\nfunction tokenForPart(part, formatOpts, resolvedOpts) {\n const { type, value } = part;\n\n if (type === \"literal\") {\n const isSpace = /^\\s+$/.test(value);\n return {\n literal: !isSpace,\n val: isSpace ? \" \" : value,\n };\n }\n\n const style = formatOpts[type];\n\n // The user might have explicitly specified hour12 or hourCycle\n // if so, respect their decision\n // if not, refer back to the resolvedOpts, which are based on the locale\n let actualType = type;\n if (type === \"hour\") {\n if (formatOpts.hour12 != null) {\n actualType = formatOpts.hour12 ? \"hour12\" : \"hour24\";\n } else if (formatOpts.hourCycle != null) {\n if (formatOpts.hourCycle === \"h11\" || formatOpts.hourCycle === \"h12\") {\n actualType = \"hour12\";\n } else {\n actualType = \"hour24\";\n }\n } else {\n // tokens only differentiate between 24 hours or not,\n // so we do not need to check hourCycle here, which is less supported anyways\n actualType = resolvedOpts.hour12 ? \"hour12\" : \"hour24\";\n }\n }\n let val = partTypeStyleToTokenVal[actualType];\n if (typeof val === \"object\") {\n val = val[style];\n }\n\n if (val) {\n return {\n literal: false,\n val,\n };\n }\n\n return undefined;\n}\n\nfunction buildRegex(units) {\n const re = units.map((u) => u.regex).reduce((f, r) => `${f}(${r.source})`, \"\");\n return [`^${re}$`, units];\n}\n\nfunction match(input, regex, handlers) {\n const matches = input.match(regex);\n\n if (matches) {\n const all = {};\n let matchIndex = 1;\n for (const i in handlers) {\n if (hasOwnProperty(handlers, i)) {\n const h = handlers[i],\n groups = h.groups ? h.groups + 1 : 1;\n if (!h.literal && h.token) {\n all[h.token.val[0]] = h.deser(matches.slice(matchIndex, matchIndex + groups));\n }\n matchIndex += groups;\n }\n }\n return [matches, all];\n } else {\n return [matches, {}];\n }\n}\n\nfunction dateTimeFromMatches(matches) {\n const toField = (token) => {\n switch (token) {\n case \"S\":\n return \"millisecond\";\n case \"s\":\n return \"second\";\n case \"m\":\n return \"minute\";\n case \"h\":\n case \"H\":\n return \"hour\";\n case \"d\":\n return \"day\";\n case \"o\":\n return \"ordinal\";\n case \"L\":\n case \"M\":\n return \"month\";\n case \"y\":\n return \"year\";\n case \"E\":\n case \"c\":\n return \"weekday\";\n case \"W\":\n return \"weekNumber\";\n case \"k\":\n return \"weekYear\";\n case \"q\":\n return \"quarter\";\n default:\n return null;\n }\n };\n\n let zone = null;\n let specificOffset;\n if (!isUndefined(matches.z)) {\n zone = IANAZone.create(matches.z);\n }\n\n if (!isUndefined(matches.Z)) {\n if (!zone) {\n zone = new FixedOffsetZone(matches.Z);\n }\n specificOffset = matches.Z;\n }\n\n if (!isUndefined(matches.q)) {\n matches.M = (matches.q - 1) * 3 + 1;\n }\n\n if (!isUndefined(matches.h)) {\n if (matches.h < 12 && matches.a === 1) {\n matches.h += 12;\n } else if (matches.h === 12 && matches.a === 0) {\n matches.h = 0;\n }\n }\n\n if (matches.G === 0 && matches.y) {\n matches.y = -matches.y;\n }\n\n if (!isUndefined(matches.u)) {\n matches.S = parseMillis(matches.u);\n }\n\n const vals = Object.keys(matches).reduce((r, k) => {\n const f = toField(k);\n if (f) {\n r[f] = matches[k];\n }\n\n return r;\n }, {});\n\n return [vals, zone, specificOffset];\n}\n\nlet dummyDateTimeCache = null;\n\nfunction getDummyDateTime() {\n if (!dummyDateTimeCache) {\n dummyDateTimeCache = DateTime.fromMillis(1555555555555);\n }\n\n return dummyDateTimeCache;\n}\n\nfunction maybeExpandMacroToken(token, locale) {\n if (token.literal) {\n return token;\n }\n\n const formatOpts = Formatter.macroTokenToFormatOpts(token.val);\n const tokens = formatOptsToTokens(formatOpts, locale);\n\n if (tokens == null || tokens.includes(undefined)) {\n return token;\n }\n\n return tokens;\n}\n\nexport function expandMacroTokens(tokens, locale) {\n return Array.prototype.concat(...tokens.map((t) => maybeExpandMacroToken(t, locale)));\n}\n\n/**\n * @private\n */\n\nexport function explainFromTokens(locale, input, format) {\n const tokens = expandMacroTokens(Formatter.parseFormat(format), locale),\n units = tokens.map((t) => unitForToken(t, locale)),\n disqualifyingUnit = units.find((t) => t.invalidReason);\n\n if (disqualifyingUnit) {\n return { input, tokens, invalidReason: disqualifyingUnit.invalidReason };\n } else {\n const [regexString, handlers] = buildRegex(units),\n regex = RegExp(regexString, \"i\"),\n [rawMatches, matches] = match(input, regex, handlers),\n [result, zone, specificOffset] = matches\n ? dateTimeFromMatches(matches)\n : [null, null, undefined];\n if (hasOwnProperty(matches, \"a\") && hasOwnProperty(matches, \"H\")) {\n throw new ConflictingSpecificationError(\n \"Can't include meridiem when specifying 24-hour format\"\n );\n }\n return { input, tokens, regex, rawMatches, matches, result, zone, specificOffset };\n }\n}\n\nexport function parseFromTokens(locale, input, format) {\n const { result, zone, specificOffset, invalidReason } = explainFromTokens(locale, input, format);\n return [result, zone, specificOffset, invalidReason];\n}\n\nexport function formatOptsToTokens(formatOpts, locale) {\n if (!formatOpts) {\n return null;\n }\n\n const formatter = Formatter.create(locale, formatOpts);\n const df = formatter.dtFormatter(getDummyDateTime());\n const parts = df.formatToParts();\n const resolvedOpts = df.resolvedOptions();\n return parts.map((p) => tokenForPart(p, formatOpts, resolvedOpts));\n}\n","import Duration from \"./duration.js\";\nimport Interval from \"./interval.js\";\nimport Settings from \"./settings.js\";\nimport Info from \"./info.js\";\nimport Formatter from \"./impl/formatter.js\";\nimport FixedOffsetZone from \"./zones/fixedOffsetZone.js\";\nimport Locale from \"./impl/locale.js\";\nimport {\n isUndefined,\n maybeArray,\n isDate,\n isNumber,\n bestBy,\n daysInMonth,\n daysInYear,\n isLeapYear,\n weeksInWeekYear,\n normalizeObject,\n roundTo,\n objToLocalTS,\n padStart,\n} from \"./impl/util.js\";\nimport { normalizeZone } from \"./impl/zoneUtil.js\";\nimport diff from \"./impl/diff.js\";\nimport { parseRFC2822Date, parseISODate, parseHTTPDate, parseSQL } from \"./impl/regexParser.js\";\nimport {\n parseFromTokens,\n explainFromTokens,\n formatOptsToTokens,\n expandMacroTokens,\n} from \"./impl/tokenParser.js\";\nimport {\n gregorianToWeek,\n weekToGregorian,\n gregorianToOrdinal,\n ordinalToGregorian,\n hasInvalidGregorianData,\n hasInvalidWeekData,\n hasInvalidOrdinalData,\n hasInvalidTimeData,\n usesLocalWeekValues,\n isoWeekdayToLocal,\n} from \"./impl/conversions.js\";\nimport * as Formats from \"./impl/formats.js\";\nimport {\n InvalidArgumentError,\n ConflictingSpecificationError,\n InvalidUnitError,\n InvalidDateTimeError,\n} from \"./errors.js\";\nimport Invalid from \"./impl/invalid.js\";\n\nconst INVALID = \"Invalid DateTime\";\nconst MAX_DATE = 8.64e15;\n\nfunction unsupportedZone(zone) {\n return new Invalid(\"unsupported zone\", `the zone \"${zone.name}\" is not supported`);\n}\n\n// we cache week data on the DT object and this intermediates the cache\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedWeekData(dt) {\n if (dt.weekData === null) {\n dt.weekData = gregorianToWeek(dt.c);\n }\n return dt.weekData;\n}\n\n/**\n * @param {DateTime} dt\n */\nfunction possiblyCachedLocalWeekData(dt) {\n if (dt.localWeekData === null) {\n dt.localWeekData = gregorianToWeek(\n dt.c,\n dt.loc.getMinDaysInFirstWeek(),\n dt.loc.getStartOfWeek()\n );\n }\n return dt.localWeekData;\n}\n\n// clone really means, \"make a new object with these modifications\". all \"setters\" really use this\n// to create a new object while only changing some of the properties\nfunction clone(inst, alts) {\n const current = {\n ts: inst.ts,\n zone: inst.zone,\n c: inst.c,\n o: inst.o,\n loc: inst.loc,\n invalid: inst.invalid,\n };\n return new DateTime({ ...current, ...alts, old: current });\n}\n\n// find the right offset a given local time. The o input is our guess, which determines which\n// offset we'll pick in ambiguous cases (e.g. there are two 3 AMs b/c Fallback DST)\nfunction fixOffset(localTS, o, tz) {\n // Our UTC time is just a guess because our offset is just a guess\n let utcGuess = localTS - o * 60 * 1000;\n\n // Test whether the zone matches the offset for this ts\n const o2 = tz.offset(utcGuess);\n\n // If so, offset didn't change and we're done\n if (o === o2) {\n return [utcGuess, o];\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= (o2 - o) * 60 * 1000;\n\n // If that gives us the local time we want, we're done\n const o3 = tz.offset(utcGuess);\n if (o2 === o3) {\n return [utcGuess, o2];\n }\n\n // If it's different, we're in a hole time. The offset has changed, but the we don't adjust the time\n return [localTS - Math.min(o2, o3) * 60 * 1000, Math.max(o2, o3)];\n}\n\n// convert an epoch timestamp into a calendar object with the given offset\nfunction tsToObj(ts, offset) {\n ts += offset * 60 * 1000;\n\n const d = new Date(ts);\n\n return {\n year: d.getUTCFullYear(),\n month: d.getUTCMonth() + 1,\n day: d.getUTCDate(),\n hour: d.getUTCHours(),\n minute: d.getUTCMinutes(),\n second: d.getUTCSeconds(),\n millisecond: d.getUTCMilliseconds(),\n };\n}\n\n// convert a calendar object to a epoch timestamp\nfunction objToTS(obj, offset, zone) {\n return fixOffset(objToLocalTS(obj), offset, zone);\n}\n\n// create a new DT instance by adding a duration, adjusting for DSTs\nfunction adjustTime(inst, dur) {\n const oPre = inst.o,\n year = inst.c.year + Math.trunc(dur.years),\n month = inst.c.month + Math.trunc(dur.months) + Math.trunc(dur.quarters) * 3,\n c = {\n ...inst.c,\n year,\n month,\n day:\n Math.min(inst.c.day, daysInMonth(year, month)) +\n Math.trunc(dur.days) +\n Math.trunc(dur.weeks) * 7,\n },\n millisToAdd = Duration.fromObject({\n years: dur.years - Math.trunc(dur.years),\n quarters: dur.quarters - Math.trunc(dur.quarters),\n months: dur.months - Math.trunc(dur.months),\n weeks: dur.weeks - Math.trunc(dur.weeks),\n days: dur.days - Math.trunc(dur.days),\n hours: dur.hours,\n minutes: dur.minutes,\n seconds: dur.seconds,\n milliseconds: dur.milliseconds,\n }).as(\"milliseconds\"),\n localTS = objToLocalTS(c);\n\n let [ts, o] = fixOffset(localTS, oPre, inst.zone);\n\n if (millisToAdd !== 0) {\n ts += millisToAdd;\n // that could have changed the offset by going over a DST, but we want to keep the ts the same\n o = inst.zone.offset(ts);\n }\n\n return { ts, o };\n}\n\n// helper useful in turning the results of parsing into real dates\n// by handling the zone options\nfunction parseDataToDateTime(parsed, parsedZone, opts, format, text, specificOffset) {\n const { setZone, zone } = opts;\n if ((parsed && Object.keys(parsed).length !== 0) || parsedZone) {\n const interpretationZone = parsedZone || zone,\n inst = DateTime.fromObject(parsed, {\n ...opts,\n zone: interpretationZone,\n specificOffset,\n });\n return setZone ? inst : inst.setZone(zone);\n } else {\n return DateTime.invalid(\n new Invalid(\"unparsable\", `the input \"${text}\" can't be parsed as ${format}`)\n );\n }\n}\n\n// if you want to output a technical format (e.g. RFC 2822), this helper\n// helps handle the details\nfunction toTechFormat(dt, format, allowZ = true) {\n return dt.isValid\n ? Formatter.create(Locale.create(\"en-US\"), {\n allowZ,\n forceSimple: true,\n }).formatDateTimeFromString(dt, format)\n : null;\n}\n\nfunction toISODate(o, extended) {\n const longFormat = o.c.year > 9999 || o.c.year < 0;\n let c = \"\";\n if (longFormat && o.c.year >= 0) c += \"+\";\n c += padStart(o.c.year, longFormat ? 6 : 4);\n\n if (extended) {\n c += \"-\";\n c += padStart(o.c.month);\n c += \"-\";\n c += padStart(o.c.day);\n } else {\n c += padStart(o.c.month);\n c += padStart(o.c.day);\n }\n return c;\n}\n\nfunction toISOTime(\n o,\n extended,\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n) {\n let c = padStart(o.c.hour);\n if (extended) {\n c += \":\";\n c += padStart(o.c.minute);\n if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\n c += \":\";\n }\n } else {\n c += padStart(o.c.minute);\n }\n\n if (o.c.millisecond !== 0 || o.c.second !== 0 || !suppressSeconds) {\n c += padStart(o.c.second);\n\n if (o.c.millisecond !== 0 || !suppressMilliseconds) {\n c += \".\";\n c += padStart(o.c.millisecond, 3);\n }\n }\n\n if (includeOffset) {\n if (o.isOffsetFixed && o.offset === 0 && !extendedZone) {\n c += \"Z\";\n } else if (o.o < 0) {\n c += \"-\";\n c += padStart(Math.trunc(-o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(-o.o % 60));\n } else {\n c += \"+\";\n c += padStart(Math.trunc(o.o / 60));\n c += \":\";\n c += padStart(Math.trunc(o.o % 60));\n }\n }\n\n if (extendedZone) {\n c += \"[\" + o.zone.ianaName + \"]\";\n }\n return c;\n}\n\n// defaults for unspecified units in the supported calendars\nconst defaultUnitValues = {\n month: 1,\n day: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultWeekUnitValues = {\n weekNumber: 1,\n weekday: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n },\n defaultOrdinalUnitValues = {\n ordinal: 1,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n };\n\n// Units in the supported calendars, sorted by bigness\nconst orderedUnits = [\"year\", \"month\", \"day\", \"hour\", \"minute\", \"second\", \"millisecond\"],\n orderedWeekUnits = [\n \"weekYear\",\n \"weekNumber\",\n \"weekday\",\n \"hour\",\n \"minute\",\n \"second\",\n \"millisecond\",\n ],\n orderedOrdinalUnits = [\"year\", \"ordinal\", \"hour\", \"minute\", \"second\", \"millisecond\"];\n\n// standardize case and plurality in units\nfunction normalizeUnit(unit) {\n const normalized = {\n year: \"year\",\n years: \"year\",\n month: \"month\",\n months: \"month\",\n day: \"day\",\n days: \"day\",\n hour: \"hour\",\n hours: \"hour\",\n minute: \"minute\",\n minutes: \"minute\",\n quarter: \"quarter\",\n quarters: \"quarter\",\n second: \"second\",\n seconds: \"second\",\n millisecond: \"millisecond\",\n milliseconds: \"millisecond\",\n weekday: \"weekday\",\n weekdays: \"weekday\",\n weeknumber: \"weekNumber\",\n weeksnumber: \"weekNumber\",\n weeknumbers: \"weekNumber\",\n weekyear: \"weekYear\",\n weekyears: \"weekYear\",\n ordinal: \"ordinal\",\n }[unit.toLowerCase()];\n\n if (!normalized) throw new InvalidUnitError(unit);\n\n return normalized;\n}\n\nfunction normalizeUnitWithLocalWeeks(unit) {\n switch (unit.toLowerCase()) {\n case \"localweekday\":\n case \"localweekdays\":\n return \"localWeekday\";\n case \"localweeknumber\":\n case \"localweeknumbers\":\n return \"localWeekNumber\";\n case \"localweekyear\":\n case \"localweekyears\":\n return \"localWeekYear\";\n default:\n return normalizeUnit(unit);\n }\n}\n\n// this is a dumbed down version of fromObject() that runs about 60% faster\n// but doesn't do any validation, makes a bunch of assumptions about what units\n// are present, and so on.\nfunction quickDT(obj, opts) {\n const zone = normalizeZone(opts.zone, Settings.defaultZone),\n loc = Locale.fromObject(opts),\n tsNow = Settings.now();\n\n let ts, o;\n\n // assume we have the higher-order units\n if (!isUndefined(obj.year)) {\n for (const u of orderedUnits) {\n if (isUndefined(obj[u])) {\n obj[u] = defaultUnitValues[u];\n }\n }\n\n const invalid = hasInvalidGregorianData(obj) || hasInvalidTimeData(obj);\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n const offsetProvis = zone.offset(tsNow);\n [ts, o] = objToTS(obj, offsetProvis, zone);\n } else {\n ts = tsNow;\n }\n\n return new DateTime({ ts, zone, loc, o });\n}\n\nfunction diffRelative(start, end, opts) {\n const round = isUndefined(opts.round) ? true : opts.round,\n format = (c, unit) => {\n c = roundTo(c, round || opts.calendary ? 0 : 2, true);\n const formatter = end.loc.clone(opts).relFormatter(opts);\n return formatter.format(c, unit);\n },\n differ = (unit) => {\n if (opts.calendary) {\n if (!end.hasSame(start, unit)) {\n return end.startOf(unit).diff(start.startOf(unit), unit).get(unit);\n } else return 0;\n } else {\n return end.diff(start, unit).get(unit);\n }\n };\n\n if (opts.unit) {\n return format(differ(opts.unit), opts.unit);\n }\n\n for (const unit of opts.units) {\n const count = differ(unit);\n if (Math.abs(count) >= 1) {\n return format(count, unit);\n }\n }\n return format(start > end ? -0 : 0, opts.units[opts.units.length - 1]);\n}\n\nfunction lastOpts(argList) {\n let opts = {},\n args;\n if (argList.length > 0 && typeof argList[argList.length - 1] === \"object\") {\n opts = argList[argList.length - 1];\n args = Array.from(argList).slice(0, argList.length - 1);\n } else {\n args = Array.from(argList);\n }\n return [opts, args];\n}\n\n/**\n * A DateTime is an immutable data structure representing a specific date and time and accompanying methods. It contains class and instance methods for creating, parsing, interrogating, transforming, and formatting them.\n *\n * A DateTime comprises of:\n * * A timestamp. Each DateTime instance refers to a specific millisecond of the Unix epoch.\n * * A time zone. Each instance is considered in the context of a specific zone (by default the local system's zone).\n * * Configuration properties that effect how output strings are formatted, such as `locale`, `numberingSystem`, and `outputCalendar`.\n *\n * Here is a brief overview of the most commonly used functionality it provides:\n *\n * * **Creation**: To create a DateTime from its components, use one of its factory class methods: {@link DateTime.local}, {@link DateTime.utc}, and (most flexibly) {@link DateTime.fromObject}. To create one from a standard string format, use {@link DateTime.fromISO}, {@link DateTime.fromHTTP}, and {@link DateTime.fromRFC2822}. To create one from a custom string format, use {@link DateTime.fromFormat}. To create one from a native JS date, use {@link DateTime.fromJSDate}.\n * * **Gregorian calendar and time**: To examine the Gregorian properties of a DateTime individually (i.e as opposed to collectively through {@link DateTime#toObject}), use the {@link DateTime#year}, {@link DateTime#month},\n * {@link DateTime#day}, {@link DateTime#hour}, {@link DateTime#minute}, {@link DateTime#second}, {@link DateTime#millisecond} accessors.\n * * **Week calendar**: For ISO week calendar attributes, see the {@link DateTime#weekYear}, {@link DateTime#weekNumber}, and {@link DateTime#weekday} accessors.\n * * **Configuration** See the {@link DateTime#locale} and {@link DateTime#numberingSystem} accessors.\n * * **Transformation**: To transform the DateTime into other DateTimes, use {@link DateTime#set}, {@link DateTime#reconfigure}, {@link DateTime#setZone}, {@link DateTime#setLocale}, {@link DateTime.plus}, {@link DateTime#minus}, {@link DateTime#endOf}, {@link DateTime#startOf}, {@link DateTime#toUTC}, and {@link DateTime#toLocal}.\n * * **Output**: To convert the DateTime to other representations, use the {@link DateTime#toRelative}, {@link DateTime#toRelativeCalendar}, {@link DateTime#toJSON}, {@link DateTime#toISO}, {@link DateTime#toHTTP}, {@link DateTime#toObject}, {@link DateTime#toRFC2822}, {@link DateTime#toString}, {@link DateTime#toLocaleString}, {@link DateTime#toFormat}, {@link DateTime#toMillis} and {@link DateTime#toJSDate}.\n *\n * There's plenty others documented below. In addition, for more information on subtler topics like internationalization, time zones, alternative calendars, validity, and so on, see the external documentation.\n */\nexport default class DateTime {\n /**\n * @access private\n */\n constructor(config) {\n const zone = config.zone || Settings.defaultZone;\n\n let invalid =\n config.invalid ||\n (Number.isNaN(config.ts) ? new Invalid(\"invalid input\") : null) ||\n (!zone.isValid ? unsupportedZone(zone) : null);\n /**\n * @access private\n */\n this.ts = isUndefined(config.ts) ? Settings.now() : config.ts;\n\n let c = null,\n o = null;\n if (!invalid) {\n const unchanged = config.old && config.old.ts === this.ts && config.old.zone.equals(zone);\n\n if (unchanged) {\n [c, o] = [config.old.c, config.old.o];\n } else {\n const ot = zone.offset(this.ts);\n c = tsToObj(this.ts, ot);\n invalid = Number.isNaN(c.year) ? new Invalid(\"invalid input\") : null;\n c = invalid ? null : c;\n o = invalid ? null : ot;\n }\n }\n\n /**\n * @access private\n */\n this._zone = zone;\n /**\n * @access private\n */\n this.loc = config.loc || Locale.create();\n /**\n * @access private\n */\n this.invalid = invalid;\n /**\n * @access private\n */\n this.weekData = null;\n /**\n * @access private\n */\n this.localWeekData = null;\n /**\n * @access private\n */\n this.c = c;\n /**\n * @access private\n */\n this.o = o;\n /**\n * @access private\n */\n this.isLuxonDateTime = true;\n }\n\n // CONSTRUCT\n\n /**\n * Create a DateTime for the current instant, in the system's time zone.\n *\n * Use Settings to override these default values if needed.\n * @example DateTime.now().toISO() //~> now in the ISO format\n * @return {DateTime}\n */\n static now() {\n return new DateTime({});\n }\n\n /**\n * Create a local DateTime\n * @param {number} [year] - The calendar year. If omitted (as in, call `local()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month, 1-indexed\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @example DateTime.local() //~> now\n * @example DateTime.local({ zone: \"America/New_York\" }) //~> now, in US east coast time\n * @example DateTime.local(2017) //~> 2017-01-01T00:00:00\n * @example DateTime.local(2017, 3) //~> 2017-03-01T00:00:00\n * @example DateTime.local(2017, 3, 12, { locale: \"fr\" }) //~> 2017-03-12T00:00:00, with a French locale\n * @example DateTime.local(2017, 3, 12, 5) //~> 2017-03-12T05:00:00\n * @example DateTime.local(2017, 3, 12, 5, { zone: \"utc\" }) //~> 2017-03-12T05:00:00, in UTC\n * @example DateTime.local(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00\n * @example DateTime.local(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10\n * @example DateTime.local(2017, 3, 12, 5, 45, 10, 765) //~> 2017-03-12T05:45:10.765\n * @return {DateTime}\n */\n static local() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime in UTC\n * @param {number} [year] - The calendar year. If omitted (as in, call `utc()` with no arguments), the current time will be used\n * @param {number} [month=1] - The month, 1-indexed\n * @param {number} [day=1] - The day of the month\n * @param {number} [hour=0] - The hour of the day, in 24-hour time\n * @param {number} [minute=0] - The minute of the hour, meaning a number between 0 and 59\n * @param {number} [second=0] - The second of the minute, meaning a number between 0 and 59\n * @param {number} [millisecond=0] - The millisecond of the second, meaning a number between 0 and 999\n * @param {Object} options - configuration options for the DateTime\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} [options.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [options.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.utc() //~> now\n * @example DateTime.utc(2017) //~> 2017-01-01T00:00:00Z\n * @example DateTime.utc(2017, 3) //~> 2017-03-01T00:00:00Z\n * @example DateTime.utc(2017, 3, 12) //~> 2017-03-12T00:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5) //~> 2017-03-12T05:00:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45) //~> 2017-03-12T05:45:00Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, { locale: \"fr\" }) //~> 2017-03-12T05:45:00Z with a French locale\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10) //~> 2017-03-12T05:45:10Z\n * @example DateTime.utc(2017, 3, 12, 5, 45, 10, 765, { locale: \"fr\" }) //~> 2017-03-12T05:45:10.765Z with a French locale\n * @return {DateTime}\n */\n static utc() {\n const [opts, args] = lastOpts(arguments),\n [year, month, day, hour, minute, second, millisecond] = args;\n\n opts.zone = FixedOffsetZone.utcInstance;\n return quickDT({ year, month, day, hour, minute, second, millisecond }, opts);\n }\n\n /**\n * Create a DateTime from a JavaScript Date object. Uses the default zone.\n * @param {Date} date - a JavaScript Date object\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @return {DateTime}\n */\n static fromJSDate(date, options = {}) {\n const ts = isDate(date) ? date.valueOf() : NaN;\n if (Number.isNaN(ts)) {\n return DateTime.invalid(\"invalid input\");\n }\n\n const zoneToUse = normalizeZone(options.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n return new DateTime({\n ts: ts,\n zone: zoneToUse,\n loc: Locale.fromObject(options),\n });\n }\n\n /**\n * Create a DateTime from a number of milliseconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} milliseconds - a number of milliseconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromMillis(milliseconds, options = {}) {\n if (!isNumber(milliseconds)) {\n throw new InvalidArgumentError(\n `fromMillis requires a numerical input, but received a ${typeof milliseconds} with value ${milliseconds}`\n );\n } else if (milliseconds < -MAX_DATE || milliseconds > MAX_DATE) {\n // this isn't perfect because because we can still end up out of range because of additional shifting, but it's a start\n return DateTime.invalid(\"Timestamp out of range\");\n } else {\n return new DateTime({\n ts: milliseconds,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a number of seconds since the epoch (meaning since 1 January 1970 00:00:00 UTC). Uses the default zone.\n * @param {number} seconds - a number of seconds since 1970 UTC\n * @param {Object} options - configuration options for the DateTime\n * @param {string|Zone} [options.zone='local'] - the zone to place the DateTime into\n * @param {string} [options.locale] - a locale to set on the resulting DateTime instance\n * @param {string} options.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} options.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromSeconds(seconds, options = {}) {\n if (!isNumber(seconds)) {\n throw new InvalidArgumentError(\"fromSeconds requires a numerical input\");\n } else {\n return new DateTime({\n ts: seconds * 1000,\n zone: normalizeZone(options.zone, Settings.defaultZone),\n loc: Locale.fromObject(options),\n });\n }\n }\n\n /**\n * Create a DateTime from a JavaScript object with keys like 'year' and 'hour' with reasonable defaults.\n * @param {Object} obj - the object to create the DateTime from\n * @param {number} obj.year - a year, such as 1987\n * @param {number} obj.month - a month, 1-12\n * @param {number} obj.day - a day of the month, 1-31, depending on the month\n * @param {number} obj.ordinal - day of the year, 1-365 or 366\n * @param {number} obj.weekYear - an ISO week year\n * @param {number} obj.weekNumber - an ISO week number, between 1 and 52 or 53, depending on the year\n * @param {number} obj.weekday - an ISO weekday, 1-7, where 1 is Monday and 7 is Sunday\n * @param {number} obj.localWeekYear - a week year, according to the locale\n * @param {number} obj.localWeekNumber - a week number, between 1 and 52 or 53, depending on the year, according to the locale\n * @param {number} obj.localWeekday - a weekday, 1-7, where 1 is the first and 7 is the last day of the week, according to the locale\n * @param {number} obj.hour - hour of the day, 0-23\n * @param {number} obj.minute - minute of the hour, 0-59\n * @param {number} obj.second - second of the minute, 0-59\n * @param {number} obj.millisecond - millisecond of the second, 0-999\n * @param {Object} opts - options for creating this DateTime\n * @param {string|Zone} [opts.zone='local'] - interpret the numbers in the context of a particular zone. Can take any value taken as the first argument to setZone()\n * @param {string} [opts.locale='system\\'s locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromObject({ year: 1982, month: 5, day: 25}).toISODate() //=> '1982-05-25'\n * @example DateTime.fromObject({ year: 1982 }).toISODate() //=> '1982-01-01'\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }) //~> today at 10:26:06\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'utc' }),\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'local' })\n * @example DateTime.fromObject({ hour: 10, minute: 26, second: 6 }, { zone: 'America/New_York' })\n * @example DateTime.fromObject({ weekYear: 2016, weekNumber: 2, weekday: 3 }).toISODate() //=> '2016-01-13'\n * @example DateTime.fromObject({ localWeekYear: 2022, localWeekNumber: 1, localWeekday: 1 }, { locale: \"en-US\" }).toISODate() //=> '2021-12-26'\n * @return {DateTime}\n */\n static fromObject(obj, opts = {}) {\n obj = obj || {};\n const zoneToUse = normalizeZone(opts.zone, Settings.defaultZone);\n if (!zoneToUse.isValid) {\n return DateTime.invalid(unsupportedZone(zoneToUse));\n }\n\n const loc = Locale.fromObject(opts);\n const normalized = normalizeObject(obj, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, loc);\n\n const tsNow = Settings.now(),\n offsetProvis = !isUndefined(opts.specificOffset)\n ? opts.specificOffset\n : zoneToUse.offset(tsNow),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n // cases:\n // just a weekday -> this week's instance of that weekday, no worries\n // (gregorian data or ordinal) + (weekYear or weekNumber) -> error\n // (gregorian month or day) + ordinal -> error\n // otherwise just use weeks or ordinals or gregorian, depending on what's specified\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n const useWeekData = definiteWeekDef || (normalized.weekday && !containsGregor);\n\n // configure ourselves to deal with gregorian dates or week stuff\n let units,\n defaultValues,\n objNow = tsToObj(tsNow, offsetProvis);\n if (useWeekData) {\n units = orderedWeekUnits;\n defaultValues = defaultWeekUnitValues;\n objNow = gregorianToWeek(objNow, minDaysInFirstWeek, startOfWeek);\n } else if (containsOrdinal) {\n units = orderedOrdinalUnits;\n defaultValues = defaultOrdinalUnitValues;\n objNow = gregorianToOrdinal(objNow);\n } else {\n units = orderedUnits;\n defaultValues = defaultUnitValues;\n }\n\n // set default values for missing stuff\n let foundFirst = false;\n for (const u of units) {\n const v = normalized[u];\n if (!isUndefined(v)) {\n foundFirst = true;\n } else if (foundFirst) {\n normalized[u] = defaultValues[u];\n } else {\n normalized[u] = objNow[u];\n }\n }\n\n // make sure the values we have are in range\n const higherOrderInvalid = useWeekData\n ? hasInvalidWeekData(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? hasInvalidOrdinalData(normalized)\n : hasInvalidGregorianData(normalized),\n invalid = higherOrderInvalid || hasInvalidTimeData(normalized);\n\n if (invalid) {\n return DateTime.invalid(invalid);\n }\n\n // compute the actual time\n const gregorian = useWeekData\n ? weekToGregorian(normalized, minDaysInFirstWeek, startOfWeek)\n : containsOrdinal\n ? ordinalToGregorian(normalized)\n : normalized,\n [tsFinal, offsetFinal] = objToTS(gregorian, offsetProvis, zoneToUse),\n inst = new DateTime({\n ts: tsFinal,\n zone: zoneToUse,\n o: offsetFinal,\n loc,\n });\n\n // gregorian data + weekday serves only to validate\n if (normalized.weekday && containsGregor && obj.weekday !== inst.weekday) {\n return DateTime.invalid(\n \"mismatched weekday\",\n `you can't specify both a weekday of ${normalized.weekday} and a date of ${inst.toISO()}`\n );\n }\n\n return inst;\n }\n\n /**\n * Create a DateTime from an ISO 8601 string\n * @param {string} text - the ISO string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the time to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} [opts.outputCalendar] - the output calendar to set on the resulting DateTime instance\n * @param {string} [opts.numberingSystem] - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromISO('2016-05-25T09:08:34.123')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00')\n * @example DateTime.fromISO('2016-05-25T09:08:34.123+06:00', {setZone: true})\n * @example DateTime.fromISO('2016-05-25T09:08:34.123', {zone: 'utc'})\n * @example DateTime.fromISO('2016-W05-4')\n * @return {DateTime}\n */\n static fromISO(text, opts = {}) {\n const [vals, parsedZone] = parseISODate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"ISO 8601\", text);\n }\n\n /**\n * Create a DateTime from an RFC 2822 string\n * @param {string} text - the RFC 2822 string\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since the offset is always specified in the string itself, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with a fixed-offset zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23:12 GMT')\n * @example DateTime.fromRFC2822('Fri, 25 Nov 2016 13:23:12 +0600')\n * @example DateTime.fromRFC2822('25 Nov 2016 13:23 Z')\n * @return {DateTime}\n */\n static fromRFC2822(text, opts = {}) {\n const [vals, parsedZone] = parseRFC2822Date(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"RFC 2822\", text);\n }\n\n /**\n * Create a DateTime from an HTTP header date\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @param {string} text - the HTTP header date\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - convert the time to this zone. Since HTTP dates are always in UTC, this has no effect on the interpretation of string, merely the zone the resulting DateTime is expressed in.\n * @param {boolean} [opts.setZone=false] - override the zone with the fixed-offset zone specified in the string. For HTTP dates, this is always UTC, so this option is equivalent to setting the `zone` option to 'utc', but this option is included for consistency with similar methods.\n * @param {string} [opts.locale='system's locale'] - a locale to set on the resulting DateTime instance\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @param {string} opts.numberingSystem - the numbering system to set on the resulting DateTime instance\n * @example DateTime.fromHTTP('Sun, 06 Nov 1994 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sunday, 06-Nov-94 08:49:37 GMT')\n * @example DateTime.fromHTTP('Sun Nov 6 08:49:37 1994')\n * @return {DateTime}\n */\n static fromHTTP(text, opts = {}) {\n const [vals, parsedZone] = parseHTTPDate(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"HTTP\", opts);\n }\n\n /**\n * Create a DateTime from an input string and format string.\n * Defaults to en-US if no locale has been specified, regardless of the system's locale. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/parsing?id=table-of-tokens).\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see the link below for the formats)\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @return {DateTime}\n */\n static fromFormat(text, fmt, opts = {}) {\n if (isUndefined(text) || isUndefined(fmt)) {\n throw new InvalidArgumentError(\"fromFormat requires an input string and a format\");\n }\n\n const { locale = null, numberingSystem = null } = opts,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n }),\n [vals, parsedZone, specificOffset, invalid] = parseFromTokens(localeToUse, text, fmt);\n if (invalid) {\n return DateTime.invalid(invalid);\n } else {\n return parseDataToDateTime(vals, parsedZone, opts, `format ${fmt}`, text, specificOffset);\n }\n }\n\n /**\n * @deprecated use fromFormat instead\n */\n static fromString(text, fmt, opts = {}) {\n return DateTime.fromFormat(text, fmt, opts);\n }\n\n /**\n * Create a DateTime from a SQL date, time, or datetime\n * Defaults to en-US if no locale has been specified, regardless of the system's locale\n * @param {string} text - the string to parse\n * @param {Object} opts - options to affect the creation\n * @param {string|Zone} [opts.zone='local'] - use this zone if no offset is specified in the input string itself. Will also convert the DateTime to this zone\n * @param {boolean} [opts.setZone=false] - override the zone with a zone specified in the string itself, if it specifies one\n * @param {string} [opts.locale='en-US'] - a locale string to use when parsing. Will also set the DateTime to this locale\n * @param {string} opts.numberingSystem - the numbering system to use when parsing. Will also set the resulting DateTime to this numbering system\n * @param {string} opts.outputCalendar - the output calendar to set on the resulting DateTime instance\n * @example DateTime.fromSQL('2017-05-15')\n * @example DateTime.fromSQL('2017-05-15 09:12:34')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342+06:00')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles')\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342 America/Los_Angeles', { setZone: true })\n * @example DateTime.fromSQL('2017-05-15 09:12:34.342', { zone: 'America/Los_Angeles' })\n * @example DateTime.fromSQL('09:12:34.342')\n * @return {DateTime}\n */\n static fromSQL(text, opts = {}) {\n const [vals, parsedZone] = parseSQL(text);\n return parseDataToDateTime(vals, parsedZone, opts, \"SQL\", text);\n }\n\n /**\n * Create an invalid DateTime.\n * @param {string} reason - simple string of why this DateTime is invalid. Should not contain parameters or anything else data-dependent.\n * @param {string} [explanation=null] - longer explanation, may include parameters and other useful debugging information\n * @return {DateTime}\n */\n static invalid(reason, explanation = null) {\n if (!reason) {\n throw new InvalidArgumentError(\"need to specify a reason the DateTime is invalid\");\n }\n\n const invalid = reason instanceof Invalid ? reason : new Invalid(reason, explanation);\n\n if (Settings.throwOnInvalid) {\n throw new InvalidDateTimeError(invalid);\n } else {\n return new DateTime({ invalid });\n }\n }\n\n /**\n * Check if an object is an instance of DateTime. Works across context boundaries\n * @param {object} o\n * @return {boolean}\n */\n static isDateTime(o) {\n return (o && o.isLuxonDateTime) || false;\n }\n\n /**\n * Produce the format string for a set of options\n * @param formatOpts\n * @param localeOpts\n * @returns {string}\n */\n static parseFormatForOpts(formatOpts, localeOpts = {}) {\n const tokenList = formatOptsToTokens(formatOpts, Locale.fromObject(localeOpts));\n return !tokenList ? null : tokenList.map((t) => (t ? t.val : null)).join(\"\");\n }\n\n /**\n * Produce the the fully expanded format token for the locale\n * Does NOT quote characters, so quoted tokens will not round trip correctly\n * @param fmt\n * @param localeOpts\n * @returns {string}\n */\n static expandFormat(fmt, localeOpts = {}) {\n const expanded = expandMacroTokens(Formatter.parseFormat(fmt), Locale.fromObject(localeOpts));\n return expanded.map((t) => t.val).join(\"\");\n }\n\n // INFO\n\n /**\n * Get the value of unit.\n * @param {string} unit - a unit such as 'minute' or 'day'\n * @example DateTime.local(2017, 7, 4).get('month'); //=> 7\n * @example DateTime.local(2017, 7, 4).get('day'); //=> 4\n * @return {number}\n */\n get(unit) {\n return this[unit];\n }\n\n /**\n * Returns whether the DateTime is valid. Invalid DateTimes occur when:\n * * The DateTime was created from invalid calendar information, such as the 13th month or February 30\n * * The DateTime was created by an operation on another invalid date\n * @type {boolean}\n */\n get isValid() {\n return this.invalid === null;\n }\n\n /**\n * Returns an error code if this DateTime is invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidReason() {\n return this.invalid ? this.invalid.reason : null;\n }\n\n /**\n * Returns an explanation of why this DateTime became invalid, or null if the DateTime is valid\n * @type {string}\n */\n get invalidExplanation() {\n return this.invalid ? this.invalid.explanation : null;\n }\n\n /**\n * Get the locale of a DateTime, such 'en-GB'. The locale is used when formatting the DateTime\n *\n * @type {string}\n */\n get locale() {\n return this.isValid ? this.loc.locale : null;\n }\n\n /**\n * Get the numbering system of a DateTime, such 'beng'. The numbering system is used when formatting the DateTime\n *\n * @type {string}\n */\n get numberingSystem() {\n return this.isValid ? this.loc.numberingSystem : null;\n }\n\n /**\n * Get the output calendar of a DateTime, such 'islamic'. The output calendar is used when formatting the DateTime\n *\n * @type {string}\n */\n get outputCalendar() {\n return this.isValid ? this.loc.outputCalendar : null;\n }\n\n /**\n * Get the time zone associated with this DateTime.\n * @type {Zone}\n */\n get zone() {\n return this._zone;\n }\n\n /**\n * Get the name of the time zone.\n * @type {string}\n */\n get zoneName() {\n return this.isValid ? this.zone.name : null;\n }\n\n /**\n * Get the year\n * @example DateTime.local(2017, 5, 25).year //=> 2017\n * @type {number}\n */\n get year() {\n return this.isValid ? this.c.year : NaN;\n }\n\n /**\n * Get the quarter\n * @example DateTime.local(2017, 5, 25).quarter //=> 2\n * @type {number}\n */\n get quarter() {\n return this.isValid ? Math.ceil(this.c.month / 3) : NaN;\n }\n\n /**\n * Get the month (1-12).\n * @example DateTime.local(2017, 5, 25).month //=> 5\n * @type {number}\n */\n get month() {\n return this.isValid ? this.c.month : NaN;\n }\n\n /**\n * Get the day of the month (1-30ish).\n * @example DateTime.local(2017, 5, 25).day //=> 25\n * @type {number}\n */\n get day() {\n return this.isValid ? this.c.day : NaN;\n }\n\n /**\n * Get the hour of the day (0-23).\n * @example DateTime.local(2017, 5, 25, 9).hour //=> 9\n * @type {number}\n */\n get hour() {\n return this.isValid ? this.c.hour : NaN;\n }\n\n /**\n * Get the minute of the hour (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30).minute //=> 30\n * @type {number}\n */\n get minute() {\n return this.isValid ? this.c.minute : NaN;\n }\n\n /**\n * Get the second of the minute (0-59).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52).second //=> 52\n * @type {number}\n */\n get second() {\n return this.isValid ? this.c.second : NaN;\n }\n\n /**\n * Get the millisecond of the second (0-999).\n * @example DateTime.local(2017, 5, 25, 9, 30, 52, 654).millisecond //=> 654\n * @type {number}\n */\n get millisecond() {\n return this.isValid ? this.c.millisecond : NaN;\n }\n\n /**\n * Get the week year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 12, 31).weekYear //=> 2015\n * @type {number}\n */\n get weekYear() {\n return this.isValid ? possiblyCachedWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the week number of the week year (1-52ish).\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2017, 5, 25).weekNumber //=> 21\n * @type {number}\n */\n get weekNumber() {\n return this.isValid ? possiblyCachedWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the day of the week.\n * 1 is Monday and 7 is Sunday\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2014, 11, 31).weekday //=> 4\n * @type {number}\n */\n get weekday() {\n return this.isValid ? possiblyCachedWeekData(this).weekday : NaN;\n }\n\n /**\n * Returns true if this date is on a weekend according to the locale, false otherwise\n * @returns {boolean}\n */\n get isWeekend() {\n return this.isValid && this.loc.getWeekendDays().includes(this.weekday);\n }\n\n /**\n * Get the day of the week according to the locale.\n * 1 is the first day of the week and 7 is the last day of the week.\n * If the locale assigns Sunday as the first day of the week, then a date which is a Sunday will return 1,\n * @returns {number}\n */\n get localWeekday() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekday : NaN;\n }\n\n /**\n * Get the week number of the week year according to the locale. Different locales assign week numbers differently,\n * because the week can start on different days of the week (see localWeekday) and because a different number of days\n * is required for a week to count as the first week of a year.\n * @returns {number}\n */\n get localWeekNumber() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekNumber : NaN;\n }\n\n /**\n * Get the week year according to the locale. Different locales assign week numbers (and therefor week years)\n * differently, see localWeekNumber.\n * @returns {number}\n */\n get localWeekYear() {\n return this.isValid ? possiblyCachedLocalWeekData(this).weekYear : NaN;\n }\n\n /**\n * Get the ordinal (meaning the day of the year)\n * @example DateTime.local(2017, 5, 25).ordinal //=> 145\n * @type {number|DateTime}\n */\n get ordinal() {\n return this.isValid ? gregorianToOrdinal(this.c).ordinal : NaN;\n }\n\n /**\n * Get the human readable short month name, such as 'Oct'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthShort //=> Oct\n * @type {string}\n */\n get monthShort() {\n return this.isValid ? Info.months(\"short\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable long month name, such as 'October'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).monthLong //=> October\n * @type {string}\n */\n get monthLong() {\n return this.isValid ? Info.months(\"long\", { locObj: this.loc })[this.month - 1] : null;\n }\n\n /**\n * Get the human readable short weekday, such as 'Mon'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayShort //=> Mon\n * @type {string}\n */\n get weekdayShort() {\n return this.isValid ? Info.weekdays(\"short\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the human readable long weekday, such as 'Monday'.\n * Defaults to the system's locale if no locale has been specified\n * @example DateTime.local(2017, 10, 30).weekdayLong //=> Monday\n * @type {string}\n */\n get weekdayLong() {\n return this.isValid ? Info.weekdays(\"long\", { locObj: this.loc })[this.weekday - 1] : null;\n }\n\n /**\n * Get the UTC offset of this DateTime in minutes\n * @example DateTime.now().offset //=> -240\n * @example DateTime.utc().offset //=> 0\n * @type {number}\n */\n get offset() {\n return this.isValid ? +this.o : NaN;\n }\n\n /**\n * Get the short human name for the zone's current offset, for example \"EST\" or \"EDT\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameShort() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"short\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get the long human name for the zone's current offset, for example \"Eastern Standard Time\" or \"Eastern Daylight Time\".\n * Defaults to the system's locale if no locale has been specified\n * @type {string}\n */\n get offsetNameLong() {\n if (this.isValid) {\n return this.zone.offsetName(this.ts, {\n format: \"long\",\n locale: this.locale,\n });\n } else {\n return null;\n }\n }\n\n /**\n * Get whether this zone's offset ever changes, as in a DST.\n * @type {boolean}\n */\n get isOffsetFixed() {\n return this.isValid ? this.zone.isUniversal : null;\n }\n\n /**\n * Get whether the DateTime is in a DST.\n * @type {boolean}\n */\n get isInDST() {\n if (this.isOffsetFixed) {\n return false;\n } else {\n return (\n this.offset > this.set({ month: 1, day: 1 }).offset ||\n this.offset > this.set({ month: 5 }).offset\n );\n }\n }\n\n /**\n * Get those DateTimes which have the same local time as this DateTime, but a different offset from UTC\n * in this DateTime's zone. During DST changes local time can be ambiguous, for example\n * `2023-10-29T02:30:00` in `Europe/Berlin` can have offset `+01:00` or `+02:00`.\n * This method will return both possible DateTimes if this DateTime's local time is ambiguous.\n * @returns {DateTime[]}\n */\n getPossibleOffsets() {\n if (!this.isValid || this.isOffsetFixed) {\n return [this];\n }\n const dayMs = 86400000;\n const minuteMs = 60000;\n const localTS = objToLocalTS(this.c);\n const oEarlier = this.zone.offset(localTS - dayMs);\n const oLater = this.zone.offset(localTS + dayMs);\n\n const o1 = this.zone.offset(localTS - oEarlier * minuteMs);\n const o2 = this.zone.offset(localTS - oLater * minuteMs);\n if (o1 === o2) {\n return [this];\n }\n const ts1 = localTS - o1 * minuteMs;\n const ts2 = localTS - o2 * minuteMs;\n const c1 = tsToObj(ts1, o1);\n const c2 = tsToObj(ts2, o2);\n if (\n c1.hour === c2.hour &&\n c1.minute === c2.minute &&\n c1.second === c2.second &&\n c1.millisecond === c2.millisecond\n ) {\n return [clone(this, { ts: ts1 }), clone(this, { ts: ts2 })];\n }\n return [this];\n }\n\n /**\n * Returns true if this DateTime is in a leap year, false otherwise\n * @example DateTime.local(2016).isInLeapYear //=> true\n * @example DateTime.local(2013).isInLeapYear //=> false\n * @type {boolean}\n */\n get isInLeapYear() {\n return isLeapYear(this.year);\n }\n\n /**\n * Returns the number of days in this DateTime's month\n * @example DateTime.local(2016, 2).daysInMonth //=> 29\n * @example DateTime.local(2016, 3).daysInMonth //=> 31\n * @type {number}\n */\n get daysInMonth() {\n return daysInMonth(this.year, this.month);\n }\n\n /**\n * Returns the number of days in this DateTime's year\n * @example DateTime.local(2016).daysInYear //=> 366\n * @example DateTime.local(2013).daysInYear //=> 365\n * @type {number}\n */\n get daysInYear() {\n return this.isValid ? daysInYear(this.year) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's year\n * @see https://en.wikipedia.org/wiki/ISO_week_date\n * @example DateTime.local(2004).weeksInWeekYear //=> 53\n * @example DateTime.local(2013).weeksInWeekYear //=> 52\n * @type {number}\n */\n get weeksInWeekYear() {\n return this.isValid ? weeksInWeekYear(this.weekYear) : NaN;\n }\n\n /**\n * Returns the number of weeks in this DateTime's local week year\n * @example DateTime.local(2020, 6, {locale: 'en-US'}).weeksInLocalWeekYear //=> 52\n * @example DateTime.local(2020, 6, {locale: 'de-DE'}).weeksInLocalWeekYear //=> 53\n * @type {number}\n */\n get weeksInLocalWeekYear() {\n return this.isValid\n ? weeksInWeekYear(\n this.localWeekYear,\n this.loc.getMinDaysInFirstWeek(),\n this.loc.getStartOfWeek()\n )\n : NaN;\n }\n\n /**\n * Returns the resolved Intl options for this DateTime.\n * This is useful in understanding the behavior of formatting methods\n * @param {Object} opts - the same options as toLocaleString\n * @return {Object}\n */\n resolvedLocaleOptions(opts = {}) {\n const { locale, numberingSystem, calendar } = Formatter.create(\n this.loc.clone(opts),\n opts\n ).resolvedOptions(this);\n return { locale, numberingSystem, outputCalendar: calendar };\n }\n\n // TRANSFORM\n\n /**\n * \"Set\" the DateTime's zone to UTC. Returns a newly-constructed DateTime.\n *\n * Equivalent to {@link DateTime#setZone}('utc')\n * @param {number} [offset=0] - optionally, an offset from UTC in minutes\n * @param {Object} [opts={}] - options to pass to `setZone()`\n * @return {DateTime}\n */\n toUTC(offset = 0, opts = {}) {\n return this.setZone(FixedOffsetZone.instance(offset), opts);\n }\n\n /**\n * \"Set\" the DateTime's zone to the host's local zone. Returns a newly-constructed DateTime.\n *\n * Equivalent to `setZone('local')`\n * @return {DateTime}\n */\n toLocal() {\n return this.setZone(Settings.defaultZone);\n }\n\n /**\n * \"Set\" the DateTime's zone to specified zone. Returns a newly-constructed DateTime.\n *\n * By default, the setter keeps the underlying time the same (as in, the same timestamp), but the new instance will report different local times and consider DSTs when making computations, as with {@link DateTime#plus}. You may wish to use {@link DateTime#toLocal} and {@link DateTime#toUTC} which provide simple convenience wrappers for commonly used zones.\n * @param {string|Zone} [zone='local'] - a zone identifier. As a string, that can be any IANA zone supported by the host environment, or a fixed-offset name of the form 'UTC+3', or the strings 'local' or 'utc'. You may also supply an instance of a {@link DateTime#Zone} class.\n * @param {Object} opts - options\n * @param {boolean} [opts.keepLocalTime=false] - If true, adjust the underlying time so that the local time stays the same, but in the target zone. You should rarely need this.\n * @return {DateTime}\n */\n setZone(zone, { keepLocalTime = false, keepCalendarTime = false } = {}) {\n zone = normalizeZone(zone, Settings.defaultZone);\n if (zone.equals(this.zone)) {\n return this;\n } else if (!zone.isValid) {\n return DateTime.invalid(unsupportedZone(zone));\n } else {\n let newTS = this.ts;\n if (keepLocalTime || keepCalendarTime) {\n const offsetGuess = zone.offset(this.ts);\n const asObj = this.toObject();\n [newTS] = objToTS(asObj, offsetGuess, zone);\n }\n return clone(this, { ts: newTS, zone });\n }\n }\n\n /**\n * \"Set\" the locale, numberingSystem, or outputCalendar. Returns a newly-constructed DateTime.\n * @param {Object} properties - the properties to set\n * @example DateTime.local(2017, 5, 25).reconfigure({ locale: 'en-GB' })\n * @return {DateTime}\n */\n reconfigure({ locale, numberingSystem, outputCalendar } = {}) {\n const loc = this.loc.clone({ locale, numberingSystem, outputCalendar });\n return clone(this, { loc });\n }\n\n /**\n * \"Set\" the locale. Returns a newly-constructed DateTime.\n * Just a convenient alias for reconfigure({ locale })\n * @example DateTime.local(2017, 5, 25).setLocale('en-GB')\n * @return {DateTime}\n */\n setLocale(locale) {\n return this.reconfigure({ locale });\n }\n\n /**\n * \"Set\" the values of specified units. Returns a newly-constructed DateTime.\n * You can only set units with this method; for \"setting\" metadata, see {@link DateTime#reconfigure} and {@link DateTime#setZone}.\n *\n * This method also supports setting locale-based week units, i.e. `localWeekday`, `localWeekNumber` and `localWeekYear`.\n * They cannot be mixed with ISO-week units like `weekday`.\n * @param {Object} values - a mapping of units to numbers\n * @example dt.set({ year: 2017 })\n * @example dt.set({ hour: 8, minute: 30 })\n * @example dt.set({ weekday: 5 })\n * @example dt.set({ year: 2005, ordinal: 234 })\n * @return {DateTime}\n */\n set(values) {\n if (!this.isValid) return this;\n\n const normalized = normalizeObject(values, normalizeUnitWithLocalWeeks);\n const { minDaysInFirstWeek, startOfWeek } = usesLocalWeekValues(normalized, this.loc);\n\n const settingWeekStuff =\n !isUndefined(normalized.weekYear) ||\n !isUndefined(normalized.weekNumber) ||\n !isUndefined(normalized.weekday),\n containsOrdinal = !isUndefined(normalized.ordinal),\n containsGregorYear = !isUndefined(normalized.year),\n containsGregorMD = !isUndefined(normalized.month) || !isUndefined(normalized.day),\n containsGregor = containsGregorYear || containsGregorMD,\n definiteWeekDef = normalized.weekYear || normalized.weekNumber;\n\n if ((containsGregor || containsOrdinal) && definiteWeekDef) {\n throw new ConflictingSpecificationError(\n \"Can't mix weekYear/weekNumber units with year/month/day or ordinals\"\n );\n }\n\n if (containsGregorMD && containsOrdinal) {\n throw new ConflictingSpecificationError(\"Can't mix ordinal dates with month/day\");\n }\n\n let mixed;\n if (settingWeekStuff) {\n mixed = weekToGregorian(\n { ...gregorianToWeek(this.c, minDaysInFirstWeek, startOfWeek), ...normalized },\n minDaysInFirstWeek,\n startOfWeek\n );\n } else if (!isUndefined(normalized.ordinal)) {\n mixed = ordinalToGregorian({ ...gregorianToOrdinal(this.c), ...normalized });\n } else {\n mixed = { ...this.toObject(), ...normalized };\n\n // if we didn't set the day but we ended up on an overflow date,\n // use the last day of the right month\n if (isUndefined(normalized.day)) {\n mixed.day = Math.min(daysInMonth(mixed.year, mixed.month), mixed.day);\n }\n }\n\n const [ts, o] = objToTS(mixed, this.o, this.zone);\n return clone(this, { ts, o });\n }\n\n /**\n * Add a period of time to this DateTime and return the resulting DateTime\n *\n * Adding hours, minutes, seconds, or milliseconds increases the timestamp by the right number of milliseconds. Adding days, months, or years shifts the calendar, accounting for DSTs and leap years along the way. Thus, `dt.plus({ hours: 24 })` may result in a different time than `dt.plus({ days: 1 })` if there's a DST shift in between.\n * @param {Duration|Object|number} duration - The amount to add. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n * @example DateTime.now().plus(123) //~> in 123 milliseconds\n * @example DateTime.now().plus({ minutes: 15 }) //~> in 15 minutes\n * @example DateTime.now().plus({ days: 1 }) //~> this time tomorrow\n * @example DateTime.now().plus({ days: -1 }) //~> this time yesterday\n * @example DateTime.now().plus({ hours: 3, minutes: 13 }) //~> in 3 hr, 13 min\n * @example DateTime.now().plus(Duration.fromObject({ hours: 3, minutes: 13 })) //~> in 3 hr, 13 min\n * @return {DateTime}\n */\n plus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration);\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * Subtract a period of time to this DateTime and return the resulting DateTime\n * See {@link DateTime#plus}\n * @param {Duration|Object|number} duration - The amount to subtract. Either a Luxon Duration, a number of milliseconds, the object argument to Duration.fromObject()\n @return {DateTime}\n */\n minus(duration) {\n if (!this.isValid) return this;\n const dur = Duration.fromDurationLike(duration).negate();\n return clone(this, adjustTime(this, dur));\n }\n\n /**\n * \"Set\" this DateTime to the beginning of a unit of time.\n * @param {string} unit - The unit to go to the beginning of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).startOf('month').toISODate(); //=> '2014-03-01'\n * @example DateTime.local(2014, 3, 3).startOf('year').toISODate(); //=> '2014-01-01'\n * @example DateTime.local(2014, 3, 3).startOf('week').toISODate(); //=> '2014-03-03', weeks always start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('day').toISOTime(); //=> '00:00.000-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).startOf('hour').toISOTime(); //=> '05:00:00.000-05:00'\n * @return {DateTime}\n */\n startOf(unit, { useLocaleWeeks = false } = {}) {\n if (!this.isValid) return this;\n\n const o = {},\n normalizedUnit = Duration.normalizeUnit(unit);\n switch (normalizedUnit) {\n case \"years\":\n o.month = 1;\n // falls through\n case \"quarters\":\n case \"months\":\n o.day = 1;\n // falls through\n case \"weeks\":\n case \"days\":\n o.hour = 0;\n // falls through\n case \"hours\":\n o.minute = 0;\n // falls through\n case \"minutes\":\n o.second = 0;\n // falls through\n case \"seconds\":\n o.millisecond = 0;\n break;\n case \"milliseconds\":\n break;\n // no default, invalid units throw in normalizeUnit()\n }\n\n if (normalizedUnit === \"weeks\") {\n if (useLocaleWeeks) {\n const startOfWeek = this.loc.getStartOfWeek();\n const { weekday } = this;\n if (weekday < startOfWeek) {\n o.weekNumber = this.weekNumber - 1;\n }\n o.weekday = startOfWeek;\n } else {\n o.weekday = 1;\n }\n }\n\n if (normalizedUnit === \"quarters\") {\n const q = Math.ceil(this.month / 3);\n o.month = (q - 1) * 3 + 1;\n }\n\n return this.set(o);\n }\n\n /**\n * \"Set\" this DateTime to the end (meaning the last millisecond) of a unit of time\n * @param {string} unit - The unit to go to the end of. Can be 'year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', or 'millisecond'.\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week\n * @example DateTime.local(2014, 3, 3).endOf('month').toISO(); //=> '2014-03-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('year').toISO(); //=> '2014-12-31T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3).endOf('week').toISO(); // => '2014-03-09T23:59:59.999-05:00', weeks start on Mondays\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('day').toISO(); //=> '2014-03-03T23:59:59.999-05:00'\n * @example DateTime.local(2014, 3, 3, 5, 30).endOf('hour').toISO(); //=> '2014-03-03T05:59:59.999-05:00'\n * @return {DateTime}\n */\n endOf(unit, opts) {\n return this.isValid\n ? this.plus({ [unit]: 1 })\n .startOf(unit, opts)\n .minus(1)\n : this;\n }\n\n // OUTPUT\n\n /**\n * Returns a string representation of this DateTime formatted according to the specified format string.\n * **You may not want this.** See {@link DateTime#toLocaleString} for a more flexible formatting tool. For a table of tokens and their interpretations, see [here](https://moment.github.io/luxon/#/formatting?id=table-of-tokens).\n * Defaults to en-US if no locale has been specified, regardless of the system's locale.\n * @param {string} fmt - the format string\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toFormat('yyyy LLL dd') //=> '2017 Apr 22'\n * @example DateTime.now().setLocale('fr').toFormat('yyyy LLL dd') //=> '2017 avr. 22'\n * @example DateTime.now().toFormat('yyyy LLL dd', { locale: \"fr\" }) //=> '2017 avr. 22'\n * @example DateTime.now().toFormat(\"HH 'hours and' mm 'minutes'\") //=> '20 hours and 55 minutes'\n * @return {string}\n */\n toFormat(fmt, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.redefaultToEN(opts)).formatDateTimeFromString(this, fmt)\n : INVALID;\n }\n\n /**\n * Returns a localized string representing this date. Accepts the same options as the Intl.DateTimeFormat constructor and any presets defined by Luxon, such as `DateTime.DATE_FULL` or `DateTime.TIME_SIMPLE`.\n * The exact behavior of this method is browser-specific, but in general it will return an appropriate representation\n * of the DateTime in the assigned locale.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat\n * @param formatOpts {Object} - Intl.DateTimeFormat constructor options and configuration options\n * @param {Object} opts - opts to override the configuration options on this DateTime\n * @example DateTime.now().toLocaleString(); //=> 4/20/2017\n * @example DateTime.now().setLocale('en-gb').toLocaleString(); //=> '20/04/2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL); //=> 'April 20, 2017'\n * @example DateTime.now().toLocaleString(DateTime.DATE_FULL, { locale: 'fr' }); //=> '28 août 2022'\n * @example DateTime.now().toLocaleString(DateTime.TIME_SIMPLE); //=> '11:32 AM'\n * @example DateTime.now().toLocaleString(DateTime.DATETIME_SHORT); //=> '4/20/2017, 11:32 AM'\n * @example DateTime.now().toLocaleString({ weekday: 'long', month: 'long', day: '2-digit' }); //=> 'Thursday, April 20'\n * @example DateTime.now().toLocaleString({ weekday: 'short', month: 'short', day: '2-digit', hour: '2-digit', minute: '2-digit' }); //=> 'Thu, Apr 20, 11:27 AM'\n * @example DateTime.now().toLocaleString({ hour: '2-digit', minute: '2-digit', hourCycle: 'h23' }); //=> '11:32'\n * @return {string}\n */\n toLocaleString(formatOpts = Formats.DATE_SHORT, opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), formatOpts).formatDateTime(this)\n : INVALID;\n }\n\n /**\n * Returns an array of format \"parts\", meaning individual tokens along with metadata. This is allows callers to post-process individual sections of the formatted output.\n * Defaults to the system's locale if no locale has been specified\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/formatToParts\n * @param opts {Object} - Intl.DateTimeFormat constructor options, same as `toLocaleString`.\n * @example DateTime.now().toLocaleParts(); //=> [\n * //=> { type: 'day', value: '25' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'month', value: '05' },\n * //=> { type: 'literal', value: '/' },\n * //=> { type: 'year', value: '1982' }\n * //=> ]\n */\n toLocaleParts(opts = {}) {\n return this.isValid\n ? Formatter.create(this.loc.clone(opts), opts).formatDateTimeParts(this)\n : [];\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=false] - add the time zone format extension\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1983, 5, 25).toISO() //=> '1982-05-25T00:00:00.000Z'\n * @example DateTime.now().toISO() //=> '2017-04-22T20:47:05.335-04:00'\n * @example DateTime.now().toISO({ includeOffset: false }) //=> '2017-04-22T20:47:05.335'\n * @example DateTime.now().toISO({ format: 'basic' }) //=> '20170422T204705.335-0400'\n * @return {string}\n */\n toISO({\n format = \"extended\",\n suppressSeconds = false,\n suppressMilliseconds = false,\n includeOffset = true,\n extendedZone = false,\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n const ext = format === \"extended\";\n\n let c = toISODate(this, ext);\n c += \"T\";\n c += toISOTime(this, ext, suppressSeconds, suppressMilliseconds, includeOffset, extendedZone);\n return c;\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's date component\n * @param {Object} opts - options\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc(1982, 5, 25).toISODate() //=> '1982-05-25'\n * @example DateTime.utc(1982, 5, 25).toISODate({ format: 'basic' }) //=> '19820525'\n * @return {string}\n */\n toISODate({ format = \"extended\" } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return toISODate(this, format === \"extended\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's week date\n * @example DateTime.utc(1982, 5, 25).toISOWeekDate() //=> '1982-W21-2'\n * @return {string}\n */\n toISOWeekDate() {\n return toTechFormat(this, \"kkkk-'W'WW-c\");\n }\n\n /**\n * Returns an ISO 8601-compliant string representation of this DateTime's time component\n * @param {Object} opts - options\n * @param {boolean} [opts.suppressMilliseconds=false] - exclude milliseconds from the format if they're 0\n * @param {boolean} [opts.suppressSeconds=false] - exclude seconds from the format if they're 0\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.extendedZone=true] - add the time zone format extension\n * @param {boolean} [opts.includePrefix=false] - include the `T` prefix\n * @param {string} [opts.format='extended'] - choose between the basic and extended format\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime() //=> '07:34:19.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34, seconds: 0, milliseconds: 0 }).toISOTime({ suppressSeconds: true }) //=> '07:34Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ format: 'basic' }) //=> '073419.361Z'\n * @example DateTime.utc().set({ hour: 7, minute: 34 }).toISOTime({ includePrefix: true }) //=> 'T07:34:19.361Z'\n * @return {string}\n */\n toISOTime({\n suppressMilliseconds = false,\n suppressSeconds = false,\n includeOffset = true,\n includePrefix = false,\n extendedZone = false,\n format = \"extended\",\n } = {}) {\n if (!this.isValid) {\n return null;\n }\n\n let c = includePrefix ? \"T\" : \"\";\n return (\n c +\n toISOTime(\n this,\n format === \"extended\",\n suppressSeconds,\n suppressMilliseconds,\n includeOffset,\n extendedZone\n )\n );\n }\n\n /**\n * Returns an RFC 2822-compatible string representation of this DateTime\n * @example DateTime.utc(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 +0000'\n * @example DateTime.local(2014, 7, 13).toRFC2822() //=> 'Sun, 13 Jul 2014 00:00:00 -0400'\n * @return {string}\n */\n toRFC2822() {\n return toTechFormat(this, \"EEE, dd LLL yyyy HH:mm:ss ZZZ\", false);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in HTTP headers. The output is always expressed in GMT.\n * Specifically, the string conforms to RFC 1123.\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1\n * @example DateTime.utc(2014, 7, 13).toHTTP() //=> 'Sun, 13 Jul 2014 00:00:00 GMT'\n * @example DateTime.utc(2014, 7, 13, 19).toHTTP() //=> 'Sun, 13 Jul 2014 19:00:00 GMT'\n * @return {string}\n */\n toHTTP() {\n return toTechFormat(this.toUTC(), \"EEE, dd LLL yyyy HH:mm:ss 'GMT'\");\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Date\n * @example DateTime.utc(2014, 7, 13).toSQLDate() //=> '2014-07-13'\n * @return {string}\n */\n toSQLDate() {\n if (!this.isValid) {\n return null;\n }\n return toISODate(this, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL Time\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc().toSQL() //=> '05:15:16.345'\n * @example DateTime.now().toSQL() //=> '05:15:16.345 -04:00'\n * @example DateTime.now().toSQL({ includeOffset: false }) //=> '05:15:16.345'\n * @example DateTime.now().toSQL({ includeZone: false }) //=> '05:15:16.345 America/New_York'\n * @return {string}\n */\n toSQLTime({ includeOffset = true, includeZone = false, includeOffsetSpace = true } = {}) {\n let fmt = \"HH:mm:ss.SSS\";\n\n if (includeZone || includeOffset) {\n if (includeOffsetSpace) {\n fmt += \" \";\n }\n if (includeZone) {\n fmt += \"z\";\n } else if (includeOffset) {\n fmt += \"ZZ\";\n }\n }\n\n return toTechFormat(this, fmt, true);\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for use in SQL DateTime\n * @param {Object} opts - options\n * @param {boolean} [opts.includeZone=false] - include the zone, such as 'America/New_York'. Overrides includeOffset.\n * @param {boolean} [opts.includeOffset=true] - include the offset, such as 'Z' or '-04:00'\n * @param {boolean} [opts.includeOffsetSpace=true] - include the space between the time and the offset, such as '05:15:16.345 -04:00'\n * @example DateTime.utc(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 Z'\n * @example DateTime.local(2014, 7, 13).toSQL() //=> '2014-07-13 00:00:00.000 -04:00'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeOffset: false }) //=> '2014-07-13 00:00:00.000'\n * @example DateTime.local(2014, 7, 13).toSQL({ includeZone: true }) //=> '2014-07-13 00:00:00.000 America/New_York'\n * @return {string}\n */\n toSQL(opts = {}) {\n if (!this.isValid) {\n return null;\n }\n\n return `${this.toSQLDate()} ${this.toSQLTime(opts)}`;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for debugging\n * @return {string}\n */\n toString() {\n return this.isValid ? this.toISO() : INVALID;\n }\n\n /**\n * Returns a string representation of this DateTime appropriate for the REPL.\n * @return {string}\n */\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n if (this.isValid) {\n return `DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`;\n } else {\n return `DateTime { Invalid, reason: ${this.invalidReason} }`;\n }\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime. Alias of {@link DateTime#toMillis}\n * @return {number}\n */\n valueOf() {\n return this.toMillis();\n }\n\n /**\n * Returns the epoch milliseconds of this DateTime.\n * @return {number}\n */\n toMillis() {\n return this.isValid ? this.ts : NaN;\n }\n\n /**\n * Returns the epoch seconds of this DateTime.\n * @return {number}\n */\n toSeconds() {\n return this.isValid ? this.ts / 1000 : NaN;\n }\n\n /**\n * Returns the epoch seconds (as a whole number) of this DateTime.\n * @return {number}\n */\n toUnixInteger() {\n return this.isValid ? Math.floor(this.ts / 1000) : NaN;\n }\n\n /**\n * Returns an ISO 8601 representation of this DateTime appropriate for use in JSON.\n * @return {string}\n */\n toJSON() {\n return this.toISO();\n }\n\n /**\n * Returns a BSON serializable equivalent to this DateTime.\n * @return {Date}\n */\n toBSON() {\n return this.toJSDate();\n }\n\n /**\n * Returns a JavaScript object with this DateTime's year, month, day, and so on.\n * @param opts - options for generating the object\n * @param {boolean} [opts.includeConfig=false] - include configuration attributes in the output\n * @example DateTime.now().toObject() //=> { year: 2017, month: 4, day: 22, hour: 20, minute: 49, second: 42, millisecond: 268 }\n * @return {Object}\n */\n toObject(opts = {}) {\n if (!this.isValid) return {};\n\n const base = { ...this.c };\n\n if (opts.includeConfig) {\n base.outputCalendar = this.outputCalendar;\n base.numberingSystem = this.loc.numberingSystem;\n base.locale = this.loc.locale;\n }\n return base;\n }\n\n /**\n * Returns a JavaScript Date equivalent to this DateTime.\n * @return {Date}\n */\n toJSDate() {\n return new Date(this.isValid ? this.ts : NaN);\n }\n\n // COMPARE\n\n /**\n * Return the difference between two DateTimes as a Duration.\n * @param {DateTime} otherDateTime - the DateTime to compare this one to\n * @param {string|string[]} [unit=['milliseconds']] - the unit or array of units (such as 'hours' or 'days') to include in the duration.\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @example\n * var i1 = DateTime.fromISO('1982-05-25T09:45'),\n * i2 = DateTime.fromISO('1983-10-14T10:30');\n * i2.diff(i1).toObject() //=> { milliseconds: 43807500000 }\n * i2.diff(i1, 'hours').toObject() //=> { hours: 12168.75 }\n * i2.diff(i1, ['months', 'days']).toObject() //=> { months: 16, days: 19.03125 }\n * i2.diff(i1, ['months', 'days', 'hours']).toObject() //=> { months: 16, days: 19, hours: 0.75 }\n * @return {Duration}\n */\n diff(otherDateTime, unit = \"milliseconds\", opts = {}) {\n if (!this.isValid || !otherDateTime.isValid) {\n return Duration.invalid(\"created by diffing an invalid DateTime\");\n }\n\n const durOpts = { locale: this.locale, numberingSystem: this.numberingSystem, ...opts };\n\n const units = maybeArray(unit).map(Duration.normalizeUnit),\n otherIsLater = otherDateTime.valueOf() > this.valueOf(),\n earlier = otherIsLater ? this : otherDateTime,\n later = otherIsLater ? otherDateTime : this,\n diffed = diff(earlier, later, units, durOpts);\n\n return otherIsLater ? diffed.negate() : diffed;\n }\n\n /**\n * Return the difference between this DateTime and right now.\n * See {@link DateTime#diff}\n * @param {string|string[]} [unit=['milliseconds']] - the unit or units units (such as 'hours' or 'days') to include in the duration\n * @param {Object} opts - options that affect the creation of the Duration\n * @param {string} [opts.conversionAccuracy='casual'] - the conversion system to use\n * @return {Duration}\n */\n diffNow(unit = \"milliseconds\", opts = {}) {\n return this.diff(DateTime.now(), unit, opts);\n }\n\n /**\n * Return an Interval spanning between this DateTime and another DateTime\n * @param {DateTime} otherDateTime - the other end point of the Interval\n * @return {Interval}\n */\n until(otherDateTime) {\n return this.isValid ? Interval.fromDateTimes(this, otherDateTime) : this;\n }\n\n /**\n * Return whether this DateTime is in the same unit of time as another DateTime.\n * Higher-order units must also be identical for this function to return `true`.\n * Note that time zones are **ignored** in this comparison, which compares the **local** calendar time. Use {@link DateTime#setZone} to convert one of the dates if needed.\n * @param {DateTime} otherDateTime - the other DateTime\n * @param {string} unit - the unit of time to check sameness on\n * @param {Object} opts - options\n * @param {boolean} [opts.useLocaleWeeks=false] - If true, use weeks based on the locale, i.e. use the locale-dependent start of the week; only the locale of this DateTime is used\n * @example DateTime.now().hasSame(otherDT, 'day'); //~> true if otherDT is in the same current calendar day\n * @return {boolean}\n */\n hasSame(otherDateTime, unit, opts) {\n if (!this.isValid) return false;\n\n const inputMs = otherDateTime.valueOf();\n const adjustedToZone = this.setZone(otherDateTime.zone, { keepLocalTime: true });\n return (\n adjustedToZone.startOf(unit, opts) <= inputMs && inputMs <= adjustedToZone.endOf(unit, opts)\n );\n }\n\n /**\n * Equality check\n * Two DateTimes are equal if and only if they represent the same millisecond, have the same zone and location, and are both valid.\n * To compare just the millisecond values, use `+dt1 === +dt2`.\n * @param {DateTime} other - the other DateTime\n * @return {boolean}\n */\n equals(other) {\n return (\n this.isValid &&\n other.isValid &&\n this.valueOf() === other.valueOf() &&\n this.zone.equals(other.zone) &&\n this.loc.equals(other.loc)\n );\n }\n\n /**\n * Returns a string representation of a this time relative to now, such as \"in two days\". Can only internationalize if your\n * platform supports Intl.RelativeTimeFormat. Rounds down by default.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} [options.style=\"long\"] - the style of units, must be \"long\", \"short\", or \"narrow\"\n * @param {string|string[]} options.unit - use a specific unit or array of units; if omitted, or an array, the method will pick the best unit. Use an array or one of \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", or \"seconds\"\n * @param {boolean} [options.round=true] - whether to round the numbers in the output.\n * @param {number} [options.padding=0] - padding in milliseconds. This allows you to round up the result if it fits inside the threshold. Don't use in combination with {round: false} because the decimal output will include the padding.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelative() //=> \"in 1 day\"\n * @example DateTime.now().setLocale(\"es\").toRelative({ days: 1 }) //=> \"dentro de 1 día\"\n * @example DateTime.now().plus({ days: 1 }).toRelative({ locale: \"fr\" }) //=> \"dans 23 heures\"\n * @example DateTime.now().minus({ days: 2 }).toRelative() //=> \"2 days ago\"\n * @example DateTime.now().minus({ days: 2 }).toRelative({ unit: \"hours\" }) //=> \"48 hours ago\"\n * @example DateTime.now().minus({ hours: 36 }).toRelative({ round: false }) //=> \"1.5 days ago\"\n */\n toRelative(options = {}) {\n if (!this.isValid) return null;\n const base = options.base || DateTime.fromObject({}, { zone: this.zone }),\n padding = options.padding ? (this < base ? -options.padding : options.padding) : 0;\n let units = [\"years\", \"months\", \"days\", \"hours\", \"minutes\", \"seconds\"];\n let unit = options.unit;\n if (Array.isArray(options.unit)) {\n units = options.unit;\n unit = undefined;\n }\n return diffRelative(base, this.plus(padding), {\n ...options,\n numeric: \"always\",\n units,\n unit,\n });\n }\n\n /**\n * Returns a string representation of this date relative to today, such as \"yesterday\" or \"next month\".\n * Only internationalizes on platforms that supports Intl.RelativeTimeFormat.\n * @param {Object} options - options that affect the output\n * @param {DateTime} [options.base=DateTime.now()] - the DateTime to use as the basis to which this time is compared. Defaults to now.\n * @param {string} options.locale - override the locale of this DateTime\n * @param {string} options.unit - use a specific unit; if omitted, the method will pick the unit. Use one of \"years\", \"quarters\", \"months\", \"weeks\", or \"days\"\n * @param {string} options.numberingSystem - override the numberingSystem of this DateTime. The Intl system may choose not to honor this\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar() //=> \"tomorrow\"\n * @example DateTime.now().setLocale(\"es\").plus({ days: 1 }).toRelative() //=> \"\"mañana\"\n * @example DateTime.now().plus({ days: 1 }).toRelativeCalendar({ locale: \"fr\" }) //=> \"demain\"\n * @example DateTime.now().minus({ days: 2 }).toRelativeCalendar() //=> \"2 days ago\"\n */\n toRelativeCalendar(options = {}) {\n if (!this.isValid) return null;\n\n return diffRelative(options.base || DateTime.fromObject({}, { zone: this.zone }), this, {\n ...options,\n numeric: \"auto\",\n units: [\"years\", \"months\", \"days\"],\n calendary: true,\n });\n }\n\n /**\n * Return the min of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the minimum\n * @return {DateTime} the min DateTime, or undefined if called with no argument\n */\n static min(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"min requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.min);\n }\n\n /**\n * Return the max of several date times\n * @param {...DateTime} dateTimes - the DateTimes from which to choose the maximum\n * @return {DateTime} the max DateTime, or undefined if called with no argument\n */\n static max(...dateTimes) {\n if (!dateTimes.every(DateTime.isDateTime)) {\n throw new InvalidArgumentError(\"max requires all arguments be DateTimes\");\n }\n return bestBy(dateTimes, (i) => i.valueOf(), Math.max);\n }\n\n // MISC\n\n /**\n * Explain how a string would be parsed by fromFormat()\n * @param {string} text - the string to parse\n * @param {string} fmt - the format the string is expected to be in (see description)\n * @param {Object} options - options taken by fromFormat()\n * @return {Object}\n */\n static fromFormatExplain(text, fmt, options = {}) {\n const { locale = null, numberingSystem = null } = options,\n localeToUse = Locale.fromOpts({\n locale,\n numberingSystem,\n defaultToEN: true,\n });\n return explainFromTokens(localeToUse, text, fmt);\n }\n\n /**\n * @deprecated use fromFormatExplain instead\n */\n static fromStringExplain(text, fmt, options = {}) {\n return DateTime.fromFormatExplain(text, fmt, options);\n }\n\n // FORMAT PRESETS\n\n /**\n * {@link DateTime#toLocaleString} format like 10/14/1983\n * @type {Object}\n */\n static get DATE_SHORT() {\n return Formats.DATE_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED() {\n return Formats.DATE_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, Oct 14, 1983'\n * @type {Object}\n */\n static get DATE_MED_WITH_WEEKDAY() {\n return Formats.DATE_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983'\n * @type {Object}\n */\n static get DATE_FULL() {\n return Formats.DATE_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Tuesday, October 14, 1983'\n * @type {Object}\n */\n static get DATE_HUGE() {\n return Formats.DATE_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_SIMPLE() {\n return Formats.TIME_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SECONDS() {\n return Formats.TIME_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_SHORT_OFFSET() {\n return Formats.TIME_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get TIME_WITH_LONG_OFFSET() {\n return Formats.TIME_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_SIMPLE() {\n return Formats.TIME_24_SIMPLE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SECONDS() {\n return Formats.TIME_24_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 EDT', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_SHORT_OFFSET() {\n return Formats.TIME_24_WITH_SHORT_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '09:30:23 Eastern Daylight Time', always 24-hour.\n * @type {Object}\n */\n static get TIME_24_WITH_LONG_OFFSET() {\n return Formats.TIME_24_WITH_LONG_OFFSET;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT() {\n return Formats.DATETIME_SHORT;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like '10/14/1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_SHORT_WITH_SECONDS() {\n return Formats.DATETIME_SHORT_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED() {\n return Formats.DATETIME_MED;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Oct 14, 1983, 9:30:33 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_SECONDS() {\n return Formats.DATETIME_MED_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Fri, 14 Oct 1983, 9:30 AM'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_MED_WITH_WEEKDAY() {\n return Formats.DATETIME_MED_WITH_WEEKDAY;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL() {\n return Formats.DATETIME_FULL;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'October 14, 1983, 9:30:33 AM EDT'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_FULL_WITH_SECONDS() {\n return Formats.DATETIME_FULL_WITH_SECONDS;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE() {\n return Formats.DATETIME_HUGE;\n }\n\n /**\n * {@link DateTime#toLocaleString} format like 'Friday, October 14, 1983, 9:30:33 AM Eastern Daylight Time'. Only 12-hour if the locale is.\n * @type {Object}\n */\n static get DATETIME_HUGE_WITH_SECONDS() {\n return Formats.DATETIME_HUGE_WITH_SECONDS;\n }\n}\n\n/**\n * @private\n */\nexport function friendlyDateTime(dateTimeish) {\n if (DateTime.isDateTime(dateTimeish)) {\n return dateTimeish;\n } else if (dateTimeish && dateTimeish.valueOf && isNumber(dateTimeish.valueOf())) {\n return DateTime.fromJSDate(dateTimeish);\n } else if (dateTimeish && typeof dateTimeish === \"object\") {\n return DateTime.fromObject(dateTimeish);\n } else {\n throw new InvalidArgumentError(\n `Unknown datetime argument: ${dateTimeish}, of type ${typeof dateTimeish}`\n );\n }\n}\n"],"names":["proto","window","Element","prototype","nativeMatches","matches","matchesSelector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","element","test","nodeType","item","i","selector","call","nodes","parentNode","querySelectorAll","node","delegate","ancestor","eventType","callback","opts","listener","event","delegateTarget","composed","composedPath","shouldCheckSelf","parentElements","concat","list","push","parents","parent","closest","target","addEventListener","useCapture","destroy","removeEventListener","DEFAULT_PORT","RegExp","a","document","createElement","cache","parseUrl","url","location","href","charAt","port","host","replace","origin","protocol","pathname","hash","hostname","search","VERSION","VERSION_PARAM","USAGE_PARAM","instances","MethodChain","add","context","methodName","methodOverride","getOrCreateMethodChain","remove","constructor","this","isTask","originalMethodReference","get","methodChain","boundMethodChain","wrappedMethod","args","lastBoundMethod","length","set","overrideMethod","rebindMethodChain","index","indexOf","splice","method","previousMethod","bind","filter","h","createFieldsObj","defaultFields","userFields","tracker","undefined","hitFilter","originalBuildHitTask","buildHitTask","model","getAttributeFields","prefix","attributes","attrs","map","attr","name","value","getAttributes","attributeFields","Object","keys","forEach","attribute","field","slice","match","p1","toUpperCase","debounce","fn","wait","timeout","clearTimeout","setTimeout","withTimeout","called","queueMap","assign","sources","len","source","key","hasOwnProperty","isObject","now","Date","uuid","b","Math","random","toString","provide","pluginName","pluginConstructor","gaAlias","GoogleAnalyticsObject","str","q","gaDevIds","gaplugins","plugins","CLEAN_URL_TRACKER","EVENT_TRACKER","IMPRESSION_TRACKER","MEDIA_QUERY_TRACKER","OUTBOUND_FORM_TRACKER","OUTBOUND_LINK_TRACKER","PAGE_VISIBILITY_TRACKER","SOCIAL_WIDGET_TRACKER","URL_CHANGE_TRACKER","MAX_SCROLL_TRACKER","PLUGIN_COUNT","trackUsage","plugin","trackVersion","pluginIndex","usageHex","usageBin","toAdd","padZeros","hex","parseInt","substr","bin","trackPlugin","queryDimension","stripQuery","queryDimensionIndex","trackerGetOverride","buildHitTaskOverride","originalMethod","fieldsObj","page","cleanUrlFields","cleanedFieldsObj","indexFilename","parts","split","join","trailingSlash","stripNonWhitelistedQueryParams","urlFieldsFilter","userCleanedFieldsObj","returnValue","searchString","Array","isArray","queryParamsWhitelist","foundParams","kv","events","attributePrefix","handleEvents","delegates","getAttribute","type","hitType","send","transport","isTargetVisible","threshold","record","intersectionRect","top","bottom","left","right","intersectionRatio","getItemFromElement","id","trackFirstImpressionOnly","IntersectionObserver","MutationObserver","rootMargin","handleDomMutations","handleIntersectionChanges","handleDomElementAdded","handleDomElementRemoved","mutationObserver","items","elementMap","thresholdMap","elements","observeElements","readyState","data","deriveDataFromElements","observer","getElementById","observe","body","childList","subtree","requestAnimationFrame","unobserveElements","itemsToKeep","itemsToRemove","some","itemToRemove","dataToKeep","dataToRemove","unobserve","disconnect","unobserveAllElements","mutations","mutation","removedEl","k","removedNodes","walkNodeTree","addedEl","j","addedNodes","child","childNodes","records","handleImpression","eventCategory","eventAction","eventLabel","nonInteraction","EventEmitter","registry_","on","getRegistry_","off","eventRegistry","handlerIndex","emit","getEventCount","eventCount","AUTOTRACK_PREFIX","browserSupportsLocalStorage","isListening","Store","getOrCreate","trackingId","namespace","defaults","storageListener","isSupported_","localStorage","setItem","removeItem","err","get_","getItem","set_","clear_","super","key_","defaults_","cache_","parse","newData","JSON","stringify","clear","store","oldData","oldValue","newValue","Session","timeZone","DEFAULT_TIMEOUT","sendHitTaskOverride","dateTimeFormatter","Intl","DateTimeFormat","hitTime","isExpired","getId","sessionData","oldHitTime","currentDate","oldHitDate","datesAreDifferentInTimezone","d1","d2","format","sessionControl","sessionWillStart","sessionWillEnd","defaultOpts","increaseThreshold","sessionTimeout","pagePath","getPagePath","handleScroll","trackerSetOverride","session","listenForMaxScrollChanges","getMaxScrollPercentageForCurrentPage","stopListeningForMaxScrollChanges","pageHeight","html","documentElement","max","offsetHeight","scrollHeight","getPageHeight","scrollPos","pageYOffset","windowHeight","innerHeight","scrollPercentage","min","round","sessionId","maxScrollPercentage","increaseAmount","setMaxScrollPercentageForCurrentPage","sendMaxScrollEvent","lastPagePath","eventValue","String","maxScrollMetricIndex","mediaMap","getMediaList","media","matchMedia","changeTemplate","changeTimeout","definitions","changeListeners","processMediaQueries","definition","dimensionIndex","mediaName","getMatchName","addChangeListeners","mql","handleChanges","addListener","removeListener","formSelector","shouldTrackOutboundForm","handleFormSubmits","form","action","navigator","sendBeacon","preventDefault","hitCallback","submit","parseUrlFn","linkSelector","shouldTrackOutboundLink","handleLinkInteractions","link","metaKey","ctrlKey","shiftKey","altKey","which","linkClickWillUnloadCurrentPage","clickHandler","defaultPrevented","oldHitCallback","VISIBLE","PAGE_ID","visibilityState","visibleThreshold","sendInitialPageview","lastPageState","visibleThresholdTimeout_","isInitialPageviewSent_","handleChange","handleWindowUnload","handleExternalStoreSet","ref","processQueue","queue","deferUntilPluginsLoaded","sendPageview","isPageLoad","time","state","pageId","pageLoadsMetricIndex","sendPageLoad","lastStoredChange","getAndValidateChangeData","change","sendPageVisibilityEvent","delta","getTimeSinceLastStoredChange","deltaInSeconds","queueTime","visibleMetricIndex","fields","addWidgetListeners","addTwitterEventHandlers","handleTweetEvents","handleFollowEvents","handleLikeEvents","handleUnlikeEvents","FB","addFacebookEventHandlers","twttr","ready","removeTwitterEventHandlers","unbind","Event","subscribe","removeFacebookEventHandlers","unsubscribe","region","socialNetwork","socialAction","socialTarget","screen_name","getPath","history","pushState","shouldTrackUrlChange","trackReplaceState","path","pushStateOverride","replaceStateOverride","handlePopState","handleUrlChange","historyDidUpdate","oldPath","newPath","title","factory","__webpack_modules__","__unused_webpack_module","exports","defineProperty","clearChoices","activateChoices","filterChoices","addChoice","constants_1","_a","label","groupId","disabled","elementId","customProperties","placeholder","keyCode","ACTION_TYPES","ADD_CHOICE","results","FILTER_CHOICES","active","ACTIVATE_CHOICES","CLEAR_CHOICES","addGroup","ADD_GROUP","highlightItem","addItem","choiceId","ADD_ITEM","REMOVE_ITEM","highlighted","HIGHLIGHT_ITEM","setIsLoading","resetTo","clearAll","CLEAR_ALL","RESET_TO","isLoading","SET_IS_LOADING","__spreadArray","to","from","pack","arguments","ar","l","__importDefault","mod","__esModule","deepmerge_1","fuse_js_1","choices_1","groups_1","items_1","misc_1","components_1","defaults_1","utils_1","reducers_1","store_1","templates_1","IS_IE11","style","USER_DEFAULTS","Choices","userConfig","_this","allowHTML","console","warn","config","default","all","DEFAULT_CONFIG","options","arrayMerge","_","sourceArray","invalidConfigOptions","diff","passedElement","querySelector","HTMLInputElement","HTMLSelectElement","TypeError","_isTextElement","TEXT_TYPE","_isSelectOneElement","SELECT_ONE_TYPE","_isSelectMultipleElement","SELECT_MULTIPLE_TYPE","_isSelectElement","searchEnabled","includes","renderSelectedChoices","addItemFilter","re","WrappedInput","classNames","delimiter","WrappedSelect","template","_templates","option","initialised","_store","_initialState","defaultState","_currentState","_prevState","_currentValue","_canSearch","_isScrollingOnIe","_highlightPosition","_wasTap","_placeholderValue","_generatePlaceholderValue","_baseId","generateId","_direction","dir","elementDirection","getComputedStyle","direction","_idNames","itemChoice","_presetGroups","optionGroups","_presetOptions","_presetChoices","choices","_presetItems","splitValues","innerHTML","selected","hasAttribute","parseCustomProperties","dataset","_render","_onFocus","_onBlur","_onKeyUp","_onKeyDown","_onClick","_onTouchMove","_onTouchEnd","_onMouseDown","_onMouseOver","_onFormReset","_onSelectKey","_onEnterKey","_onEscapeKey","_onDirectionKey","_onDeleteKey","isActive","silent","init","preventExtensions","templates","enumerable","configurable","_createTemplates","_createElements","_createStructure","_addEventListeners","addItems","disable","callbackOnInit","_removeEventListeners","reveal","containerOuter","unwrap","clearStore","enable","isDisabled","input","runEvent","_b","_c","group","getGroupById","dispatch","triggerEvent","EVENTS","groupValue","unhighlightItem","highlightAll","unhighlightAll","removeActiveItemsByValue","activeItems","_removeItem","removeActiveItems","excludedId","removeHighlightedItems","highlightedActiveItems","_triggerChange","showDropdown","preventInputFocus","dropdown","show","open","distanceFromTopWindow","focus","hideDropdown","preventInputBlur","hide","close","removeActiveDescendant","blur","getValue","valueOnly","values","reduce","selectedItems","itemValue","setValue","_setChoiceOrItem","setChoiceByValue","val","_findAndSelectChoiceByValue","setChoices","choicesArrayOrFetcher","replaceChoices","ReferenceError","fetcher_1","Promise","resolve","then","_handleLoadingState","catch","error","removeLoadingState","_startLoading","groupOrChoice","_addGroup","valueKey","labelKey","choice","_addChoice","isSelected","_stopLoading","clearInput","shouldSetInputWidth","_isSearching","stateChanged","groups","shouldRenderChoices","shouldRenderItems","_renderChoices","_renderItems","activeGroups","activeChoices","choiceListFragment","createDocumentFragment","choiceList","resetScrollPosition","scrollToTop","activePlaceholders","activeChoice","_createChoicesFragment","_createGroupsFragment","canAddItem","_canAddItem","response","append","_highlightChoice","notice","_getTemplate","dropdownItem","noResultsText","noChoicesText","itemList","itemListFragment","_createItemsFragment","fragment","shouldSort","sort","sorter","groupChoices","getGroupChoices","dropdownGroup","appendChild","withinGroup","searchResultLimit","renderChoiceLimit","sortByScore","appendChoice","itemSelectText","rendererableChoices","acc","placeholderChoices","normalChoices","choiceLimit","sortedChoices","shouldSortItems","removeItemButton","listItem","_selectPlaceholderChoice","placeholderChoice","_addItem","_handleButtonAction","removeItems","itemId","find","_handleItemAction","hasShiftKey","passedId","_handleChoiceAction","getChoiceById","passedKeyCode","hasActiveDropdown","_handleBackspace","lastItem","hasHighlightedItems","editItems","setWidth","setLoading","placeholderItem","getChild","addLoadingState","loadingText","_handleSearch","isFocussed","searchFloor","searchChoices","hasUnactiveChoices","resultCount","_searchChoices","addItemText","isDuplicateValue","existsInArray","maxItemCount","maxItemText","duplicateItemsAllowed","uniqueItemText","customAddItemText","trim","currentValue","haystack","searchableChoices","needle","fuseOptions","searchFields","includeMatches","passive","addEventListeners","removeEventListeners","hasFocusedInput","hasItems","hasChildren","keyString","fromCharCode","wasPrintableChar","BACK_KEY","KEY_CODES","DELETE_KEY","ENTER_KEY","A_KEY","ESC_KEY","UP_KEY","DOWN_KEY","PAGE_UP_KEY","PAGE_DOWN_KEY","toLowerCase","backKey","deleteKey","outerHTML","userHasRemovedValue","canReactivateChoices","canSearch","rawValue","activeElement","enterKey","targetWasButton","highlightedChoice","highlightedState","downKey","pageUpKey","pageDownKey","directionInt","nextEl","currentEl","getAdjacentEl","isScrolledIntoView","scrollToChildElement","touches","contains","containerInner","stopPropagation","HTMLElement","firstChoice","firstElementChild","isOnScrollbar","offsetX","offsetWidth","offsetLeft","removeFocusState","addFocusState","hasHighlightedItems_1","el","passedEl","classList","setAttribute","highlightChoice","setActiveDescendant","_d","_e","_f","_g","passedValue","passedLabel","passedOptionId","prependValue","appendValue","_h","choiceLabel","choiceElementId","isType","getElementsByTagName","floor","valueOf","isOptDisabled","_i","apply","callbackOnCreateTemplates","userTemplates","strToEl","Container","labelId","position","Input","preventPaste","paste","List","Dropdown","conceal","wrap","searchPlaceholderValue","insertBefore","firstChild","_addPredefinedGroups","_addPredefinedChoices","_addPredefinedItems","placeholderOption","tagName","hasSelectedChoice","firstEnabledChoiceIndex","findIndex","object","string","getType","foundChoice","valueComparer","text","placeholderValue","isOpen","isFlipped","shouldFlip","dropdownPos","activeDescendantID","removeAttribute","openState","flippedState","focusState","disabledState","removeChild","loadingState","getBoundingClientRect","activeState","dropdown_1","container_1","input_1","list_1","wrapped_input_1","wrapped_select_1","isEqualNode","_onPaste","_onInput","sanitise","minWidth","width","scrollTop","height","hasChildNodes","listHeight","listScrollPosition","elementHeight","elementPos","offsetTop","destination","_animateScroll","_scrollDown","strength","easing","distance","_scrollUp","SCROLLING_SPEED","choiceListScrollTop","continueAnimation","WrappedElement","hidden","tabIndex","origStyle","dispatchEvent","extendStatics","__extends","d","setPrototypeOf","__proto__","p","__","create","_super","optionData","appendDocFragment","DEFAULT_CLASSNAMES","inputCloned","listItems","listSingle","listDropdown","itemSelectable","itemDisabled","groupHeading","button","selectedState","noResults","noChoices","sortByAlpha","value1","value2","includeScore","__createBinding","o","m","k2","desc","getOwnPropertyDescriptor","writable","__exportStar","tmpEl","cloneObject","generateChars","getRandomNumber","obj","wrapper","nextSibling","startEl","prop","sibling","cleanedInput","firldChild","children","label2","localeCompare","sensitivity","ignorePunctuation","numeric","score","scoreA","customArgs","CustomEvent","detail","bubbles","cancelable","array","aKeys","bKeys","e","addChoiceAction","addItemAction_1","removeItemAction_1","filterChoicesAction_1","activateChoicesAction_1","addGroupAction","redux_1","loading_1","loading","appReducer","combineReducers","passedState","addItemAction","highlightItemAction_1","index_1","createStore","__REDUX_DEVTOOLS_EXTENSION__","onChange","getState","selectableChoices","reverse","hasActiveOptions","isSelectElement","isSelectOneElement","passedElementType","div","className","isPlaceholder","deletable","removeButton","choiceGroup","selectText","choiceDisabled","choiceSelectable","inp","autocomplete","autocapitalize","spellcheck","innerText","classes","opt","Option","module","isMergeableObject","isNonNullObject","stringValue","$$typeof","REACT_ELEMENT_TYPE","isReactElement","isSpecial","Symbol","for","cloneUnlessOtherwiseSpecified","clone","deepmerge","defaultArrayMerge","getKeys","getOwnPropertySymbols","symbol","propertyIsEnumerable","getEnumerableOwnPropertySymbols","propertyIsOnObject","property","mergeObject","propertyIsUnsafe","customMerge","getMergeFunction","sourceIsArray","Error","prev","next","getTag","r","Fuse","INFINITY","result","baseToString","isString","isNumber","isBoolean","isObjectLike","isDefined","isBlank","MISSING_KEY_PROPERTY","INVALID_KEY_WEIGHT_VALUE","hasOwn","KeyStore","_keys","_keyMap","totalWeight","createKey","weight","keyId","toJSON","src","getFn","createKeyPath","createKeyId","Config","isCaseSensitive","sortFn","idx","findAllMatches","minMatchCharLength","useExtendedSearch","arr","deepGet","ignoreLocation","ignoreFieldNorm","fieldNormWeight","SPACE","FuseIndex","norm","mantissa","Map","pow","numTokens","has","n","parseFloat","isCreated","setIndexRecords","setSources","docs","setKeys","_keysMap","doc","docIndex","_addString","_addObject","size","removeAt","getValueForItemAtKeyId","v","$","keyIndex","subRecords","stack","nestedArrIndex","pop","subRecord","createIndex","myIndex","computeScore$1","pattern","accuracy","errors","proximity","abs","expectedLocation","currentLocation","patternAlphabet","patternLen","textLen","currentThreshold","bestLocation","computeMatches","matchMask","lastBitArr","finalScore","binMax","mask","binMin","binMid","start","finish","bitArr","charMatch","isMatch","indices","matchmask","end","convertMaskToIndices","createPatternAlphabet","char","BitapSearch","chunks","addChunk","startIndex","alphabet","remainder","searchIn","allIndices","totalScore","hasMatches","BaseMatch","isMultiMatch","getMatch","multiRegex","isSingleMatch","singleRegex","exp","FuzzyMatch","_bitapSearch","IncludeMatch","searchers","startsWith","endsWith","searchersLen","SPACE_RE","MultiMatchSet","Set","ExtendedSearch","query","queryItem","found","searcher","token","parseQuery","condition","numMatches","qLen","pLen","registeredSearchers","createSearcher","searcherClass","LogicalOperator","KeyType","isExpression","convertToExplicit","isQueryPath","isPath","isLeaf","LOGICAL_SEARCH_INVALID_QUERY_FOR_KEY","auto","operator","transformMatches","refIndex","transformScore","_keyStore","setCollection","_docs","_myIndex","predicate","getIndex","_searchStringList","_searchObjectList","_searchLogical","Number","EPSILON","computeScore","limit","transformers","transformer","expression","evaluate","_findMatches","res","resultMap","expResults","version","parseIndex","register","_typeof","iterator","_toPropertyKey","arg","hint","prim","toPrimitive","_toPrimitive","_defineProperty","ownKeys","enumerableOnly","symbols","sym","_objectSpread2","getOwnPropertyDescriptors","defineProperties","formatProdErrorMessage","code","ActionTypes","applyMiddleware","bindActionCreators","compose","legacy_createStore","$$observable","observable","randomString","substring","INIT","REPLACE","PROBE_UNKNOWN_ACTION","isPlainObject","getPrototypeOf","reducer","preloadedState","enhancer","_ref2","currentReducer","currentState","currentListeners","nextListeners","isDispatching","ensureCanMutateNextListeners","isSubscribed","listeners","replaceReducer","nextReducer","_ref","outerSubscribe","observeState","reducers","reducerKeys","finalReducers","shapeAssertionError","finalReducerKeys","assertReducerShape","hasChanged","nextState","_key","previousStateForKey","nextStateForKey","bindActionCreator","actionCreator","actionCreators","boundActionCreators","_len","funcs","middlewares","_dispatch","middlewareAPI","chain","middleware","__webpack_module_cache__","moduleId","cachedModule","getter","toStringTag","_scripts_choices__WEBPACK_IMPORTED_MODULE_0__","_scripts_choices__WEBPACK_IMPORTED_MODULE_0___default","Buffer","Querystring","defaultRequest","btoa","ClientOAuth2","DEFAULT_HEADERS","Accept","ERROR_RESPONSES","invalid_request","invalid_client","invalid_grant","unauthorized_client","unsupported_grant_type","access_denied","unsupported_response_type","invalid_scope","server_error","temporarily_unavailable","expects","getAuthError","message","error_description","sanitizeScope","scopes","createUri","tokenType","qs","client_id","clientId","redirect_uri","redirectUri","response_type","scope","sep","authorizationUri","auth","username","password","requestOptions","headers","request","CodeFlow","TokenFlow","owner","OwnerFlow","credentials","CredentialsFlow","jwt","JwtBearerFlow","ClientOAuth2Token","client","token_type","accessToken","access_token","refreshToken","refresh_token","expiresIn","expires_in","Token","createToken","access","refresh","_request","parseResponseBody","authErr","reject","status","statusErr","duration","expires","setSeconds","getSeconds","getTime","sign","requestObject","Authorization","Pragma","self","accessTokenUri","clientSecret","grant_type","expired","getToken","getUri","uri","URL","expectedUrl","assertion","xhr","XMLHttpRequest","onload","responseText","onerror","onabort","statusText","header","setRequestHeader","curryN","trueFn","inStream","toUpdate","order","orderNextIdx","flushingUpdateQueue","flushingStreamValue","flyd","combine","streams","s","deps","depEndStreams","endStream","createDependentStream","depsChanged","fnArgs","addListeners","updateStream","f","boundMap","operator_pipe","boundChain","flatEnd","stream","internalEnded","alive","last","flatStream","own","newS","endsOn","ap","s2","s1","boundAp","fantasy_land_ap","streamToString","createStream","updateStreamValue","hasVal","updaters","queued","of","pipe","depsMet","shouldUpdate","every","initialDependenciesMet","dependenciesAreMet","returnVal","flushUpdate","listenersNeedUpdating","updateLaterUsing","findDeps","updater","shift","nextUpdateFn","updateListeners","lists","markListeners","detachDeps","StreamTransformer","initialValue","isStream","immediate","endS","scan","ns","merge","changed","transduce","xform","fromPromise","flattenPromise","t","c","u","g","y","Base","$_root","_definition","_reset","_ids","Ids","_preferences","_refs","Manager","_cache","_valids","_invalids","_flags","_rules","_singleRules","$_terms","$_temp","ruleset","whens","describe","allow","verifyFlat","_values","alter","_inRuleset","alterations","adjuster","artifact","$_setFlag","cast","_default","description","empty","$_compile","override","example","assertOptions","_inner","single","external","failover","forbidden","presence","invalid","meta","note","only","optional","prefs","externals","warnings","debug","checkPreferences","preferences","raw","required","strict","convert","strip","tag","unit","valid","when","is","switch","otherwise","$_mutateRebuild","provider","provision","_assign","isSchema","toSibling","keep","delete","rules","multi","_tracer","_combine","extend","base","extract","reach","fork","rule","modifiers","tailor","$_modify","each","tracer","validate","entry","validateAsync","entryAsync","$_addRule","_resolve","argsByName","isResolvable","$_mutateRegister","normalize","assert","validateArg","_ruleRemove","priority","unshift","schema","$_createError","flags","messages","Report","$_getFlag","$_getRule","$_mapLabels","labels","$_match","abortEarly","_externals","snapshot","restore","reset","family","rebuild","$_property","properties","$_reach","$_rootReferences","roots","$_parent","$_validate","shallow","$_super","_bare","terms","literal","_generate","nest","localize","ancestors","schemas","break","mainstay","generate","any","compile","root","isImmutable","deny","disallow","equal","exist","not","supported","Cache","isFinite","_max","_map","_list","first","_compact","tail","head","_remove","isoDate","allowUnknown","artifacts","dateFormat","escapeHtml","language","render","nonEnumerables","noDefaults","skipFunctions","stripUnknown","arraySingle","deepDefault","details","compare","isIsoDate","isNaN","legacy","isValues","isSafeInteger","tryWithPath","appendPath","simple","custom","alternatives","try","regex","date","isRef","walk","local","_setTemplate","_template","isTemplate","process","ValidationError","stackTraceLimit","_original","isError","isJoi","annotate","prepare","coerce","alias","overrides","manifest","build","types","boolean","function","number","aliases","alt","bool","func","_types","methods","x","setup","attempt","extensions","extension","expandExtension","in","decompile","compact","_byId","_byKey","_schemaChain","entries","_collect","_get","adjust","iterables","separator","Ref","depth","updateDisplay","display","shadow","absolute","functions","fill","global","toParent","refs","arrays","objects","or","nameRx","conditional","maxArity","minArity","setter","arity","mapped","buffer","integer","special","entity","unknown","State","Shadow","_snapshot","commit","opens","closes","toDateString","iso","toISOString","toTimeString","utc","toUTCString","Template","rendered","_settings","_functions","_parse","encode","decode","wrapped","isDynamic","_part","formula","Parser","reference","constants","arrayItems","true","false","null","second","minute","hour","day","if","msg","mergeArrays","reports","_endedSwitch","unmatched","report","valids","examples","metas","notes","shared","tags","warning","sparse","ordered","_exclusions","_inclusions","_requireds","patternLabel","errorsArray","pos","fastSplice","w","fillMissedErrors","fillOrderedErrors","fillDefault","validateSingle","_arrayItems","by","unique","comparator","ignoreUndefined","done","dupePos","dupeValue","knownMisses","unknownMisses","isBool","sensitive","falsy","truthy","isDate","greater","less","timestamp","typeof","class","renameDefaults","multiple","dependencies","patterns","renames","rename","_hasPatternMatch","isPresent","rel","and","dependency","subject","instance","Keys","nand","oxor","fallthrough","with","without","xor","Sorter","after","peers","Dependency","present","presentWithLabels","keysToLabels","missing","missingWithLabels","paths","main","mainWithLabel","peersWithLabels","peer","peerWithLabel","exec","schemaChain","relative","links","perspective","numberRx","precisionRx","exponentialPartRegex","leadingSignAndZerosRegex","dotRegex","trailingZerosRegex","decimalPlaces","unsafe","extractSignificantDigits","normalizeDecimal","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","trunc","baseDecimalPlace","pfactor","negative","positive","precision","tlds","base64Regex","dataUriRegex","hexRegex","withPrefix","withOptionalPrefix","withoutPrefix","ipRegex","cidr","isoDurationRegex","guidBrackets","guidVersions","uuidv1","uuidv2","uuidv3","uuidv4","uuidv5","uuidv6","uuidv7","uuidv8","guidSeparators","normalizationForms","insensitive","truncate","replacements","toLocaleUpperCase","toLocaleLowerCase","enabled","replacement","byteAligned","reason","alphanum","base64","urlSafe","paddingRequired","case","creditCard","dataUri","domain","addressOptions","address","isValid","email","invalids","guid","minDomainSegments","ip","versions","isoDuration","encoding","lowercase","invert","errorCode","uppercase","scheme","allowRelative","relativeOnly","maxDomainSegments","validateTlds","async","linked","original","log","Mainstay","_snapshots","cleanup","untrace","_register","trace","ignore","finalize","Values","_lowercase","lowercases","_override","applyToDefaultsWithShallow","nullOverride","reachCopy","needsProtoHack","weakSet","weakMap","cloneWithShallow","getInternalProto","mismatched","isDeepEqual","deepFunction","getSharedType","promise","isSame","SeenEntry","isDeepEqualObj","hasOwnEnumerableProperty","isSetSimpleEqual","part","skip","captureStackTrace","charCodeAt","isSafe","escapeHtmlChar","namedHtml","padStart","safeCharCodes","isInteger","generic","WeakMap","WeakSet","typeMap","Reflect","getOwnPropertyNames","_items","before","seq","manual","_sort","mergeSort","nonAsciiRx","domainControlRx","tldSegmentRx","domainSegmentRx","analyze","allowUnicode","punycode","allowFullyQualified","encoder","TextEncoder","ignoreLength","atextRx","binary","atomRx","codes","EMPTY_STRING","FORBIDDEN_UNICODE","MULTIPLE_AT_CHAR","MISSING_AT_CHAR","EMPTY_LOCAL","ADDRESS_TOO_LONG","LOCAL_TOO_LONG","EMPTY_LOCAL_SEGMENT","INVALID_LOCAL_CHARS","DOMAIN_NON_EMPTY_STRING","DOMAIN_TOO_LONG","DOMAIN_INVALID_UNICODE_CHARS","DOMAIN_INVALID_CHARS","DOMAIN_INVALID_TLDS_CHARS","DOMAIN_SEGMENTS_COUNT","DOMAIN_SEGMENTS_COUNT_MAX","DOMAIN_FORBIDDEN_TLDS","DOMAIN_EMPTY_SEGMENT","DOMAIN_LONG_SEGMENT","v4Cidr","v6Cidr","ipv4address","ipv4Cidr","ipv6Cidr","ipv6address","ipvFuture","schemeRegex","R","S","A","O","E","D","hierPart","hierPartCapture","relativeRef","relativeRefCapture","queryWithSquareBrackets","rfc3986","ipv4","ipv6","ipvfuture","createRegex","allowQuerySquareBrackets","uriRegex","operators","operatorCharacters","operatorsOrder","operatorsPrefix","literals","tokenRx","settings","_parts","_subFormula","calculate","exists","$ul","regExpEscape","sortByLength","assignPair","pair","keyboard","dismiss","navigate","showingDrawer","renderedList","NO_MATCH","UPPER_BOUND","NEXT","BaseAutocomplete","framework","hyperscript","nullableOverrides","chosen","getList","getInput","getChosen","getOpen","minChars","maxItems","filteredList","eventNames","oninput","onfocus","onblur","onkeydown","onmousedown","choose","clickItem","PATTERN_INPUT","mark","highlight","initial","output","processed","currentTarget","renderInput","itemClassNames","renderItem","renderItems","renderRoot","keyboardSubmit","keyboardDismiss","keyboardNavigate","new_chosen","new_highlighted","queries","ul","Vnode","schedule","subscriptions","pending","offset","sync","redraw","mount","component","view","buildPathname","parsePathname","compileTemplate","censor","sentinel","decodeURIComponentSave","decodeURIComponent","$window","mountRedraw","compiled","fallbackRoute","currentPath","lastUpdate","callAsync","setImmediate","scheduled","currentResolver","RouterRoot","onbeforeupdate","onremove","fireAsync","resolveRoute","vnode","SKIP","route","setPath","params","loop","check","payload","matchedRoute","localComp","update","comp","onmatch","replaceState","defaultRoute","routes","SyntaxError","defaultData","Link","onclick","Boolean","handleEvent","param","trust","Fragment","jsonp","parseQueryString","buildQueryString","PromisePolyfill","queryIndex","hashIndex","queryEnd","pathEnd","resolved","variadic","encodeURIComponent","newQueryIndex","newHashIndex","newQueryEnd","newPathEnd","querystring","templateData","templateKeys","regexp","extra","executor","resolvers","rejectors","resolveCurrent","handler","rejectCurrent","_instance","shouldAbsorb","execute","retry","executeOnce","runs","run","onFulfilled","onRejection","resolveNext","rejectNext","handle","finally","total","count","consume","race","destructure","counters","levels","cursor","level","nextLevel","hyperscriptVnode","normalizeChildren","selectorParser","selectorCache","isEmpty","hasClass","newAttrs","execSelector","attrValue","compileSelector","currentRedraw","$doc","nameSpace","svg","math","getNameSpace","xmlns","checkState","callHook","createNodes","vnodes","hooks","createNode","initLifecycle","dom","createTextNode","insertNode","createText","createHTML","domSize","createFragment","createElementNS","isFileInput","setAttr","setAttrs","maybeSetContentEditable","selectedIndex","normalized","setLateSelectAttrs","$$reentrantLock$$","initComponent","createComponent","possibleParents","caption","thead","tbody","tfoot","tr","th","td","colgroup","col","temp","updateNodes","old","removeNodes","isOldKeyed","isKeyed","oldStart","oe","ve","topSibling","oldEnd","updateNode","getNextSibling","moveNodes","lisIndices","originalNextSibling","vnodesLength","oldIndices","li","matched","getKeyMap","oldIndex","il","lisTemp","makeLisIndices","commonLength","removeNode","oldTag","force","shouldNotUpdate","updateLifecycle","nodeValue","updateText","removeHTML","updateHTML","updateFragment","removeAttr","updateAttrs","updateElement","updateComponent","frag","moveChildToFrag","contenteditable","contentEditable","content","stateResult","attrsResult","onbeforeremove","reallyRemove","isLifecycleMethod","isFormAttribute","updateEvent","setAttributeNS","updateStyle","hasPropertyKey","nsLastIndex","currentDOM","uppercaseRegex","capital","normalizeKey","cssText","setProperty","removeProperty","EventDict","oninit","oncreate","onupdate","ev","prevRedraw","prevDOM","namespaceURI","textContent","oncompletion","callbackCount","PromiseProxy","makeRequest","background","complete","hasHeader","replacedAbort","assumeJSON","serialize","FormData","URLSearchParams","responseType","aborted","isTimeout","abort","user","deserialize","withCredentials","onreadystatechange","success","completeErrorResponse","ontimeout","callbackName","script","callbackKey","magic","extras","eq","maxKeys","kstr","vstr","xs","stringifyPrimitive","objectKeys","ks","_arity","_curry1","_curry2","_curryN","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","_isPlaceholder","f1","f2","received","combined","argsIdx","combinedIdx","replacePlaceholders","translation","replCache","assemble","translate","translationKey","subKey","translationIsObject","complex","tmp","propValue","plFunc","mappedCount","getPluralValue","pluralize","useKeyForMissingTranslation","translateToArray","normalArrayOption","translatejs","messageObject","resolveAliases","tFunc","translations","keysInProcess","keyParts","LuxonError","ZoneIsAbstractError","Zone","ianaName","isUniversal","offsetName","ts","formatOffset","equals","otherZone","dtfCache","typeToPos","year","month","era","ianaZoneCache","IANAZone","resetCache","isValidSpecifier","isValidZone","zone","zoneName","parseZoneInfo","locale","NaN","dtf","hour12","adOrBc","formatToParts","formatted","filled","isUndefined","partsOffset","parsed","fMonth","fDay","fYear","fadOrBc","fHour","fMinute","fSecond","hackyOffset","asTS","over","objToLocalTS","millisecond","FixedOffsetZone","utcInstance","parseSpecifier","signedOffset","fixed","padded","parseInteger","parseMillis","fraction","UTC","setUTCFullYear","offsetFormat","intlOpts","hourCycle","modified","timeZoneName","offHourStr","offMinuteStr","offHour","offMin","hours","minutes","RangeError","ianaRegex","combineRegexes","regexes","full","combineExtractors","extractors","mergedVals","mergedZone","ex","simpleParse","ret","offsetRegex","isoTimeBaseRegex","isoTimeRegex","isoTimeExtensionRegex","extractISOWeekData","extractISOOrdinalData","sqlTimeRegex","sqlTimeExtensionRegex","fallback","extractISOTime","seconds","milliseconds","extractISOOffset","fullOffset","extractIANAZone","lowOrderMatrix","weeks","days","orderedUnits","numberingSystems","arab","arabext","bali","beng","deva","fullwide","gujr","hanidec","khmr","knda","laoo","limb","mlym","mong","mymr","orya","tamldec","telu","thai","tibt","latn","spaceOrNBSP"],"sourceRoot":""}