1 line
2.8 MiB
1 line
2.8 MiB
{"version":3,"file":"bundle.js","sources":["../../builder/node_modules/svelte/internal/index.mjs","../../builder/src/common/Button.svelte","../../builder/node_modules/lodash/lodash.min.js","../../builder/node_modules/lodash/fp/_mapping.js","../../builder/node_modules/lodash/fp/placeholder.js","../../builder/node_modules/lodash/fp/_baseConvert.js","../../builder/node_modules/lodash/fp.js","../../builder/node_modules/shortid/lib/random/random-from-seed.js","../../builder/node_modules/shortid/lib/alphabet.js","../../builder/node_modules/shortid/lib/random/random-byte-browser.js","../../builder/node_modules/nanoid/format.js","../../builder/node_modules/shortid/lib/generate.js","../../builder/node_modules/shortid/lib/build.js","../../builder/node_modules/shortid/lib/is-valid.js","../../builder/node_modules/shortid/lib/index.js","../../builder/node_modules/shortid/index.js","../../builder/node_modules/lodash/lodash.js","../../core/src/common/events.js","../../core/src/common/errors.js","../../core/src/common/apiWrapper.js","../../core/src/common/lock.js","../../core/src/common/index.js","../../core/src/common/validationCommon.js","../../builder/node_modules/rollup-plugin-node-globals/src/global.js","../../builder/node_modules/@nx-js/compiler-util/dist/es.es5.js","../../core/src/indexing/evaluate.js","../../core/src/templateApi/indexes.js","../../core/src/templateApi/hierarchy.js","../../core/src/types/typeHelpers.js","../../core/src/types/string.js","../../core/src/types/bool.js","../../core/src/types/number.js","../../core/src/types/datetime.js","../../core/src/types/array.js","../../core/src/types/reference.js","../../core/src/types/file.js","../../core/src/types/index.js","../../core/src/authApi/authCommon.js","../../core/src/authApi/isAuthorized.js","../../core/src/authApi/permissions.js","../../core/src/recordApi/getNew.js","../../builder/node_modules/lunr/lunr.js","../../core/src/indexing/indexSchemaCreator.js","../../builder/node_modules/buffer-es6/base64.js","../../builder/node_modules/buffer-es6/ieee754.js","../../builder/node_modules/buffer-es6/isArray.js","../../builder/node_modules/buffer-es6/index.js","../../builder/node_modules/safe-buffer/index.js","../../core/src/transactions/transactionsCommon.js","../../core/src/templateApi/createNodes.js","../../core/src/templateApi/fields.js","../../core/src/templateApi/recordValidationRules.js","../../core/src/templateApi/createActions.js","../../core/src/templateApi/validateAggregate.js","../../core/src/templateApi/validate.js","../../core/src/templateApi/getApplicationDefinition.js","../../core/src/templateApi/saveApplicationHierarchy.js","../../core/src/templateApi/saveActionsAndTriggers.js","../../core/src/templateApi/index.js","../../core/src/templateApi/getBehaviourSources.js","../../core/src/authApi/getUsers.js","../../core/src/authApi/loadAccessLevels.js","../../core/src/authApi/authenticate.js","../../core/src/authApi/createTemporaryAccess.js","../../core/src/authApi/validateUser.js","../../core/src/authApi/getNewUser.js","../../core/src/authApi/setPassword.js","../../core/src/authApi/createUser.js","../../core/src/authApi/enableUser.js","../../core/src/authApi/validateAccessLevels.js","../../core/src/authApi/saveAccessLevels.js","../../core/src/authApi/generateFullPermissions.js","../../core/src/authApi/setUserAccessLevels.js","../../core/src/index.js","../../builder/src/common/core.js","../../core/src/authApi/index.js","../../core/src/authApi/getNewAccessLevel.js","../../builder/node_modules/svelte/store/index.mjs","../../builder/src/userInterface/pagesParsing/defaultPagesObject.js","../../client/src/state/setState.js","../../client/src/common/trimSlash.js","../../client/src/api/loadRecord.js","../../client/src/api/listRecords.js","../../client/src/api/authenticate.js","../../client/src/api/saveRecord.js","../../client/src/state/coreHandlers.js","../../client/src/state/standardState.js","../../client/src/state/eventHandlers.js","../../client/src/api/index.js","../../client/src/state/getState.js","../../builder/src/common/eventHandlers.js","../../client/src/core/index.js","../../client/src/core/createCoreApp.js","../../builder/src/userInterface/pagesParsing/types.js","../../client/src/state/isState.js","../../builder/src/userInterface/pagesParsing/searchComponents.js","../../builder/src/userInterface/pagesParsing/createProps.js","../../builder/src/userInterface/pagesParsing/buildPropsHierarchy.js","../../builder/src/builderStore/api.js","../../builder/src/userInterface/pagesParsing/renameComponent.js","../../builder/src/builderStore/loadComponentLibraries.js","../../builder/src/builderStore/store.js","../../builder/src/builderStore/index.js","../../builder/src/NoPackage.svelte","../../builder/node_modules/feather-icons/dist/feather.js","../../builder/src/common/icon.js","../../builder/src/common/IconButton.svelte","../../builder/src/userInterface/ComponentsHierarchy.svelte","../../builder/src/userInterface/PagesList.svelte","../../builder/src/common/Checkbox.svelte","../../builder/src/common/Textbox.svelte","../../builder/src/common/Dropdown.svelte","../../builder/node_modules/process-es6/browser.js","../../builder/node_modules/rollup-plugin-node-builtins/src/es6/util.js","../../builder/src/common/binding.js","../../builder/src/userInterface/pagesParsing/validateProps.js","../../builder/src/userInterface/pagesParsing/splitRootComponentName.js","../../builder/src/userInterface/ComponentSelector.svelte","../../builder/src/common/ButtonGroup.svelte","../../builder/node_modules/uikit/dist/js/uikit.js","../../builder/src/userInterface/ComponentPropSelector.svelte","../../builder/src/userInterface/PropArraySelector.svelte","../../builder/src/userInterface/StateBindingControl.svelte","../../builder/src/userInterface/EventSelector.svelte","../../builder/src/userInterface/EventListSelector.svelte","../../builder/src/userInterface/PropControl.svelte","../../builder/src/userInterface/PropsView.svelte","../../builder/node_modules/svelte/easing/index.mjs","../../builder/node_modules/svelte/transition/index.mjs","../../builder/src/userInterface/ComponentInstanceEditor.svelte","../../builder/src/userInterface/EditComponent.svelte","../../builder/src/common/Modal.svelte","../../builder/src/userInterface/pagesParsing/findDependencies.js","../../builder/src/userInterface/GeneratedComponents.svelte","../../builder/src/userInterface/NewComponent.svelte","../../builder/src/userInterface/CurrentItemPreview.svelte","../../builder/src/userInterface/SettingsView.svelte","../../builder/src/userInterface/PageView.svelte","../../builder/src/userInterface/UserInterfaceRoot.svelte","../../builder/src/nav/HierarchyRow.svelte","../../builder/src/common/DropdownButton.svelte","../../builder/src/nav/NavItem.svelte","../../builder/src/nav/BackendNav.svelte","../../builder/src/common/NumberBox.svelte","../../builder/src/common/ValuesList.svelte","../../builder/src/common/ErrorsBox.svelte","../../builder/node_modules/flatpickr/dist/flatpickr.js","../../builder/src/common/DatePicker.svelte","../../builder/src/database/FieldView.svelte","../../builder/src/database/RecordView.svelte","../../builder/src/common/CodeArea.svelte","../../builder/src/database/IndexView.svelte","../../builder/src/database/ActionsHeader.svelte","../../builder/src/database/DatabaseRoot.svelte","../../builder/src/actionsAndTriggers/ActionView.svelte","../../builder/src/actionsAndTriggers/Actions.svelte","../../builder/src/actionsAndTriggers/TriggerView.svelte","../../builder/src/actionsAndTriggers/Triggers.svelte","../../builder/src/actionsAndTriggers/ActionsAndTriggersRoot.svelte","../../builder/src/accessLevels/AccessLevelView.svelte","../../builder/src/accessLevels/AccessLevelsRoot.svelte","../../builder/src/BackendRoot.svelte","../../builder/src/PackageRoot.svelte","../../builder/src/App.svelte","../../builder/node_modules/uikit/dist/js/uikit.min.js","../../builder/src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction validate_store(store, name) {\n if (!store || typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, callback) {\n const unsub = store.subscribe(callback);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.ctx, definition[1](fn ? fn(ctx) : {})))\n : ctx.$$scope.ctx;\n}\nfunction get_slot_changes(definition, ctx, changed, fn) {\n return definition[1]\n ? assign({}, assign(ctx.$$scope.changed || {}, definition[1](fn ? fn(changed) : {})))\n : ctx.$$scope.changed || {};\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value = ret) {\n store.set(value);\n return ret;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nlet running = false;\nfunction run_tasks() {\n tasks.forEach(task => {\n if (!task[0](now())) {\n tasks.delete(task);\n task[1]();\n }\n });\n running = tasks.size > 0;\n if (running)\n raf(run_tasks);\n}\nfunction clear_loops() {\n // for testing...\n tasks.forEach(task => tasks.delete(task));\n running = false;\n}\nfunction loop(fn) {\n let task;\n if (!running) {\n running = true;\n raf(run_tasks);\n }\n return {\n promise: new Promise(fulfil => {\n tasks.add(task = [fn, fulfil]);\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n // eslint-disable-next-line @typescript-eslint/no-object-literal-type-assertion\n const target = {};\n for (const k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n for (const key in attributes) {\n if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key in node) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group) {\n const value = [];\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.push(group[i].__value);\n }\n return value;\n}\nfunction to_number(value) {\n return value === '' ? undefined : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction claim_element(nodes, name, attributes, svg) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeName === name) {\n for (let j = 0; j < node.attributes.length; j += 1) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name])\n node.removeAttribute(attribute.name);\n }\n return nodes.splice(i, 1)[0]; // TODO strip unwanted attributes\n }\n }\n return svg ? svg_element(name) : element(name);\n}\nfunction claim_text(nodes, data) {\n for (let i = 0; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 3) {\n node.data = '' + data;\n return nodes.splice(i, 1)[0];\n }\n }\n return text(data);\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.data !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n if (value != null || input.value) {\n input.value = value;\n }\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n node.style.setProperty(key, value, important ? 'important' : '');\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\nfunction add_resize_listener(element, fn) {\n if (getComputedStyle(element).position === 'static') {\n element.style.position = 'relative';\n }\n const object = document.createElement('object');\n object.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; pointer-events: none; z-index: -1;');\n object.type = 'text/html';\n object.tabIndex = -1;\n let win;\n object.onload = () => {\n win = object.contentDocument.defaultView;\n win.addEventListener('resize', fn);\n };\n if (/Trident/.test(navigator.userAgent)) {\n element.appendChild(object);\n object.data = 'about:blank';\n }\n else {\n object.data = 'about:blank';\n element.appendChild(object);\n }\n return {\n cancel: () => {\n win && win.removeEventListener && win.removeEventListener('resize', fn);\n element.removeChild(object);\n }\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, false, false, detail);\n return e;\n}\nclass HtmlTag {\n constructor(html, anchor = null) {\n this.e = element('div');\n this.a = anchor;\n this.u(html);\n }\n m(target, anchor = null) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(target, this.n[i], anchor);\n }\n this.t = target;\n }\n u(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n p(html) {\n this.d();\n this.u(html);\n this.m(this.t, this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\n\nlet stylesheet;\nlet active = 0;\nlet current_rules = {};\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n if (!current_rules[name]) {\n if (!stylesheet) {\n const style = element('style');\n document.head.appendChild(style);\n stylesheet = style.sheet;\n }\n current_rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ``}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n node.style.animation = (node.style.animation || '')\n .split(', ')\n .filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n )\n .join(', ');\n if (name && !--active)\n clear_rules();\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n current_rules = {};\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error(`Function called outside component initialization`);\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = current_component;\n return (type, detail) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail);\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n }\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n callbacks.slice().forEach(fn => fn(event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\nfunction flush() {\n const seen_callbacks = new Set();\n do {\n // first, call beforeUpdate functions\n // and update components\n while (dirty_components.length) {\n const component = dirty_components.shift();\n set_current_component(component);\n update(component.$$);\n }\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n callback();\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n}\nfunction update($$) {\n if ($$.fragment) {\n $$.update($$.dirty);\n run_all($$.before_update);\n $$.fragment.p($$.dirty, $$.ctx);\n $$.dirty = null;\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = program.b - t;\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = key && { [key]: value };\n const child_ctx = assign(assign({}, info.ctx), info.resolved);\n const block = type && (info.current = type)(child_ctx);\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n info.blocks[i] = null;\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n flush();\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = { [info.value]: promise };\n }\n}\n\nconst globals = (typeof window !== 'undefined' ? window : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, changed, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(changed, child_ctx);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction measure(blocks) {\n const rects = {};\n let i = blocks.length;\n while (i--)\n rects[blocks[i].key] = blocks[i].node.getBoundingClientRect();\n return rects;\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args) {\n const attributes = Object.assign({}, ...args);\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === undefined)\n return;\n if (value === true)\n str += \" \" + name;\n const escaped = String(value)\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n str += \" \" + name + \"=\" + JSON.stringify(escaped);\n });\n return str;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(parent_component ? parent_component.$$.context : []),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, options = {}) => {\n on_destroy = [];\n const result = { head: '', css: new Set() };\n const html = $$render(result, props, {}, options);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n return ` ${name}${value === true ? '' : `=${typeof value === 'string' ? JSON.stringify(escape(value)) : `\"${value}\"`}`}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : ``;\n}\n\nfunction bind(component, name, callback) {\n if (component.$$.props.indexOf(name) === -1)\n return;\n component.$$.bound[name] = callback;\n callback(component.$$.ctx[name]);\n}\nfunction mount_component(component, target, anchor) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment.m(target, anchor);\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n if (component.$$.fragment) {\n run_all(component.$$.on_destroy);\n component.$$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n component.$$.on_destroy = component.$$.fragment = null;\n component.$$.ctx = {};\n }\n}\nfunction make_dirty(component, key) {\n if (!component.$$.dirty) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty = blank_object();\n }\n component.$$.dirty[key] = true;\n}\nfunction init(component, options, instance, create_fragment, not_equal, prop_names) {\n const parent_component = current_component;\n set_current_component(component);\n const props = options.props || {};\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props: prop_names,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n before_update: [],\n after_update: [],\n context: new Map(parent_component ? parent_component.$$.context : []),\n // everything else\n callbacks: blank_object(),\n dirty: null\n };\n let ready = false;\n $$.ctx = instance\n ? instance(component, props, (key, ret, value = ret) => {\n if ($$.ctx && not_equal($$.ctx[key], $$.ctx[key] = value)) {\n if ($$.bound[key])\n $$.bound[key](value);\n if (ready)\n make_dirty(component, key);\n }\n return ret;\n })\n : props;\n $$.update();\n ready = true;\n run_all($$.before_update);\n $$.fragment = create_fragment($$.ctx);\n if (options.target) {\n if (options.hydrate) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.l(children(options.target));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor);\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement !== 'undefined') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n };\n}\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set() {\n // overridden by instance, if it has props\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, detail));\n}\nfunction append_dev(target, node) {\n dispatch_dev(\"SvelteDOMInsert\", { target, node });\n append(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev(\"SvelteDOMInsert\", { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev(\"SvelteDOMRemove\", { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? [\"capture\"] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev(\"SvelteDOMAddEventListener\", { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev(\"SvelteDOMRemoveEventListener\", { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev(\"SvelteDOMRemoveAttribute\", { node, attribute });\n else\n dispatch_dev(\"SvelteDOMSetAttribute\", { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev(\"SvelteDOMSetProperty\", { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev(\"SvelteDOMSetDataset\", { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.data === data)\n return;\n dispatch_dev(\"SvelteDOMSetData\", { node: text, data });\n text.data = data;\n}\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(`'target' is a required option`);\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn(`Component was already destroyed`); // eslint-disable-line no-console\n };\n }\n}\n\nexport { HtmlTag, SvelteComponent, SvelteComponentDev, SvelteElement, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_transform, afterUpdate, append, append_dev, assign, attr, attr_dev, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_element, claim_space, claim_text, clear_loops, component_subscribe, createEventDispatcher, create_animation, create_bidirectional_transition, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, escape, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getContext, get_binding_group_value, get_current_component, get_slot_changes, get_slot_context, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, identity, init, insert, insert_dev, intros, invalid_attribute_name_character, is_client, is_function, is_promise, listen, listen_dev, loop, measure, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, update_keyed_each, validate_component, validate_store, xlink_attr };\n","<script>\n\nexport let color = \"primary\";\nexport let className = \"\";\nexport let style = \"\";\nexport let groupPosition = \"\";\nexport let grouped = false;\n\n$: borderClass = grouped \n ? \"\"\n : \"border-normal\";\n\n</script>\n\n<button class=\"{color} {className} {borderClass} {grouped ? \"grouped\" : \"\"}\" \n style=\"{style}\"\n on:click >\n <slot/>\n</button>\n\n<style>\n\n.border-normal { border-radius: var(--borderradiusall); }\n.border-left { border-radius: var(--borderradius) 0 0 var(--borderradius); }\n.border-right { border-radius: 0 var(--borderradius) var(--borderradius) 0; }\n.border-middle { border-radius: 0; }\n\nbutton { \n border-style: solid; \n padding: 7.5px 15px;\n cursor:pointer;\n margin:5px;\n border-radius: 5px;\n}\n\n/* ---- PRIMARY ----*/\n.primary {\n background-color: var(--primary100);\n border-color: var(--primary100);\n color: var(--white);\n}\n\n.primary:hover {\n background-color: var(--primary75);\n border-color: var(--primary75);\n}\n\n.primary:active {\n background-color: var(--primarydark);\n border-color: var(--primarydark);\n}\n\n.primary-outline {\n background-color: var(--white);\n border-color: var(--primary100);\n color: var(--primary100);\n}\n\n.primary-outline:hover {\n background-color: var(--primary10);\n}\n\n.primary-outline:pressed {\n background-color: var(--primary25);\n}\n\n/* ---- secondary ----*/\n\n.secondary {\n background-color: var(--secondary100);\n border-color: var(--secondary100);\n color: var(--white);\n}\n\n.secondary:hover {\n background-color: var(--secondary75);\n border-color: var(--secondary75);\n}\n\n.secondary:pressed {\n background-color: var(--secondarydark);\n border-color: var(--secondarydark);\n}\n\n.secondary-outline {\n background-color: var(--white);\n border-color: var(--secondary100);\n color: var(--secondary100);\n}\n\n.secondary-outline:hover {\n background-color: var(--secondary10);\n}\n\n.secondary-outline:pressed {\n background-color: var(--secondary25);\n}\n\n\n/* ---- success ----*/\n.success {\n background-color: var(--success100);\n border-color: var(--success100);\n color: var(--white);\n}\n\n.success:hover {\n background-color: var(--success75);\n border-color: var(--success75);\n}\n\n.success:pressed {\n background-color: var(--successdark);\n border-color: var(--successdark);\n}\n\n.success-outline {\n background-color: var(--white);\n border-color: var(--success100);\n color: var(--success100);\n}\n\n.success-outline:hover {\n background-color: var(--success10);\n}\n\n.success-outline:pressed {\n background-color: var(--success25);\n}\n\n/* ---- deletion ----*/\n.deletion {\n background-color: var(--deletion100);\n border-color: var(--deletion100);\n color: var(--white);\n}\n\n.deletion:hover {\n background-color: var(--deletion75);\n border-color: var(--deletion75);\n}\n\n.deletion:pressed {\n background-color: var(--deletiondark);\n border-color: var(--deletiondark);\n}\n\n.deletion-outline {\n background-color: var(--white);\n border-color: var(--deletion100);\n color: var(--deletion100);\n}\n\n.deletion-outline:hover {\n background-color: var(--deletion10);\n}\n\n.deletion-outline:pressed {\n background-color: var(--deletion25);\n}\n\n\n</style>","/**\n * @license\n * Lodash lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE\n */\n;(function(){function n(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function t(n,t,r,e){for(var u=-1,i=null==n?0:n.length;++u<i;){var o=n[u];t(e,o,r(o),n)}return e}function r(n,t){for(var r=-1,e=null==n?0:n.length;++r<e&&false!==t(n[r],r,n););return n}function e(n,t){for(var r=null==n?0:n.length;r--&&false!==t(n[r],r,n););return n}function u(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(!t(n[r],r,n))return false;\nreturn true}function i(n,t){for(var r=-1,e=null==n?0:n.length,u=0,i=[];++r<e;){var o=n[r];t(o,r,n)&&(i[u++]=o)}return i}function o(n,t){return!(null==n||!n.length)&&-1<v(n,t,0)}function f(n,t,r){for(var e=-1,u=null==n?0:n.length;++e<u;)if(r(t,n[e]))return true;return false}function c(n,t){for(var r=-1,e=null==n?0:n.length,u=Array(e);++r<e;)u[r]=t(n[r],r,n);return u}function a(n,t){for(var r=-1,e=t.length,u=n.length;++r<e;)n[u+r]=t[r];return n}function l(n,t,r,e){var u=-1,i=null==n?0:n.length;for(e&&i&&(r=n[++u]);++u<i;)r=t(r,n[u],u,n);\nreturn r}function s(n,t,r,e){var u=null==n?0:n.length;for(e&&u&&(r=n[--u]);u--;)r=t(r,n[u],u,n);return r}function h(n,t){for(var r=-1,e=null==n?0:n.length;++r<e;)if(t(n[r],r,n))return true;return false}function p(n,t,r){var e;return r(n,function(n,r,u){if(t(n,r,u))return e=r,false}),e}function _(n,t,r,e){var u=n.length;for(r+=e?1:-1;e?r--:++r<u;)if(t(n[r],r,n))return r;return-1}function v(n,t,r){if(t===t)n:{--r;for(var e=n.length;++r<e;)if(n[r]===t){n=r;break n}n=-1}else n=_(n,d,r);return n}function g(n,t,r,e){\n--r;for(var u=n.length;++r<u;)if(e(n[r],t))return r;return-1}function d(n){return n!==n}function y(n,t){var r=null==n?0:n.length;return r?m(n,t)/r:F}function b(n){return function(t){return null==t?T:t[n]}}function x(n){return function(t){return null==n?T:n[t]}}function j(n,t,r,e,u){return u(n,function(n,u,i){r=e?(e=false,n):t(r,n,u,i)}),r}function w(n,t){var r=n.length;for(n.sort(t);r--;)n[r]=n[r].c;return n}function m(n,t){for(var r,e=-1,u=n.length;++e<u;){var i=t(n[e]);i!==T&&(r=r===T?i:r+i)}return r;\n}function A(n,t){for(var r=-1,e=Array(n);++r<n;)e[r]=t(r);return e}function E(n,t){return c(t,function(t){return[t,n[t]]})}function k(n){return function(t){return n(t)}}function S(n,t){return c(t,function(t){return n[t]})}function O(n,t){return n.has(t)}function I(n,t){for(var r=-1,e=n.length;++r<e&&-1<v(t,n[r],0););return r}function R(n,t){for(var r=n.length;r--&&-1<v(t,n[r],0););return r}function z(n){return\"\\\\\"+Un[n]}function W(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n];\n}),r}function B(n,t){return function(r){return n(t(r))}}function L(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){var o=n[r];o!==t&&\"__lodash_placeholder__\"!==o||(n[r]=\"__lodash_placeholder__\",i[u++]=r)}return i}function U(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=n}),r}function C(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=[n,n]}),r}function D(n){if(Rn.test(n)){for(var t=On.lastIndex=0;On.test(n);)++t;n=t}else n=Qn(n);return n}function M(n){return Rn.test(n)?n.match(On)||[]:n.split(\"\");\n}var T,$=1/0,F=NaN,N=[[\"ary\",128],[\"bind\",1],[\"bindKey\",2],[\"curry\",8],[\"curryRight\",16],[\"flip\",512],[\"partial\",32],[\"partialRight\",64],[\"rearg\",256]],P=/\\b__p\\+='';/g,Z=/\\b(__p\\+=)''\\+/g,q=/(__e\\(.*?\\)|\\b__t\\))\\+'';/g,V=/&(?:amp|lt|gt|quot|#39);/g,K=/[&<>\"']/g,G=RegExp(V.source),H=RegExp(K.source),J=/<%-([\\s\\S]+?)%>/g,Y=/<%([\\s\\S]+?)%>/g,Q=/<%=([\\s\\S]+?)%>/g,X=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,nn=/^\\w*$/,tn=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,rn=/[\\\\^$.*+?()[\\]{}|]/g,en=RegExp(rn.source),un=/^\\s+|\\s+$/g,on=/^\\s+/,fn=/\\s+$/,cn=/\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,an=/\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,ln=/,? & /,sn=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g,hn=/\\\\(\\\\)?/g,pn=/\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g,_n=/\\w*$/,vn=/^[-+]0x[0-9a-f]+$/i,gn=/^0b[01]+$/i,dn=/^\\[object .+?Constructor\\]$/,yn=/^0o[0-7]+$/i,bn=/^(?:0|[1-9]\\d*)$/,xn=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,jn=/($^)/,wn=/['\\n\\r\\u2028\\u2029\\\\]/g,mn=\"[\\\\ufe0e\\\\ufe0f]?(?:[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|\\\\ud83c[\\\\udffb-\\\\udfff])?(?:\\\\u200d(?:[^\\\\ud800-\\\\udfff]|(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}|[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff])[\\\\ufe0e\\\\ufe0f]?(?:[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|\\\\ud83c[\\\\udffb-\\\\udfff])?)*\",An=\"(?:[\\\\u2700-\\\\u27bf]|(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}|[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff])\"+mn,En=\"(?:[^\\\\ud800-\\\\udfff][\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]?|[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]|(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}|[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]|[\\\\ud800-\\\\udfff])\",kn=RegExp(\"['\\u2019]\",\"g\"),Sn=RegExp(\"[\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff]\",\"g\"),On=RegExp(\"\\\\ud83c[\\\\udffb-\\\\udfff](?=\\\\ud83c[\\\\udffb-\\\\udfff])|\"+En+mn,\"g\"),In=RegExp([\"[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]?[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]+(?:['\\u2019](?:d|ll|m|re|s|t|ve))?(?=[\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000]|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]|$)|(?:[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]|[^\\\\ud800-\\\\udfff\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\\\\d+\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde])+(?:['\\u2019](?:D|LL|M|RE|S|T|VE))?(?=[\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000]|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde](?:[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]|[^\\\\ud800-\\\\udfff\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\\\\d+\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde])|$)|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]?(?:[a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff]|[^\\\\ud800-\\\\udfff\\\\xac\\\\xb1\\\\xd7\\\\xf7\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\\\\u2000-\\\\u206f \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\\\\d+\\\\u2700-\\\\u27bfa-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xffA-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde])+(?:['\\u2019](?:d|ll|m|re|s|t|ve))?|[A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde]+(?:['\\u2019](?:D|LL|M|RE|S|T|VE))?|\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])|\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])|\\\\d+\",An].join(\"|\"),\"g\"),Rn=RegExp(\"[\\\\u200d\\\\ud800-\\\\udfff\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe2f\\\\u20d0-\\\\u20ff\\\\ufe0e\\\\ufe0f]\"),zn=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Wn=\"Array Buffer DataView Date Error Float32Array Float64Array Function Int8Array Int16Array Int32Array Map Math Object Promise RegExp Set String Symbol TypeError Uint8Array Uint8ClampedArray Uint16Array Uint32Array WeakMap _ clearTimeout isFinite parseInt setTimeout\".split(\" \"),Bn={};\nBn[\"[object Float32Array]\"]=Bn[\"[object Float64Array]\"]=Bn[\"[object Int8Array]\"]=Bn[\"[object Int16Array]\"]=Bn[\"[object Int32Array]\"]=Bn[\"[object Uint8Array]\"]=Bn[\"[object Uint8ClampedArray]\"]=Bn[\"[object Uint16Array]\"]=Bn[\"[object Uint32Array]\"]=true,Bn[\"[object Arguments]\"]=Bn[\"[object Array]\"]=Bn[\"[object ArrayBuffer]\"]=Bn[\"[object Boolean]\"]=Bn[\"[object DataView]\"]=Bn[\"[object Date]\"]=Bn[\"[object Error]\"]=Bn[\"[object Function]\"]=Bn[\"[object Map]\"]=Bn[\"[object Number]\"]=Bn[\"[object Object]\"]=Bn[\"[object RegExp]\"]=Bn[\"[object Set]\"]=Bn[\"[object String]\"]=Bn[\"[object WeakMap]\"]=false;\nvar Ln={};Ln[\"[object Arguments]\"]=Ln[\"[object Array]\"]=Ln[\"[object ArrayBuffer]\"]=Ln[\"[object DataView]\"]=Ln[\"[object Boolean]\"]=Ln[\"[object Date]\"]=Ln[\"[object Float32Array]\"]=Ln[\"[object Float64Array]\"]=Ln[\"[object Int8Array]\"]=Ln[\"[object Int16Array]\"]=Ln[\"[object Int32Array]\"]=Ln[\"[object Map]\"]=Ln[\"[object Number]\"]=Ln[\"[object Object]\"]=Ln[\"[object RegExp]\"]=Ln[\"[object Set]\"]=Ln[\"[object String]\"]=Ln[\"[object Symbol]\"]=Ln[\"[object Uint8Array]\"]=Ln[\"[object Uint8ClampedArray]\"]=Ln[\"[object Uint16Array]\"]=Ln[\"[object Uint32Array]\"]=true,\nLn[\"[object Error]\"]=Ln[\"[object Function]\"]=Ln[\"[object WeakMap]\"]=false;var Un={\"\\\\\":\"\\\\\",\"'\":\"'\",\"\\n\":\"n\",\"\\r\":\"r\",\"\\u2028\":\"u2028\",\"\\u2029\":\"u2029\"},Cn=parseFloat,Dn=parseInt,Mn=typeof global==\"object\"&&global&&global.Object===Object&&global,Tn=typeof self==\"object\"&&self&&self.Object===Object&&self,$n=Mn||Tn||Function(\"return this\")(),Fn=typeof exports==\"object\"&&exports&&!exports.nodeType&&exports,Nn=Fn&&typeof module==\"object\"&&module&&!module.nodeType&&module,Pn=Nn&&Nn.exports===Fn,Zn=Pn&&Mn.process,qn=function(){\ntry{var n=Nn&&Nn.f&&Nn.f(\"util\").types;return n?n:Zn&&Zn.binding&&Zn.binding(\"util\")}catch(n){}}(),Vn=qn&&qn.isArrayBuffer,Kn=qn&&qn.isDate,Gn=qn&&qn.isMap,Hn=qn&&qn.isRegExp,Jn=qn&&qn.isSet,Yn=qn&&qn.isTypedArray,Qn=b(\"length\"),Xn=x({\"\\xc0\":\"A\",\"\\xc1\":\"A\",\"\\xc2\":\"A\",\"\\xc3\":\"A\",\"\\xc4\":\"A\",\"\\xc5\":\"A\",\"\\xe0\":\"a\",\"\\xe1\":\"a\",\"\\xe2\":\"a\",\"\\xe3\":\"a\",\"\\xe4\":\"a\",\"\\xe5\":\"a\",\"\\xc7\":\"C\",\"\\xe7\":\"c\",\"\\xd0\":\"D\",\"\\xf0\":\"d\",\"\\xc8\":\"E\",\"\\xc9\":\"E\",\"\\xca\":\"E\",\"\\xcb\":\"E\",\"\\xe8\":\"e\",\"\\xe9\":\"e\",\"\\xea\":\"e\",\"\\xeb\":\"e\",\"\\xcc\":\"I\",\n\"\\xcd\":\"I\",\"\\xce\":\"I\",\"\\xcf\":\"I\",\"\\xec\":\"i\",\"\\xed\":\"i\",\"\\xee\":\"i\",\"\\xef\":\"i\",\"\\xd1\":\"N\",\"\\xf1\":\"n\",\"\\xd2\":\"O\",\"\\xd3\":\"O\",\"\\xd4\":\"O\",\"\\xd5\":\"O\",\"\\xd6\":\"O\",\"\\xd8\":\"O\",\"\\xf2\":\"o\",\"\\xf3\":\"o\",\"\\xf4\":\"o\",\"\\xf5\":\"o\",\"\\xf6\":\"o\",\"\\xf8\":\"o\",\"\\xd9\":\"U\",\"\\xda\":\"U\",\"\\xdb\":\"U\",\"\\xdc\":\"U\",\"\\xf9\":\"u\",\"\\xfa\":\"u\",\"\\xfb\":\"u\",\"\\xfc\":\"u\",\"\\xdd\":\"Y\",\"\\xfd\":\"y\",\"\\xff\":\"y\",\"\\xc6\":\"Ae\",\"\\xe6\":\"ae\",\"\\xde\":\"Th\",\"\\xfe\":\"th\",\"\\xdf\":\"ss\",\"\\u0100\":\"A\",\"\\u0102\":\"A\",\"\\u0104\":\"A\",\"\\u0101\":\"a\",\"\\u0103\":\"a\",\"\\u0105\":\"a\",\"\\u0106\":\"C\",\n\"\\u0108\":\"C\",\"\\u010a\":\"C\",\"\\u010c\":\"C\",\"\\u0107\":\"c\",\"\\u0109\":\"c\",\"\\u010b\":\"c\",\"\\u010d\":\"c\",\"\\u010e\":\"D\",\"\\u0110\":\"D\",\"\\u010f\":\"d\",\"\\u0111\":\"d\",\"\\u0112\":\"E\",\"\\u0114\":\"E\",\"\\u0116\":\"E\",\"\\u0118\":\"E\",\"\\u011a\":\"E\",\"\\u0113\":\"e\",\"\\u0115\":\"e\",\"\\u0117\":\"e\",\"\\u0119\":\"e\",\"\\u011b\":\"e\",\"\\u011c\":\"G\",\"\\u011e\":\"G\",\"\\u0120\":\"G\",\"\\u0122\":\"G\",\"\\u011d\":\"g\",\"\\u011f\":\"g\",\"\\u0121\":\"g\",\"\\u0123\":\"g\",\"\\u0124\":\"H\",\"\\u0126\":\"H\",\"\\u0125\":\"h\",\"\\u0127\":\"h\",\"\\u0128\":\"I\",\"\\u012a\":\"I\",\"\\u012c\":\"I\",\"\\u012e\":\"I\",\"\\u0130\":\"I\",\"\\u0129\":\"i\",\n\"\\u012b\":\"i\",\"\\u012d\":\"i\",\"\\u012f\":\"i\",\"\\u0131\":\"i\",\"\\u0134\":\"J\",\"\\u0135\":\"j\",\"\\u0136\":\"K\",\"\\u0137\":\"k\",\"\\u0138\":\"k\",\"\\u0139\":\"L\",\"\\u013b\":\"L\",\"\\u013d\":\"L\",\"\\u013f\":\"L\",\"\\u0141\":\"L\",\"\\u013a\":\"l\",\"\\u013c\":\"l\",\"\\u013e\":\"l\",\"\\u0140\":\"l\",\"\\u0142\":\"l\",\"\\u0143\":\"N\",\"\\u0145\":\"N\",\"\\u0147\":\"N\",\"\\u014a\":\"N\",\"\\u0144\":\"n\",\"\\u0146\":\"n\",\"\\u0148\":\"n\",\"\\u014b\":\"n\",\"\\u014c\":\"O\",\"\\u014e\":\"O\",\"\\u0150\":\"O\",\"\\u014d\":\"o\",\"\\u014f\":\"o\",\"\\u0151\":\"o\",\"\\u0154\":\"R\",\"\\u0156\":\"R\",\"\\u0158\":\"R\",\"\\u0155\":\"r\",\"\\u0157\":\"r\",\"\\u0159\":\"r\",\n\"\\u015a\":\"S\",\"\\u015c\":\"S\",\"\\u015e\":\"S\",\"\\u0160\":\"S\",\"\\u015b\":\"s\",\"\\u015d\":\"s\",\"\\u015f\":\"s\",\"\\u0161\":\"s\",\"\\u0162\":\"T\",\"\\u0164\":\"T\",\"\\u0166\":\"T\",\"\\u0163\":\"t\",\"\\u0165\":\"t\",\"\\u0167\":\"t\",\"\\u0168\":\"U\",\"\\u016a\":\"U\",\"\\u016c\":\"U\",\"\\u016e\":\"U\",\"\\u0170\":\"U\",\"\\u0172\":\"U\",\"\\u0169\":\"u\",\"\\u016b\":\"u\",\"\\u016d\":\"u\",\"\\u016f\":\"u\",\"\\u0171\":\"u\",\"\\u0173\":\"u\",\"\\u0174\":\"W\",\"\\u0175\":\"w\",\"\\u0176\":\"Y\",\"\\u0177\":\"y\",\"\\u0178\":\"Y\",\"\\u0179\":\"Z\",\"\\u017b\":\"Z\",\"\\u017d\":\"Z\",\"\\u017a\":\"z\",\"\\u017c\":\"z\",\"\\u017e\":\"z\",\"\\u0132\":\"IJ\",\"\\u0133\":\"ij\",\n\"\\u0152\":\"Oe\",\"\\u0153\":\"oe\",\"\\u0149\":\"'n\",\"\\u017f\":\"s\"}),nt=x({\"&\":\"&\",\"<\":\"<\",\">\":\">\",'\"':\""\",\"'\":\"'\"}),tt=x({\"&\":\"&\",\"<\":\"<\",\">\":\">\",\""\":'\"',\"'\":\"'\"}),rt=function x(mn){function An(n){if(yu(n)&&!ff(n)&&!(n instanceof Un)){if(n instanceof On)return n;if(oi.call(n,\"__wrapped__\"))return Fe(n)}return new On(n)}function En(){}function On(n,t){this.__wrapped__=n,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=T}function Un(n){this.__wrapped__=n,\nthis.__actions__=[],this.__dir__=1,this.__filtered__=false,this.__iteratees__=[],this.__takeCount__=4294967295,this.__views__=[]}function Mn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Tn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Fn(n){var t=-1,r=null==n?0:n.length;for(this.clear();++t<r;){var e=n[t];this.set(e[0],e[1])}}function Nn(n){var t=-1,r=null==n?0:n.length;for(this.__data__=new Fn;++t<r;)this.add(n[t]);\n}function Zn(n){this.size=(this.__data__=new Tn(n)).size}function qn(n,t){var r,e=ff(n),u=!e&&of(n),i=!e&&!u&&af(n),o=!e&&!u&&!i&&_f(n),u=(e=e||u||i||o)?A(n.length,ni):[],f=u.length;for(r in n)!t&&!oi.call(n,r)||e&&(\"length\"==r||i&&(\"offset\"==r||\"parent\"==r)||o&&(\"buffer\"==r||\"byteLength\"==r||\"byteOffset\"==r)||Se(r,f))||u.push(r);return u}function Qn(n){var t=n.length;return t?n[ir(0,t-1)]:T}function et(n,t){return De(Ur(n),pt(t,0,n.length))}function ut(n){return De(Ur(n))}function it(n,t,r){(r===T||lu(n[t],r))&&(r!==T||t in n)||st(n,t,r);\n}function ot(n,t,r){var e=n[t];oi.call(n,t)&&lu(e,r)&&(r!==T||t in n)||st(n,t,r)}function ft(n,t){for(var r=n.length;r--;)if(lu(n[r][0],t))return r;return-1}function ct(n,t,r,e){return uo(n,function(n,u,i){t(e,n,r(n),i)}),e}function at(n,t){return n&&Cr(t,Wu(t),n)}function lt(n,t){return n&&Cr(t,Bu(t),n)}function st(n,t,r){\"__proto__\"==t&&Ai?Ai(n,t,{configurable:true,enumerable:true,value:r,writable:true}):n[t]=r}function ht(n,t){for(var r=-1,e=t.length,u=Ku(e),i=null==n;++r<e;)u[r]=i?T:Ru(n,t[r]);return u;\n}function pt(n,t,r){return n===n&&(r!==T&&(n=n<=r?n:r),t!==T&&(n=n>=t?n:t)),n}function _t(n,t,e,u,i,o){var f,c=1&t,a=2&t,l=4&t;if(e&&(f=i?e(n,u,i,o):e(n)),f!==T)return f;if(!du(n))return n;if(u=ff(n)){if(f=me(n),!c)return Ur(n,f)}else{var s=vo(n),h=\"[object Function]\"==s||\"[object GeneratorFunction]\"==s;if(af(n))return Ir(n,c);if(\"[object Object]\"==s||\"[object Arguments]\"==s||h&&!i){if(f=a||h?{}:Ae(n),!c)return a?Mr(n,lt(f,n)):Dr(n,at(f,n))}else{if(!Ln[s])return i?n:{};f=Ee(n,s,c)}}if(o||(o=new Zn),\ni=o.get(n))return i;o.set(n,f),pf(n)?n.forEach(function(r){f.add(_t(r,t,e,r,n,o))}):sf(n)&&n.forEach(function(r,u){f.set(u,_t(r,t,e,u,n,o))});var a=l?a?ve:_e:a?Bu:Wu,p=u?T:a(n);return r(p||n,function(r,u){p&&(u=r,r=n[u]),ot(f,u,_t(r,t,e,u,n,o))}),f}function vt(n){var t=Wu(n);return function(r){return gt(r,n,t)}}function gt(n,t,r){var e=r.length;if(null==n)return!e;for(n=Qu(n);e--;){var u=r[e],i=t[u],o=n[u];if(o===T&&!(u in n)||!i(o))return false}return true}function dt(n,t,r){if(typeof n!=\"function\")throw new ti(\"Expected a function\");\nreturn bo(function(){n.apply(T,r)},t)}function yt(n,t,r,e){var u=-1,i=o,a=true,l=n.length,s=[],h=t.length;if(!l)return s;r&&(t=c(t,k(r))),e?(i=f,a=false):200<=t.length&&(i=O,a=false,t=new Nn(t));n:for(;++u<l;){var p=n[u],_=null==r?p:r(p),p=e||0!==p?p:0;if(a&&_===_){for(var v=h;v--;)if(t[v]===_)continue n;s.push(p)}else i(t,_,e)||s.push(p)}return s}function bt(n,t){var r=true;return uo(n,function(n,e,u){return r=!!t(n,e,u)}),r}function xt(n,t,r){for(var e=-1,u=n.length;++e<u;){var i=n[e],o=t(i);if(null!=o&&(f===T?o===o&&!wu(o):r(o,f)))var f=o,c=i;\n}return c}function jt(n,t){var r=[];return uo(n,function(n,e,u){t(n,e,u)&&r.push(n)}),r}function wt(n,t,r,e,u){var i=-1,o=n.length;for(r||(r=ke),u||(u=[]);++i<o;){var f=n[i];0<t&&r(f)?1<t?wt(f,t-1,r,e,u):a(u,f):e||(u[u.length]=f)}return u}function mt(n,t){return n&&oo(n,t,Wu)}function At(n,t){return n&&fo(n,t,Wu)}function Et(n,t){return i(t,function(t){return _u(n[t])})}function kt(n,t){t=Sr(t,n);for(var r=0,e=t.length;null!=n&&r<e;)n=n[Me(t[r++])];return r&&r==e?n:T}function St(n,t,r){return t=t(n),\nff(n)?t:a(t,r(n))}function Ot(n){if(null==n)n=n===T?\"[object Undefined]\":\"[object Null]\";else if(mi&&mi in Qu(n)){var t=oi.call(n,mi),r=n[mi];try{n[mi]=T;var e=true}catch(n){}var u=ai.call(n);e&&(t?n[mi]=r:delete n[mi]),n=u}else n=ai.call(n);return n}function It(n,t){return n>t}function Rt(n,t){return null!=n&&oi.call(n,t)}function zt(n,t){return null!=n&&t in Qu(n)}function Wt(n,t,r){for(var e=r?f:o,u=n[0].length,i=n.length,a=i,l=Ku(i),s=1/0,h=[];a--;){var p=n[a];a&&t&&(p=c(p,k(t))),s=Ci(p.length,s),\nl[a]=!r&&(t||120<=u&&120<=p.length)?new Nn(a&&p):T}var p=n[0],_=-1,v=l[0];n:for(;++_<u&&h.length<s;){var g=p[_],d=t?t(g):g,g=r||0!==g?g:0;if(v?!O(v,d):!e(h,d,r)){for(a=i;--a;){var y=l[a];if(y?!O(y,d):!e(n[a],d,r))continue n}v&&v.push(d),h.push(g)}}return h}function Bt(n,t,r){var e={};return mt(n,function(n,u,i){t(e,r(n),u,i)}),e}function Lt(t,r,e){return r=Sr(r,t),t=2>r.length?t:kt(t,hr(r,0,-1)),r=null==t?t:t[Me(Ve(r))],null==r?T:n(r,t,e)}function Ut(n){return yu(n)&&\"[object Arguments]\"==Ot(n)}function Ct(n){\nreturn yu(n)&&\"[object ArrayBuffer]\"==Ot(n)}function Dt(n){return yu(n)&&\"[object Date]\"==Ot(n)}function Mt(n,t,r,e,u){if(n===t)t=true;else if(null==n||null==t||!yu(n)&&!yu(t))t=n!==n&&t!==t;else n:{var i=ff(n),o=ff(t),f=i?\"[object Array]\":vo(n),c=o?\"[object Array]\":vo(t),f=\"[object Arguments]\"==f?\"[object Object]\":f,c=\"[object Arguments]\"==c?\"[object Object]\":c,a=\"[object Object]\"==f,o=\"[object Object]\"==c;if((c=f==c)&&af(n)){if(!af(t)){t=false;break n}i=true,a=false}if(c&&!a)u||(u=new Zn),t=i||_f(n)?se(n,t,r,e,Mt,u):he(n,t,f,r,e,Mt,u);else{\nif(!(1&r)&&(i=a&&oi.call(n,\"__wrapped__\"),f=o&&oi.call(t,\"__wrapped__\"),i||f)){n=i?n.value():n,t=f?t.value():t,u||(u=new Zn),t=Mt(n,t,r,e,u);break n}if(c)t:if(u||(u=new Zn),i=1&r,f=_e(n),o=f.length,c=_e(t).length,o==c||i){for(a=o;a--;){var l=f[a];if(!(i?l in t:oi.call(t,l))){t=false;break t}}if((c=u.get(n))&&u.get(t))t=c==t;else{c=true,u.set(n,t),u.set(t,n);for(var s=i;++a<o;){var l=f[a],h=n[l],p=t[l];if(e)var _=i?e(p,h,l,t,n,u):e(h,p,l,n,t,u);if(_===T?h!==p&&!Mt(h,p,r,e,u):!_){c=false;break}s||(s=\"constructor\"==l);\n}c&&!s&&(r=n.constructor,e=t.constructor,r!=e&&\"constructor\"in n&&\"constructor\"in t&&!(typeof r==\"function\"&&r instanceof r&&typeof e==\"function\"&&e instanceof e)&&(c=false)),u.delete(n),u.delete(t),t=c}}else t=false;else t=false}}return t}function Tt(n){return yu(n)&&\"[object Map]\"==vo(n)}function $t(n,t,r,e){var u=r.length,i=u,o=!e;if(null==n)return!i;for(n=Qu(n);u--;){var f=r[u];if(o&&f[2]?f[1]!==n[f[0]]:!(f[0]in n))return false}for(;++u<i;){var f=r[u],c=f[0],a=n[c],l=f[1];if(o&&f[2]){if(a===T&&!(c in n))return false;\n}else{if(f=new Zn,e)var s=e(a,l,c,n,t,f);if(s===T?!Mt(l,a,3,e,f):!s)return false}}return true}function Ft(n){return!(!du(n)||ci&&ci in n)&&(_u(n)?hi:dn).test(Te(n))}function Nt(n){return yu(n)&&\"[object RegExp]\"==Ot(n)}function Pt(n){return yu(n)&&\"[object Set]\"==vo(n)}function Zt(n){return yu(n)&&gu(n.length)&&!!Bn[Ot(n)]}function qt(n){return typeof n==\"function\"?n:null==n?$u:typeof n==\"object\"?ff(n)?Jt(n[0],n[1]):Ht(n):Zu(n)}function Vt(n){if(!ze(n))return Li(n);var t,r=[];for(t in Qu(n))oi.call(n,t)&&\"constructor\"!=t&&r.push(t);\nreturn r}function Kt(n,t){return n<t}function Gt(n,t){var r=-1,e=su(n)?Ku(n.length):[];return uo(n,function(n,u,i){e[++r]=t(n,u,i)}),e}function Ht(n){var t=xe(n);return 1==t.length&&t[0][2]?We(t[0][0],t[0][1]):function(r){return r===n||$t(r,n,t)}}function Jt(n,t){return Ie(n)&&t===t&&!du(t)?We(Me(n),t):function(r){var e=Ru(r,n);return e===T&&e===t?zu(r,n):Mt(t,e,3)}}function Yt(n,t,r,e,u){n!==t&&oo(t,function(i,o){if(u||(u=new Zn),du(i)){var f=u,c=Le(n,o),a=Le(t,o),l=f.get(a);if(l)it(n,o,l);else{\nvar l=e?e(c,a,o+\"\",n,t,f):T,s=l===T;if(s){var h=ff(a),p=!h&&af(a),_=!h&&!p&&_f(a),l=a;h||p||_?ff(c)?l=c:hu(c)?l=Ur(c):p?(s=false,l=Ir(a,true)):_?(s=false,l=zr(a,true)):l=[]:xu(a)||of(a)?(l=c,of(c)?l=Ou(c):du(c)&&!_u(c)||(l=Ae(a))):s=false}s&&(f.set(a,l),Yt(l,a,r,e,f),f.delete(a)),it(n,o,l)}}else f=e?e(Le(n,o),i,o+\"\",n,t,u):T,f===T&&(f=i),it(n,o,f)},Bu)}function Qt(n,t){var r=n.length;if(r)return t+=0>t?r:0,Se(t,r)?n[t]:T}function Xt(n,t,r){var e=-1;return t=c(t.length?t:[$u],k(ye())),n=Gt(n,function(n){return{\na:c(t,function(t){return t(n)}),b:++e,c:n}}),w(n,function(n,t){var e;n:{e=-1;for(var u=n.a,i=t.a,o=u.length,f=r.length;++e<o;){var c=Wr(u[e],i[e]);if(c){e=e>=f?c:c*(\"desc\"==r[e]?-1:1);break n}}e=n.b-t.b}return e})}function nr(n,t){return tr(n,t,function(t,r){return zu(n,r)})}function tr(n,t,r){for(var e=-1,u=t.length,i={};++e<u;){var o=t[e],f=kt(n,o);r(f,o)&&lr(i,Sr(o,n),f)}return i}function rr(n){return function(t){return kt(t,n)}}function er(n,t,r,e){var u=e?g:v,i=-1,o=t.length,f=n;for(n===t&&(t=Ur(t)),\nr&&(f=c(n,k(r)));++i<o;)for(var a=0,l=t[i],l=r?r(l):l;-1<(a=u(f,l,a,e));)f!==n&&xi.call(f,a,1),xi.call(n,a,1);return n}function ur(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==i){var i=u;Se(u)?xi.call(n,u,1):xr(n,u)}}}function ir(n,t){return n+Ii(Ti()*(t-n+1))}function or(n,t){var r=\"\";if(!n||1>t||9007199254740991<t)return r;do t%2&&(r+=n),(t=Ii(t/2))&&(n+=n);while(t);return r}function fr(n,t){return xo(Be(n,t,$u),n+\"\")}function cr(n){return Qn(Uu(n))}function ar(n,t){var r=Uu(n);\nreturn De(r,pt(t,0,r.length))}function lr(n,t,r,e){if(!du(n))return n;t=Sr(t,n);for(var u=-1,i=t.length,o=i-1,f=n;null!=f&&++u<i;){var c=Me(t[u]),a=r;if(u!=o){var l=f[c],a=e?e(l,c,f):T;a===T&&(a=du(l)?l:Se(t[u+1])?[]:{})}ot(f,c,a),f=f[c]}return n}function sr(n){return De(Uu(n))}function hr(n,t,r){var e=-1,u=n.length;for(0>t&&(t=-t>u?0:u+t),r=r>u?u:r,0>r&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0,r=Ku(u);++e<u;)r[e]=n[e+t];return r}function pr(n,t){var r;return uo(n,function(n,e,u){return r=t(n,e,u),!r}),!!r}\nfunction _r(n,t,r){var e=0,u=null==n?e:n.length;if(typeof t==\"number\"&&t===t&&2147483647>=u){for(;e<u;){var i=e+u>>>1,o=n[i];null!==o&&!wu(o)&&(r?o<=t:o<t)?e=i+1:u=i}return u}return vr(n,t,$u,r)}function vr(n,t,r,e){t=r(t);for(var u=0,i=null==n?0:n.length,o=t!==t,f=null===t,c=wu(t),a=t===T;u<i;){var l=Ii((u+i)/2),s=r(n[l]),h=s!==T,p=null===s,_=s===s,v=wu(s);(o?e||_:a?_&&(e||h):f?_&&h&&(e||!p):c?_&&h&&!p&&(e||!v):p||v?0:e?s<=t:s<t)?u=l+1:i=l}return Ci(i,4294967294)}function gr(n,t){for(var r=-1,e=n.length,u=0,i=[];++r<e;){\nvar o=n[r],f=t?t(o):o;if(!r||!lu(f,c)){var c=f;i[u++]=0===o?0:o}}return i}function dr(n){return typeof n==\"number\"?n:wu(n)?F:+n}function yr(n){if(typeof n==\"string\")return n;if(ff(n))return c(n,yr)+\"\";if(wu(n))return ro?ro.call(n):\"\";var t=n+\"\";return\"0\"==t&&1/n==-$?\"-0\":t}function br(n,t,r){var e=-1,u=o,i=n.length,c=true,a=[],l=a;if(r)c=false,u=f;else if(200<=i){if(u=t?null:so(n))return U(u);c=false,u=O,l=new Nn}else l=t?[]:a;n:for(;++e<i;){var s=n[e],h=t?t(s):s,s=r||0!==s?s:0;if(c&&h===h){for(var p=l.length;p--;)if(l[p]===h)continue n;\nt&&l.push(h),a.push(s)}else u(l,h,r)||(l!==a&&l.push(h),a.push(s))}return a}function xr(n,t){return t=Sr(t,n),n=2>t.length?n:kt(n,hr(t,0,-1)),null==n||delete n[Me(Ve(t))]}function jr(n,t,r,e){for(var u=n.length,i=e?u:-1;(e?i--:++i<u)&&t(n[i],i,n););return r?hr(n,e?0:i,e?i+1:u):hr(n,e?i+1:0,e?u:i)}function wr(n,t){var r=n;return r instanceof Un&&(r=r.value()),l(t,function(n,t){return t.func.apply(t.thisArg,a([n],t.args))},r)}function mr(n,t,r){var e=n.length;if(2>e)return e?br(n[0]):[];for(var u=-1,i=Ku(e);++u<e;)for(var o=n[u],f=-1;++f<e;)f!=u&&(i[u]=yt(i[u]||o,n[f],t,r));\nreturn br(wt(i,1),t,r)}function Ar(n,t,r){for(var e=-1,u=n.length,i=t.length,o={};++e<u;)r(o,n[e],e<i?t[e]:T);return o}function Er(n){return hu(n)?n:[]}function kr(n){return typeof n==\"function\"?n:$u}function Sr(n,t){return ff(n)?n:Ie(n,t)?[n]:jo(Iu(n))}function Or(n,t,r){var e=n.length;return r=r===T?e:r,!t&&r>=e?n:hr(n,t,r)}function Ir(n,t){if(t)return n.slice();var r=n.length,r=gi?gi(r):new n.constructor(r);return n.copy(r),r}function Rr(n){var t=new n.constructor(n.byteLength);return new vi(t).set(new vi(n)),\nt}function zr(n,t){return new n.constructor(t?Rr(n.buffer):n.buffer,n.byteOffset,n.length)}function Wr(n,t){if(n!==t){var r=n!==T,e=null===n,u=n===n,i=wu(n),o=t!==T,f=null===t,c=t===t,a=wu(t);if(!f&&!a&&!i&&n>t||i&&o&&c&&!f&&!a||e&&o&&c||!r&&c||!u)return 1;if(!e&&!i&&!a&&n<t||a&&r&&u&&!e&&!i||f&&r&&u||!o&&u||!c)return-1}return 0}function Br(n,t,r,e){var u=-1,i=n.length,o=r.length,f=-1,c=t.length,a=Ui(i-o,0),l=Ku(c+a);for(e=!e;++f<c;)l[f]=t[f];for(;++u<o;)(e||u<i)&&(l[r[u]]=n[u]);for(;a--;)l[f++]=n[u++];\nreturn l}function Lr(n,t,r,e){var u=-1,i=n.length,o=-1,f=r.length,c=-1,a=t.length,l=Ui(i-f,0),s=Ku(l+a);for(e=!e;++u<l;)s[u]=n[u];for(l=u;++c<a;)s[l+c]=t[c];for(;++o<f;)(e||u<i)&&(s[l+r[o]]=n[u++]);return s}function Ur(n,t){var r=-1,e=n.length;for(t||(t=Ku(e));++r<e;)t[r]=n[r];return t}function Cr(n,t,r,e){var u=!r;r||(r={});for(var i=-1,o=t.length;++i<o;){var f=t[i],c=e?e(r[f],n[f],f,r,n):T;c===T&&(c=n[f]),u?st(r,f,c):ot(r,f,c)}return r}function Dr(n,t){return Cr(n,po(n),t)}function Mr(n,t){return Cr(n,_o(n),t);\n}function Tr(n,r){return function(e,u){var i=ff(e)?t:ct,o=r?r():{};return i(e,n,ye(u,2),o)}}function $r(n){return fr(function(t,r){var e=-1,u=r.length,i=1<u?r[u-1]:T,o=2<u?r[2]:T,i=3<n.length&&typeof i==\"function\"?(u--,i):T;for(o&&Oe(r[0],r[1],o)&&(i=3>u?T:i,u=1),t=Qu(t);++e<u;)(o=r[e])&&n(t,o,e,i);return t})}function Fr(n,t){return function(r,e){if(null==r)return r;if(!su(r))return n(r,e);for(var u=r.length,i=t?u:-1,o=Qu(r);(t?i--:++i<u)&&false!==e(o[i],i,o););return r}}function Nr(n){return function(t,r,e){\nvar u=-1,i=Qu(t);e=e(t);for(var o=e.length;o--;){var f=e[n?o:++u];if(false===r(i[f],f,i))break}return t}}function Pr(n,t,r){function e(){return(this&&this!==$n&&this instanceof e?i:n).apply(u?r:this,arguments)}var u=1&t,i=Vr(n);return e}function Zr(n){return function(t){t=Iu(t);var r=Rn.test(t)?M(t):T,e=r?r[0]:t.charAt(0);return t=r?Or(r,1).join(\"\"):t.slice(1),e[n]()+t}}function qr(n){return function(t){return l(Mu(Du(t).replace(kn,\"\")),n,\"\")}}function Vr(n){return function(){var t=arguments;switch(t.length){\ncase 0:return new n;case 1:return new n(t[0]);case 2:return new n(t[0],t[1]);case 3:return new n(t[0],t[1],t[2]);case 4:return new n(t[0],t[1],t[2],t[3]);case 5:return new n(t[0],t[1],t[2],t[3],t[4]);case 6:return new n(t[0],t[1],t[2],t[3],t[4],t[5]);case 7:return new n(t[0],t[1],t[2],t[3],t[4],t[5],t[6])}var r=eo(n.prototype),t=n.apply(r,t);return du(t)?t:r}}function Kr(t,r,e){function u(){for(var o=arguments.length,f=Ku(o),c=o,a=de(u);c--;)f[c]=arguments[c];return c=3>o&&f[0]!==a&&f[o-1]!==a?[]:L(f,a),\no-=c.length,o<e?ue(t,r,Jr,u.placeholder,T,f,c,T,T,e-o):n(this&&this!==$n&&this instanceof u?i:t,this,f)}var i=Vr(t);return u}function Gr(n){return function(t,r,e){var u=Qu(t);if(!su(t)){var i=ye(r,3);t=Wu(t),r=function(n){return i(u[n],n,u)}}return r=n(t,r,e),-1<r?u[i?t[r]:r]:T}}function Hr(n){return pe(function(t){var r=t.length,e=r,u=On.prototype.thru;for(n&&t.reverse();e--;){var i=t[e];if(typeof i!=\"function\")throw new ti(\"Expected a function\");if(u&&!o&&\"wrapper\"==ge(i))var o=new On([],true)}for(e=o?e:r;++e<r;)var i=t[e],u=ge(i),f=\"wrapper\"==u?ho(i):T,o=f&&Re(f[0])&&424==f[1]&&!f[4].length&&1==f[9]?o[ge(f[0])].apply(o,f[3]):1==i.length&&Re(i)?o[u]():o.thru(i);\nreturn function(){var n=arguments,e=n[0];if(o&&1==n.length&&ff(e))return o.plant(e).value();for(var u=0,n=r?t[u].apply(this,n):e;++u<r;)n=t[u].call(this,n);return n}})}function Jr(n,t,r,e,u,i,o,f,c,a){function l(){for(var d=arguments.length,y=Ku(d),b=d;b--;)y[b]=arguments[b];if(_){var x,j=de(l),b=y.length;for(x=0;b--;)y[b]===j&&++x}if(e&&(y=Br(y,e,u,_)),i&&(y=Lr(y,i,o,_)),d-=x,_&&d<a)return j=L(y,j),ue(n,t,Jr,l.placeholder,r,y,j,f,c,a-d);if(j=h?r:this,b=p?j[n]:n,d=y.length,f){x=y.length;for(var w=Ci(f.length,x),m=Ur(y);w--;){\nvar A=f[w];y[w]=Se(A,x)?m[A]:T}}else v&&1<d&&y.reverse();return s&&c<d&&(y.length=c),this&&this!==$n&&this instanceof l&&(b=g||Vr(b)),b.apply(j,y)}var s=128&t,h=1&t,p=2&t,_=24&t,v=512&t,g=p?T:Vr(n);return l}function Yr(n,t){return function(r,e){return Bt(r,n,t(e))}}function Qr(n,t){return function(r,e){var u;if(r===T&&e===T)return t;if(r!==T&&(u=r),e!==T){if(u===T)return e;typeof r==\"string\"||typeof e==\"string\"?(r=yr(r),e=yr(e)):(r=dr(r),e=dr(e)),u=n(r,e)}return u}}function Xr(t){return pe(function(r){\nreturn r=c(r,k(ye())),fr(function(e){var u=this;return t(r,function(t){return n(t,u,e)})})})}function ne(n,t){t=t===T?\" \":yr(t);var r=t.length;return 2>r?r?or(t,n):t:(r=or(t,Oi(n/D(t))),Rn.test(t)?Or(M(r),0,n).join(\"\"):r.slice(0,n))}function te(t,r,e,u){function i(){for(var r=-1,c=arguments.length,a=-1,l=u.length,s=Ku(l+c),h=this&&this!==$n&&this instanceof i?f:t;++a<l;)s[a]=u[a];for(;c--;)s[a++]=arguments[++r];return n(h,o?e:this,s)}var o=1&r,f=Vr(t);return i}function re(n){return function(t,r,e){\ne&&typeof e!=\"number\"&&Oe(t,r,e)&&(r=e=T),t=Au(t),r===T?(r=t,t=0):r=Au(r),e=e===T?t<r?1:-1:Au(e);var u=-1;r=Ui(Oi((r-t)/(e||1)),0);for(var i=Ku(r);r--;)i[n?r:++u]=t,t+=e;return i}}function ee(n){return function(t,r){return typeof t==\"string\"&&typeof r==\"string\"||(t=Su(t),r=Su(r)),n(t,r)}}function ue(n,t,r,e,u,i,o,f,c,a){var l=8&t,s=l?o:T;o=l?T:o;var h=l?i:T;return i=l?T:i,t=(t|(l?32:64))&~(l?64:32),4&t||(t&=-4),u=[n,t,u,h,s,i,o,f,c,a],r=r.apply(T,u),Re(n)&&yo(r,u),r.placeholder=e,Ue(r,n,t)}function ie(n){\nvar t=Yu[n];return function(n,r){if(n=Su(n),(r=null==r?0:Ci(Eu(r),292))&&Wi(n)){var e=(Iu(n)+\"e\").split(\"e\"),e=t(e[0]+\"e\"+(+e[1]+r)),e=(Iu(e)+\"e\").split(\"e\");return+(e[0]+\"e\"+(+e[1]-r))}return t(n)}}function oe(n){return function(t){var r=vo(t);return\"[object Map]\"==r?W(t):\"[object Set]\"==r?C(t):E(t,n(t))}}function fe(n,t,r,e,u,i,o,f){var c=2&t;if(!c&&typeof n!=\"function\")throw new ti(\"Expected a function\");var a=e?e.length:0;if(a||(t&=-97,e=u=T),o=o===T?o:Ui(Eu(o),0),f=f===T?f:Eu(f),a-=u?u.length:0,\n64&t){var l=e,s=u;e=u=T}var h=c?T:ho(n);return i=[n,t,r,e,u,l,s,i,o,f],h&&(r=i[1],n=h[1],t=r|n,e=128==n&&8==r||128==n&&256==r&&i[7].length<=h[8]||384==n&&h[7].length<=h[8]&&8==r,131>t||e)&&(1&n&&(i[2]=h[2],t|=1&r?0:4),(r=h[3])&&(e=i[3],i[3]=e?Br(e,r,h[4]):r,i[4]=e?L(i[3],\"__lodash_placeholder__\"):h[4]),(r=h[5])&&(e=i[5],i[5]=e?Lr(e,r,h[6]):r,i[6]=e?L(i[5],\"__lodash_placeholder__\"):h[6]),(r=h[7])&&(i[7]=r),128&n&&(i[8]=null==i[8]?h[8]:Ci(i[8],h[8])),null==i[9]&&(i[9]=h[9]),i[0]=h[0],i[1]=t),n=i[0],\nt=i[1],r=i[2],e=i[3],u=i[4],f=i[9]=i[9]===T?c?0:n.length:Ui(i[9]-a,0),!f&&24&t&&(t&=-25),Ue((h?co:yo)(t&&1!=t?8==t||16==t?Kr(n,t,f):32!=t&&33!=t||u.length?Jr.apply(T,i):te(n,t,r,e):Pr(n,t,r),i),n,t)}function ce(n,t,r,e){return n===T||lu(n,ei[r])&&!oi.call(e,r)?t:n}function ae(n,t,r,e,u,i){return du(n)&&du(t)&&(i.set(t,n),Yt(n,t,T,ae,i),i.delete(t)),n}function le(n){return xu(n)?T:n}function se(n,t,r,e,u,i){var o=1&r,f=n.length,c=t.length;if(f!=c&&!(o&&c>f))return false;if((c=i.get(n))&&i.get(t))return c==t;\nvar c=-1,a=true,l=2&r?new Nn:T;for(i.set(n,t),i.set(t,n);++c<f;){var s=n[c],p=t[c];if(e)var _=o?e(p,s,c,t,n,i):e(s,p,c,n,t,i);if(_!==T){if(_)continue;a=false;break}if(l){if(!h(t,function(n,t){if(!O(l,t)&&(s===n||u(s,n,r,e,i)))return l.push(t)})){a=false;break}}else if(s!==p&&!u(s,p,r,e,i)){a=false;break}}return i.delete(n),i.delete(t),a}function he(n,t,r,e,u,i,o){switch(r){case\"[object DataView]\":if(n.byteLength!=t.byteLength||n.byteOffset!=t.byteOffset)break;n=n.buffer,t=t.buffer;case\"[object ArrayBuffer]\":\nif(n.byteLength!=t.byteLength||!i(new vi(n),new vi(t)))break;return true;case\"[object Boolean]\":case\"[object Date]\":case\"[object Number]\":return lu(+n,+t);case\"[object Error]\":return n.name==t.name&&n.message==t.message;case\"[object RegExp]\":case\"[object String]\":return n==t+\"\";case\"[object Map]\":var f=W;case\"[object Set]\":if(f||(f=U),n.size!=t.size&&!(1&e))break;return(r=o.get(n))?r==t:(e|=2,o.set(n,t),t=se(f(n),f(t),e,u,i,o),o.delete(n),t);case\"[object Symbol]\":if(to)return to.call(n)==to.call(t)}\nreturn false}function pe(n){return xo(Be(n,T,Ze),n+\"\")}function _e(n){return St(n,Wu,po)}function ve(n){return St(n,Bu,_o)}function ge(n){for(var t=n.name+\"\",r=Gi[t],e=oi.call(Gi,t)?r.length:0;e--;){var u=r[e],i=u.func;if(null==i||i==n)return u.name}return t}function de(n){return(oi.call(An,\"placeholder\")?An:n).placeholder}function ye(){var n=An.iteratee||Fu,n=n===Fu?qt:n;return arguments.length?n(arguments[0],arguments[1]):n}function be(n,t){var r=n.__data__,e=typeof t;return(\"string\"==e||\"number\"==e||\"symbol\"==e||\"boolean\"==e?\"__proto__\"!==t:null===t)?r[typeof t==\"string\"?\"string\":\"hash\"]:r.map;\n}function xe(n){for(var t=Wu(n),r=t.length;r--;){var e=t[r],u=n[e];t[r]=[e,u,u===u&&!du(u)]}return t}function je(n,t){var r=null==n?T:n[t];return Ft(r)?r:T}function we(n,t,r){t=Sr(t,n);for(var e=-1,u=t.length,i=false;++e<u;){var o=Me(t[e]);if(!(i=null!=n&&r(n,o)))break;n=n[o]}return i||++e!=u?i:(u=null==n?0:n.length,!!u&&gu(u)&&Se(o,u)&&(ff(n)||of(n)))}function me(n){var t=n.length,r=new n.constructor(t);return t&&\"string\"==typeof n[0]&&oi.call(n,\"index\")&&(r.index=n.index,r.input=n.input),r}function Ae(n){\nreturn typeof n.constructor!=\"function\"||ze(n)?{}:eo(di(n))}function Ee(n,t,r){var e=n.constructor;switch(t){case\"[object ArrayBuffer]\":return Rr(n);case\"[object Boolean]\":case\"[object Date]\":return new e(+n);case\"[object DataView]\":return t=r?Rr(n.buffer):n.buffer,new n.constructor(t,n.byteOffset,n.byteLength);case\"[object Float32Array]\":case\"[object Float64Array]\":case\"[object Int8Array]\":case\"[object Int16Array]\":case\"[object Int32Array]\":case\"[object Uint8Array]\":case\"[object Uint8ClampedArray]\":\ncase\"[object Uint16Array]\":case\"[object Uint32Array]\":return zr(n,r);case\"[object Map]\":return new e;case\"[object Number]\":case\"[object String]\":return new e(n);case\"[object RegExp]\":return t=new n.constructor(n.source,_n.exec(n)),t.lastIndex=n.lastIndex,t;case\"[object Set]\":return new e;case\"[object Symbol]\":return to?Qu(to.call(n)):{}}}function ke(n){return ff(n)||of(n)||!!(ji&&n&&n[ji])}function Se(n,t){var r=typeof n;return t=null==t?9007199254740991:t,!!t&&(\"number\"==r||\"symbol\"!=r&&bn.test(n))&&-1<n&&0==n%1&&n<t;\n}function Oe(n,t,r){if(!du(r))return false;var e=typeof t;return!!(\"number\"==e?su(r)&&Se(t,r.length):\"string\"==e&&t in r)&&lu(r[t],n)}function Ie(n,t){if(ff(n))return false;var r=typeof n;return!(\"number\"!=r&&\"symbol\"!=r&&\"boolean\"!=r&&null!=n&&!wu(n))||(nn.test(n)||!X.test(n)||null!=t&&n in Qu(t))}function Re(n){var t=ge(n),r=An[t];return typeof r==\"function\"&&t in Un.prototype&&(n===r||(t=ho(r),!!t&&n===t[0]))}function ze(n){var t=n&&n.constructor;return n===(typeof t==\"function\"&&t.prototype||ei)}function We(n,t){\nreturn function(r){return null!=r&&(r[n]===t&&(t!==T||n in Qu(r)))}}function Be(t,r,e){return r=Ui(r===T?t.length-1:r,0),function(){for(var u=arguments,i=-1,o=Ui(u.length-r,0),f=Ku(o);++i<o;)f[i]=u[r+i];for(i=-1,o=Ku(r+1);++i<r;)o[i]=u[i];return o[r]=e(f),n(t,this,o)}}function Le(n,t){if((\"constructor\"!==t||\"function\"!=typeof n[t])&&\"__proto__\"!=t)return n[t]}function Ue(n,t,r){var e=t+\"\";t=xo;var u,i=$e;return u=(u=e.match(an))?u[1].split(ln):[],r=i(u,r),(i=r.length)&&(u=i-1,r[u]=(1<i?\"& \":\"\")+r[u],\nr=r.join(2<i?\", \":\" \"),e=e.replace(cn,\"{\\n/* [wrapped with \"+r+\"] */\\n\")),t(n,e)}function Ce(n){var t=0,r=0;return function(){var e=Di(),u=16-(e-r);if(r=e,0<u){if(800<=++t)return arguments[0]}else t=0;return n.apply(T,arguments)}}function De(n,t){var r=-1,e=n.length,u=e-1;for(t=t===T?e:t;++r<t;){var e=ir(r,u),i=n[e];n[e]=n[r],n[r]=i}return n.length=t,n}function Me(n){if(typeof n==\"string\"||wu(n))return n;var t=n+\"\";return\"0\"==t&&1/n==-$?\"-0\":t}function Te(n){if(null!=n){try{return ii.call(n)}catch(n){}\nreturn n+\"\"}return\"\"}function $e(n,t){return r(N,function(r){var e=\"_.\"+r[0];t&r[1]&&!o(n,e)&&n.push(e)}),n.sort()}function Fe(n){if(n instanceof Un)return n.clone();var t=new On(n.__wrapped__,n.__chain__);return t.__actions__=Ur(n.__actions__),t.__index__=n.__index__,t.__values__=n.__values__,t}function Ne(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Eu(r),0>r&&(r=Ui(e+r,0)),_(n,ye(t,3),r)):-1}function Pe(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e-1;return r!==T&&(u=Eu(r),u=0>r?Ui(e+u,0):Ci(u,e-1)),\n_(n,ye(t,3),u,true)}function Ze(n){return(null==n?0:n.length)?wt(n,1):[]}function qe(n){return n&&n.length?n[0]:T}function Ve(n){var t=null==n?0:n.length;return t?n[t-1]:T}function Ke(n,t){return n&&n.length&&t&&t.length?er(n,t):n}function Ge(n){return null==n?n:$i.call(n)}function He(n){if(!n||!n.length)return[];var t=0;return n=i(n,function(n){if(hu(n))return t=Ui(n.length,t),true}),A(t,function(t){return c(n,b(t))})}function Je(t,r){if(!t||!t.length)return[];var e=He(t);return null==r?e:c(e,function(t){\nreturn n(r,T,t)})}function Ye(n){return n=An(n),n.__chain__=true,n}function Qe(n,t){return t(n)}function Xe(){return this}function nu(n,t){return(ff(n)?r:uo)(n,ye(t,3))}function tu(n,t){return(ff(n)?e:io)(n,ye(t,3))}function ru(n,t){return(ff(n)?c:Gt)(n,ye(t,3))}function eu(n,t,r){return t=r?T:t,t=n&&null==t?n.length:t,fe(n,128,T,T,T,T,t)}function uu(n,t){var r;if(typeof t!=\"function\")throw new ti(\"Expected a function\");return n=Eu(n),function(){return 0<--n&&(r=t.apply(this,arguments)),1>=n&&(t=T),\nr}}function iu(n,t,r){return t=r?T:t,n=fe(n,8,T,T,T,T,T,t),n.placeholder=iu.placeholder,n}function ou(n,t,r){return t=r?T:t,n=fe(n,16,T,T,T,T,T,t),n.placeholder=ou.placeholder,n}function fu(n,t,r){function e(t){var r=c,e=a;return c=a=T,_=t,s=n.apply(e,r)}function u(n){var r=n-p;return n-=_,p===T||r>=t||0>r||g&&n>=l}function i(){var n=Go();if(u(n))return o(n);var r,e=bo;r=n-_,n=t-(n-p),r=g?Ci(n,l-r):n,h=e(i,r)}function o(n){return h=T,d&&c?e(n):(c=a=T,s)}function f(){var n=Go(),r=u(n);if(c=arguments,\na=this,p=n,r){if(h===T)return _=n=p,h=bo(i,t),v?e(n):s;if(g)return lo(h),h=bo(i,t),e(p)}return h===T&&(h=bo(i,t)),s}var c,a,l,s,h,p,_=0,v=false,g=false,d=true;if(typeof n!=\"function\")throw new ti(\"Expected a function\");return t=Su(t)||0,du(r)&&(v=!!r.leading,l=(g=\"maxWait\"in r)?Ui(Su(r.maxWait)||0,t):l,d=\"trailing\"in r?!!r.trailing:d),f.cancel=function(){h!==T&&lo(h),_=0,c=p=a=h=T},f.flush=function(){return h===T?s:o(Go())},f}function cu(n,t){function r(){var e=arguments,u=t?t.apply(this,e):e[0],i=r.cache;\nreturn i.has(u)?i.get(u):(e=n.apply(this,e),r.cache=i.set(u,e)||i,e)}if(typeof n!=\"function\"||null!=t&&typeof t!=\"function\")throw new ti(\"Expected a function\");return r.cache=new(cu.Cache||Fn),r}function au(n){if(typeof n!=\"function\")throw new ti(\"Expected a function\");return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function lu(n,t){return n===t||n!==n&&t!==t;\n}function su(n){return null!=n&&gu(n.length)&&!_u(n)}function hu(n){return yu(n)&&su(n)}function pu(n){if(!yu(n))return false;var t=Ot(n);return\"[object Error]\"==t||\"[object DOMException]\"==t||typeof n.message==\"string\"&&typeof n.name==\"string\"&&!xu(n)}function _u(n){return!!du(n)&&(n=Ot(n),\"[object Function]\"==n||\"[object GeneratorFunction]\"==n||\"[object AsyncFunction]\"==n||\"[object Proxy]\"==n)}function vu(n){return typeof n==\"number\"&&n==Eu(n)}function gu(n){return typeof n==\"number\"&&-1<n&&0==n%1&&9007199254740991>=n;\n}function du(n){var t=typeof n;return null!=n&&(\"object\"==t||\"function\"==t)}function yu(n){return null!=n&&typeof n==\"object\"}function bu(n){return typeof n==\"number\"||yu(n)&&\"[object Number]\"==Ot(n)}function xu(n){return!(!yu(n)||\"[object Object]\"!=Ot(n))&&(n=di(n),null===n||(n=oi.call(n,\"constructor\")&&n.constructor,typeof n==\"function\"&&n instanceof n&&ii.call(n)==li))}function ju(n){return typeof n==\"string\"||!ff(n)&&yu(n)&&\"[object String]\"==Ot(n)}function wu(n){return typeof n==\"symbol\"||yu(n)&&\"[object Symbol]\"==Ot(n);\n}function mu(n){if(!n)return[];if(su(n))return ju(n)?M(n):Ur(n);if(wi&&n[wi]){n=n[wi]();for(var t,r=[];!(t=n.next()).done;)r.push(t.value);return r}return t=vo(n),(\"[object Map]\"==t?W:\"[object Set]\"==t?U:Uu)(n)}function Au(n){return n?(n=Su(n),n===$||n===-$?1.7976931348623157e308*(0>n?-1:1):n===n?n:0):0===n?n:0}function Eu(n){n=Au(n);var t=n%1;return n===n?t?n-t:n:0}function ku(n){return n?pt(Eu(n),0,4294967295):0}function Su(n){if(typeof n==\"number\")return n;if(wu(n))return F;if(du(n)&&(n=typeof n.valueOf==\"function\"?n.valueOf():n,\nn=du(n)?n+\"\":n),typeof n!=\"string\")return 0===n?n:+n;n=n.replace(un,\"\");var t=gn.test(n);return t||yn.test(n)?Dn(n.slice(2),t?2:8):vn.test(n)?F:+n}function Ou(n){return Cr(n,Bu(n))}function Iu(n){return null==n?\"\":yr(n)}function Ru(n,t,r){return n=null==n?T:kt(n,t),n===T?r:n}function zu(n,t){return null!=n&&we(n,t,zt)}function Wu(n){return su(n)?qn(n):Vt(n)}function Bu(n){if(su(n))n=qn(n,true);else if(du(n)){var t,r=ze(n),e=[];for(t in n)(\"constructor\"!=t||!r&&oi.call(n,t))&&e.push(t);n=e}else{if(t=[],\nnull!=n)for(r in Qu(n))t.push(r);n=t}return n}function Lu(n,t){if(null==n)return{};var r=c(ve(n),function(n){return[n]});return t=ye(t),tr(n,r,function(n,r){return t(n,r[0])})}function Uu(n){return null==n?[]:S(n,Wu(n))}function Cu(n){return $f(Iu(n).toLowerCase())}function Du(n){return(n=Iu(n))&&n.replace(xn,Xn).replace(Sn,\"\")}function Mu(n,t,r){return n=Iu(n),t=r?T:t,t===T?zn.test(n)?n.match(In)||[]:n.match(sn)||[]:n.match(t)||[]}function Tu(n){return function(){return n}}function $u(n){return n;\n}function Fu(n){return qt(typeof n==\"function\"?n:_t(n,1))}function Nu(n,t,e){var u=Wu(t),i=Et(t,u);null!=e||du(t)&&(i.length||!u.length)||(e=t,t=n,n=this,i=Et(t,Wu(t)));var o=!(du(e)&&\"chain\"in e&&!e.chain),f=_u(n);return r(i,function(r){var e=t[r];n[r]=e,f&&(n.prototype[r]=function(){var t=this.__chain__;if(o||t){var r=n(this.__wrapped__);return(r.__actions__=Ur(this.__actions__)).push({func:e,args:arguments,thisArg:n}),r.__chain__=t,r}return e.apply(n,a([this.value()],arguments))})}),n}function Pu(){}\nfunction Zu(n){return Ie(n)?b(Me(n)):rr(n)}function qu(){return[]}function Vu(){return false}mn=null==mn?$n:rt.defaults($n.Object(),mn,rt.pick($n,Wn));var Ku=mn.Array,Gu=mn.Date,Hu=mn.Error,Ju=mn.Function,Yu=mn.Math,Qu=mn.Object,Xu=mn.RegExp,ni=mn.String,ti=mn.TypeError,ri=Ku.prototype,ei=Qu.prototype,ui=mn[\"__core-js_shared__\"],ii=Ju.prototype.toString,oi=ei.hasOwnProperty,fi=0,ci=function(){var n=/[^.]+$/.exec(ui&&ui.keys&&ui.keys.IE_PROTO||\"\");return n?\"Symbol(src)_1.\"+n:\"\"}(),ai=ei.toString,li=ii.call(Qu),si=$n._,hi=Xu(\"^\"+ii.call(oi).replace(rn,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),pi=Pn?mn.Buffer:T,_i=mn.Symbol,vi=mn.Uint8Array,gi=pi?pi.g:T,di=B(Qu.getPrototypeOf,Qu),yi=Qu.create,bi=ei.propertyIsEnumerable,xi=ri.splice,ji=_i?_i.isConcatSpreadable:T,wi=_i?_i.iterator:T,mi=_i?_i.toStringTag:T,Ai=function(){\ntry{var n=je(Qu,\"defineProperty\");return n({},\"\",{}),n}catch(n){}}(),Ei=mn.clearTimeout!==$n.clearTimeout&&mn.clearTimeout,ki=Gu&&Gu.now!==$n.Date.now&&Gu.now,Si=mn.setTimeout!==$n.setTimeout&&mn.setTimeout,Oi=Yu.ceil,Ii=Yu.floor,Ri=Qu.getOwnPropertySymbols,zi=pi?pi.isBuffer:T,Wi=mn.isFinite,Bi=ri.join,Li=B(Qu.keys,Qu),Ui=Yu.max,Ci=Yu.min,Di=Gu.now,Mi=mn.parseInt,Ti=Yu.random,$i=ri.reverse,Fi=je(mn,\"DataView\"),Ni=je(mn,\"Map\"),Pi=je(mn,\"Promise\"),Zi=je(mn,\"Set\"),qi=je(mn,\"WeakMap\"),Vi=je(Qu,\"create\"),Ki=qi&&new qi,Gi={},Hi=Te(Fi),Ji=Te(Ni),Yi=Te(Pi),Qi=Te(Zi),Xi=Te(qi),no=_i?_i.prototype:T,to=no?no.valueOf:T,ro=no?no.toString:T,eo=function(){\nfunction n(){}return function(t){return du(t)?yi?yi(t):(n.prototype=t,t=new n,n.prototype=T,t):{}}}();An.templateSettings={escape:J,evaluate:Y,interpolate:Q,variable:\"\",imports:{_:An}},An.prototype=En.prototype,An.prototype.constructor=An,On.prototype=eo(En.prototype),On.prototype.constructor=On,Un.prototype=eo(En.prototype),Un.prototype.constructor=Un,Mn.prototype.clear=function(){this.__data__=Vi?Vi(null):{},this.size=0},Mn.prototype.delete=function(n){return n=this.has(n)&&delete this.__data__[n],\nthis.size-=n?1:0,n},Mn.prototype.get=function(n){var t=this.__data__;return Vi?(n=t[n],\"__lodash_hash_undefined__\"===n?T:n):oi.call(t,n)?t[n]:T},Mn.prototype.has=function(n){var t=this.__data__;return Vi?t[n]!==T:oi.call(t,n)},Mn.prototype.set=function(n,t){var r=this.__data__;return this.size+=this.has(n)?0:1,r[n]=Vi&&t===T?\"__lodash_hash_undefined__\":t,this},Tn.prototype.clear=function(){this.__data__=[],this.size=0},Tn.prototype.delete=function(n){var t=this.__data__;return n=ft(t,n),!(0>n)&&(n==t.length-1?t.pop():xi.call(t,n,1),\n--this.size,true)},Tn.prototype.get=function(n){var t=this.__data__;return n=ft(t,n),0>n?T:t[n][1]},Tn.prototype.has=function(n){return-1<ft(this.__data__,n)},Tn.prototype.set=function(n,t){var r=this.__data__,e=ft(r,n);return 0>e?(++this.size,r.push([n,t])):r[e][1]=t,this},Fn.prototype.clear=function(){this.size=0,this.__data__={hash:new Mn,map:new(Ni||Tn),string:new Mn}},Fn.prototype.delete=function(n){return n=be(this,n).delete(n),this.size-=n?1:0,n},Fn.prototype.get=function(n){return be(this,n).get(n);\n},Fn.prototype.has=function(n){return be(this,n).has(n)},Fn.prototype.set=function(n,t){var r=be(this,n),e=r.size;return r.set(n,t),this.size+=r.size==e?0:1,this},Nn.prototype.add=Nn.prototype.push=function(n){return this.__data__.set(n,\"__lodash_hash_undefined__\"),this},Nn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.clear=function(){this.__data__=new Tn,this.size=0},Zn.prototype.delete=function(n){var t=this.__data__;return n=t.delete(n),this.size=t.size,n},Zn.prototype.get=function(n){\nreturn this.__data__.get(n)},Zn.prototype.has=function(n){return this.__data__.has(n)},Zn.prototype.set=function(n,t){var r=this.__data__;if(r instanceof Tn){var e=r.__data__;if(!Ni||199>e.length)return e.push([n,t]),this.size=++r.size,this;r=this.__data__=new Fn(e)}return r.set(n,t),this.size=r.size,this};var uo=Fr(mt),io=Fr(At,true),oo=Nr(),fo=Nr(true),co=Ki?function(n,t){return Ki.set(n,t),n}:$u,ao=Ai?function(n,t){return Ai(n,\"toString\",{configurable:true,enumerable:false,value:Tu(t),writable:true})}:$u,lo=Ei||function(n){\nreturn $n.clearTimeout(n)},so=Zi&&1/U(new Zi([,-0]))[1]==$?function(n){return new Zi(n)}:Pu,ho=Ki?function(n){return Ki.get(n)}:Pu,po=Ri?function(n){return null==n?[]:(n=Qu(n),i(Ri(n),function(t){return bi.call(n,t)}))}:qu,_o=Ri?function(n){for(var t=[];n;)a(t,po(n)),n=di(n);return t}:qu,vo=Ot;(Fi&&\"[object DataView]\"!=vo(new Fi(new ArrayBuffer(1)))||Ni&&\"[object Map]\"!=vo(new Ni)||Pi&&\"[object Promise]\"!=vo(Pi.resolve())||Zi&&\"[object Set]\"!=vo(new Zi)||qi&&\"[object WeakMap]\"!=vo(new qi))&&(vo=function(n){\nvar t=Ot(n);if(n=(n=\"[object Object]\"==t?n.constructor:T)?Te(n):\"\")switch(n){case Hi:return\"[object DataView]\";case Ji:return\"[object Map]\";case Yi:return\"[object Promise]\";case Qi:return\"[object Set]\";case Xi:return\"[object WeakMap]\"}return t});var go=ui?_u:Vu,yo=Ce(co),bo=Si||function(n,t){return $n.setTimeout(n,t)},xo=Ce(ao),jo=function(n){n=cu(n,function(n){return 500===t.size&&t.clear(),n});var t=n.cache;return n}(function(n){var t=[];return 46===n.charCodeAt(0)&&t.push(\"\"),n.replace(tn,function(n,r,e,u){\nt.push(e?u.replace(hn,\"$1\"):r||n)}),t}),wo=fr(function(n,t){return hu(n)?yt(n,wt(t,1,hu,true)):[]}),mo=fr(function(n,t){var r=Ve(t);return hu(r)&&(r=T),hu(n)?yt(n,wt(t,1,hu,true),ye(r,2)):[]}),Ao=fr(function(n,t){var r=Ve(t);return hu(r)&&(r=T),hu(n)?yt(n,wt(t,1,hu,true),T,r):[]}),Eo=fr(function(n){var t=c(n,Er);return t.length&&t[0]===n[0]?Wt(t):[]}),ko=fr(function(n){var t=Ve(n),r=c(n,Er);return t===Ve(r)?t=T:r.pop(),r.length&&r[0]===n[0]?Wt(r,ye(t,2)):[]}),So=fr(function(n){var t=Ve(n),r=c(n,Er);return(t=typeof t==\"function\"?t:T)&&r.pop(),\nr.length&&r[0]===n[0]?Wt(r,T,t):[]}),Oo=fr(Ke),Io=pe(function(n,t){var r=null==n?0:n.length,e=ht(n,t);return ur(n,c(t,function(n){return Se(n,r)?+n:n}).sort(Wr)),e}),Ro=fr(function(n){return br(wt(n,1,hu,true))}),zo=fr(function(n){var t=Ve(n);return hu(t)&&(t=T),br(wt(n,1,hu,true),ye(t,2))}),Wo=fr(function(n){var t=Ve(n),t=typeof t==\"function\"?t:T;return br(wt(n,1,hu,true),T,t)}),Bo=fr(function(n,t){return hu(n)?yt(n,t):[]}),Lo=fr(function(n){return mr(i(n,hu))}),Uo=fr(function(n){var t=Ve(n);return hu(t)&&(t=T),\nmr(i(n,hu),ye(t,2))}),Co=fr(function(n){var t=Ve(n),t=typeof t==\"function\"?t:T;return mr(i(n,hu),T,t)}),Do=fr(He),Mo=fr(function(n){var t=n.length,t=1<t?n[t-1]:T,t=typeof t==\"function\"?(n.pop(),t):T;return Je(n,t)}),To=pe(function(n){function t(t){return ht(t,n)}var r=n.length,e=r?n[0]:0,u=this.__wrapped__;return!(1<r||this.__actions__.length)&&u instanceof Un&&Se(e)?(u=u.slice(e,+e+(r?1:0)),u.__actions__.push({func:Qe,args:[t],thisArg:T}),new On(u,this.__chain__).thru(function(n){return r&&!n.length&&n.push(T),\nn})):this.thru(t)}),$o=Tr(function(n,t,r){oi.call(n,r)?++n[r]:st(n,r,1)}),Fo=Gr(Ne),No=Gr(Pe),Po=Tr(function(n,t,r){oi.call(n,r)?n[r].push(t):st(n,r,[t])}),Zo=fr(function(t,r,e){var u=-1,i=typeof r==\"function\",o=su(t)?Ku(t.length):[];return uo(t,function(t){o[++u]=i?n(r,t,e):Lt(t,r,e)}),o}),qo=Tr(function(n,t,r){st(n,r,t)}),Vo=Tr(function(n,t,r){n[r?0:1].push(t)},function(){return[[],[]]}),Ko=fr(function(n,t){if(null==n)return[];var r=t.length;return 1<r&&Oe(n,t[0],t[1])?t=[]:2<r&&Oe(t[0],t[1],t[2])&&(t=[t[0]]),\nXt(n,wt(t,1),[])}),Go=ki||function(){return $n.Date.now()},Ho=fr(function(n,t,r){var e=1;if(r.length)var u=L(r,de(Ho)),e=32|e;return fe(n,e,t,r,u)}),Jo=fr(function(n,t,r){var e=3;if(r.length)var u=L(r,de(Jo)),e=32|e;return fe(t,e,n,r,u)}),Yo=fr(function(n,t){return dt(n,1,t)}),Qo=fr(function(n,t,r){return dt(n,Su(t)||0,r)});cu.Cache=Fn;var Xo=fr(function(t,r){r=1==r.length&&ff(r[0])?c(r[0],k(ye())):c(wt(r,1),k(ye()));var e=r.length;return fr(function(u){for(var i=-1,o=Ci(u.length,e);++i<o;)u[i]=r[i].call(this,u[i]);\nreturn n(t,this,u)})}),nf=fr(function(n,t){return fe(n,32,T,t,L(t,de(nf)))}),tf=fr(function(n,t){return fe(n,64,T,t,L(t,de(tf)))}),rf=pe(function(n,t){return fe(n,256,T,T,T,t)}),ef=ee(It),uf=ee(function(n,t){return n>=t}),of=Ut(function(){return arguments}())?Ut:function(n){return yu(n)&&oi.call(n,\"callee\")&&!bi.call(n,\"callee\")},ff=Ku.isArray,cf=Vn?k(Vn):Ct,af=zi||Vu,lf=Kn?k(Kn):Dt,sf=Gn?k(Gn):Tt,hf=Hn?k(Hn):Nt,pf=Jn?k(Jn):Pt,_f=Yn?k(Yn):Zt,vf=ee(Kt),gf=ee(function(n,t){return n<=t}),df=$r(function(n,t){\nif(ze(t)||su(t))Cr(t,Wu(t),n);else for(var r in t)oi.call(t,r)&&ot(n,r,t[r])}),yf=$r(function(n,t){Cr(t,Bu(t),n)}),bf=$r(function(n,t,r,e){Cr(t,Bu(t),n,e)}),xf=$r(function(n,t,r,e){Cr(t,Wu(t),n,e)}),jf=pe(ht),wf=fr(function(n,t){n=Qu(n);var r=-1,e=t.length,u=2<e?t[2]:T;for(u&&Oe(t[0],t[1],u)&&(e=1);++r<e;)for(var u=t[r],i=Bu(u),o=-1,f=i.length;++o<f;){var c=i[o],a=n[c];(a===T||lu(a,ei[c])&&!oi.call(n,c))&&(n[c]=u[c])}return n}),mf=fr(function(t){return t.push(T,ae),n(Of,T,t)}),Af=Yr(function(n,t,r){\nnull!=t&&typeof t.toString!=\"function\"&&(t=ai.call(t)),n[t]=r},Tu($u)),Ef=Yr(function(n,t,r){null!=t&&typeof t.toString!=\"function\"&&(t=ai.call(t)),oi.call(n,t)?n[t].push(r):n[t]=[r]},ye),kf=fr(Lt),Sf=$r(function(n,t,r){Yt(n,t,r)}),Of=$r(function(n,t,r,e){Yt(n,t,r,e)}),If=pe(function(n,t){var r={};if(null==n)return r;var e=false;t=c(t,function(t){return t=Sr(t,n),e||(e=1<t.length),t}),Cr(n,ve(n),r),e&&(r=_t(r,7,le));for(var u=t.length;u--;)xr(r,t[u]);return r}),Rf=pe(function(n,t){return null==n?{}:nr(n,t);\n}),zf=oe(Wu),Wf=oe(Bu),Bf=qr(function(n,t,r){return t=t.toLowerCase(),n+(r?Cu(t):t)}),Lf=qr(function(n,t,r){return n+(r?\"-\":\"\")+t.toLowerCase()}),Uf=qr(function(n,t,r){return n+(r?\" \":\"\")+t.toLowerCase()}),Cf=Zr(\"toLowerCase\"),Df=qr(function(n,t,r){return n+(r?\"_\":\"\")+t.toLowerCase()}),Mf=qr(function(n,t,r){return n+(r?\" \":\"\")+$f(t)}),Tf=qr(function(n,t,r){return n+(r?\" \":\"\")+t.toUpperCase()}),$f=Zr(\"toUpperCase\"),Ff=fr(function(t,r){try{return n(t,T,r)}catch(n){return pu(n)?n:new Hu(n)}}),Nf=pe(function(n,t){\nreturn r(t,function(t){t=Me(t),st(n,t,Ho(n[t],n))}),n}),Pf=Hr(),Zf=Hr(true),qf=fr(function(n,t){return function(r){return Lt(r,n,t)}}),Vf=fr(function(n,t){return function(r){return Lt(n,r,t)}}),Kf=Xr(c),Gf=Xr(u),Hf=Xr(h),Jf=re(),Yf=re(true),Qf=Qr(function(n,t){return n+t},0),Xf=ie(\"ceil\"),nc=Qr(function(n,t){return n/t},1),tc=ie(\"floor\"),rc=Qr(function(n,t){return n*t},1),ec=ie(\"round\"),uc=Qr(function(n,t){return n-t},0);return An.after=function(n,t){if(typeof t!=\"function\")throw new ti(\"Expected a function\");\nreturn n=Eu(n),function(){if(1>--n)return t.apply(this,arguments)}},An.ary=eu,An.assign=df,An.assignIn=yf,An.assignInWith=bf,An.assignWith=xf,An.at=jf,An.before=uu,An.bind=Ho,An.bindAll=Nf,An.bindKey=Jo,An.castArray=function(){if(!arguments.length)return[];var n=arguments[0];return ff(n)?n:[n]},An.chain=Ye,An.chunk=function(n,t,r){if(t=(r?Oe(n,t,r):t===T)?1:Ui(Eu(t),0),r=null==n?0:n.length,!r||1>t)return[];for(var e=0,u=0,i=Ku(Oi(r/t));e<r;)i[u++]=hr(n,e,e+=t);return i},An.compact=function(n){for(var t=-1,r=null==n?0:n.length,e=0,u=[];++t<r;){\nvar i=n[t];i&&(u[e++]=i)}return u},An.concat=function(){var n=arguments.length;if(!n)return[];for(var t=Ku(n-1),r=arguments[0];n--;)t[n-1]=arguments[n];return a(ff(r)?Ur(r):[r],wt(t,1))},An.cond=function(t){var r=null==t?0:t.length,e=ye();return t=r?c(t,function(n){if(\"function\"!=typeof n[1])throw new ti(\"Expected a function\");return[e(n[0]),n[1]]}):[],fr(function(e){for(var u=-1;++u<r;){var i=t[u];if(n(i[0],this,e))return n(i[1],this,e)}})},An.conforms=function(n){return vt(_t(n,1))},An.constant=Tu,\nAn.countBy=$o,An.create=function(n,t){var r=eo(n);return null==t?r:at(r,t)},An.curry=iu,An.curryRight=ou,An.debounce=fu,An.defaults=wf,An.defaultsDeep=mf,An.defer=Yo,An.delay=Qo,An.difference=wo,An.differenceBy=mo,An.differenceWith=Ao,An.drop=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),hr(n,0>t?0:t,e)):[]},An.dropRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),t=e-t,hr(n,0,0>t?0:t)):[]},An.dropRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true,true):[];\n},An.dropWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),true):[]},An.fill=function(n,t,r,e){var u=null==n?0:n.length;if(!u)return[];for(r&&typeof r!=\"number\"&&Oe(n,t,r)&&(r=0,e=u),u=n.length,r=Eu(r),0>r&&(r=-r>u?0:u+r),e=e===T||e>u?u:Eu(e),0>e&&(e+=u),e=r>e?0:ku(e);r<e;)n[r++]=t;return n},An.filter=function(n,t){return(ff(n)?i:jt)(n,ye(t,3))},An.flatMap=function(n,t){return wt(ru(n,t),1)},An.flatMapDeep=function(n,t){return wt(ru(n,t),$)},An.flatMapDepth=function(n,t,r){return r=r===T?1:Eu(r),\nwt(ru(n,t),r)},An.flatten=Ze,An.flattenDeep=function(n){return(null==n?0:n.length)?wt(n,$):[]},An.flattenDepth=function(n,t){return null!=n&&n.length?(t=t===T?1:Eu(t),wt(n,t)):[]},An.flip=function(n){return fe(n,512)},An.flow=Pf,An.flowRight=Zf,An.fromPairs=function(n){for(var t=-1,r=null==n?0:n.length,e={};++t<r;){var u=n[t];e[u[0]]=u[1]}return e},An.functions=function(n){return null==n?[]:Et(n,Wu(n))},An.functionsIn=function(n){return null==n?[]:Et(n,Bu(n))},An.groupBy=Po,An.initial=function(n){\nreturn(null==n?0:n.length)?hr(n,0,-1):[]},An.intersection=Eo,An.intersectionBy=ko,An.intersectionWith=So,An.invert=Af,An.invertBy=Ef,An.invokeMap=Zo,An.iteratee=Fu,An.keyBy=qo,An.keys=Wu,An.keysIn=Bu,An.map=ru,An.mapKeys=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,t(n,e,u),n)}),r},An.mapValues=function(n,t){var r={};return t=ye(t,3),mt(n,function(n,e,u){st(r,e,t(n,e,u))}),r},An.matches=function(n){return Ht(_t(n,1))},An.matchesProperty=function(n,t){return Jt(n,_t(t,1))},An.memoize=cu,\nAn.merge=Sf,An.mergeWith=Of,An.method=qf,An.methodOf=Vf,An.mixin=Nu,An.negate=au,An.nthArg=function(n){return n=Eu(n),fr(function(t){return Qt(t,n)})},An.omit=If,An.omitBy=function(n,t){return Lu(n,au(ye(t)))},An.once=function(n){return uu(2,n)},An.orderBy=function(n,t,r,e){return null==n?[]:(ff(t)||(t=null==t?[]:[t]),r=e?T:r,ff(r)||(r=null==r?[]:[r]),Xt(n,t,r))},An.over=Kf,An.overArgs=Xo,An.overEvery=Gf,An.overSome=Hf,An.partial=nf,An.partialRight=tf,An.partition=Vo,An.pick=Rf,An.pickBy=Lu,An.property=Zu,\nAn.propertyOf=function(n){return function(t){return null==n?T:kt(n,t)}},An.pull=Oo,An.pullAll=Ke,An.pullAllBy=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,ye(r,2)):n},An.pullAllWith=function(n,t,r){return n&&n.length&&t&&t.length?er(n,t,T,r):n},An.pullAt=Io,An.range=Jf,An.rangeRight=Yf,An.rearg=rf,An.reject=function(n,t){return(ff(n)?i:jt)(n,au(ye(t,3)))},An.remove=function(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],i=n.length;for(t=ye(t,3);++e<i;){var o=n[e];t(o,e,n)&&(r.push(o),\nu.push(e))}return ur(n,u),r},An.rest=function(n,t){if(typeof n!=\"function\")throw new ti(\"Expected a function\");return t=t===T?t:Eu(t),fr(n,t)},An.reverse=Ge,An.sampleSize=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Eu(t),(ff(n)?et:ar)(n,t)},An.set=function(n,t,r){return null==n?n:lr(n,t,r)},An.setWith=function(n,t,r,e){return e=typeof e==\"function\"?e:T,null==n?n:lr(n,t,r,e)},An.shuffle=function(n){return(ff(n)?ut:sr)(n)},An.slice=function(n,t,r){var e=null==n?0:n.length;return e?(r&&typeof r!=\"number\"&&Oe(n,t,r)?(t=0,\nr=e):(t=null==t?0:Eu(t),r=r===T?e:Eu(r)),hr(n,t,r)):[]},An.sortBy=Ko,An.sortedUniq=function(n){return n&&n.length?gr(n):[]},An.sortedUniqBy=function(n,t){return n&&n.length?gr(n,ye(t,2)):[]},An.split=function(n,t,r){return r&&typeof r!=\"number\"&&Oe(n,t,r)&&(t=r=T),r=r===T?4294967295:r>>>0,r?(n=Iu(n))&&(typeof t==\"string\"||null!=t&&!hf(t))&&(t=yr(t),!t&&Rn.test(n))?Or(M(n),0,r):n.split(t,r):[]},An.spread=function(t,r){if(typeof t!=\"function\")throw new ti(\"Expected a function\");return r=null==r?0:Ui(Eu(r),0),\nfr(function(e){var u=e[r];return e=Or(e,0,r),u&&a(e,u),n(t,this,e)})},An.tail=function(n){var t=null==n?0:n.length;return t?hr(n,1,t):[]},An.take=function(n,t,r){return n&&n.length?(t=r||t===T?1:Eu(t),hr(n,0,0>t?0:t)):[]},An.takeRight=function(n,t,r){var e=null==n?0:n.length;return e?(t=r||t===T?1:Eu(t),t=e-t,hr(n,0>t?0:t,e)):[]},An.takeRightWhile=function(n,t){return n&&n.length?jr(n,ye(t,3),false,true):[]},An.takeWhile=function(n,t){return n&&n.length?jr(n,ye(t,3)):[]},An.tap=function(n,t){return t(n),\nn},An.throttle=function(n,t,r){var e=true,u=true;if(typeof n!=\"function\")throw new ti(\"Expected a function\");return du(r)&&(e=\"leading\"in r?!!r.leading:e,u=\"trailing\"in r?!!r.trailing:u),fu(n,t,{leading:e,maxWait:t,trailing:u})},An.thru=Qe,An.toArray=mu,An.toPairs=zf,An.toPairsIn=Wf,An.toPath=function(n){return ff(n)?c(n,Me):wu(n)?[n]:Ur(jo(Iu(n)))},An.toPlainObject=Ou,An.transform=function(n,t,e){var u=ff(n),i=u||af(n)||_f(n);if(t=ye(t,4),null==e){var o=n&&n.constructor;e=i?u?new o:[]:du(n)&&_u(o)?eo(di(n)):{};\n}return(i?r:mt)(n,function(n,r,u){return t(e,n,r,u)}),e},An.unary=function(n){return eu(n,1)},An.union=Ro,An.unionBy=zo,An.unionWith=Wo,An.uniq=function(n){return n&&n.length?br(n):[]},An.uniqBy=function(n,t){return n&&n.length?br(n,ye(t,2)):[]},An.uniqWith=function(n,t){return t=typeof t==\"function\"?t:T,n&&n.length?br(n,T,t):[]},An.unset=function(n,t){return null==n||xr(n,t)},An.unzip=He,An.unzipWith=Je,An.update=function(n,t,r){return null==n?n:lr(n,t,kr(r)(kt(n,t)),void 0)},An.updateWith=function(n,t,r,e){\nreturn e=typeof e==\"function\"?e:T,null!=n&&(n=lr(n,t,kr(r)(kt(n,t)),e)),n},An.values=Uu,An.valuesIn=function(n){return null==n?[]:S(n,Bu(n))},An.without=Bo,An.words=Mu,An.wrap=function(n,t){return nf(kr(t),n)},An.xor=Lo,An.xorBy=Uo,An.xorWith=Co,An.zip=Do,An.zipObject=function(n,t){return Ar(n||[],t||[],ot)},An.zipObjectDeep=function(n,t){return Ar(n||[],t||[],lr)},An.zipWith=Mo,An.entries=zf,An.entriesIn=Wf,An.extend=yf,An.extendWith=bf,Nu(An,An),An.add=Qf,An.attempt=Ff,An.camelCase=Bf,An.capitalize=Cu,\nAn.ceil=Xf,An.clamp=function(n,t,r){return r===T&&(r=t,t=T),r!==T&&(r=Su(r),r=r===r?r:0),t!==T&&(t=Su(t),t=t===t?t:0),pt(Su(n),t,r)},An.clone=function(n){return _t(n,4)},An.cloneDeep=function(n){return _t(n,5)},An.cloneDeepWith=function(n,t){return t=typeof t==\"function\"?t:T,_t(n,5,t)},An.cloneWith=function(n,t){return t=typeof t==\"function\"?t:T,_t(n,4,t)},An.conformsTo=function(n,t){return null==t||gt(n,t,Wu(t))},An.deburr=Du,An.defaultTo=function(n,t){return null==n||n!==n?t:n},An.divide=nc,An.endsWith=function(n,t,r){\nn=Iu(n),t=yr(t);var e=n.length,e=r=r===T?e:pt(Eu(r),0,e);return r-=t.length,0<=r&&n.slice(r,e)==t},An.eq=lu,An.escape=function(n){return(n=Iu(n))&&H.test(n)?n.replace(K,nt):n},An.escapeRegExp=function(n){return(n=Iu(n))&&en.test(n)?n.replace(rn,\"\\\\$&\"):n},An.every=function(n,t,r){var e=ff(n)?u:bt;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.find=Fo,An.findIndex=Ne,An.findKey=function(n,t){return p(n,ye(t,3),mt)},An.findLast=No,An.findLastIndex=Pe,An.findLastKey=function(n,t){return p(n,ye(t,3),At);\n},An.floor=tc,An.forEach=nu,An.forEachRight=tu,An.forIn=function(n,t){return null==n?n:oo(n,ye(t,3),Bu)},An.forInRight=function(n,t){return null==n?n:fo(n,ye(t,3),Bu)},An.forOwn=function(n,t){return n&&mt(n,ye(t,3))},An.forOwnRight=function(n,t){return n&&At(n,ye(t,3))},An.get=Ru,An.gt=ef,An.gte=uf,An.has=function(n,t){return null!=n&&we(n,t,Rt)},An.hasIn=zu,An.head=qe,An.identity=$u,An.includes=function(n,t,r,e){return n=su(n)?n:Uu(n),r=r&&!e?Eu(r):0,e=n.length,0>r&&(r=Ui(e+r,0)),ju(n)?r<=e&&-1<n.indexOf(t,r):!!e&&-1<v(n,t,r);\n},An.indexOf=function(n,t,r){var e=null==n?0:n.length;return e?(r=null==r?0:Eu(r),0>r&&(r=Ui(e+r,0)),v(n,t,r)):-1},An.inRange=function(n,t,r){return t=Au(t),r===T?(r=t,t=0):r=Au(r),n=Su(n),n>=Ci(t,r)&&n<Ui(t,r)},An.invoke=kf,An.isArguments=of,An.isArray=ff,An.isArrayBuffer=cf,An.isArrayLike=su,An.isArrayLikeObject=hu,An.isBoolean=function(n){return true===n||false===n||yu(n)&&\"[object Boolean]\"==Ot(n)},An.isBuffer=af,An.isDate=lf,An.isElement=function(n){return yu(n)&&1===n.nodeType&&!xu(n)},An.isEmpty=function(n){\nif(null==n)return true;if(su(n)&&(ff(n)||typeof n==\"string\"||typeof n.splice==\"function\"||af(n)||_f(n)||of(n)))return!n.length;var t=vo(n);if(\"[object Map]\"==t||\"[object Set]\"==t)return!n.size;if(ze(n))return!Vt(n).length;for(var r in n)if(oi.call(n,r))return false;return true},An.isEqual=function(n,t){return Mt(n,t)},An.isEqualWith=function(n,t,r){var e=(r=typeof r==\"function\"?r:T)?r(n,t):T;return e===T?Mt(n,t,T,r):!!e},An.isError=pu,An.isFinite=function(n){return typeof n==\"number\"&&Wi(n)},An.isFunction=_u,\nAn.isInteger=vu,An.isLength=gu,An.isMap=sf,An.isMatch=function(n,t){return n===t||$t(n,t,xe(t))},An.isMatchWith=function(n,t,r){return r=typeof r==\"function\"?r:T,$t(n,t,xe(t),r)},An.isNaN=function(n){return bu(n)&&n!=+n},An.isNative=function(n){if(go(n))throw new Hu(\"Unsupported core-js use. Try https://npms.io/search?q=ponyfill.\");return Ft(n)},An.isNil=function(n){return null==n},An.isNull=function(n){return null===n},An.isNumber=bu,An.isObject=du,An.isObjectLike=yu,An.isPlainObject=xu,An.isRegExp=hf,\nAn.isSafeInteger=function(n){return vu(n)&&-9007199254740991<=n&&9007199254740991>=n},An.isSet=pf,An.isString=ju,An.isSymbol=wu,An.isTypedArray=_f,An.isUndefined=function(n){return n===T},An.isWeakMap=function(n){return yu(n)&&\"[object WeakMap]\"==vo(n)},An.isWeakSet=function(n){return yu(n)&&\"[object WeakSet]\"==Ot(n)},An.join=function(n,t){return null==n?\"\":Bi.call(n,t)},An.kebabCase=Lf,An.last=Ve,An.lastIndexOf=function(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=e;if(r!==T&&(u=Eu(r),u=0>u?Ui(e+u,0):Ci(u,e-1)),\nt===t){for(r=u+1;r--&&n[r]!==t;);n=r}else n=_(n,d,u,true);return n},An.lowerCase=Uf,An.lowerFirst=Cf,An.lt=vf,An.lte=gf,An.max=function(n){return n&&n.length?xt(n,$u,It):T},An.maxBy=function(n,t){return n&&n.length?xt(n,ye(t,2),It):T},An.mean=function(n){return y(n,$u)},An.meanBy=function(n,t){return y(n,ye(t,2))},An.min=function(n){return n&&n.length?xt(n,$u,Kt):T},An.minBy=function(n,t){return n&&n.length?xt(n,ye(t,2),Kt):T},An.stubArray=qu,An.stubFalse=Vu,An.stubObject=function(){return{}},An.stubString=function(){\nreturn\"\"},An.stubTrue=function(){return true},An.multiply=rc,An.nth=function(n,t){return n&&n.length?Qt(n,Eu(t)):T},An.noConflict=function(){return $n._===this&&($n._=si),this},An.noop=Pu,An.now=Go,An.pad=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return!t||e>=t?n:(t=(t-e)/2,ne(Ii(t),r)+n+ne(Oi(t),r))},An.padEnd=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return t&&e<t?n+ne(t-e,r):n},An.padStart=function(n,t,r){n=Iu(n);var e=(t=Eu(t))?D(n):0;return t&&e<t?ne(t-e,r)+n:n},An.parseInt=function(n,t,r){\nreturn r||null==t?t=0:t&&(t=+t),Mi(Iu(n).replace(on,\"\"),t||0)},An.random=function(n,t,r){if(r&&typeof r!=\"boolean\"&&Oe(n,t,r)&&(t=r=T),r===T&&(typeof t==\"boolean\"?(r=t,t=T):typeof n==\"boolean\"&&(r=n,n=T)),n===T&&t===T?(n=0,t=1):(n=Au(n),t===T?(t=n,n=0):t=Au(t)),n>t){var e=n;n=t,t=e}return r||n%1||t%1?(r=Ti(),Ci(n+r*(t-n+Cn(\"1e-\"+((r+\"\").length-1))),t)):ir(n,t)},An.reduce=function(n,t,r){var e=ff(n)?l:j,u=3>arguments.length;return e(n,ye(t,4),r,u,uo)},An.reduceRight=function(n,t,r){var e=ff(n)?s:j,u=3>arguments.length;\nreturn e(n,ye(t,4),r,u,io)},An.repeat=function(n,t,r){return t=(r?Oe(n,t,r):t===T)?1:Eu(t),or(Iu(n),t)},An.replace=function(){var n=arguments,t=Iu(n[0]);return 3>n.length?t:t.replace(n[1],n[2])},An.result=function(n,t,r){t=Sr(t,n);var e=-1,u=t.length;for(u||(u=1,n=T);++e<u;){var i=null==n?T:n[Me(t[e])];i===T&&(e=u,i=r),n=_u(i)?i.call(n):i}return n},An.round=ec,An.runInContext=x,An.sample=function(n){return(ff(n)?Qn:cr)(n)},An.size=function(n){if(null==n)return 0;if(su(n))return ju(n)?D(n):n.length;\nvar t=vo(n);return\"[object Map]\"==t||\"[object Set]\"==t?n.size:Vt(n).length},An.snakeCase=Df,An.some=function(n,t,r){var e=ff(n)?h:pr;return r&&Oe(n,t,r)&&(t=T),e(n,ye(t,3))},An.sortedIndex=function(n,t){return _r(n,t)},An.sortedIndexBy=function(n,t,r){return vr(n,t,ye(r,2))},An.sortedIndexOf=function(n,t){var r=null==n?0:n.length;if(r){var e=_r(n,t);if(e<r&&lu(n[e],t))return e}return-1},An.sortedLastIndex=function(n,t){return _r(n,t,true)},An.sortedLastIndexBy=function(n,t,r){return vr(n,t,ye(r,2),true);\n},An.sortedLastIndexOf=function(n,t){if(null==n?0:n.length){var r=_r(n,t,true)-1;if(lu(n[r],t))return r}return-1},An.startCase=Mf,An.startsWith=function(n,t,r){return n=Iu(n),r=null==r?0:pt(Eu(r),0,n.length),t=yr(t),n.slice(r,r+t.length)==t},An.subtract=uc,An.sum=function(n){return n&&n.length?m(n,$u):0},An.sumBy=function(n,t){return n&&n.length?m(n,ye(t,2)):0},An.template=function(n,t,r){var e=An.templateSettings;r&&Oe(n,t,r)&&(t=T),n=Iu(n),t=bf({},t,e,ce),r=bf({},t.imports,e.imports,ce);var u,i,o=Wu(r),f=S(r,o),c=0;\nr=t.interpolate||jn;var a=\"__p+='\";r=Xu((t.escape||jn).source+\"|\"+r.source+\"|\"+(r===Q?pn:jn).source+\"|\"+(t.evaluate||jn).source+\"|$\",\"g\");var l=oi.call(t,\"sourceURL\")?\"//# sourceURL=\"+(t.sourceURL+\"\").replace(/[\\r\\n]/g,\" \")+\"\\n\":\"\";if(n.replace(r,function(t,r,e,o,f,l){return e||(e=o),a+=n.slice(c,l).replace(wn,z),r&&(u=true,a+=\"'+__e(\"+r+\")+'\"),f&&(i=true,a+=\"';\"+f+\";\\n__p+='\"),e&&(a+=\"'+((__t=(\"+e+\"))==null?'':__t)+'\"),c=l+t.length,t}),a+=\"';\",(t=oi.call(t,\"variable\")&&t.variable)||(a=\"with(obj){\"+a+\"}\"),\na=(i?a.replace(P,\"\"):a).replace(Z,\"$1\").replace(q,\"$1;\"),a=\"function(\"+(t||\"obj\")+\"){\"+(t?\"\":\"obj||(obj={});\")+\"var __t,__p=''\"+(u?\",__e=_.escape\":\"\")+(i?\",__j=Array.prototype.join;function print(){__p+=__j.call(arguments,'')}\":\";\")+a+\"return __p}\",t=Ff(function(){return Ju(o,l+\"return \"+a).apply(T,f)}),t.source=a,pu(t))throw t;return t},An.times=function(n,t){if(n=Eu(n),1>n||9007199254740991<n)return[];var r=4294967295,e=Ci(n,4294967295);for(t=ye(t),n-=4294967295,e=A(e,t);++r<n;)t(r);return e},An.toFinite=Au,\nAn.toInteger=Eu,An.toLength=ku,An.toLower=function(n){return Iu(n).toLowerCase()},An.toNumber=Su,An.toSafeInteger=function(n){return n?pt(Eu(n),-9007199254740991,9007199254740991):0===n?n:0},An.toString=Iu,An.toUpper=function(n){return Iu(n).toUpperCase()},An.trim=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(un,\"\"):n&&(t=yr(t))?(n=M(n),r=M(t),t=I(n,r),r=R(n,r)+1,Or(n,t,r).join(\"\")):n},An.trimEnd=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(fn,\"\"):n&&(t=yr(t))?(n=M(n),t=R(n,M(t))+1,\nOr(n,0,t).join(\"\")):n},An.trimStart=function(n,t,r){return(n=Iu(n))&&(r||t===T)?n.replace(on,\"\"):n&&(t=yr(t))?(n=M(n),t=I(n,M(t)),Or(n,t).join(\"\")):n},An.truncate=function(n,t){var r=30,e=\"...\";if(du(t))var u=\"separator\"in t?t.separator:u,r=\"length\"in t?Eu(t.length):r,e=\"omission\"in t?yr(t.omission):e;n=Iu(n);var i=n.length;if(Rn.test(n))var o=M(n),i=o.length;if(r>=i)return n;if(i=r-D(e),1>i)return e;if(r=o?Or(o,0,i).join(\"\"):n.slice(0,i),u===T)return r+e;if(o&&(i+=r.length-i),hf(u)){if(n.slice(i).search(u)){\nvar f=r;for(u.global||(u=Xu(u.source,Iu(_n.exec(u))+\"g\")),u.lastIndex=0;o=u.exec(f);)var c=o.index;r=r.slice(0,c===T?i:c)}}else n.indexOf(yr(u),i)!=i&&(u=r.lastIndexOf(u),-1<u&&(r=r.slice(0,u)));return r+e},An.unescape=function(n){return(n=Iu(n))&&G.test(n)?n.replace(V,tt):n},An.uniqueId=function(n){var t=++fi;return Iu(n)+t},An.upperCase=Tf,An.upperFirst=$f,An.each=nu,An.eachRight=tu,An.first=qe,Nu(An,function(){var n={};return mt(An,function(t,r){oi.call(An.prototype,r)||(n[r]=t)}),n}(),{chain:false\n}),An.VERSION=\"4.17.15\",r(\"bind bindKey curry curryRight partial partialRight\".split(\" \"),function(n){An[n].placeholder=An}),r([\"drop\",\"take\"],function(n,t){Un.prototype[n]=function(r){r=r===T?1:Ui(Eu(r),0);var e=this.__filtered__&&!t?new Un(this):this.clone();return e.__filtered__?e.__takeCount__=Ci(r,e.__takeCount__):e.__views__.push({size:Ci(r,4294967295),type:n+(0>e.__dir__?\"Right\":\"\")}),e},Un.prototype[n+\"Right\"]=function(t){return this.reverse()[n](t).reverse()}}),r([\"filter\",\"map\",\"takeWhile\"],function(n,t){\nvar r=t+1,e=1==r||3==r;Un.prototype[n]=function(n){var t=this.clone();return t.__iteratees__.push({iteratee:ye(n,3),type:r}),t.__filtered__=t.__filtered__||e,t}}),r([\"head\",\"last\"],function(n,t){var r=\"take\"+(t?\"Right\":\"\");Un.prototype[n]=function(){return this[r](1).value()[0]}}),r([\"initial\",\"tail\"],function(n,t){var r=\"drop\"+(t?\"\":\"Right\");Un.prototype[n]=function(){return this.__filtered__?new Un(this):this[r](1)}}),Un.prototype.compact=function(){return this.filter($u)},Un.prototype.find=function(n){\nreturn this.filter(n).head()},Un.prototype.findLast=function(n){return this.reverse().find(n)},Un.prototype.invokeMap=fr(function(n,t){return typeof n==\"function\"?new Un(this):this.map(function(r){return Lt(r,n,t)})}),Un.prototype.reject=function(n){return this.filter(au(ye(n)))},Un.prototype.slice=function(n,t){n=Eu(n);var r=this;return r.__filtered__&&(0<n||0>t)?new Un(r):(0>n?r=r.takeRight(-n):n&&(r=r.drop(n)),t!==T&&(t=Eu(t),r=0>t?r.dropRight(-t):r.take(t-n)),r)},Un.prototype.takeRightWhile=function(n){\nreturn this.reverse().takeWhile(n).reverse()},Un.prototype.toArray=function(){return this.take(4294967295)},mt(Un.prototype,function(n,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),e=/^(?:head|last)$/.test(t),u=An[e?\"take\"+(\"last\"==t?\"Right\":\"\"):t],i=e||/^find/.test(t);u&&(An.prototype[t]=function(){function t(n){return n=u.apply(An,a([n],f)),e&&h?n[0]:n}var o=this.__wrapped__,f=e?[1]:arguments,c=o instanceof Un,l=f[0],s=c||ff(o);s&&r&&typeof l==\"function\"&&1!=l.length&&(c=s=false);var h=this.__chain__,p=!!this.__actions__.length,l=i&&!h,c=c&&!p;\nreturn!i&&s?(o=c?o:new Un(this),o=n.apply(o,f),o.__actions__.push({func:Qe,args:[t],thisArg:T}),new On(o,h)):l&&c?n.apply(this,f):(o=this.thru(t),l?e?o.value()[0]:o.value():o)})}),r(\"pop push shift sort splice unshift\".split(\" \"),function(n){var t=ri[n],r=/^(?:push|sort|unshift)$/.test(n)?\"tap\":\"thru\",e=/^(?:pop|shift)$/.test(n);An.prototype[n]=function(){var n=arguments;if(e&&!this.__chain__){var u=this.value();return t.apply(ff(u)?u:[],n)}return this[r](function(r){return t.apply(ff(r)?r:[],n)});\n}}),mt(Un.prototype,function(n,t){var r=An[t];if(r){var e=r.name+\"\";oi.call(Gi,e)||(Gi[e]=[]),Gi[e].push({name:t,func:r})}}),Gi[Jr(T,2).name]=[{name:\"wrapper\",func:T}],Un.prototype.clone=function(){var n=new Un(this.__wrapped__);return n.__actions__=Ur(this.__actions__),n.__dir__=this.__dir__,n.__filtered__=this.__filtered__,n.__iteratees__=Ur(this.__iteratees__),n.__takeCount__=this.__takeCount__,n.__views__=Ur(this.__views__),n},Un.prototype.reverse=function(){if(this.__filtered__){var n=new Un(this);\nn.__dir__=-1,n.__filtered__=true}else n=this.clone(),n.__dir__*=-1;return n},Un.prototype.value=function(){var n,t=this.__wrapped__.value(),r=this.__dir__,e=ff(t),u=0>r,i=e?t.length:0;n=i;for(var o=this.__views__,f=0,c=-1,a=o.length;++c<a;){var l=o[c],s=l.size;switch(l.type){case\"drop\":f+=s;break;case\"dropRight\":n-=s;break;case\"take\":n=Ci(n,f+s);break;case\"takeRight\":f=Ui(f,n-s)}}if(n={start:f,end:n},o=n.start,f=n.end,n=f-o,o=u?f:o-1,f=this.__iteratees__,c=f.length,a=0,l=Ci(n,this.__takeCount__),!e||!u&&i==n&&l==n)return wr(t,this.__actions__);\ne=[];n:for(;n--&&a<l;){for(o+=r,u=-1,i=t[o];++u<c;){var h=f[u],s=h.type,h=(0,h.iteratee)(i);if(2==s)i=h;else if(!h){if(1==s)continue n;break n}}e[a++]=i}return e},An.prototype.at=To,An.prototype.chain=function(){return Ye(this)},An.prototype.commit=function(){return new On(this.value(),this.__chain__)},An.prototype.next=function(){this.__values__===T&&(this.__values__=mu(this.value()));var n=this.__index__>=this.__values__.length;return{done:n,value:n?T:this.__values__[this.__index__++]}},An.prototype.plant=function(n){\nfor(var t,r=this;r instanceof En;){var e=Fe(r);e.__index__=0,e.__values__=T,t?u.__wrapped__=e:t=e;var u=e,r=r.__wrapped__}return u.__wrapped__=n,t},An.prototype.reverse=function(){var n=this.__wrapped__;return n instanceof Un?(this.__actions__.length&&(n=new Un(this)),n=n.reverse(),n.__actions__.push({func:Qe,args:[Ge],thisArg:T}),new On(n,this.__chain__)):this.thru(Ge)},An.prototype.toJSON=An.prototype.valueOf=An.prototype.value=function(){return wr(this.__wrapped__,this.__actions__)},An.prototype.first=An.prototype.head,\nwi&&(An.prototype[wi]=Xe),An}();typeof define==\"function\"&&typeof define.amd==\"object\"&&define.amd?($n._=rt, define(function(){return rt})):Nn?((Nn.exports=rt)._=rt,Fn._=rt):$n._=rt}).call(this);","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n // Lodash aliases.\n 'each': 'forEach',\n 'eachRight': 'forEachRight',\n 'entries': 'toPairs',\n 'entriesIn': 'toPairsIn',\n 'extend': 'assignIn',\n 'extendAll': 'assignInAll',\n 'extendAllWith': 'assignInAllWith',\n 'extendWith': 'assignInWith',\n 'first': 'head',\n\n // Methods that are curried variants of others.\n 'conforms': 'conformsTo',\n 'matches': 'isMatch',\n 'property': 'get',\n\n // Ramda aliases.\n '__': 'placeholder',\n 'F': 'stubFalse',\n 'T': 'stubTrue',\n 'all': 'every',\n 'allPass': 'overEvery',\n 'always': 'constant',\n 'any': 'some',\n 'anyPass': 'overSome',\n 'apply': 'spread',\n 'assoc': 'set',\n 'assocPath': 'set',\n 'complement': 'negate',\n 'compose': 'flowRight',\n 'contains': 'includes',\n 'dissoc': 'unset',\n 'dissocPath': 'unset',\n 'dropLast': 'dropRight',\n 'dropLastWhile': 'dropRightWhile',\n 'equals': 'isEqual',\n 'identical': 'eq',\n 'indexBy': 'keyBy',\n 'init': 'initial',\n 'invertObj': 'invert',\n 'juxt': 'over',\n 'omitAll': 'omit',\n 'nAry': 'ary',\n 'path': 'get',\n 'pathEq': 'matchesProperty',\n 'pathOr': 'getOr',\n 'paths': 'at',\n 'pickAll': 'pick',\n 'pipe': 'flow',\n 'pluck': 'map',\n 'prop': 'get',\n 'propEq': 'matchesProperty',\n 'propOr': 'getOr',\n 'props': 'at',\n 'symmetricDifference': 'xor',\n 'symmetricDifferenceBy': 'xorBy',\n 'symmetricDifferenceWith': 'xorWith',\n 'takeLast': 'takeRight',\n 'takeLastWhile': 'takeRightWhile',\n 'unapply': 'rest',\n 'unnest': 'flatten',\n 'useWith': 'overArgs',\n 'where': 'conformsTo',\n 'whereEq': 'isMatch',\n 'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n '1': [\n 'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n 'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n 'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n 'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n 'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n 'uniqueId', 'words', 'zipAll'\n ],\n '2': [\n 'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n 'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n 'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n 'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n 'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n 'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n 'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n 'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n 'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n 'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n 'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n 'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n 'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n 'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n 'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n 'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n 'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n 'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n 'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n 'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n 'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n 'zipObjectDeep'\n ],\n '3': [\n 'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n 'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n 'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n 'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n 'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n 'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n 'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n 'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n 'xorWith', 'zipWith'\n ],\n '4': [\n 'fill', 'setWith', 'updateWith'\n ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n '2': [1, 0],\n '3': [2, 0, 1],\n '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n 'dropRightWhile': 1,\n 'dropWhile': 1,\n 'every': 1,\n 'filter': 1,\n 'find': 1,\n 'findFrom': 1,\n 'findIndex': 1,\n 'findIndexFrom': 1,\n 'findKey': 1,\n 'findLast': 1,\n 'findLastFrom': 1,\n 'findLastIndex': 1,\n 'findLastIndexFrom': 1,\n 'findLastKey': 1,\n 'flatMap': 1,\n 'flatMapDeep': 1,\n 'flatMapDepth': 1,\n 'forEach': 1,\n 'forEachRight': 1,\n 'forIn': 1,\n 'forInRight': 1,\n 'forOwn': 1,\n 'forOwnRight': 1,\n 'map': 1,\n 'mapKeys': 1,\n 'mapValues': 1,\n 'partition': 1,\n 'reduce': 2,\n 'reduceRight': 2,\n 'reject': 1,\n 'remove': 1,\n 'some': 1,\n 'takeRightWhile': 1,\n 'takeWhile': 1,\n 'times': 1,\n 'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n 'mapKeys': [1],\n 'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n 'assignInAllWith': [1, 0],\n 'assignInWith': [1, 2, 0],\n 'assignAllWith': [1, 0],\n 'assignWith': [1, 2, 0],\n 'differenceBy': [1, 2, 0],\n 'differenceWith': [1, 2, 0],\n 'getOr': [2, 1, 0],\n 'intersectionBy': [1, 2, 0],\n 'intersectionWith': [1, 2, 0],\n 'isEqualWith': [1, 2, 0],\n 'isMatchWith': [2, 1, 0],\n 'mergeAllWith': [1, 0],\n 'mergeWith': [1, 2, 0],\n 'padChars': [2, 1, 0],\n 'padCharsEnd': [2, 1, 0],\n 'padCharsStart': [2, 1, 0],\n 'pullAllBy': [2, 1, 0],\n 'pullAllWith': [2, 1, 0],\n 'rangeStep': [1, 2, 0],\n 'rangeStepRight': [1, 2, 0],\n 'setWith': [3, 1, 2, 0],\n 'sortedIndexBy': [2, 1, 0],\n 'sortedLastIndexBy': [2, 1, 0],\n 'unionBy': [1, 2, 0],\n 'unionWith': [1, 2, 0],\n 'updateWith': [3, 1, 2, 0],\n 'xorBy': [1, 2, 0],\n 'xorWith': [1, 2, 0],\n 'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n 'assignAll': { 'start': 0 },\n 'assignAllWith': { 'start': 0 },\n 'assignInAll': { 'start': 0 },\n 'assignInAllWith': { 'start': 0 },\n 'defaultsAll': { 'start': 0 },\n 'defaultsDeepAll': { 'start': 0 },\n 'invokeArgs': { 'start': 2 },\n 'invokeArgsMap': { 'start': 2 },\n 'mergeAll': { 'start': 0 },\n 'mergeAllWith': { 'start': 0 },\n 'partial': { 'start': 1 },\n 'partialRight': { 'start': 1 },\n 'without': { 'start': 1 },\n 'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n 'array': {\n 'fill': true,\n 'pull': true,\n 'pullAll': true,\n 'pullAllBy': true,\n 'pullAllWith': true,\n 'pullAt': true,\n 'remove': true,\n 'reverse': true\n },\n 'object': {\n 'assign': true,\n 'assignAll': true,\n 'assignAllWith': true,\n 'assignIn': true,\n 'assignInAll': true,\n 'assignInAllWith': true,\n 'assignInWith': true,\n 'assignWith': true,\n 'defaults': true,\n 'defaultsAll': true,\n 'defaultsDeep': true,\n 'defaultsDeepAll': true,\n 'merge': true,\n 'mergeAll': true,\n 'mergeAllWith': true,\n 'mergeWith': true,\n },\n 'set': {\n 'set': true,\n 'setWith': true,\n 'unset': true,\n 'update': true,\n 'updateWith': true\n }\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n var hasOwnProperty = Object.prototype.hasOwnProperty,\n object = exports.aliasToReal,\n result = {};\n\n for (var key in object) {\n var value = object[key];\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }\n return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n 'assignAll': 'assign',\n 'assignAllWith': 'assignWith',\n 'assignInAll': 'assignIn',\n 'assignInAllWith': 'assignInWith',\n 'curryN': 'curry',\n 'curryRightN': 'curryRight',\n 'defaultsAll': 'defaults',\n 'defaultsDeepAll': 'defaultsDeep',\n 'findFrom': 'find',\n 'findIndexFrom': 'findIndex',\n 'findLastFrom': 'findLast',\n 'findLastIndexFrom': 'findLastIndex',\n 'getOr': 'get',\n 'includesFrom': 'includes',\n 'indexOfFrom': 'indexOf',\n 'invokeArgs': 'invoke',\n 'invokeArgsMap': 'invokeMap',\n 'lastIndexOfFrom': 'lastIndexOf',\n 'mergeAll': 'merge',\n 'mergeAllWith': 'mergeWith',\n 'padChars': 'pad',\n 'padCharsEnd': 'padEnd',\n 'padCharsStart': 'padStart',\n 'propertyOf': 'get',\n 'rangeStep': 'range',\n 'rangeStepRight': 'rangeRight',\n 'restFrom': 'rest',\n 'spreadFrom': 'spread',\n 'trimChars': 'trim',\n 'trimCharsEnd': 'trimEnd',\n 'trimCharsStart': 'trimStart',\n 'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n 'castArray': true,\n 'flow': true,\n 'flowRight': true,\n 'iteratee': true,\n 'mixin': true,\n 'rearg': true,\n 'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n 'add': true,\n 'assign': true,\n 'assignIn': true,\n 'bind': true,\n 'bindKey': true,\n 'concat': true,\n 'difference': true,\n 'divide': true,\n 'eq': true,\n 'gt': true,\n 'gte': true,\n 'isEqual': true,\n 'lt': true,\n 'lte': true,\n 'matchesProperty': true,\n 'merge': true,\n 'multiply': true,\n 'overArgs': true,\n 'partial': true,\n 'partialRight': true,\n 'propertyOf': true,\n 'random': true,\n 'range': true,\n 'rangeRight': true,\n 'subtract': true,\n 'zip': true,\n 'zipObject': true,\n 'zipObjectDeep': true\n};\n","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","var mapping = require('./_mapping'),\n fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n return n == 2\n ? function(a, b) { return func.apply(undefined, arguments); }\n : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n return n == 2\n ? function(a, b) { return func(a, b); }\n : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n var length = array ? array.length : 0,\n result = Array(length);\n\n while (length--) {\n result[length] = array[length];\n }\n return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n return function(object) {\n return func({}, object);\n };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n return function() {\n var length = arguments.length,\n lastIndex = length - 1,\n args = Array(length);\n\n while (length--) {\n args[length] = arguments[length];\n }\n var array = args[start],\n otherArgs = args.slice(0, start);\n\n if (array) {\n push.apply(otherArgs, array);\n }\n if (start != lastIndex) {\n push.apply(otherArgs, args.slice(start + 1));\n }\n return func.apply(this, otherArgs);\n };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return;\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var result = args[0] = cloner.apply(undefined, args);\n func.apply(undefined, args);\n return result;\n };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n var isLib = typeof name == 'function',\n isObj = name === Object(name);\n\n if (isObj) {\n options = func;\n func = name;\n name = undefined;\n }\n if (func == null) {\n throw new TypeError;\n }\n options || (options = {});\n\n var config = {\n 'cap': 'cap' in options ? options.cap : true,\n 'curry': 'curry' in options ? options.curry : true,\n 'fixed': 'fixed' in options ? options.fixed : true,\n 'immutable': 'immutable' in options ? options.immutable : true,\n 'rearg': 'rearg' in options ? options.rearg : true\n };\n\n var defaultHolder = isLib ? func : fallbackHolder,\n forceCurry = ('curry' in options) && options.curry,\n forceFixed = ('fixed' in options) && options.fixed,\n forceRearg = ('rearg' in options) && options.rearg,\n pristine = isLib ? func.runInContext() : undefined;\n\n var helpers = isLib ? func : {\n 'ary': util.ary,\n 'assign': util.assign,\n 'clone': util.clone,\n 'curry': util.curry,\n 'forEach': util.forEach,\n 'isArray': util.isArray,\n 'isError': util.isError,\n 'isFunction': util.isFunction,\n 'isWeakMap': util.isWeakMap,\n 'iteratee': util.iteratee,\n 'keys': util.keys,\n 'rearg': util.rearg,\n 'toInteger': util.toInteger,\n 'toPath': util.toPath\n };\n\n var ary = helpers.ary,\n assign = helpers.assign,\n clone = helpers.clone,\n curry = helpers.curry,\n each = helpers.forEach,\n isArray = helpers.isArray,\n isError = helpers.isError,\n isFunction = helpers.isFunction,\n isWeakMap = helpers.isWeakMap,\n keys = helpers.keys,\n rearg = helpers.rearg,\n toInteger = helpers.toInteger,\n toPath = helpers.toPath;\n\n var aryMethodKeys = keys(mapping.aryMethod);\n\n var wrappers = {\n 'castArray': function(castArray) {\n return function() {\n var value = arguments[0];\n return isArray(value)\n ? castArray(cloneArray(value))\n : castArray.apply(undefined, arguments);\n };\n },\n 'iteratee': function(iteratee) {\n return function() {\n var func = arguments[0],\n arity = arguments[1],\n result = iteratee(func, arity),\n length = result.length;\n\n if (config.cap && typeof arity == 'number') {\n arity = arity > 2 ? (arity - 2) : 1;\n return (length && length <= arity) ? result : baseAry(result, arity);\n }\n return result;\n };\n },\n 'mixin': function(mixin) {\n return function(source) {\n var func = this;\n if (!isFunction(func)) {\n return mixin(func, Object(source));\n }\n var pairs = [];\n each(keys(source), function(key) {\n if (isFunction(source[key])) {\n pairs.push([key, func.prototype[key]]);\n }\n });\n\n mixin(func, Object(source));\n\n each(pairs, function(pair) {\n var value = pair[1];\n if (isFunction(value)) {\n func.prototype[pair[0]] = value;\n } else {\n delete func.prototype[pair[0]];\n }\n });\n return func;\n };\n },\n 'nthArg': function(nthArg) {\n return function(n) {\n var arity = n < 0 ? 1 : (toInteger(n) + 1);\n return curry(nthArg(n), arity);\n };\n },\n 'rearg': function(rearg) {\n return function(func, indexes) {\n var arity = indexes ? indexes.length : 0;\n return curry(rearg(func, indexes), arity);\n };\n },\n 'runInContext': function(runInContext) {\n return function(context) {\n return baseConvert(util, runInContext(context), options);\n };\n }\n };\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Casts `func` to a function with an arity capped iteratee if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @returns {Function} Returns the cast function.\n */\n function castCap(name, func) {\n if (config.cap) {\n var indexes = mapping.iterateeRearg[name];\n if (indexes) {\n return iterateeRearg(func, indexes);\n }\n var n = !isLib && mapping.iterateeAry[name];\n if (n) {\n return iterateeAry(func, n);\n }\n }\n return func;\n }\n\n /**\n * Casts `func` to a curried function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castCurry(name, func, n) {\n return (forceCurry || (config.curry && n > 1))\n ? curry(func, n)\n : func;\n }\n\n /**\n * Casts `func` to a fixed arity function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the cast function.\n */\n function castFixed(name, func, n) {\n if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n var data = mapping.methodSpread[name],\n start = data && data.start;\n\n return start === undefined ? ary(func, n) : flatSpread(func, start);\n }\n return func;\n }\n\n /**\n * Casts `func` to an rearged function if needed.\n *\n * @private\n * @param {string} name The name of the function to inspect.\n * @param {Function} func The function to inspect.\n * @param {number} n The arity of `func`.\n * @returns {Function} Returns the cast function.\n */\n function castRearg(name, func, n) {\n return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n : func;\n }\n\n /**\n * Creates a clone of `object` by `path`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {Array|string} path The path to clone by.\n * @returns {Object} Returns the cloned object.\n */\n function cloneByPath(object, path) {\n path = toPath(path);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n result = clone(Object(object)),\n nested = result;\n\n while (nested != null && ++index < length) {\n var key = path[index],\n value = nested[key];\n\n if (value != null &&\n !(isFunction(value) || isError(value) || isWeakMap(value))) {\n nested[key] = clone(index == lastIndex ? value : Object(value));\n }\n nested = nested[key];\n }\n return result;\n }\n\n /**\n * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied.\n *\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function} Returns the converted `lodash`.\n */\n function convertLib(options) {\n return _.runInContext.convert(options)(undefined);\n }\n\n /**\n * Create a converter function for `func` of `name`.\n *\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @returns {Function} Returns the new converter function.\n */\n function createConverter(name, func) {\n var realName = mapping.aliasToReal[name] || name,\n methodName = mapping.remap[realName] || realName,\n oldOptions = options;\n\n return function(options) {\n var newUtil = isLib ? pristine : helpers,\n newFunc = isLib ? pristine[methodName] : func,\n newOptions = assign(assign({}, oldOptions), options);\n\n return baseConvert(newUtil, realName, newFunc, newOptions);\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n * arguments, ignoring any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap iteratee arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\n function iterateeAry(func, n) {\n return overArg(func, function(func) {\n return typeof func == 'function' ? baseAry(func, n) : func;\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke its iteratee with arguments\n * arranged according to the specified `indexes` where the argument value at\n * the first index is provided as the first argument, the argument value at\n * the second index is provided as the second argument, and so on.\n *\n * @private\n * @param {Function} func The function to rearrange iteratee arguments for.\n * @param {number[]} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n */\n function iterateeRearg(func, indexes) {\n return overArg(func, function(func) {\n var n = indexes.length;\n return baseArity(rearg(baseAry(func, n), indexes), n);\n });\n }\n\n /**\n * Creates a function that invokes `func` with its first argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function() {\n var length = arguments.length;\n if (!length) {\n return func();\n }\n var args = Array(length);\n while (length--) {\n args[length] = arguments[length];\n }\n var index = config.rearg ? 0 : (length - 1);\n args[index] = transform(args[index]);\n return func.apply(undefined, args);\n };\n }\n\n /**\n * Creates a function that wraps `func` and applys the conversions\n * rules by `name`.\n *\n * @private\n * @param {string} name The name of the function to wrap.\n * @param {Function} func The function to wrap.\n * @returns {Function} Returns the converted function.\n */\n function wrap(name, func, placeholder) {\n var result,\n realName = mapping.aliasToReal[name] || name,\n wrapped = func,\n wrapper = wrappers[realName];\n\n if (wrapper) {\n wrapped = wrapper(func);\n }\n else if (config.immutable) {\n if (mapping.mutate.array[realName]) {\n wrapped = wrapImmutable(func, cloneArray);\n }\n else if (mapping.mutate.object[realName]) {\n wrapped = wrapImmutable(func, createCloner(func));\n }\n else if (mapping.mutate.set[realName]) {\n wrapped = wrapImmutable(func, cloneByPath);\n }\n }\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(otherName) {\n if (realName == otherName) {\n var data = mapping.methodSpread[realName],\n afterRearg = data && data.afterRearg;\n\n result = afterRearg\n ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n result = castCap(realName, result);\n result = castCurry(realName, result, aryKey);\n return false;\n }\n });\n return !result;\n });\n\n result || (result = wrapped);\n if (result == func) {\n result = forceCurry ? curry(result, 1) : function() {\n return func.apply(this, arguments);\n };\n }\n result.convert = createConverter(realName, func);\n result.placeholder = func.placeholder = placeholder;\n\n return result;\n }\n\n /*--------------------------------------------------------------------------*/\n\n if (!isObj) {\n return wrap(name, func, defaultHolder);\n }\n var _ = func;\n\n // Convert methods by ary cap.\n var pairs = [];\n each(aryMethodKeys, function(aryKey) {\n each(mapping.aryMethod[aryKey], function(key) {\n var func = _[mapping.remap[key] || key];\n if (func) {\n pairs.push([key, wrap(key, func, _)]);\n }\n });\n });\n\n // Convert remaining methods.\n each(keys(_), function(key) {\n var func = _[key];\n if (typeof func == 'function') {\n var length = pairs.length;\n while (length--) {\n if (pairs[length][0] == key) {\n return;\n }\n }\n func.convert = createConverter(key, func);\n pairs.push([key, func]);\n }\n });\n\n // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n each(pairs, function(pair) {\n _[pair[0]] = pair[1];\n });\n\n _.convert = convertLib;\n _.placeholder = _;\n\n // Assign aliases.\n each(keys(_), function(key) {\n each(mapping.realToAlias[key] || [], function(alias) {\n _[alias] = _[key];\n });\n });\n\n return _;\n}\n\nmodule.exports = baseConvert;\n","var _ = require('./lodash.min').runInContext();\nmodule.exports = require('./fp/_baseConvert')(_, _);\n","'use strict';\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed/(233280.0);\n}\n\nfunction setSeed(_seed_) {\n seed = _seed_;\n}\n\nmodule.exports = {\n nextValue: getNextValue,\n seed: setSeed\n};\n","'use strict';\n\nvar randomFromSeed = require('./random/random-from-seed');\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet !== ORIGINAL) {\n alphabet = ORIGINAL;\n reset();\n }\n return;\n }\n\n if (_alphabet_ === alphabet) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet || ORIGINAL;\n}\n\nmodule.exports = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n","'use strict';\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nmodule.exports = randomByte;\n","/**\n * Secure random string generator with custom alphabet.\n *\n * Alphabet must contain 256 symbols or less. Otherwise, the generator\n * will not be secure.\n *\n * @param {generator} random The random bytes generator.\n * @param {string} alphabet Symbols to be used in new random string.\n * @param {size} size The number of symbols in new random string.\n *\n * @return {string} Random string.\n *\n * @example\n * const format = require('nanoid/format')\n *\n * function random (size) {\n * const result = []\n * for (let i = 0; i < size; i++) {\n * result.push(randomByte())\n * }\n * return result\n * }\n *\n * format(random, \"abcdef\", 5) //=> \"fbaef\"\n *\n * @name format\n * @function\n */\nmodule.exports = function (random, alphabet, size) {\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1\n var step = Math.ceil(1.6 * mask * size / alphabet.length)\n size = +size\n\n var id = ''\n while (true) {\n var bytes = random(step)\n for (var i = 0; i < step; i++) {\n var byte = bytes[i] & mask\n if (alphabet[byte]) {\n id += alphabet[byte]\n if (id.length === size) return id\n }\n }\n }\n}\n\n/**\n * @callback generator\n * @param {number} bytes The number of bytes to generate.\n * @return {number[]} Random bytes.\n */\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar random = require('./random/random-byte');\nvar format = require('nanoid/format');\n\nfunction generate(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nmodule.exports = generate;\n","'use strict';\n\nvar generate = require('./generate');\nvar alphabet = require('./alphabet');\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nmodule.exports = build;\n","'use strict';\nvar alphabet = require('./alphabet');\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nmodule.exports = isShortId;\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar build = require('./build');\nvar isValid = require('./is-valid');\n\n// if you are using cluster or multiple servers use this to make each instance\n// has a unique value for worker\n// Note: I don't know if this is automatically set when using third\n// party cluster solutions such as pm2.\nvar clusterWorkerId = require('./util/cluster-worker-id') || 0;\n\n/**\n * Set the seed.\n * Highly recommended if you don't want people to try to figure out your id schema.\n * exposed as shortid.seed(int)\n * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n */\nfunction seed(seedValue) {\n alphabet.seed(seedValue);\n return module.exports;\n}\n\n/**\n * Set the cluster worker or machine id\n * exposed as shortid.worker(int)\n * @param workerId worker must be positive integer. Number less than 16 is recommended.\n * returns shortid module so it can be chained.\n */\nfunction worker(workerId) {\n clusterWorkerId = workerId;\n return module.exports;\n}\n\n/**\n *\n * sets new characters to use in the alphabet\n * returns the shuffled alphabet\n */\nfunction characters(newCharacters) {\n if (newCharacters !== undefined) {\n alphabet.characters(newCharacters);\n }\n\n return alphabet.shuffled();\n}\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction generate() {\n return build(clusterWorkerId);\n}\n\n// Export all other functions as properties of the generate function\nmodule.exports = generate;\nmodule.exports.generate = generate;\nmodule.exports.seed = seed;\nmodule.exports.worker = worker;\nmodule.exports.characters = characters;\nmodule.exports.isValid = isValid;\n","'use strict';\nmodule.exports = require('./lib/index');\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.15';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading and trailing whitespace. */\n var reTrim = /^\\s+|\\s+$/g,\n reTrimStart = /^\\s+/,\n reTrimEnd = /\\s+$/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n value = iteratee(value);\n\n var low = 0,\n high = array == null ? 0 : array.length,\n valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function 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 if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // with lookup (in case of e.g. prototype pollution), and strip newlines if any.\n // A newline wouldn't be a valid sourceURL anyway, and it'd enable code injection.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/[\\r\\n]/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n // Like with sourceURL, we take care to not check the option's prototype,\n // as this configuration is a code injection vector.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrim, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimEnd, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\n\n /**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n */\n var overSome = createOver(arraySome);\n\n /**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","import { union, reduce } from 'lodash/fp';\n\nconst commonPlus = extra => union(['onBegin', 'onComplete', 'onError'])(extra);\n\nconst common = () => commonPlus([]);\n\nconst _events = {\n recordApi: {\n save: commonPlus([\n 'onInvalid',\n 'onRecordUpdated',\n 'onRecordCreated']),\n delete: common(),\n getContext: common(),\n getNew: common(),\n load: common(),\n validate: common(),\n uploadFile: common(),\n downloadFile: common(),\n },\n indexApi: {\n buildIndex: common(),\n listItems: common(),\n delete: common(),\n aggregates: common(),\n },\n collectionApi: {\n getAllowedRecordTypes: common(),\n initialise: common(),\n delete: common(),\n },\n authApi: {\n authenticate: common(),\n authenticateTemporaryAccess: common(),\n createTemporaryAccess: common(),\n createUser: common(),\n enableUser: common(),\n disableUser: common(),\n loadAccessLevels: common(),\n getNewAccessLevel: common(),\n getNewUser: common(),\n getNewUserAuth: common(),\n getUsers: common(),\n saveAccessLevels: common(),\n isAuthorized: common(),\n changeMyPassword: common(),\n setPasswordFromTemporaryCode: common(),\n scorePassword: common(),\n isValidPassword: common(),\n validateUser: common(),\n validateAccessLevels: common(),\n setUserAccessLevels: common(),\n },\n templateApi: {\n saveApplicationHierarchy: common(),\n saveActionsAndTriggers: common(),\n },\n actionsApi: {\n execute: common(),\n },\n};\n\nconst _eventsList = [];\n\nconst makeEvent = (area, method, name) => `${area}:${method}:${name}`;\n\nfor (const areaKey in _events) {\n for (const methodKey in _events[areaKey]) {\n _events[areaKey][methodKey] = reduce((obj, s) => {\n obj[s] = makeEvent(areaKey, methodKey, s);\n return obj;\n },\n {})(_events[areaKey][methodKey]);\n }\n}\n\n\nfor (const areaKey in _events) {\n for (const methodKey in _events[areaKey]) {\n for (const name in _events[areaKey][methodKey]) {\n _eventsList.push(\n _events[areaKey][methodKey][name],\n );\n }\n }\n}\n\n\nexport const events = _events;\n\nexport const eventsList = _eventsList;\n\nexport default { events: _events, eventsList: _eventsList };\n","export class BadRequestError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 400;\n }\n}\n\nexport class UnauthorisedError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 401;\n }\n}\n\nexport class ForbiddenError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 403;\n }\n}\n\nexport class NotFoundError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 404;\n }\n}\n\nexport class ConflictError extends Error {\n constructor(message) {\n super(message);\n this.httpStatusCode = 409;\n }\n}","import { cloneDeep, isUndefined } from 'lodash/fp';\nimport { generate } from 'shortid';\nimport { UnauthorisedError } from './errors';\n\nexport const apiWrapper = async (app, eventNamespace, isAuthorized, eventContext, func, ...params) => {\n pushCallStack(app, eventNamespace);\n\n if (!isAuthorized(app)) {\n handleNotAuthorized(app, eventContext, eventNamespace);\n return;\n }\n\n const startDate = Date.now();\n const elapsed = () => (Date.now() - startDate);\n\n try {\n await app.publish(\n eventNamespace.onBegin,\n eventContext,\n );\n\n const result = await func(...params);\n\n await publishComplete(app, eventContext, eventNamespace, elapsed, result);\n return result;\n } catch (error) {\n await publishError(app, eventContext, eventNamespace, elapsed, error);\n throw error;\n }\n};\n\nexport const apiWrapperSync = (app, eventNamespace, isAuthorized, eventContext, func, ...params) => {\n pushCallStack(app, eventNamespace);\n\n if (!isAuthorized(app)) {\n handleNotAuthorized(app, eventContext, eventNamespace);\n return;\n }\n\n const startDate = Date.now();\n const elapsed = () => (Date.now() - startDate);\n\n try {\n app.publish(\n eventNamespace.onBegin,\n eventContext,\n );\n\n const result = func(...params);\n\n publishComplete(app, eventContext, eventNamespace, elapsed, result);\n return result;\n } catch (error) {\n publishError(app, eventContext, eventNamespace, elapsed, error);\n throw error;\n }\n};\n\nconst handleNotAuthorized = (app, eventContext, eventNamespace) => {\n const err = new UnauthorisedError(`Unauthorized: ${eventNamespace}`);\n publishError(app, eventContext, eventNamespace, () => 0, err);\n throw err;\n};\n\nconst pushCallStack = (app, eventNamespace, seedCallId) => {\n const callId = generate();\n\n const createCallStack = () => ({\n seedCallId: !isUndefined(seedCallId)\n ? seedCallId\n : callId,\n threadCallId: callId,\n stack: [],\n });\n\n if (isUndefined(app.calls)) {\n app.calls = createCallStack();\n }\n\n app.calls.stack.push({\n namespace: eventNamespace,\n callId,\n });\n};\n\nconst popCallStack = (app) => {\n app.calls.stack.pop();\n if (app.calls.stack.length === 0) {\n delete app.calls;\n }\n};\n\nconst publishError = async (app, eventContext, eventNamespace, elapsed, err) => {\n const ctx = cloneDeep(eventContext);\n ctx.error = err;\n ctx.elapsed = elapsed();\n await app.publish(\n eventNamespace.onError,\n ctx,\n );\n popCallStack(app);\n};\n\nconst publishComplete = async (app, eventContext, eventNamespace, elapsed, result) => {\n const endcontext = cloneDeep(eventContext);\n endcontext.result = result;\n endcontext.elapsed = elapsed();\n await app.publish(\n eventNamespace.onComplete,\n endcontext,\n );\n popCallStack(app);\n return result;\n};\n\nexport default apiWrapper;\n","import { split } from 'lodash/fp';\nimport { $ } from './index';\n\nconst lockOverlapMilliseconds = 10;\n\nexport const getLock = async (app, lockFile, timeoutMilliseconds, maxLockRetries, retryCount = 0) => {\n try {\n const timeout = (await app.getEpochTime())\n + timeoutMilliseconds;\n\n const lock = {\n timeout,\n key: lockFile,\n totalTimeout: timeoutMilliseconds,\n };\n\n await app.datastore.createFile(\n lockFile,\n getLockFileContent(\n lock.totalTimeout,\n lock.timeout,\n ),\n );\n\n return lock;\n } catch (e) {\n if (retryCount == maxLockRetries) { return NO_LOCK; }\n\n const lock = parseLockFileContent(\n lockFile,\n await app.datastore.loadFile(lockFile),\n );\n\n const currentEpochTime = await app.getEpochTime();\n\n if (currentEpochTime < lock.timeout) {\n return NO_LOCK;\n }\n\n try {\n await app.datastore.deleteFile(lockFile);\n } catch (_) {\n //empty\n }\n\n await sleepForRetry();\n\n return await getLock(\n app, lockFile, timeoutMilliseconds,\n maxLockRetries, retryCount + 1,\n );\n }\n};\n\nexport const getLockFileContent = (totalTimeout, epochTime) => `${totalTimeout}:${epochTime.toString()}`;\n\nconst parseLockFileContent = (key, content) => $(content, [\n split(':'),\n parts => ({\n totalTimeout: new Number(parts[0]),\n timeout: new Number(parts[1]),\n key,\n }),\n]);\n\nexport const releaseLock = async (app, lock) => {\n const currentEpochTime = await app.getEpochTime();\n // only release if not timedout\n if (currentEpochTime < (lock.timeout - lockOverlapMilliseconds)) {\n try {\n await app.datastore.deleteFile(lock.key);\n } catch (_) {\n //empty\n }\n }\n};\n\nexport const extendLock = async (app, lock) => {\n const currentEpochTime = await app.getEpochTime();\n // only release if not timedout\n if (currentEpochTime < (lock.timeout - lockOverlapMilliseconds)) {\n try {\n lock.timeout = currentEpochTime + lock.timeoutMilliseconds;\n await app.datastore.updateFile(\n lock.key,\n getLockFileContent(lock.totalTimeout, lock.timeout),\n );\n return lock;\n } catch (_) {\n //empty\n }\n }\n return NO_LOCK;\n};\n\nexport const NO_LOCK = 'no lock';\nexport const isNolock = id => id === NO_LOCK;\n\nconst sleepForRetry = () => new Promise(resolve => setTimeout(resolve, lockOverlapMilliseconds));\n","import {\n \n head, \n tail, findIndex, startsWith, \n dropRight, flow, takeRight, trim,\n replace\n \n} from 'lodash';\nimport { \n some, reduce, isEmpty, isArray, join,\n isString, isInteger, isDate, toNumber,\n isUndefined, isNaN, isNull, constant,\n split, includes\n} from 'lodash/fp';\nimport { events, eventsList } from './events';\nimport { apiWrapper } from './apiWrapper';\nimport {\n getLock, NO_LOCK,\n isNolock\n} from './lock';\n\n// this is the combinator function\nexport const $$ = (...funcs) => arg => flow(funcs)(arg);\n\n// this is the pipe function\nexport const $ = (arg, funcs) => $$(...funcs)(arg);\n\nexport const keySep = '/';\nconst trimKeySep = str => trim(str, keySep);\nconst splitByKeySep = str => split(keySep)(str);\nexport const safeKey = key => replace(`${keySep}${trimKeySep(key)}`, `${keySep}${keySep}`, keySep);\nexport const joinKey = (...strs) => {\n const paramsOrArray = strs.length === 1 & isArray(strs[0])\n ? strs[0] : strs;\n return safeKey(join(keySep)(paramsOrArray));\n};\nexport const splitKey = $$(trimKeySep, splitByKeySep);\nexport const getDirFomKey = $$(splitKey, dropRight, p => joinKey(...p));\nexport const getFileFromKey = $$(splitKey, takeRight, head);\n\nexport const configFolder = `${keySep}.config`;\nexport const fieldDefinitions = joinKey(configFolder, 'fields.json');\nexport const templateDefinitions = joinKey(configFolder, 'templates.json');\nexport const appDefinitionFile = joinKey(configFolder, 'appDefinition.json');\nexport const dirIndex = folderPath => joinKey(configFolder, 'dir', ...splitKey(folderPath), 'dir.idx');\nexport const getIndexKeyFromFileKey = $$(getDirFomKey, dirIndex);\n\nexport const ifExists = (val, exists, notExists) => (isUndefined(val)\n ? isUndefined(notExists) ? (() => { })() : notExists()\n : exists());\n\nexport const getOrDefault = (val, defaultVal) => ifExists(val, () => val, () => defaultVal);\n\nexport const not = func => val => !func(val);\nexport const isDefined = not(isUndefined);\nexport const isNonNull = not(isNull);\nexport const isNotNaN = not(isNaN);\n\nexport const allTrue = (...funcArgs) => val => reduce(\n (result, conditionFunc) => (isNull(result) || result == true) && conditionFunc(val),\n null)(funcArgs);\n\nexport const anyTrue = (...funcArgs) => val => reduce(\n (result, conditionFunc) => result == true || conditionFunc(val),\n null)(funcArgs);\n\nexport const insensitiveEquals = (str1, str2) => str1.trim().toLowerCase() === str2.trim().toLowerCase();\n\nexport const isSomething = allTrue(isDefined, isNonNull, isNotNaN);\nexport const isNothing = not(isSomething);\nexport const isNothingOrEmpty = v => isNothing(v) || isEmpty(v);\nexport const somethingOrGetDefault = getDefaultFunc => val => (isSomething(val) ? val : getDefaultFunc());\nexport const somethingOrDefault = (val, defaultVal) => somethingOrGetDefault(constant(defaultVal))(val);\n\nexport const mapIfSomethingOrDefault = (mapFunc, defaultVal) => val => (isSomething(val) ? mapFunc(val) : defaultVal);\n\nexport const mapIfSomethingOrBlank = mapFunc => mapIfSomethingOrDefault(mapFunc, '');\n\nexport const none = predicate => collection => !some(predicate)(collection);\n\nexport const all = predicate => collection => none(v => !predicate(v))(collection);\n\nexport const isNotEmpty = ob => !isEmpty(ob);\nexport const isAsync = fn => fn.constructor.name === 'AsyncFunction';\nexport const isNonEmptyArray = allTrue(isArray, isNotEmpty);\nexport const isNonEmptyString = allTrue(isString, isNotEmpty);\nexport const tryOr = failFunc => (func, ...args) => {\n try {\n return func.apply(null, ...args);\n } catch (_) {\n return failFunc();\n }\n};\n\nexport const tryAwaitOr = failFunc => async (func, ...args) => {\n try {\n return await func.apply(null, ...args);\n } catch (_) {\n return await failFunc();\n }\n};\n\nexport const defineError = (func, errorPrefix) => {\n try {\n return func();\n } catch (err) {\n err.message = `${errorPrefix} : ${err.message}`;\n throw err;\n }\n};\n\nexport const tryOrIgnore = tryOr(() => { });\nexport const tryAwaitOrIgnore = tryAwaitOr(async () => { });\nexport const causesException = (func) => {\n try {\n func();\n return false;\n } catch (e) {\n return true;\n }\n};\n\nexport const executesWithoutException = func => !causesException(func);\n\nexport const handleErrorWith = returnValInError => tryOr(constant(returnValInError));\n\nexport const handleErrorWithUndefined = handleErrorWith(undefined);\n\nexport const switchCase = (...cases) => (value) => {\n const nextCase = () => head(cases)[0](value);\n const nextResult = () => head(cases)[1](value);\n\n if (isEmpty(cases)) return; // undefined\n if (nextCase() === true) return nextResult();\n return switchCase(...tail(cases))(value);\n};\n\nexport const isValue = val1 => val2 => (val1 === val2);\nexport const isOneOf = (...vals) => val => includes(val)(vals);\nexport const defaultCase = constant(true);\nexport const memberMatches = (member, match) => obj => match(obj[member]);\n\n\nexport const StartsWith = searchFor => searchIn => startsWith(searchIn, searchFor);\n\nexport const contains = val => array => (findIndex(array, v => v === val) > -1);\n\nexport const getHashCode = (s) => {\n let hash = 0; let i; let char; let\n l;\n if (s.length == 0) return hash;\n for (i = 0, l = s.length; i < l; i++) {\n char = s.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash |= 0; // Convert to 32bit integer\n }\n\n // converting to string, but dont want a \"-\" prefixed\n if (hash < 0) { return `n${(hash * -1).toString()}`; }\n return hash.toString();\n};\n\n// thanks to https://blog.grossman.io/how-to-write-async-await-without-try-catch-blocks-in-javascript/\nexport const awEx = async (promise) => {\n try {\n const result = await promise;\n return [undefined, result];\n } catch (error) {\n return [error, undefined];\n }\n};\n\nexport const isSafeInteger = n => isInteger(n)\n && n <= Number.MAX_SAFE_INTEGER\n && n >= 0 - Number.MAX_SAFE_INTEGER;\n\nexport const toDateOrNull = s => (isNull(s) ? null\n : isDate(s) ? s : new Date(s));\nexport const toBoolOrNull = s => (isNull(s) ? null\n : s === 'true' || s === true);\nexport const toNumberOrNull = s => (isNull(s) ? null\n : toNumber(s));\n\nexport const isArrayOfString = opts => isArray(opts) && all(isString)(opts);\n\nexport const pause = async duration => new Promise(res => setTimeout(res, duration));\n\nexport const retry = async (fn, retries, delay, ...args) => {\n try {\n return await fn(...args);\n } catch (err) {\n if (retries > 1) {\n return await pause(delay).then(async () => await retry(fn, (retries - 1), delay, ...args));\n }\n throw err;\n }\n};\n\nexport { events } from './events';\nexport { apiWrapper, apiWrapperSync } from './apiWrapper';\nexport {\n getLock, NO_LOCK, releaseLock,\n extendLock, isNolock,\n} from './lock';\n\nexport default {\n ifExists,\n getOrDefault,\n isDefined,\n isNonNull,\n isNotNaN,\n allTrue,\n isSomething,\n mapIfSomethingOrDefault,\n mapIfSomethingOrBlank,\n configFolder,\n fieldDefinitions,\n isNothing,\n not,\n switchCase,\n defaultCase,\n StartsWith,\n contains,\n templateDefinitions,\n handleErrorWith,\n handleErrorWithUndefined,\n tryOr,\n tryOrIgnore,\n tryAwaitOr,\n tryAwaitOrIgnore,\n dirIndex,\n keySep,\n $,\n $$,\n getDirFomKey,\n getFileFromKey,\n splitKey,\n somethingOrDefault,\n getIndexKeyFromFileKey,\n joinKey,\n somethingOrGetDefault,\n appDefinitionFile,\n isValue,\n all,\n isOneOf,\n memberMatches,\n defineError,\n anyTrue,\n isNonEmptyArray,\n causesException,\n executesWithoutException,\n none,\n getHashCode,\n awEx,\n apiWrapper,\n events,\n eventsList,\n isNothingOrEmpty,\n isSafeInteger,\n toNumber,\n toDate: toDateOrNull,\n toBool: toBoolOrNull,\n isArrayOfString,\n getLock,\n NO_LOCK,\n isNolock,\n insensitiveEquals,\n pause,\n retry,\n};\n","import { filter, map } from 'lodash/fp';\nimport { $, isSomething } from './index';\n\nexport const stringNotEmpty = s => isSomething(s) && s.trim().length > 0;\n\nexport const makerule = (field, error, isValid) => ({ field, error, isValid });\n\nexport const validationError = (rule, item) => ({ ...rule, item });\n\nexport const applyRuleSet = ruleSet => itemToValidate => $(ruleSet, [\n map(applyRule(itemToValidate)),\n filter(isSomething),\n]);\n\nexport const applyRule = itemTovalidate => rule => (rule.isValid(itemTovalidate)\n ? null\n : validationError(rule, itemTovalidate));\n","export default (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n","var filters = new Map();\nvar limiters = new Map();\n\nfunction filter(name, handler) {\n if (typeof name !== 'string') {\n throw new TypeError('First argument must be a string.');\n }\n if (typeof handler !== 'function') {\n throw new TypeError('Second argument must be a function.');\n }\n if (filters.has(name)) {\n throw new Error((\"A filter named \" + name + \" is already registered.\"));\n }\n filters.set(name, handler);\n}\n\nfunction limiter(name, handler) {\n if (typeof name !== 'string') {\n throw new TypeError('First argument must be a string.');\n }\n if (typeof handler !== 'function') {\n throw new TypeError('Second argument must be a function.');\n }\n if (limiters.has(name)) {\n throw new Error((\"A limiter named \" + name + \" is already registered.\"));\n }\n limiters.set(name, handler);\n}\n\nfunction compileRawExpression(src) {\n return new Function('context', 'tempVars', // eslint-disable-line\n (\"const sandbox = $nxCompileToSandbox(context, tempVars)\\n try { with (sandbox) { return \" + src + \" } } catch (err) {\\n if (!(err instanceof TypeError)) throw err\\n }\\n $nxClearSandbox()\"));\n}\n\nfunction compileRawCode(src) {\n return new Function('context', 'tempVars', // eslint-disable-line\n (\"const sandbox = $nxCompileToSandbox(context, tempVars)\\n with (sandbox) { \" + src + \" }\\n $nxClearSandbox()\"));\n}\n\nvar filterRegex = /(?:[^\\|]|\\|\\|)+/g;\nvar limiterRegex = /(?:[^&]|&&)+/g;\nvar argsRegex = /\\S+/g;\n\nfunction parseExpression(src) {\n var tokens = src.match(filterRegex);\n if (tokens.length === 1) {\n return compileRawExpression(tokens[0]);\n }\n\n var expression = {\n exec: compileRawExpression(tokens[0]),\n filters: []\n };\n for (var i = 1; i < tokens.length; i++) {\n var filterTokens = tokens[i].match(argsRegex);\n var filterName = filterTokens.shift();\n var effect = filters.get(filterName);\n if (!effect) {\n throw new Error((\"There is no filter named: \" + filterName + \".\"));\n }\n expression.filters.push({ effect: effect, argExpressions: filterTokens.map(compileRawExpression) });\n }\n return expression;\n}\n\nfunction parseCode(src) {\n var tokens = src.match(limiterRegex);\n if (tokens.length === 1) {\n return compileRawCode(tokens[0]);\n }\n\n var code = {\n exec: compileRawCode(tokens[0]),\n limiters: []\n };\n for (var i = 1; i < tokens.length; i++) {\n var limiterTokens = tokens[i].match(argsRegex);\n var limiterName = limiterTokens.shift();\n var effect = limiters.get(limiterName);\n if (!effect) {\n throw new Error((\"There is no limiter named: \" + limiterName + \".\"));\n }\n code.limiters.push({ effect: effect, argExpressions: limiterTokens.map(compileRawExpression) });\n }\n return code;\n}\n\nvar expressionCache = new Map();\nvar codeCache = new Map();\n\nfunction compileExpression(src) {\n if (typeof src !== 'string') {\n throw new TypeError('First argument must be a string.');\n }\n var expression = expressionCache.get(src);\n if (!expression) {\n expression = parseExpression(src);\n expressionCache.set(src, expression);\n }\n\n if (typeof expression === 'function') {\n return expression;\n }\n\n return function evaluateExpression(context, tempVars) {\n var value = expression.exec(context, tempVars);\n for (var i = 0, list = expression.filters; i < list.length; i += 1) {\n var filter = list[i];\n\n var args = filter.argExpressions.map(evaluateArgExpression, context);\n value = filter.effect.apply(filter, [ value ].concat( args ));\n }\n return value;\n };\n}\n\nfunction compileCode(src) {\n if (typeof src !== 'string') {\n throw new TypeError('First argument must be a string.');\n }\n var code = codeCache.get(src);\n if (!code) {\n code = parseCode(src);\n codeCache.set(src, code);\n }\n\n if (typeof code === 'function') {\n return code;\n }\n\n var context = {};\n return function evaluateCode(state, tempVars) {\n var i = 0;\n function next() {\n Object.assign(context, tempVars);\n if (i < code.limiters.length) {\n var limiter = code.limiters[i++];\n var args = limiter.argExpressions.map(evaluateArgExpression, state);\n limiter.effect.apply(limiter, [ next, context ].concat( args ));\n } else {\n code.exec(state, tempVars);\n }\n }\n next();\n };\n}\n\nfunction evaluateArgExpression(argExpression) {\n return argExpression(this);\n}\n\nvar hasHandler = { has: has };\nvar allHandlers = { has: has, get: get };\nvar globals = new Set();\nvar temp;\n\nvar globalObj;\nif (typeof window !== 'undefined') { globalObj = window; } // eslint-disable-line\nelse if (typeof global !== 'undefined') { globalObj = global; } // eslint-disable-line\n else if (typeof self !== 'undefined') { globalObj = self; } // eslint-disable-line\nglobalObj.$nxCompileToSandbox = toSandbox;\nglobalObj.$nxClearSandbox = clearSandbox;\n\nfunction expose() {\n var globalNames = [], len = arguments.length;\n while ( len-- ) globalNames[ len ] = arguments[ len ];\n\n for (var i = 0, list = globalNames; i < list.length; i += 1) {\n var globalName = list[i];\n\n globals.add(globalName);\n }\n}\n\nfunction hide() {\n var globalNames = [], len = arguments.length;\n while ( len-- ) globalNames[ len ] = arguments[ len ];\n\n for (var i = 0, list = globalNames; i < list.length; i += 1) {\n var globalName = list[i];\n\n globals.delete(globalName);\n }\n}\n\nfunction hideAll() {\n globals.clear();\n}\n\nfunction has(target, key) {\n return globals.has(key) ? key in target : true;\n}\n\nfunction get(target, key) {\n return key in temp ? temp[key] : target[key];\n}\n\nfunction toSandbox(obj, tempVars) {\n if (tempVars) {\n temp = tempVars;\n return new Proxy(obj, allHandlers);\n }\n return new Proxy(obj, hasHandler);\n}\n\nfunction clearSandbox() {\n temp = undefined;\n}\n\nexport { compileExpression, compileCode, compileRawExpression, compileRawCode, expose, hide, hideAll, filters, limiters, filter, limiter };\n","import { compileExpression, compileCode } from '@nx-js/compiler-util';\nimport {\n isUndefined, keys, \n cloneDeep, isFunction,\n} from 'lodash/fp';\nimport { defineError } from '../common';\n\nexport const filterEval = 'FILTER_EVALUATE';\nexport const filterCompile = 'FILTER_COMPILE';\nexport const mapEval = 'MAP_EVALUATE';\nexport const mapCompile = 'MAP_COMPILE';\nexport const removeUndeclaredFields = 'REMOVE_UNDECLARED_FIELDS';\nexport const addUnMappedFields = 'ADD_UNMAPPED_FIELDS';\nexport const addTheKey = 'ADD_KEY';\n\n\nconst getEvaluateResult = () => ({\n isError: false,\n passedFilter: true,\n result: null,\n});\n\nexport const compileFilter = index => compileExpression(index.filter);\n\nexport const compileMap = index => compileCode(index.map);\n\nexport const passesFilter = (record, index) => {\n const context = { record };\n if (!index.filter) return true;\n\n const compiledFilter = defineError(\n () => compileFilter(index),\n filterCompile,\n );\n\n return defineError(\n () => compiledFilter(context),\n filterEval,\n );\n};\n\nexport const mapRecord = (record, index) => {\n const recordClone = cloneDeep(record);\n const context = { record: recordClone };\n\n const map = index.map ? index.map : 'return {...record};';\n\n const compiledMap = defineError(\n () => compileCode(map),\n mapCompile,\n );\n\n const mapped = defineError(\n () => compiledMap(context),\n mapEval,\n );\n\n const mappedKeys = keys(mapped);\n for (let i = 0; i < mappedKeys.length; i++) {\n const key = mappedKeys[i];\n mapped[key] = isUndefined(mapped[key]) ? null : mapped[key];\n if (isFunction(mapped[key])) {\n delete mapped[key];\n }\n }\n\n mapped.key = record.key;\n mapped.sortKey = index.getSortKey\n ? compileCode(index.getSortKey)(context)\n : record.id;\n\n return mapped;\n};\n\nexport const evaluate = record => (index) => {\n const result = getEvaluateResult();\n\n try {\n result.passedFilter = passesFilter(record, index);\n } catch (err) {\n result.isError = true;\n result.passedFilter = false;\n result.result = err.message;\n }\n\n if (!result.passedFilter) return result;\n\n try {\n result.result = mapRecord(record, index);\n } catch (err) {\n result.isError = true;\n result.result = err.message;\n }\n\n return result;\n};\n\nexport default evaluate;\n","import {\n map, isEmpty, countBy, \n flatten, includes, join, keys\n} from 'lodash/fp';\nimport { } from 'lodash';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\nimport { compileFilter, compileMap } from '../indexing/evaluate';\nimport { isNonEmptyString, executesWithoutException, $ } from '../common';\nimport { isRecord } from './hierarchy';\n\nexport const indexTypes = { reference: 'reference', ancestor: 'ancestor' };\n\nexport const indexRuleSet = [\n makerule('map', 'index has no map function',\n index => isNonEmptyString(index.map)),\n makerule('map', \"index's map function does not compile\",\n index => !isNonEmptyString(index.map)\n || executesWithoutException(() => compileMap(index))),\n makerule('filter', \"index's filter function does not compile\",\n index => !isNonEmptyString(index.filter)\n || executesWithoutException(() => compileFilter(index))),\n makerule('name', 'must declare a name for index',\n index => isNonEmptyString(index.name)),\n makerule('name', 'there is a duplicate named index on this node',\n index => isEmpty(index.name)\n || countBy('name')(index.parent().indexes)[index.name] === 1),\n makerule('indexType', 'reference index may only exist on a record node',\n index => isRecord(index.parent())\n || index.indexType !== indexTypes.reference),\n makerule('indexType', `index type must be one of: ${join(', ')(keys(indexTypes))}`,\n index => includes(index.indexType)(keys(indexTypes))),\n];\n\nexport const validateIndex = (index, allReferenceIndexesOnNode) => applyRuleSet(indexRuleSet(allReferenceIndexesOnNode))(index);\n\nexport const validateAllIndexes = node => $(node.indexes, [\n map(i => validateIndex(i, node.indexes)),\n flatten,\n]);\n","import {\n find, constant, map, last,\n first, split, intersection, take,\n union, includes, filter, some,\n} from 'lodash/fp';\nimport {\n $, switchCase, isNothing, isSomething,\n defaultCase, splitKey, isNonEmptyString,\n joinKey, getHashCode,\n} from '../common';\nimport { indexTypes } from './indexes';\n\nexport const getFlattenedHierarchy = (appHierarchy, useCached = true) => {\n if (isSomething(appHierarchy.getFlattenedHierarchy) && useCached) { return appHierarchy.getFlattenedHierarchy(); }\n\n const flattenHierarchy = (currentNode, flattened) => {\n flattened.push(currentNode);\n if ((!currentNode.children\n || currentNode.children.length === 0)\n && (!currentNode.indexes\n || currentNode.indexes.length === 0)\n && (!currentNode.aggregateGroups\n || currentNode.aggregateGroups.length === 0)) {\n return flattened;\n }\n\n const unionIfAny = l2 => l1 => union(l1)(!l2 ? [] : l2);\n\n const children = $([], [\n unionIfAny(currentNode.children),\n unionIfAny(currentNode.indexes),\n unionIfAny(currentNode.aggregateGroups),\n ]);\n\n for (const child of children) {\n flattenHierarchy(child, flattened);\n }\n return flattened;\n };\n\n appHierarchy.getFlattenedHierarchy = () => flattenHierarchy(appHierarchy, []);\n return appHierarchy.getFlattenedHierarchy();\n};\n\nexport const getLastPartInKey = key => last(splitKey(key));\n\nexport const getNodesInPath = appHierarchy => key => $(appHierarchy, [\n getFlattenedHierarchy,\n filter(n => new RegExp(`${n.pathRegx()}`).test(key)),\n]);\n\nexport const getExactNodeForPath = appHierarchy => key => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => new RegExp(`${n.pathRegx()}$`).test(key)),\n]);\n\nexport const getNodeForCollectionPath = appHierarchy => collectionKey => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => (isCollectionRecord(n)\n && new RegExp(`${n.collectionPathRegx()}$`).test(collectionKey))),\n]);\n\nexport const hasMatchingAncestor = ancestorPredicate => decendantNode => switchCase(\n\n [node => isNothing(node.parent()),\n constant(false)],\n\n [node => ancestorPredicate(node.parent()),\n constant(true)],\n\n [defaultCase,\n node => hasMatchingAncestor(ancestorPredicate)(node.parent())],\n\n)(decendantNode);\n\nexport const getNode = (appHierarchy, nodeKey) => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => n.nodeKey() === nodeKey\n || (isCollectionRecord(n)\n && n.collectionNodeKey() === nodeKey)),\n]);\n\nexport const getCollectionNode = (appHierarchy, nodeKey) => $(appHierarchy, [\n getFlattenedHierarchy,\n find(n => (isCollectionRecord(n)\n && n.collectionNodeKey() === nodeKey)),\n]);\n\nexport const getNodeByKeyOrNodeKey = (appHierarchy, keyOrNodeKey) => {\n const nodeByKey = getExactNodeForPath(appHierarchy)(keyOrNodeKey);\n return isNothing(nodeByKey)\n ? getNode(appHierarchy, keyOrNodeKey)\n : nodeByKey;\n};\n\nexport const getCollectionNodeByKeyOrNodeKey = (appHierarchy, keyOrNodeKey) => {\n const nodeByKey = getNodeForCollectionPath(appHierarchy)(keyOrNodeKey);\n return isNothing(nodeByKey)\n ? getCollectionNode(appHierarchy, keyOrNodeKey)\n : nodeByKey;\n};\n\nexport const isNode = (appHierarchy, key) => isSomething(getExactNodeForPath(appHierarchy)(key));\n\nexport const getActualKeyOfParent = (parentNodeKey, actualChildKey) => $(actualChildKey, [\n splitKey,\n take(splitKey(parentNodeKey).length),\n ks => joinKey(...ks),\n]);\n\nexport const getParentKey = (key) => {\n return $(key, [\n splitKey,\n take(splitKey(key).length - 1),\n joinKey,\n ]);\n};\n\nexport const isKeyAncestorOf = ancestorKey => decendantNode => hasMatchingAncestor(p => p.nodeKey() === ancestorKey)(decendantNode);\n\nexport const hasNoMatchingAncestors = parentPredicate => node => !hasMatchingAncestor(parentPredicate)(node);\n\nexport const findField = (recordNode, fieldName) => find(f => f.name == fieldName)(recordNode.fields);\n\nexport const isAncestor = decendant => ancestor => isKeyAncestorOf(ancestor.nodeKey())(decendant);\n\nexport const isDecendant = ancestor => decendant => isAncestor(decendant)(ancestor);\n\nexport const getRecordNodeId = recordKey => $(recordKey, [\n splitKey,\n last,\n getRecordNodeIdFromId,\n]);\n\nexport const getRecordNodeIdFromId = recordId => $(recordId, [split('-'), first, parseInt]);\n\nexport const getRecordNodeById = (hierarchy, recordId) => $(hierarchy, [\n getFlattenedHierarchy,\n find(n => isRecord(n)\n && n.nodeId === getRecordNodeIdFromId(recordId)),\n]);\n\nexport const recordNodeIdIsAllowed = indexNode => nodeId => indexNode.allowedRecordNodeIds.length === 0\n || includes(nodeId)(indexNode.allowedRecordNodeIds);\n\nexport const recordNodeIsAllowed = indexNode => recordNode => recordNodeIdIsAllowed(indexNode)(recordNode.nodeId);\n\nexport const getAllowedRecordNodesForIndex = (appHierarchy, indexNode) => {\n const recordNodes = $(appHierarchy, [\n getFlattenedHierarchy,\n filter(isRecord),\n ]);\n\n if (isGlobalIndex(indexNode)) {\n return $(recordNodes, [\n filter(recordNodeIsAllowed(indexNode)),\n ]);\n }\n\n if (isAncestorIndex(indexNode)) {\n return $(recordNodes, [\n filter(isDecendant(indexNode.parent())),\n filter(recordNodeIsAllowed(indexNode)),\n ]);\n }\n\n if (isReferenceIndex(indexNode)) {\n return $(recordNodes, [\n filter(n => some(fieldReversesReferenceToIndex(indexNode))(n.fields)),\n ]);\n }\n};\n\nexport const getNodeFromNodeKeyHash = hierarchy => hash => $(hierarchy, [\n getFlattenedHierarchy,\n find(n => getHashCode(n.nodeKey()) === hash),\n]);\n\nexport const isRecord = node => isSomething(node) && node.type === 'record';\nexport const isSingleRecord = node => isRecord(node) && node.isSingle;\nexport const isCollectionRecord = node => isRecord(node) && !node.isSingle;\nexport const isIndex = node => isSomething(node) && node.type === 'index';\nexport const isaggregateGroup = node => isSomething(node) && node.type === 'aggregateGroup';\nexport const isShardedIndex = node => isIndex(node) && isNonEmptyString(node.getShardName);\nexport const isRoot = node => isSomething(node) && node.isRoot();\nexport const isDecendantOfARecord = hasMatchingAncestor(isRecord);\nexport const isGlobalIndex = node => isIndex(node) && isRoot(node.parent());\nexport const isReferenceIndex = node => isIndex(node) && node.indexType === indexTypes.reference;\nexport const isAncestorIndex = node => isIndex(node) && node.indexType === indexTypes.ancestor;\n\nexport const fieldReversesReferenceToNode = node => field => field.type === 'reference'\n && intersection(field.typeOptions.reverseIndexNodeKeys)(map(i => i.nodeKey())(node.indexes))\n .length > 0;\n\nexport const fieldReversesReferenceToIndex = indexNode => field => field.type === 'reference'\n && intersection(field.typeOptions.reverseIndexNodeKeys)([indexNode.nodeKey()])\n .length > 0;\n\nexport default {\n getLastPartInKey,\n getNodesInPath,\n getExactNodeForPath,\n hasMatchingAncestor,\n getNode,\n getNodeByKeyOrNodeKey,\n isNode,\n getActualKeyOfParent,\n getParentKey,\n isKeyAncestorOf,\n hasNoMatchingAncestors,\n findField,\n isAncestor,\n isDecendant,\n getRecordNodeId,\n getRecordNodeIdFromId,\n getRecordNodeById,\n recordNodeIdIsAllowed,\n recordNodeIsAllowed,\n getAllowedRecordNodesForIndex,\n getNodeFromNodeKeyHash,\n isRecord,\n isCollectionRecord,\n isIndex,\n isaggregateGroup,\n isShardedIndex,\n isRoot,\n isDecendantOfARecord,\n isGlobalIndex,\n isReferenceIndex,\n isAncestorIndex,\n fieldReversesReferenceToNode,\n fieldReversesReferenceToIndex,\n getFlattenedHierarchy,\n};\n","import { merge } from 'lodash';\nimport {\n constant, isUndefined, has,\n mapValues, cloneDeep,\n} from 'lodash/fp';\nimport { isNotEmpty } from '../common';\n\nexport const getSafeFieldParser = (tryParse, defaultValueFunctions) => (field, record) => {\n if (has(field.name)(record)) {\n return getSafeValueParser(tryParse, defaultValueFunctions)(record[field.name]);\n }\n return defaultValueFunctions[field.getUndefinedValue]();\n};\n\nexport const getSafeValueParser = (tryParse, defaultValueFunctions) => (value) => {\n const parsed = tryParse(value);\n if (parsed.success) {\n return parsed.value;\n }\n return defaultValueFunctions.default();\n};\n\nexport const getNewValue = (tryParse, defaultValueFunctions) => (field) => {\n const getInitialValue = isUndefined(field) || isUndefined(field.getInitialValue)\n ? 'default'\n : field.getInitialValue;\n\n return has(getInitialValue)(defaultValueFunctions)\n ? defaultValueFunctions[getInitialValue]()\n : getSafeValueParser(tryParse, defaultValueFunctions)(getInitialValue);\n};\n\nexport const typeFunctions = specificFunctions => merge({\n value: constant,\n null: constant(null),\n}, specificFunctions);\n\nexport const validateTypeConstraints = validationRules => async (field, record, context) => {\n const fieldValue = record[field.name];\n const validateRule = async r => (!await r.isValid(fieldValue, field.typeOptions, context)\n ? r.getMessage(fieldValue, field.typeOptions)\n : '');\n\n const errors = [];\n for (const r of validationRules) {\n const err = await validateRule(r);\n if (isNotEmpty(err)) errors.push(err);\n }\n\n return errors;\n};\n\nconst getDefaultOptions = mapValues(v => v.defaultValue);\n\nexport const makerule = (isValid, getMessage) => ({ isValid, getMessage });\nexport const parsedFailed = val => ({ success: false, value: val });\nexport const parsedSuccess = val => ({ success: true, value: val });\nexport const getDefaultExport = (name, tryParse, functions, options, validationRules, sampleValue, stringify) => ({\n getNew: getNewValue(tryParse, functions),\n safeParseField: getSafeFieldParser(tryParse, functions),\n safeParseValue: getSafeValueParser(tryParse, functions),\n tryParse,\n name,\n getDefaultOptions: () => getDefaultOptions(cloneDeep(options)),\n optionDefinitions: options,\n validateTypeConstraints: validateTypeConstraints(validationRules),\n sampleValue,\n stringify: val => (val === null || val === undefined\n ? '' : stringify(val)),\n getDefaultValue: functions.default,\n});\n","import {\n constant, isString,\n isNull, includes, isBoolean,\n} from 'lodash/fp';\nimport {\n typeFunctions,\n makerule, parsedSuccess, getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, toBoolOrNull, toNumberOrNull,\n isSafeInteger, isArrayOfString,\n} from '../common';\n\nconst stringFunctions = typeFunctions({\n default: constant(null),\n});\n\nconst stringTryParse = switchCase(\n [isString, parsedSuccess],\n [isNull, parsedSuccess],\n [defaultCase, v => parsedSuccess(v.toString())],\n);\n\nconst options = {\n maxLength: {\n defaultValue: null,\n isValid: n => n === null || isSafeInteger(n) && n > 0,\n requirementDescription: 'max length must be null (no limit) or a greater than zero integer',\n parse: toNumberOrNull,\n },\n values: {\n defaultValue: null,\n isValid: v => v === null || (isArrayOfString(v) && v.length > 0 && v.length < 10000),\n requirementDescription: \"'values' must be null (no values) or an arry of at least one string\",\n parse: s => s,\n },\n allowDeclaredValuesOnly: {\n defaultValue: false,\n isValid: isBoolean,\n requirementDescription: 'allowDeclaredValuesOnly must be true or false',\n parse: toBoolOrNull,\n },\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => val === null || opts.maxLength === null || val.length <= opts.maxLength,\n (val, opts) => `value exceeds maximum length of ${opts.maxLength}`),\n makerule(async (val, opts) => val === null\n || opts.allowDeclaredValuesOnly === false\n || includes(val)(opts.values),\n (val) => `\"${val}\" does not exist in the list of allowed values`),\n];\n\nexport default getDefaultExport(\n 'string',\n stringTryParse,\n stringFunctions,\n options,\n typeConstraints,\n 'abcde',\n str => str,\n);\n","import { constant, isBoolean, isNull } from 'lodash/fp';\nimport {\n typeFunctions,\n makerule, parsedFailed, parsedSuccess,\n getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, isOneOf, toBoolOrNull,\n} from '../common';\n\nconst boolFunctions = typeFunctions({\n default: constant(null),\n});\n\nconst boolTryParse = switchCase(\n [isBoolean, parsedSuccess],\n [isNull, parsedSuccess],\n [isOneOf('true', '1', 'yes', 'on'), () => parsedSuccess(true)],\n [isOneOf('false', '0', 'no', 'off'), () => parsedSuccess(false)],\n [defaultCase, parsedFailed],\n);\n\nconst options = {\n allowNulls: {\n defaultValue: true,\n isValid: isBoolean,\n requirementDescription: 'must be a true or false',\n parse: toBoolOrNull,\n },\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => opts.allowNulls === true || val !== null,\n () => 'field cannot be null'),\n];\n\nexport default getDefaultExport(\n 'bool', boolTryParse, boolFunctions,\n options, typeConstraints, true, JSON.stringify,\n);\n","import {\n constant, isNumber, isString, isNull,\n} from 'lodash/fp';\nimport {\n makerule, typeFunctions,\n parsedFailed, parsedSuccess, getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, toNumberOrNull,\n isSafeInteger,\n} from '../common';\n\nconst numberFunctions = typeFunctions({\n default: constant(null),\n});\n\nconst parseStringtoNumberOrNull = (s) => {\n const num = Number(s);\n return isNaN(num) ? parsedFailed(s) : parsedSuccess(num);\n};\n\nconst numberTryParse = switchCase(\n [isNumber, parsedSuccess],\n [isString, parseStringtoNumberOrNull],\n [isNull, parsedSuccess],\n [defaultCase, parsedFailed],\n);\n\nconst options = {\n maxValue: {\n defaultValue: Number.MAX_SAFE_INTEGER,\n isValid: isSafeInteger,\n requirementDescription: 'must be a valid integer',\n parse: toNumberOrNull,\n },\n minValue: {\n defaultValue: 0 - Number.MAX_SAFE_INTEGER,\n isValid: isSafeInteger,\n requirementDescription: 'must be a valid integer',\n parse: toNumberOrNull,\n },\n decimalPlaces: {\n defaultValue: 0,\n isValid: n => isSafeInteger(n) && n >= 0,\n requirementDescription: 'must be a positive integer',\n parse: toNumberOrNull,\n },\n};\n\nconst getDecimalPlaces = (val) => {\n const splitDecimal = val.toString().split('.');\n if (splitDecimal.length === 1) return 0;\n return splitDecimal[1].length;\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => val === null || opts.minValue === null || val >= opts.minValue,\n (val, opts) => `value (${val.toString()}) must be greater than or equal to ${opts.minValue}`),\n makerule(async (val, opts) => val === null || opts.maxValue === null || val <= opts.maxValue,\n (val, opts) => `value (${val.toString()}) must be less than or equal to ${opts.minValue} options`),\n makerule(async (val, opts) => val === null || opts.decimalPlaces >= getDecimalPlaces(val),\n (val, opts) => `value (${val.toString()}) must have ${opts.decimalPlaces} decimal places or less`),\n];\n\nexport default getDefaultExport(\n 'number',\n numberTryParse,\n numberFunctions,\n options,\n typeConstraints,\n 1,\n num => num.toString(),\n);\n","import {\n constant, isDate, isString, isNull\n} from 'lodash/fp';\nimport {\n makerule, typeFunctions,\n parsedFailed, parsedSuccess, getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, toDateOrNull,\n} from '../common';\n\nconst dateFunctions = typeFunctions({\n default: constant(null),\n now: () => new Date(),\n});\n\nconst isValidDate = d => d instanceof Date && !isNaN(d);\n\nconst parseStringToDate = s => switchCase(\n [isValidDate, parsedSuccess],\n [defaultCase, parsedFailed],\n)(new Date(s));\n\n\nconst dateTryParse = switchCase(\n [isDate, parsedSuccess],\n [isString, parseStringToDate],\n [isNull, parsedSuccess],\n [defaultCase, parsedFailed],\n);\n\nconst options = {\n maxValue: {\n defaultValue: new Date(32503680000000),\n isValid: isDate,\n requirementDescription: 'must be a valid date',\n parse: toDateOrNull,\n },\n minValue: {\n defaultValue: new Date(-8520336000000),\n isValid: isDate,\n requirementDescription: 'must be a valid date',\n parse: toDateOrNull,\n },\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => val === null || opts.minValue === null || val >= opts.minValue,\n (val, opts) => `value (${val.toString()}) must be greater than or equal to ${opts.minValue}`),\n makerule(async (val, opts) => val === null || opts.maxValue === null || val <= opts.maxValue,\n (val, opts) => `value (${val.toString()}) must be less than or equal to ${opts.minValue} options`),\n];\n\nexport default getDefaultExport(\n 'datetime',\n dateTryParse,\n dateFunctions,\n options,\n typeConstraints,\n new Date(1984, 4, 1),\n date => JSON.stringify(date).replace(new RegExp('\"', 'g'), ''),\n);\n","import { \n map, constant, isArray \n} from 'lodash/fp';\nimport {\n typeFunctions, makerule,\n parsedFailed, getDefaultExport, parsedSuccess,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, toNumberOrNull,\n $$, isSafeInteger,\n} from '../common';\n\nconst arrayFunctions = () => typeFunctions({\n default: constant([]),\n});\n\nconst mapToParsedArrary = type => $$(\n map(i => type.safeParseValue(i)),\n parsedSuccess,\n);\n\nconst arrayTryParse = type => switchCase(\n [isArray, mapToParsedArrary(type)],\n [defaultCase, parsedFailed],\n);\n\nconst typeName = type => `array<${type}>`;\n\n\nconst options = {\n maxLength: {\n defaultValue: 10000,\n isValid: isSafeInteger,\n requirementDescription: 'must be a positive integer',\n parse: toNumberOrNull,\n },\n minLength: {\n defaultValue: 0,\n isValid: n => isSafeInteger(n) && n >= 0,\n requirementDescription: 'must be a positive integer',\n parse: toNumberOrNull,\n },\n};\n\nconst typeConstraints = [\n makerule(async (val, opts) => val === null || val.length >= opts.minLength,\n (val, opts) => `must choose ${opts.minLength} or more options`),\n makerule(async (val, opts) => val === null || val.length <= opts.maxLength,\n (val, opts) => `cannot choose more than ${opts.maxLength} options`),\n];\n\nexport default type => getDefaultExport(\n typeName(type.name),\n arrayTryParse(type),\n arrayFunctions(type),\n options,\n typeConstraints,\n [type.sampleValue],\n JSON.stringify,\n);\n","import {\n isString, isObjectLike,\n isNull, has, isEmpty,\n} from 'lodash/fp';\nimport {\n typeFunctions, makerule,\n parsedSuccess, getDefaultExport,\n parsedFailed,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase,\n isNonEmptyString, isArrayOfString,\n} from '../common';\n\nconst referenceNothing = () => ({ key: '' });\n\nconst referenceFunctions = typeFunctions({\n default: referenceNothing,\n});\n\nconst hasStringValue = (ob, path) => has(path)(ob)\n && isString(ob[path]);\n\nconst isObjectWithKey = v => isObjectLike(v)\n && hasStringValue(v, 'key');\n\nconst tryParseFromString = s => {\n\n try {\n const asObj = JSON.parse(s);\n if(isObjectWithKey) {\n return parsedSuccess(asObj);\n }\n }\n catch(_) {\n // EMPTY\n }\n\n return parsedFailed(s);\n}\n\nconst referenceTryParse = v => switchCase(\n [isObjectWithKey, parsedSuccess],\n [isString, tryParseFromString],\n [isNull, () => parsedSuccess(referenceNothing())],\n [defaultCase, parsedFailed],\n)(v);\n\nconst options = {\n indexNodeKey: {\n defaultValue: null,\n isValid: isNonEmptyString,\n requirementDescription: 'must be a non-empty string',\n parse: s => s,\n },\n displayValue: {\n defaultValue: '',\n isValid: isNonEmptyString,\n requirementDescription: 'must be a non-empty string',\n parse: s => s,\n },\n reverseIndexNodeKeys: {\n defaultValue: null,\n isValid: v => isArrayOfString(v) && v.length > 0,\n requirementDescription: 'must be a non-empty array of strings',\n parse: s => s,\n },\n};\n\nconst isEmptyString = s => isString(s) && isEmpty(s);\n\nconst ensureReferenceExists = async (val, opts, context) => isEmptyString(val.key)\n || await context.referenceExists(opts, val.key);\n\nconst typeConstraints = [\n makerule(\n ensureReferenceExists,\n (val, opts) => `\"${val[opts.displayValue]}\" does not exist in options list (key: ${val.key})`,\n ),\n];\n\nexport default getDefaultExport(\n 'reference',\n referenceTryParse,\n referenceFunctions,\n options,\n typeConstraints,\n { key: 'key', value: 'value' },\n JSON.stringify,\n);\n","import {\n last, has, isString, intersection,\n isNull, isNumber,\n} from 'lodash/fp';\nimport {\n typeFunctions, parsedFailed,\n parsedSuccess, getDefaultExport,\n} from './typeHelpers';\nimport {\n switchCase, defaultCase, none,\n $, splitKey,\n} from '../common';\n\nconst illegalCharacters = '*?\\\\/:<>|\\0\\b\\f\\v';\n\nexport const isLegalFilename = (filePath) => {\n const fn = fileName(filePath);\n return fn.length <= 255\n && intersection(fn.split(''))(illegalCharacters.split('')).length === 0\n && none(f => f === '..')(splitKey(filePath));\n};\n\nconst fileNothing = () => ({ relativePath: '', size: 0 });\n\nconst fileFunctions = typeFunctions({\n default: fileNothing,\n});\n\nconst fileTryParse = v => switchCase(\n [isValidFile, parsedSuccess],\n [isNull, () => parsedSuccess(fileNothing())],\n [defaultCase, parsedFailed],\n)(v);\n\nconst fileName = filePath => $(filePath, [\n splitKey,\n last,\n]);\n\nconst isValidFile = f => !isNull(f)\n && has('relativePath')(f) && has('size')(f)\n && isNumber(f.size)\n && isString(f.relativePath)\n && isLegalFilename(f.relativePath);\n\nconst options = {};\n\nconst typeConstraints = [];\n\nexport default getDefaultExport(\n 'file',\n fileTryParse,\n fileFunctions,\n options,\n typeConstraints,\n { relativePath: 'some_file.jpg', size: 1000 },\n JSON.stringify,\n);\n","import {\n assign, merge, \n} from 'lodash';\nimport {\n map, isString, isNumber,\n isBoolean, isDate, keys,\n isObject, isArray, has\n} from 'lodash/fp';\nimport { $ } from '../common';\nimport { parsedSuccess } from './typeHelpers';\nimport string from './string';\nimport bool from './bool';\nimport number from './number';\nimport datetime from './datetime';\nimport array from './array';\nimport reference from './reference';\nimport file from './file';\nimport { BadRequestError } from '../common/errors';\n\nconst allTypes = () => {\n const basicTypes = {\n string, number, datetime, bool, reference, file,\n };\n\n const arrays = $(basicTypes, [\n keys,\n map((k) => {\n const kvType = {};\n const concreteArray = array(basicTypes[k]);\n kvType[concreteArray.name] = concreteArray;\n return kvType;\n }),\n types => assign({}, ...types),\n ]);\n\n return merge({}, basicTypes, arrays);\n};\n\n\nexport const all = allTypes();\n\nexport const getType = (typeName) => {\n if (!has(typeName)(all)) throw new BadRequestError(`Do not recognise type ${typeName}`);\n return all[typeName];\n};\n\nexport const getSampleFieldValue = field => getType(field.type).sampleValue;\n\nexport const getNewFieldValue = field => getType(field.type).getNew(field);\n\nexport const safeParseField = (field, record) => getType(field.type).safeParseField(field, record);\n\nexport const validateFieldParse = (field, record) => (has(field.name)(record)\n ? getType(field.type).tryParse(record[field.name])\n : parsedSuccess(undefined)); // fields may be undefined by default\n\nexport const getDefaultOptions = type => getType(type).getDefaultOptions();\n\nexport const validateTypeConstraints = async (field, record, context) => await getType(field.type).validateTypeConstraints(field, record, context);\n\nexport const detectType = (value) => {\n if (isString(value)) return string;\n if (isBoolean(value)) return bool;\n if (isNumber(value)) return number;\n if (isDate(value)) return datetime;\n if (isArray(value)) return array(detectType(value[0]));\n if (isObject(value)\n && has('key')(value)\n && has('value')(value)) return reference;\n if (isObject(value)\n && has('relativePath')(value)\n && has('size')(value)) return file;\n\n throw new BadRequestError(`cannot determine type: ${JSON.stringify(value)}`);\n};\n","import { clone, find, split } from 'lodash/fp';\nimport { joinKey, $ } from '../common';\n// 5 minutes\nexport const tempCodeExpiryLength = 5 * 60 * 1000;\n\nexport const AUTH_FOLDER = '/.auth';\nexport const USERS_LIST_FILE = joinKey(AUTH_FOLDER, 'users.json');\nexport const userAuthFile = username => joinKey(AUTH_FOLDER, `auth_${username}.json`);\nexport const USERS_LOCK_FILE = joinKey(AUTH_FOLDER, 'users_lock');\nexport const ACCESS_LEVELS_FILE = joinKey(AUTH_FOLDER, 'access_levels.json');\nexport const ACCESS_LEVELS_LOCK_FILE = joinKey(AUTH_FOLDER, 'access_levels_lock');\n\nexport const permissionTypes = {\n CREATE_RECORD: 'create record',\n UPDATE_RECORD: 'update record',\n READ_RECORD: 'read record',\n DELETE_RECORD: 'delete record',\n READ_INDEX: 'read index',\n MANAGE_INDEX: 'manage index',\n MANAGE_COLLECTION: 'manage collection',\n WRITE_TEMPLATES: 'write templates',\n CREATE_USER: 'create user',\n SET_PASSWORD: 'set password',\n CREATE_TEMPORARY_ACCESS: 'create temporary access',\n ENABLE_DISABLE_USER: 'enable or disable user',\n WRITE_ACCESS_LEVELS: 'write access levels',\n LIST_USERS: 'list users',\n LIST_ACCESS_LEVELS: 'list access levels',\n EXECUTE_ACTION: 'execute action',\n SET_USER_ACCESS_LEVELS: 'set user access levels',\n};\n\nexport const getUserByName = (users, name) => $(users, [\n find(u => u.name.toLowerCase() === name.toLowerCase()),\n]);\n\nexport const stripUserOfSensitiveStuff = (user) => {\n const stripped = clone(user);\n delete stripped.tempCode;\n return stripped;\n};\n\nexport const parseTemporaryCode = fullCode => $(fullCode, [\n split(':'),\n parts => ({\n id: parts[1],\n code: parts[2],\n }),\n]);\n","import { values, includes, some } from 'lodash/fp';\nimport { permissionTypes } from './authCommon';\nimport {\n $, isNothing, apiWrapperSync, events,\n} from '../common';\nimport { getNodeByKeyOrNodeKey, isNode } from '../templateApi/hierarchy';\nimport { alwaysAuthorized } from './permissions';\n\nexport const isAuthorized = app => (permissionType, resourceKey) => apiWrapperSync(\n app,\n events.authApi.isAuthorized,\n alwaysAuthorized,\n { resourceKey, permissionType },\n _isAuthorized, app, permissionType, resourceKey,\n);\n\nexport const _isAuthorized = (app, permissionType, resourceKey) => {\n if (!app.user) {\n return false;\n }\n\n const validType = $(permissionTypes, [\n values,\n includes(permissionType),\n ]);\n\n if (!validType) {\n return false;\n }\n\n const permMatchesResource = (userperm) => {\n const nodeKey = isNothing(resourceKey)\n ? null\n : isNode(app.hierarchy, resourceKey)\n ? getNodeByKeyOrNodeKey(\n app.hierarchy, resourceKey,\n ).nodeKey()\n : resourceKey;\n\n return (userperm.type === permissionType)\n && (\n isNothing(resourceKey)\n || nodeKey === userperm.nodeKey\n );\n };\n\n return $(app.user.permissions, [\n some(permMatchesResource),\n ]);\n};\n","import { permissionTypes } from './authCommon';\nimport { isAuthorized } from './isAuthorized';\n\nexport const temporaryAccessPermissions = () => ([{ type: permissionTypes.SET_PASSWORD }]);\n\nconst nodePermission = type => ({\n add: (nodeKey, accessLevel) => accessLevel.permissions.push({ type, nodeKey }),\n isAuthorized: resourceKey => app => isAuthorized(app)(type, resourceKey),\n isNode: true,\n get: nodeKey => ({ type, nodeKey }),\n});\n\nconst staticPermission = type => ({\n add: accessLevel => accessLevel.permissions.push({ type }),\n isAuthorized: app => isAuthorized(app)(type),\n isNode: false,\n get: () => ({ type }),\n});\n\nconst createRecord = nodePermission(permissionTypes.CREATE_RECORD);\n\nconst updateRecord = nodePermission(permissionTypes.UPDATE_RECORD);\n\nconst deleteRecord = nodePermission(permissionTypes.DELETE_RECORD);\n\nconst readRecord = nodePermission(permissionTypes.READ_RECORD);\n\nconst writeTemplates = staticPermission(permissionTypes.WRITE_TEMPLATES);\n\nconst createUser = staticPermission(permissionTypes.CREATE_USER);\n\nconst setPassword = staticPermission(permissionTypes.SET_PASSWORD);\n\nconst readIndex = nodePermission(permissionTypes.READ_INDEX);\n\nconst manageIndex = staticPermission(permissionTypes.MANAGE_INDEX);\n\nconst manageCollection = staticPermission(permissionTypes.MANAGE_COLLECTION);\n\nconst createTemporaryAccess = staticPermission(permissionTypes.CREATE_TEMPORARY_ACCESS);\n\nconst enableDisableUser = staticPermission(permissionTypes.ENABLE_DISABLE_USER);\n\nconst writeAccessLevels = staticPermission(permissionTypes.WRITE_ACCESS_LEVELS);\n\nconst listUsers = staticPermission(permissionTypes.LIST_USERS);\n\nconst listAccessLevels = staticPermission(permissionTypes.LIST_ACCESS_LEVELS);\n\nconst setUserAccessLevels = staticPermission(permissionTypes.SET_USER_ACCESS_LEVELS);\n\nconst executeAction = nodePermission(permissionTypes.EXECUTE_ACTION);\n\nexport const alwaysAuthorized = () => true;\n\nexport const permission = {\n createRecord,\n updateRecord,\n deleteRecord,\n readRecord,\n writeTemplates,\n createUser,\n setPassword,\n readIndex,\n createTemporaryAccess,\n enableDisableUser,\n writeAccessLevels,\n listUsers,\n listAccessLevels,\n manageIndex,\n manageCollection,\n executeAction,\n setUserAccessLevels,\n};\n","import {\n keyBy, mapValues,\n} from 'lodash/fp';\nimport { generate } from 'shortid';\nimport { \n getNodeForCollectionPath, isSingleRecord \n} from '../templateApi/hierarchy';\nimport { getNewFieldValue } from '../types';\nimport {\n $, joinKey, safeKey, apiWrapperSync, events,\n} from '../common';\nimport { permission } from '../authApi/permissions';\n\nexport const getNew = app => (collectionKey, recordTypeName) => {\n const recordNode = getRecordNode(app, collectionKey, recordTypeName);\n collectionKey=safeKey(collectionKey);\n return apiWrapperSync(\n app,\n events.recordApi.getNew,\n permission.createRecord.isAuthorized(recordNode.nodeKey()),\n { collectionKey, recordTypeName },\n _getNew, recordNode, collectionKey,\n );\n};\n\nexport const _getNew = (recordNode, collectionKey) => constructRecord(recordNode, getNewFieldValue, collectionKey);\n\nconst getRecordNode = (app, collectionKey) => {\n collectionKey = safeKey(collectionKey);\n return getNodeForCollectionPath(app.hierarchy)(collectionKey);\n};\n\nexport const getNewChild = app => (recordKey, collectionName, recordTypeName) => \n getNew(app)(joinKey(recordKey, collectionName), recordTypeName);\n\nexport const constructRecord = (recordNode, getFieldValue, collectionKey) => {\n const record = $(recordNode.fields, [\n keyBy('name'),\n mapValues(getFieldValue),\n ]);\n\n record.id = `${recordNode.nodeId}-${generate()}`;\n record.key = isSingleRecord(recordNode)\n ? joinKey(collectionKey, recordNode.name)\n : joinKey(collectionKey, record.id);\n record.isNew = true;\n record.type = recordNode.name;\n return record;\n};\n","/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.6\n * Copyright (C) 2019 Oliver Nightingale\n * @license MIT\n */\n\n;(function(){\n\n/**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n * this.field('title')\n * this.field('body')\n * this.ref('id')\n *\n * documents.forEach(function (doc) {\n * this.add(doc)\n * }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\nvar lunr = function (config) {\n var builder = new lunr.Builder\n\n builder.pipeline.add(\n lunr.trimmer,\n lunr.stopWordFilter,\n lunr.stemmer\n )\n\n builder.searchPipeline.add(\n lunr.stemmer\n )\n\n config.call(builder, builder)\n return builder.build()\n}\n\nlunr.version = \"2.3.6\"\n/*!\n * lunr.utils\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\nlunr.utils = {}\n\n/**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\nlunr.utils.warn = (function (global) {\n /* eslint-disable no-console */\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message)\n }\n }\n /* eslint-enable no-console */\n})(this)\n\n/**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\nlunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\"\n } else {\n return obj.toString()\n }\n}\n\n/**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\nlunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj\n }\n\n var clone = Object.create(null),\n keys = Object.keys(obj)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key]\n\n if (Array.isArray(val)) {\n clone[key] = val.slice()\n continue\n }\n\n if (typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean') {\n clone[key] = val\n continue\n }\n\n throw new TypeError(\"clone is not deep and does not support nested objects\")\n }\n\n return clone\n}\nlunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef\n this.fieldName = fieldName\n this._stringValue = stringValue\n}\n\nlunr.FieldRef.joiner = \"/\"\n\nlunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner)\n\n if (n === -1) {\n throw \"malformed field ref string\"\n }\n\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1)\n\n return new lunr.FieldRef (docRef, fieldRef, s)\n}\n\nlunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef\n }\n\n return this._stringValue\n}\n/*!\n * lunr.Set\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A lunr set.\n *\n * @constructor\n */\nlunr.Set = function (elements) {\n this.elements = Object.create(null)\n\n if (elements) {\n this.length = elements.length\n\n for (var i = 0; i < this.length; i++) {\n this.elements[elements[i]] = true\n }\n } else {\n this.length = 0\n }\n}\n\n/**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.complete = {\n intersect: function (other) {\n return other\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return true\n }\n}\n\n/**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.empty = {\n intersect: function () {\n return this\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return false\n }\n}\n\n/**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\nlunr.Set.prototype.contains = function (object) {\n return !!this.elements[object]\n}\n\n/**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\nlunr.Set.prototype.intersect = function (other) {\n var a, b, elements, intersection = []\n\n if (other === lunr.Set.complete) {\n return this\n }\n\n if (other === lunr.Set.empty) {\n return other\n }\n\n if (this.length < other.length) {\n a = this\n b = other\n } else {\n a = other\n b = this\n }\n\n elements = Object.keys(a.elements)\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i]\n if (element in b.elements) {\n intersection.push(element)\n }\n }\n\n return new lunr.Set (intersection)\n}\n\n/**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\nlunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete\n }\n\n if (other === lunr.Set.empty) {\n return this\n }\n\n return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))\n}\n/**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\nlunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0\n\n for (var fieldName in posting) {\n if (fieldName == '_index') continue // Ignore the term index, its not a field\n documentsWithTerm += Object.keys(posting[fieldName]).length\n }\n\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)\n\n return Math.log(1 + Math.abs(x))\n}\n\n/**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\nlunr.Token = function (str, metadata) {\n this.str = str || \"\"\n this.metadata = metadata || {}\n}\n\n/**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\nlunr.Token.prototype.toString = function () {\n return this.str\n}\n\n/**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n/**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n * return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata)\n return this\n}\n\n/**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) { return s }\n return new lunr.Token (fn(this.str, this.metadata), this.metadata)\n}\n/*!\n * lunr.tokenizer\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\nlunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return []\n }\n\n if (Array.isArray(obj)) {\n return obj.map(function (t) {\n return new lunr.Token(\n lunr.utils.asString(t).toLowerCase(),\n lunr.utils.clone(metadata)\n )\n })\n }\n\n var str = obj.toString().trim().toLowerCase(),\n len = str.length,\n tokens = []\n\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart\n\n if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {\n\n if (sliceLength > 0) {\n var tokenMetadata = lunr.utils.clone(metadata) || {}\n tokenMetadata[\"position\"] = [sliceStart, sliceLength]\n tokenMetadata[\"index\"] = tokens.length\n\n tokens.push(\n new lunr.Token (\n str.slice(sliceStart, sliceEnd),\n tokenMetadata\n )\n )\n }\n\n sliceStart = sliceEnd + 1\n }\n\n }\n\n return tokens\n}\n\n/**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\nlunr.tokenizer.separator = /[\\s\\-]+/\n/*!\n * lunr.Pipeline\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\nlunr.Pipeline = function () {\n this._stack = []\n}\n\nlunr.Pipeline.registeredFunctions = Object.create(null)\n\n/**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null. This token will not be passed to any downstream pipeline functions and will not be\n * added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n/**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\nlunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label)\n }\n\n fn.label = label\n lunr.Pipeline.registeredFunctions[fn.label] = fn\n}\n\n/**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\nlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && (fn.label in this.registeredFunctions)\n\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn)\n }\n}\n\n/**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\nlunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline\n\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName]\n\n if (fn) {\n pipeline.add(fn)\n } else {\n throw new Error('Cannot load unregistered function: ' + fnName)\n }\n })\n\n return pipeline\n}\n\n/**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\nlunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments)\n\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n this._stack.push(fn)\n }, this)\n}\n\n/**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n pos = pos + 1\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\nlunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn)\n if (pos == -1) {\n return\n }\n\n this._stack.splice(pos, 1)\n}\n\n/**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\nlunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length\n\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i]\n var memo = []\n\n for (var j = 0; j < tokens.length; j++) {\n var result = fn(tokens[j], j, tokens)\n\n if (result === void 0 || result === '') continue\n\n if (Array.isArray(result)) {\n for (var k = 0; k < result.length; k++) {\n memo.push(result[k])\n }\n } else {\n memo.push(result)\n }\n }\n\n tokens = memo\n }\n\n return tokens\n}\n\n/**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\nlunr.Pipeline.prototype.runString = function (str, metadata) {\n var token = new lunr.Token (str, metadata)\n\n return this.run([token]).map(function (t) {\n return t.toString()\n })\n}\n\n/**\n * Resets the pipeline by removing any existing processors.\n *\n */\nlunr.Pipeline.prototype.reset = function () {\n this._stack = []\n}\n\n/**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\nlunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n\n return fn.label\n })\n}\n/*!\n * lunr.Vector\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\nlunr.Vector = function (elements) {\n this._magnitude = 0\n this.elements = elements || []\n}\n\n\n/**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\nlunr.Vector.prototype.positionForIndex = function (index) {\n // For an empty vector the tuple can be inserted at the beginning\n if (this.elements.length == 0) {\n return 0\n }\n\n var start = 0,\n end = this.elements.length / 2,\n sliceLength = end - start,\n pivotPoint = Math.floor(sliceLength / 2),\n pivotIndex = this.elements[pivotPoint * 2]\n\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint\n }\n\n if (pivotIndex > index) {\n end = pivotPoint\n }\n\n if (pivotIndex == index) {\n break\n }\n\n sliceLength = end - start\n pivotPoint = start + Math.floor(sliceLength / 2)\n pivotIndex = this.elements[pivotPoint * 2]\n }\n\n if (pivotIndex == index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex > index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2\n }\n}\n\n/**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\nlunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\"\n })\n}\n\n/**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\nlunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0\n var position = this.positionForIndex(insertIdx)\n\n if (this.elements[position] == insertIdx) {\n this.elements[position + 1] = fn(this.elements[position + 1], val)\n } else {\n this.elements.splice(position, 0, insertIdx, val)\n }\n}\n\n/**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\nlunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude\n\n var sumOfSquares = 0,\n elementsLength = this.elements.length\n\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i]\n sumOfSquares += val * val\n }\n\n return this._magnitude = Math.sqrt(sumOfSquares)\n}\n\n/**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\nlunr.Vector.prototype.dot = function (otherVector) {\n var dotProduct = 0,\n a = this.elements, b = otherVector.elements,\n aLen = a.length, bLen = b.length,\n aVal = 0, bVal = 0,\n i = 0, j = 0\n\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j]\n if (aVal < bVal) {\n i += 2\n } else if (aVal > bVal) {\n j += 2\n } else if (aVal == bVal) {\n dotProduct += a[i + 1] * b[j + 1]\n i += 2\n j += 2\n }\n }\n\n return dotProduct\n}\n\n/**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\nlunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0\n}\n\n/**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toArray = function () {\n var output = new Array (this.elements.length / 2)\n\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i]\n }\n\n return output\n}\n\n/**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toJSON = function () {\n return this.elements\n}\n/* eslint-disable */\n/*!\n * lunr.stemmer\n * Copyright (C) 2019 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n/**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\nlunr.stemmer = (function(){\n var step2list = {\n \"ational\" : \"ate\",\n \"tional\" : \"tion\",\n \"enci\" : \"ence\",\n \"anci\" : \"ance\",\n \"izer\" : \"ize\",\n \"bli\" : \"ble\",\n \"alli\" : \"al\",\n \"entli\" : \"ent\",\n \"eli\" : \"e\",\n \"ousli\" : \"ous\",\n \"ization\" : \"ize\",\n \"ation\" : \"ate\",\n \"ator\" : \"ate\",\n \"alism\" : \"al\",\n \"iveness\" : \"ive\",\n \"fulness\" : \"ful\",\n \"ousness\" : \"ous\",\n \"aliti\" : \"al\",\n \"iviti\" : \"ive\",\n \"biliti\" : \"ble\",\n \"logi\" : \"log\"\n },\n\n step3list = {\n \"icate\" : \"ic\",\n \"ative\" : \"\",\n \"alize\" : \"al\",\n \"iciti\" : \"ic\",\n \"ical\" : \"ic\",\n \"ful\" : \"\",\n \"ness\" : \"\"\n },\n\n c = \"[^aeiou]\", // consonant\n v = \"[aeiouy]\", // vowel\n C = c + \"[^aeiouy]*\", // consonant sequence\n V = v + \"[aeiou]*\", // vowel sequence\n\n mgr0 = \"^(\" + C + \")?\" + V + C, // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\", // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C, // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var porterStemmer = function porterStemmer(w) {\n var stem,\n suffix,\n firstch,\n re,\n re2,\n re3,\n re4;\n\n if (w.length < 3) { return w; }\n\n firstch = w.substr(0,1);\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n }\n\n // Step 1a\n re = re_1a\n re2 = re2_1a;\n\n if (re.test(w)) { w = w.replace(re,\"$1$2\"); }\n else if (re2.test(w)) { w = w.replace(re2,\"$1$2\"); }\n\n // Step 1b\n re = re_1b;\n re2 = re2_1b;\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n if (re2.test(w)) { w = w + \"e\"; }\n else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,\"\"); }\n else if (re4.test(w)) { w = w + \"e\"; }\n }\n }\n\n // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n re = re_1c;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n }\n\n // Step 2\n re = re_2;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n }\n\n // Step 3\n re = re_3;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n }\n\n // Step 4\n re = re_4;\n re2 = re2_4;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n if (re2.test(stem)) {\n w = stem;\n }\n }\n\n // Step 5\n re = re_5;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {\n w = stem;\n }\n }\n\n re = re_5_1;\n re2 = re_mgr1;\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n\n // and turn initial Y back to y\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n\n return w;\n };\n\n return function (token) {\n return token.update(porterStemmer);\n }\n})();\n\nlunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')\n/*!\n * lunr.stopWordFilter\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\nlunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord\n return memo\n }, {})\n\n return function (token) {\n if (token && words[token.toString()] !== token.toString()) return token\n }\n}\n\n/**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\nlunr.stopWordFilter = lunr.generateStopWordFilter([\n 'a',\n 'able',\n 'about',\n 'across',\n 'after',\n 'all',\n 'almost',\n 'also',\n 'am',\n 'among',\n 'an',\n 'and',\n 'any',\n 'are',\n 'as',\n 'at',\n 'be',\n 'because',\n 'been',\n 'but',\n 'by',\n 'can',\n 'cannot',\n 'could',\n 'dear',\n 'did',\n 'do',\n 'does',\n 'either',\n 'else',\n 'ever',\n 'every',\n 'for',\n 'from',\n 'get',\n 'got',\n 'had',\n 'has',\n 'have',\n 'he',\n 'her',\n 'hers',\n 'him',\n 'his',\n 'how',\n 'however',\n 'i',\n 'if',\n 'in',\n 'into',\n 'is',\n 'it',\n 'its',\n 'just',\n 'least',\n 'let',\n 'like',\n 'likely',\n 'may',\n 'me',\n 'might',\n 'most',\n 'must',\n 'my',\n 'neither',\n 'no',\n 'nor',\n 'not',\n 'of',\n 'off',\n 'often',\n 'on',\n 'only',\n 'or',\n 'other',\n 'our',\n 'own',\n 'rather',\n 'said',\n 'say',\n 'says',\n 'she',\n 'should',\n 'since',\n 'so',\n 'some',\n 'than',\n 'that',\n 'the',\n 'their',\n 'them',\n 'then',\n 'there',\n 'these',\n 'they',\n 'this',\n 'tis',\n 'to',\n 'too',\n 'twas',\n 'us',\n 'wants',\n 'was',\n 'we',\n 'were',\n 'what',\n 'when',\n 'where',\n 'which',\n 'while',\n 'who',\n 'whom',\n 'why',\n 'will',\n 'with',\n 'would',\n 'yet',\n 'you',\n 'your'\n])\n\nlunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')\n/*!\n * lunr.trimmer\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\nlunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '')\n })\n}\n\nlunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')\n/*!\n * lunr.TokenSet\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\nlunr.TokenSet = function () {\n this.final = false\n this.edges = {}\n this.id = lunr.TokenSet._nextId\n lunr.TokenSet._nextId += 1\n}\n\n/**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\nlunr.TokenSet._nextId = 1\n\n/**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\nlunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder\n\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i])\n }\n\n builder.finish()\n return builder.root\n}\n\n/**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromClause = function (clause) {\n if ('editDistance' in clause) {\n return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)\n } else {\n return lunr.TokenSet.fromString(clause.term)\n }\n}\n\n/**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\nlunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n var root = new lunr.TokenSet\n\n var stack = [{\n node: root,\n editsRemaining: editDistance,\n str: str\n }]\n\n while (stack.length) {\n var frame = stack.pop()\n\n // no edit\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode\n\n if (char in frame.node.edges) {\n noEditNode = frame.node.edges[char]\n } else {\n noEditNode = new lunr.TokenSet\n frame.node.edges[char] = noEditNode\n }\n\n if (frame.str.length == 1) {\n noEditNode.final = true\n }\n\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n })\n }\n\n if (frame.editsRemaining == 0) {\n continue\n }\n\n // insertion\n if (\"*\" in frame.node.edges) {\n var insertionNode = frame.node.edges[\"*\"]\n } else {\n var insertionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = insertionNode\n }\n\n if (frame.str.length == 0) {\n insertionNode.final = true\n }\n\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\n })\n\n // deletion\n // can only do a deletion if we have enough edits remaining\n // and if there are characters left to delete in the string\n if (frame.str.length > 1) {\n stack.push({\n node: frame.node,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // deletion\n // just removing the last character from the str\n if (frame.str.length == 1) {\n frame.node.final = true\n }\n\n // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n if (frame.str.length >= 1) {\n if (\"*\" in frame.node.edges) {\n var substitutionNode = frame.node.edges[\"*\"]\n } else {\n var substitutionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = substitutionNode\n }\n\n if (frame.str.length == 1) {\n substitutionNode.final = true\n }\n\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode\n\n if (charB in frame.node.edges) {\n transposeNode = frame.node.edges[charB]\n } else {\n transposeNode = new lunr.TokenSet\n frame.node.edges[charB] = transposeNode\n }\n\n if (frame.str.length == 1) {\n transposeNode.final = true\n }\n\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n })\n }\n }\n\n return root\n}\n\n/**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet,\n root = node\n\n /*\n * Iterates through all characters within the passed string\n * appending a node for each character.\n *\n * When a wildcard character is found then a self\n * referencing edge is introduced to continually match\n * any number of any characters.\n */\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = (i == len - 1)\n\n if (char == \"*\") {\n node.edges[char] = node\n node.final = final\n\n } else {\n var next = new lunr.TokenSet\n next.final = final\n\n node.edges[char] = next\n node = next\n }\n }\n\n return root\n}\n\n/**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * @returns {string[]}\n */\nlunr.TokenSet.prototype.toArray = function () {\n var words = []\n\n var stack = [{\n prefix: \"\",\n node: this\n }]\n\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length\n\n if (frame.node.final) {\n /* In Safari, at this point the prefix is sometimes corrupted, see:\n * https://github.com/olivernn/lunr.js/issues/279 Calling any\n * String.prototype method forces Safari to \"cast\" this string to what\n * it's supposed to be, fixing the bug. */\n frame.prefix.charAt(0)\n words.push(frame.prefix)\n }\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i]\n\n stack.push({\n prefix: frame.prefix.concat(edge),\n node: frame.node.edges[edge]\n })\n }\n }\n\n return words\n}\n\n/**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\nlunr.TokenSet.prototype.toString = function () {\n // NOTE: Using Object.keys here as this.edges is very likely\n // to enter 'hash-mode' with many keys being added\n //\n // avoiding a for-in loop here as it leads to the function\n // being de-optimised (at least in V8). From some simple\n // benchmarks the performance is comparable, but allowing\n // V8 to optimize may mean easy performance wins in the future.\n\n if (this._str) {\n return this._str\n }\n\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length\n\n for (var i = 0; i < len; i++) {\n var label = labels[i],\n node = this.edges[label]\n\n str = str + label + node.id\n }\n\n return str\n}\n\n/**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.prototype.intersect = function (b) {\n var output = new lunr.TokenSet,\n frame = undefined\n\n var stack = [{\n qNode: b,\n output: output,\n node: this\n }]\n\n while (stack.length) {\n frame = stack.pop()\n\n // NOTE: As with the #toString method, we are using\n // Object.keys and a for loop instead of a for-in loop\n // as both of these objects enter 'hash' mode, causing\n // the function to be de-optimised in V8\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length\n\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q]\n\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n]\n\n if (nEdge == qEdge || qEdge == '*') {\n var node = frame.node.edges[nEdge],\n qNode = frame.qNode.edges[qEdge],\n final = node.final && qNode.final,\n next = undefined\n\n if (nEdge in frame.output.edges) {\n // an edge already exists for this character\n // no need to create a new node, just set the finality\n // bit unless this node is already final\n next = frame.output.edges[nEdge]\n next.final = next.final || final\n\n } else {\n // no edge exists yet, must create one\n // set the finality bit and insert it\n // into the output\n next = new lunr.TokenSet\n next.final = final\n frame.output.edges[nEdge] = next\n }\n\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n })\n }\n }\n }\n }\n\n return output\n}\nlunr.TokenSet.Builder = function () {\n this.previousWord = \"\"\n this.root = new lunr.TokenSet\n this.uncheckedNodes = []\n this.minimizedNodes = {}\n}\n\nlunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0\n\n if (word < this.previousWord) {\n throw new Error (\"Out of order word insertion\")\n }\n\n for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n if (word[i] != this.previousWord[i]) break\n commonPrefix++\n }\n\n this.minimize(commonPrefix)\n\n if (this.uncheckedNodes.length == 0) {\n node = this.root\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child\n }\n\n for (var i = commonPrefix; i < word.length; i++) {\n var nextNode = new lunr.TokenSet,\n char = word[i]\n\n node.edges[char] = nextNode\n\n this.uncheckedNodes.push({\n parent: node,\n char: char,\n child: nextNode\n })\n\n node = nextNode\n }\n\n node.final = true\n this.previousWord = word\n}\n\nlunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0)\n}\n\nlunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n var node = this.uncheckedNodes[i],\n childKey = node.child.toString()\n\n if (childKey in this.minimizedNodes) {\n node.parent.edges[node.char] = this.minimizedNodes[childKey]\n } else {\n // Cache the key for this node since\n // we know it can't change anymore\n node.child._str = childKey\n\n this.minimizedNodes[childKey] = node.child\n }\n\n this.uncheckedNodes.pop()\n }\n}\n/*!\n * lunr.Index\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object<string, lunr.Vector>} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\nlunr.Index = function (attrs) {\n this.invertedIndex = attrs.invertedIndex\n this.fieldVectors = attrs.fieldVectors\n this.tokenSet = attrs.tokenSet\n this.fields = attrs.fields\n this.pipeline = attrs.pipeline\n}\n\n/**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n/**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example <caption>Simple single term query</caption>\n * hello\n * @example <caption>Multiple term query</caption>\n * hello world\n * @example <caption>term scoped to a field</caption>\n * title:hello\n * @example <caption>term with a boost of 10</caption>\n * hello^10\n * @example <caption>term with an edit distance of 2</caption>\n * hello~2\n * @example <caption>terms with presence modifiers</caption>\n * -foo +bar baz\n */\n\n/**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first. For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.search = function (queryString) {\n return this.query(function (query) {\n var parser = new lunr.QueryParser(queryString, query)\n parser.parse()\n })\n}\n\n/**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n/**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.query = function (fn) {\n // for each query clause\n // * process terms\n // * expand terms from token set\n // * find matching documents and metadata\n // * get document vectors\n // * score documents\n\n var query = new lunr.Query(this.fields),\n matchingFields = Object.create(null),\n queryVectors = Object.create(null),\n termFieldCache = Object.create(null),\n requiredMatches = Object.create(null),\n prohibitedMatches = Object.create(null)\n\n /*\n * To support field level boosts a query vector is created per\n * field. An empty vector is eagerly created to support negated\n * queries.\n */\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector\n }\n\n fn.call(query, query)\n\n for (var i = 0; i < query.clauses.length; i++) {\n /*\n * Unless the pipeline has been disabled for this term, which is\n * the case for terms with wildcards, we need to pass the clause\n * term through the search pipeline. A pipeline returns an array\n * of processed terms. Pipeline functions may expand the passed\n * term, which means we may end up performing multiple index lookups\n * for a single query term.\n */\n var clause = query.clauses[i],\n terms = null,\n clauseMatches = lunr.Set.complete\n\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n })\n } else {\n terms = [clause.term]\n }\n\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m]\n\n /*\n * Each term returned from the pipeline needs to use the same query\n * clause object, e.g. the same boost and or edit distance. The\n * simplest way to do this is to re-use the clause object but mutate\n * its term property.\n */\n clause.term = term\n\n /*\n * From the term in the clause we create a token set which will then\n * be used to intersect the indexes token set to get a list of terms\n * to lookup in the inverted index\n */\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()\n\n /*\n * If a term marked as required does not exist in the tokenSet it is\n * impossible for the search to return any matches. We set all the field\n * scoped required matches set to empty and stop examining any further\n * clauses.\n */\n if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = lunr.Set.empty\n }\n\n break\n }\n\n for (var j = 0; j < expandedTerms.length; j++) {\n /*\n * For each term get the posting and termIndex, this is required for\n * building the query vector.\n */\n var expandedTerm = expandedTerms[j],\n posting = this.invertedIndex[expandedTerm],\n termIndex = posting._index\n\n for (var k = 0; k < clause.fields.length; k++) {\n /*\n * For each field that this query term is scoped by (by default\n * all fields are in scope) we need to get all the document refs\n * that have this term in that field.\n *\n * The posting is the entry in the invertedIndex for the matching\n * term from above.\n */\n var field = clause.fields[k],\n fieldPosting = posting[field],\n matchingDocumentRefs = Object.keys(fieldPosting),\n termField = expandedTerm + \"/\" + field,\n matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)\n\n /*\n * if the presence of this term is required ensure that the matching\n * documents are added to the set of required matches for this clause.\n *\n */\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet)\n\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete\n }\n }\n\n /*\n * if the presence of this term is prohibited ensure that the matching\n * documents are added to the set of prohibited matches for this field,\n * creating that set if it does not yet exist.\n */\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty\n }\n\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)\n\n /*\n * Prohibited matches should not be part of the query vector used for\n * similarity scoring and no metadata should be extracted so we continue\n * to the next field\n */\n continue\n }\n\n /*\n * The query field vector is populated using the termIndex found for\n * the term and a unit value with the appropriate boost applied.\n * Using upsert because there could already be an entry in the vector\n * for the term we are working with. In that case we just add the scores\n * together.\n */\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })\n\n /**\n * If we've already seen this term, field combo then we've already collected\n * the matching documents and metadata, no need to go through all that again\n */\n if (termFieldCache[termField]) {\n continue\n }\n\n for (var l = 0; l < matchingDocumentRefs.length; l++) {\n /*\n * All metadata for this term/field/document triple\n * are then extracted and collected into an instance\n * of lunr.MatchData ready to be returned in the query\n * results\n */\n var matchingDocumentRef = matchingDocumentRefs[l],\n matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),\n metadata = fieldPosting[matchingDocumentRef],\n fieldMatch\n\n if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)\n } else {\n fieldMatch.add(expandedTerm, field, metadata)\n }\n\n }\n\n termFieldCache[termField] = true\n }\n }\n }\n\n /**\n * If the presence was required we need to update the requiredMatches field sets.\n * We do this after all fields for the term have collected their matches because\n * the clause terms presence is required in _any_ of the fields not _all_ of the\n * fields.\n */\n if (clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)\n }\n }\n }\n\n /**\n * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i]\n\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])\n }\n\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])\n }\n }\n\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null)\n\n /*\n * If the query is negated (contains only prohibited terms)\n * we need to get _all_ fieldRefs currently existing in the\n * index. This is only done when we know that the query is\n * entirely prohibited terms to avoid any cost of getting all\n * fieldRefs unnecessarily.\n *\n * Additionally, blank MatchData must be created to correctly\n * populate the results.\n */\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors)\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n var matchingFieldRef = matchingFieldRefs[i]\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)\n matchingFields[matchingFieldRef] = new lunr.MatchData\n }\n }\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n /*\n * Currently we have document fields that match the query, but we\n * need to return documents. The matchData and scores are combined\n * from multiple fields belonging to the same document.\n *\n * Scores are calculated by field, using the query vectors created\n * above, and combined into a final document score using addition.\n */\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n docRef = fieldRef.docRef\n\n if (!allRequiredMatches.contains(docRef)) {\n continue\n }\n\n if (allProhibitedMatches.contains(docRef)) {\n continue\n }\n\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch\n\n if ((docMatch = matches[docRef]) !== undefined) {\n docMatch.score += score\n docMatch.matchData.combine(matchingFields[fieldRef])\n } else {\n var match = {\n ref: docRef,\n score: score,\n matchData: matchingFields[fieldRef]\n }\n matches[docRef] = match\n results.push(match)\n }\n }\n\n /*\n * Sort the results objects by score, highest first.\n */\n return results.sort(function (a, b) {\n return b.score - a.score\n })\n}\n\n/**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\nlunr.Index.prototype.toJSON = function () {\n var invertedIndex = Object.keys(this.invertedIndex)\n .sort()\n .map(function (term) {\n return [term, this.invertedIndex[term]]\n }, this)\n\n var fieldVectors = Object.keys(this.fieldVectors)\n .map(function (ref) {\n return [ref, this.fieldVectors[ref].toJSON()]\n }, this)\n\n return {\n version: lunr.version,\n fields: this.fields,\n fieldVectors: fieldVectors,\n invertedIndex: invertedIndex,\n pipeline: this.pipeline.toJSON()\n }\n}\n\n/**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\nlunr.Index.load = function (serializedIndex) {\n var attrs = {},\n fieldVectors = {},\n serializedVectors = serializedIndex.fieldVectors,\n invertedIndex = Object.create(null),\n serializedInvertedIndex = serializedIndex.invertedIndex,\n tokenSetBuilder = new lunr.TokenSet.Builder,\n pipeline = lunr.Pipeline.load(serializedIndex.pipeline)\n\n if (serializedIndex.version != lunr.version) {\n lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\")\n }\n\n for (var i = 0; i < serializedVectors.length; i++) {\n var tuple = serializedVectors[i],\n ref = tuple[0],\n elements = tuple[1]\n\n fieldVectors[ref] = new lunr.Vector(elements)\n }\n\n for (var i = 0; i < serializedInvertedIndex.length; i++) {\n var tuple = serializedInvertedIndex[i],\n term = tuple[0],\n posting = tuple[1]\n\n tokenSetBuilder.insert(term)\n invertedIndex[term] = posting\n }\n\n tokenSetBuilder.finish()\n\n attrs.fields = serializedIndex.fields\n\n attrs.fieldVectors = fieldVectors\n attrs.invertedIndex = invertedIndex\n attrs.tokenSet = tokenSetBuilder.root\n attrs.pipeline = pipeline\n\n return new lunr.Index(attrs)\n}\n/*!\n * lunr.Builder\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\nlunr.Builder = function () {\n this._ref = \"id\"\n this._fields = Object.create(null)\n this._documents = Object.create(null)\n this.invertedIndex = Object.create(null)\n this.fieldTermFrequencies = {}\n this.fieldLengths = {}\n this.tokenizer = lunr.tokenizer\n this.pipeline = new lunr.Pipeline\n this.searchPipeline = new lunr.Pipeline\n this.documentCount = 0\n this._b = 0.75\n this._k1 = 1.2\n this.termIndex = 0\n this.metadataWhitelist = []\n}\n\n/**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\nlunr.Builder.prototype.ref = function (ref) {\n this._ref = ref\n}\n\n/**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example <caption>Extracting a nested field</caption>\n * function (doc) { return doc.nested.field }\n */\n\n/**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\nlunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError (\"Field '\" + fieldName + \"' contains illegal character '/'\")\n }\n\n this._fields[fieldName] = attributes || {}\n}\n\n/**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.b = function (number) {\n if (number < 0) {\n this._b = 0\n } else if (number > 1) {\n this._b = 1\n } else {\n this._b = number\n }\n}\n\n/**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.k1 = function (number) {\n this._k1 = number\n}\n\n/**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\nlunr.Builder.prototype.add = function (doc, attributes) {\n var docRef = doc[this._ref],\n fields = Object.keys(this._fields)\n\n this._documents[docRef] = attributes || {}\n this.documentCount += 1\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i],\n extractor = this._fields[fieldName].extractor,\n field = extractor ? extractor(doc) : doc[fieldName],\n tokens = this.tokenizer(field, {\n fields: [fieldName]\n }),\n terms = this.pipeline.run(tokens),\n fieldRef = new lunr.FieldRef (docRef, fieldName),\n fieldTerms = Object.create(null)\n\n this.fieldTermFrequencies[fieldRef] = fieldTerms\n this.fieldLengths[fieldRef] = 0\n\n // store the length of this field for this document\n this.fieldLengths[fieldRef] += terms.length\n\n // calculate term frequencies for this field\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j]\n\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0\n }\n\n fieldTerms[term] += 1\n\n // add to inverted index\n // create an initial posting if one doesn't exist\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null)\n posting[\"_index\"] = this.termIndex\n this.termIndex += 1\n\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null)\n }\n\n this.invertedIndex[term] = posting\n }\n\n // add an entry for this term/fieldName/docRef to the invertedIndex\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null)\n }\n\n // store all whitelisted metadata about this token in the\n // inverted index\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey]\n\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = []\n }\n\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)\n }\n }\n\n }\n}\n\n/**\n * Calculates the average document length for this index\n *\n * @private\n */\nlunr.Builder.prototype.calculateAverageFieldLengths = function () {\n\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {}\n\n for (var i = 0; i < numberOfFields; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n field = fieldRef.fieldName\n\n documentsWithField[field] || (documentsWithField[field] = 0)\n documentsWithField[field] += 1\n\n accumulator[field] || (accumulator[field] = 0)\n accumulator[field] += this.fieldLengths[fieldRef]\n }\n\n var fields = Object.keys(this._fields)\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i]\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]\n }\n\n this.averageFieldLength = accumulator\n}\n\n/**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\nlunr.Builder.prototype.createFieldVectors = function () {\n var fieldVectors = {},\n fieldRefs = Object.keys(this.fieldTermFrequencies),\n fieldRefsLength = fieldRefs.length,\n termIdfCache = Object.create(null)\n\n for (var i = 0; i < fieldRefsLength; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n fieldName = fieldRef.fieldName,\n fieldLength = this.fieldLengths[fieldRef],\n fieldVector = new lunr.Vector,\n termFrequencies = this.fieldTermFrequencies[fieldRef],\n terms = Object.keys(termFrequencies),\n termsLength = terms.length\n\n\n var fieldBoost = this._fields[fieldName].boost || 1,\n docBoost = this._documents[fieldRef.docRef].boost || 1\n\n for (var j = 0; j < termsLength; j++) {\n var term = terms[j],\n tf = termFrequencies[term],\n termIndex = this.invertedIndex[term]._index,\n idf, score, scoreWithPrecision\n\n if (termIdfCache[term] === undefined) {\n idf = lunr.idf(this.invertedIndex[term], this.documentCount)\n termIdfCache[term] = idf\n } else {\n idf = termIdfCache[term]\n }\n\n score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)\n score *= fieldBoost\n score *= docBoost\n scoreWithPrecision = Math.round(score * 1000) / 1000\n // Converts 1.23456789 to 1.234.\n // Reducing the precision so that the vectors take up less\n // space when serialised. Doing it now so that they behave\n // the same before and after serialisation. Also, this is\n // the fastest approach to reducing a number's precision in\n // JavaScript.\n\n fieldVector.insert(termIndex, scoreWithPrecision)\n }\n\n fieldVectors[fieldRef] = fieldVector\n }\n\n this.fieldVectors = fieldVectors\n}\n\n/**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\nlunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(\n Object.keys(this.invertedIndex).sort()\n )\n}\n\n/**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\nlunr.Builder.prototype.build = function () {\n this.calculateAverageFieldLengths()\n this.createFieldVectors()\n this.createTokenSet()\n\n return new lunr.Index({\n invertedIndex: this.invertedIndex,\n fieldVectors: this.fieldVectors,\n tokenSet: this.tokenSet,\n fields: Object.keys(this._fields),\n pipeline: this.searchPipeline\n })\n}\n\n/**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\nlunr.Builder.prototype.use = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1)\n args.unshift(this)\n fn.apply(this, args)\n}\n/**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {})\n\n // Cloning the metadata to prevent the original\n // being mutated during match data combination.\n // Metadata is kept in an array within the inverted\n // index so cloning the data can be done with\n // Array#slice\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n clonedMetadata[key] = metadata[key].slice()\n }\n\n this.metadata = Object.create(null)\n\n if (term !== undefined) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = clonedMetadata\n }\n}\n\n/**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata)\n\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term])\n\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null)\n }\n\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field])\n\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null)\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k]\n\n if (this.metadata[term][field][key] == undefined) {\n this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]\n } else {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])\n }\n\n }\n }\n }\n}\n\n/**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\nlunr.MatchData.prototype.add = function (term, field, metadata) {\n if (!(term in this.metadata)) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = metadata\n return\n }\n\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata\n return\n }\n\n var metadataKeys = Object.keys(metadata)\n\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n\n if (key in this.metadata[term][field]) {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])\n } else {\n this.metadata[term][field][key] = metadata[key]\n }\n }\n}\n/**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\nlunr.Query = function (allFields) {\n this.clauses = []\n this.allFields = allFields\n}\n\n/**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example <caption>query term with trailing wildcard</caption>\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example <caption>query term with leading and trailing wildcard</caption>\n * query.term('foo', {\n * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\nlunr.Query.wildcard = new String (\"*\")\nlunr.Query.wildcard.NONE = 0\nlunr.Query.wildcard.LEADING = 1\nlunr.Query.wildcard.TRAILING = 2\n\n/**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example <caption>query term with required presence</caption>\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\nlunr.Query.presence = {\n /**\n * Term's presence in a document is optional, this is the default value.\n */\n OPTIONAL: 1,\n\n /**\n * Term's presence in a document is required, documents that do not contain\n * this term will not be returned.\n */\n REQUIRED: 2,\n\n /**\n * Term's presence in a document is prohibited, documents that do contain\n * this term will not be returned.\n */\n PROHIBITED: 3\n}\n\n/**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n/**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\nlunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields\n }\n\n if (!('boost' in clause)) {\n clause.boost = 1\n }\n\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true\n }\n\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {\n clause.term = \"*\" + clause.term\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {\n clause.term = \"\" + clause.term + \"*\"\n }\n\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL\n }\n\n this.clauses.push(clause)\n\n return this\n}\n\n/**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\nlunr.Query.prototype.isNegated = function () {\n for (var i = 0; i < this.clauses.length; i++) {\n if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example <caption>adding a single term to a query</caption>\n * query.term(\"foo\")\n * @example <caption>adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard</caption>\n * query.term(\"foo\", {\n * fields: [\"title\"],\n * boost: 10,\n * wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example <caption>using lunr.tokenizer to convert a string to tokens before using them as terms</caption>\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\nlunr.Query.prototype.term = function (term, options) {\n if (Array.isArray(term)) {\n term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this)\n return this\n }\n\n var clause = options || {}\n clause.term = term.toString()\n\n this.clause(clause)\n\n return this\n}\nlunr.QueryParseError = function (message, start, end) {\n this.name = \"QueryParseError\"\n this.message = message\n this.start = start\n this.end = end\n}\n\nlunr.QueryParseError.prototype = new Error\nlunr.QueryLexer = function (str) {\n this.lexemes = []\n this.str = str\n this.length = str.length\n this.pos = 0\n this.start = 0\n this.escapeCharPositions = []\n}\n\nlunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText\n\n while (state) {\n state = state(this)\n }\n}\n\nlunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos\n\n for (var i = 0; i < this.escapeCharPositions.length; i++) {\n sliceEnd = this.escapeCharPositions[i]\n subSlices.push(this.str.slice(sliceStart, sliceEnd))\n sliceStart = sliceEnd + 1\n }\n\n subSlices.push(this.str.slice(sliceStart, this.pos))\n this.escapeCharPositions.length = 0\n\n return subSlices.join('')\n}\n\nlunr.QueryLexer.prototype.emit = function (type) {\n this.lexemes.push({\n type: type,\n str: this.sliceString(),\n start: this.start,\n end: this.pos\n })\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1)\n this.pos += 1\n}\n\nlunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS\n }\n\n var char = this.str.charAt(this.pos)\n this.pos += 1\n return char\n}\n\nlunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start\n}\n\nlunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1\n }\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1\n}\n\nlunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode\n\n do {\n char = this.next()\n charCode = char.charCodeAt(0)\n } while (charCode > 47 && charCode < 58)\n\n if (char != lunr.QueryLexer.EOS) {\n this.backup()\n }\n}\n\nlunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length\n}\n\nlunr.QueryLexer.EOS = 'EOS'\nlunr.QueryLexer.FIELD = 'FIELD'\nlunr.QueryLexer.TERM = 'TERM'\nlunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'\nlunr.QueryLexer.BOOST = 'BOOST'\nlunr.QueryLexer.PRESENCE = 'PRESENCE'\n\nlunr.QueryLexer.lexField = function (lexer) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.FIELD)\n lexer.ignore()\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.TERM)\n }\n\n lexer.ignore()\n\n if (lexer.more()) {\n return lunr.QueryLexer.lexText\n }\n}\n\nlunr.QueryLexer.lexEditDistance = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexBoost = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.BOOST)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n}\n\n// This matches the separator used when tokenising fields\n// within a document. These should match otherwise it is\n// not possible to search for some tokens within a document.\n//\n// It is possible for the user to change the separator on the\n// tokenizer so it _might_ clash with any other of the special\n// characters already used within the search string, e.g. :.\n//\n// This means that it is possible to change the separator in\n// such a way that makes some words unsearchable using a search\n// string.\nlunr.QueryLexer.termSeparator = lunr.tokenizer.separator\n\nlunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next()\n\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS\n }\n\n // Escape character is '\\'\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter()\n continue\n }\n\n if (char == \":\") {\n return lunr.QueryLexer.lexField\n }\n\n if (char == \"~\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexEditDistance\n }\n\n if (char == \"^\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexBoost\n }\n\n // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm\n }\n }\n}\n\nlunr.QueryParser = function (str, query) {\n this.lexer = new lunr.QueryLexer (str)\n this.query = query\n this.currentClause = {}\n this.lexemeIdx = 0\n}\n\nlunr.QueryParser.prototype.parse = function () {\n this.lexer.run()\n this.lexemes = this.lexer.lexemes\n\n var state = lunr.QueryParser.parseClause\n\n while (state) {\n state = state(this)\n }\n\n return this.query\n}\n\nlunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx]\n}\n\nlunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme()\n this.lexemeIdx += 1\n return lexeme\n}\n\nlunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause\n this.query.clause(completedClause)\n this.currentClause = {}\n}\n\nlunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type\n\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\"\n }\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n}\n\nlunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED\n break\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED\n break\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term or field, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n var possibleFields = parser.query.allFields.map(function (f) { return \"'\" + f + \"'\" }).join(', '),\n errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.fields = [lexeme.str]\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n parser.currentClause.term = lexeme.str.toLowerCase()\n\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var editDistance = parseInt(lexeme.str, 10)\n\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.editDistance = editDistance\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var boost = parseInt(lexeme.str, 10)\n\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.boost = boost\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n ;(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory)\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like enviroments that support module.exports,\n * like Node.\n */\n module.exports = factory()\n } else {\n // Browser globals (root is window)\n root.lunr = factory()\n }\n }(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr\n }))\n})();\n","import {\n has, keys, map, orderBy,\n filter, concat, reverse,\n} from 'lodash/fp';\nimport { getAllowedRecordNodesForIndex } from '../templateApi/hierarchy';\nimport { mapRecord } from './evaluate';\nimport { constructRecord } from '../recordApi/getNew';\nimport { getSampleFieldValue, detectType, all } from '../types';\nimport { $ } from '../common';\n\nexport const generateSchema = (hierarchy, indexNode) => {\n const recordNodes = getAllowedRecordNodesForIndex(hierarchy, indexNode);\n const mappedRecords = $(recordNodes, [\n map(n => mapRecord(createSampleRecord(n), indexNode)),\n ]);\n\n // always has record key and sort key\n const schema = {\n sortKey: all.string,\n key: all.string,\n };\n\n const fieldsHas = has(schema);\n const setField = (fieldName, value) => {\n if (value === null || value === undefined) { return; }\n\n const thisType = detectType(value);\n if (fieldsHas(fieldName)) {\n if (schema[fieldName] !== thisType) {\n schema[fieldName] = all.string;\n }\n } else {\n schema[fieldName] = thisType;\n }\n };\n\n for (const mappedRec of mappedRecords) {\n for (const f in mappedRec) {\n setField(f, mappedRec[f]);\n }\n }\n\n // returing an array of {name, type}\n return $(schema, [\n keys,\n map(k => ({ name: k, type: schema[k].name })),\n filter(s => s.name !== 'sortKey'),\n orderBy('name', ['desc']), // reverse aplha\n concat([{ name: 'sortKey', type: all.string.name }]), // sortKey on end\n reverse, // sortKey first, then rest are alphabetical\n ]);\n};\n\nconst createSampleRecord = recordNode => constructRecord(\n recordNode,\n getSampleFieldValue,\n recordNode.parent().nodeKey(),\n);\n","\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\nvar inited = false;\nfunction init () {\n inited = true;\n var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n }\n\n revLookup['-'.charCodeAt(0)] = 62\n revLookup['_'.charCodeAt(0)] = 63\n}\n\nexport function toByteArray (b64) {\n if (!inited) {\n init();\n }\n var i, j, l, tmp, placeHolders, arr\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // the number of equal signs (place holders)\n // if there are two placeholders, than the two characters before it\n // represent one byte\n // if there is only one, then the three characters before it represent 2 bytes\n // this is just a cheap hack to not do indexOf twice\n placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0\n\n // base64 is 4/3 + up to two characters of the original data\n arr = new Arr(len * 3 / 4 - placeHolders)\n\n // if there are placeholders, only get up to the last complete 4 chars\n l = placeHolders > 0 ? len - 4 : len\n\n var L = 0\n\n for (i = 0, j = 0; i < l; i += 4, j += 3) {\n tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)]\n arr[L++] = (tmp >> 16) & 0xFF\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n if (placeHolders === 2) {\n tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[L++] = tmp & 0xFF\n } else if (placeHolders === 1) {\n tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[L++] = (tmp >> 8) & 0xFF\n arr[L++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nexport function fromByteArray (uint8) {\n if (!inited) {\n init();\n }\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var output = ''\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n output += lookup[tmp >> 2]\n output += lookup[(tmp << 4) & 0x3F]\n output += '=='\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + (uint8[len - 1])\n output += lookup[tmp >> 10]\n output += lookup[(tmp >> 4) & 0x3F]\n output += lookup[(tmp << 2) & 0x3F]\n output += '='\n }\n\n parts.push(output)\n\n return parts.join('')\n}\n","\nexport function read (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexport function write (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = nBytes * 8 - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","var toString = {}.toString;\n\nexport default Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh <feross@feross.org> <http://feross.org>\n * @license MIT\n */\n/* eslint-disable no-proto */\n\n\nimport * as base64 from './base64'\nimport * as ieee754 from './ieee754'\nimport isArray from './isArray'\n\nexport var INSPECT_MAX_BYTES = 50\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Use Object implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * Due to various browser bugs, sometimes the Object implementation will be used even\n * when the browser supports typed arrays.\n *\n * Note:\n *\n * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,\n * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.\n *\n * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.\n *\n * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of\n * incorrect length in some situations.\n\n * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they\n * get the Object implementation, which is slower but behaves correctly.\n */\nBuffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined\n ? global.TYPED_ARRAY_SUPPORT\n : true\n\n/*\n * Export kMaxLength after typed array support is determined.\n */\nvar _kMaxLength = kMaxLength()\nexport {_kMaxLength as kMaxLength};\nfunction typedArraySupport () {\n return true;\n // rollup issues\n // try {\n // var arr = new Uint8Array(1)\n // arr.__proto__ = {\n // __proto__: Uint8Array.prototype,\n // foo: function () { return 42 }\n // }\n // return arr.foo() === 42 && // typed array instances can be augmented\n // typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`\n // arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`\n // } catch (e) {\n // return false\n // }\n}\n\nfunction kMaxLength () {\n return Buffer.TYPED_ARRAY_SUPPORT\n ? 0x7fffffff\n : 0x3fffffff\n}\n\nfunction createBuffer (that, length) {\n if (kMaxLength() < length) {\n throw new RangeError('Invalid typed array length')\n }\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = new Uint8Array(length)\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n if (that === null) {\n that = new Buffer(length)\n }\n that.length = length\n }\n\n return that\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nexport function Buffer (arg, encodingOrOffset, length) {\n if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {\n return new Buffer(arg, encodingOrOffset, length)\n }\n\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new Error(\n 'If encoding is specified then the first argument must be a string'\n )\n }\n return allocUnsafe(this, arg)\n }\n return from(this, arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\n// TODO: Legacy, not needed anymore. Remove in next major version.\nBuffer._augment = function (arr) {\n arr.__proto__ = Buffer.prototype\n return arr\n}\n\nfunction from (that, value, encodingOrOffset, length) {\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number')\n }\n\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n return fromArrayBuffer(that, value, encodingOrOffset, length)\n }\n\n if (typeof value === 'string') {\n return fromString(that, value, encodingOrOffset)\n }\n\n return fromObject(that, value)\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(null, value, encodingOrOffset, length)\n}\n\nif (Buffer.TYPED_ARRAY_SUPPORT) {\n Buffer.prototype.__proto__ = Uint8Array.prototype\n Buffer.__proto__ = Uint8Array\n if (typeof Symbol !== 'undefined' && Symbol.species &&\n Buffer[Symbol.species] === Buffer) {\n // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97\n // Object.defineProperty(Buffer, Symbol.species, {\n // value: null,\n // configurable: true\n // })\n }\n}\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be a number')\n } else if (size < 0) {\n throw new RangeError('\"size\" argument must not be negative')\n }\n}\n\nfunction alloc (that, size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(that, size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpretted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(that, size).fill(fill, encoding)\n : createBuffer(that, size).fill(fill)\n }\n return createBuffer(that, size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(null, size, fill, encoding)\n}\n\nfunction allocUnsafe (that, size) {\n assertSize(size)\n that = createBuffer(that, size < 0 ? 0 : checked(size) | 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) {\n for (var i = 0; i < size; ++i) {\n that[i] = 0\n }\n }\n return that\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(null, size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(null, size)\n}\n\nfunction fromString (that, string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('\"encoding\" must be a valid string encoding')\n }\n\n var length = byteLength(string, encoding) | 0\n that = createBuffer(that, length)\n\n var actual = that.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n that = that.slice(0, actual)\n }\n\n return that\n}\n\nfunction fromArrayLike (that, array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n that = createBuffer(that, length)\n for (var i = 0; i < length; i += 1) {\n that[i] = array[i] & 255\n }\n return that\n}\n\nfunction fromArrayBuffer (that, array, byteOffset, length) {\n array.byteLength // this throws if `array` is not a valid ArrayBuffer\n\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\\'offset\\' is out of bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\\'length\\' is out of bounds')\n }\n\n if (byteOffset === undefined && length === undefined) {\n array = new Uint8Array(array)\n } else if (length === undefined) {\n array = new Uint8Array(array, byteOffset)\n } else {\n array = new Uint8Array(array, byteOffset, length)\n }\n\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n // Return an augmented `Uint8Array` instance, for best performance\n that = array\n that.__proto__ = Buffer.prototype\n } else {\n // Fallback: Return an object instance of the Buffer class\n that = fromArrayLike(that, array)\n }\n return that\n}\n\nfunction fromObject (that, obj) {\n if (internalIsBuffer(obj)) {\n var len = checked(obj.length) | 0\n that = createBuffer(that, len)\n\n if (that.length === 0) {\n return that\n }\n\n obj.copy(that, 0, 0, len)\n return that\n }\n\n if (obj) {\n if ((typeof ArrayBuffer !== 'undefined' &&\n obj.buffer instanceof ArrayBuffer) || 'length' in obj) {\n if (typeof obj.length !== 'number' || isnan(obj.length)) {\n return createBuffer(that, 0)\n }\n return fromArrayLike(that, obj)\n }\n\n if (obj.type === 'Buffer' && isArray(obj.data)) {\n return fromArrayLike(that, obj.data)\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')\n}\n\nfunction checked (length) {\n // Note: cannot use `length < kMaxLength()` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= kMaxLength()) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + kMaxLength().toString(16) + ' bytes')\n }\n return length | 0\n}\n\nexport function SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\nBuffer.isBuffer = isBuffer;\nfunction internalIsBuffer (b) {\n return !!(b != null && b._isBuffer)\n}\n\nBuffer.compare = function compare (a, b) {\n if (!internalIsBuffer(a) || !internalIsBuffer(b)) {\n throw new TypeError('Arguments must be Buffers')\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (!internalIsBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n buf.copy(buffer, pos)\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (internalIsBuffer(string)) {\n return string.length\n }\n if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&\n (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n string = '' + string\n }\n\n var len = string.length\n if (len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n case undefined:\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) return utf8ToBytes(string).length // assume utf8\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coersion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect\n// Buffer instances.\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length | 0\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.equals = function equals (b) {\n if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = INSPECT_MAX_BYTES\n if (this.length > 0) {\n str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')\n if (this.length > max) str += ' ... '\n }\n return '<Buffer ' + str + '>'\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (!internalIsBuffer(target)) {\n throw new TypeError('Argument must be a Buffer')\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (isNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (internalIsBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (Buffer.TYPED_ARRAY_SUPPORT &&\n typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n // must be an even number of digits\n var strLen = string.length\n if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (isNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction latin1Write (buf, string, offset, length) {\n return asciiWrite(buf, string, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset | 0\n if (isFinite(length)) {\n length = length | 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n // legacy write(string, encoding, offset, length) - remove in v0.13\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n return asciiWrite(this, string, offset, length)\n\n case 'latin1':\n case 'binary':\n return latin1Write(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF) ? 4\n : (firstByte > 0xDF) ? 3\n : (firstByte > 0xBF) ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += toHex(buf[i])\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n for (var i = 0; i < bytes.length; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n newBuf = this.subarray(start, end)\n newBuf.__proto__ = Buffer.prototype\n } else {\n var sliceLen = end - start\n newBuf = new Buffer(sliceLen, undefined)\n for (var i = 0; i < sliceLen; ++i) {\n newBuf[i] = this[i + start]\n }\n }\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!internalIsBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n byteLength = byteLength | 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nfunction objectWriteUInt16 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {\n buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>\n (littleEndian ? i : 1 - i) * 8\n }\n}\n\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nfunction objectWriteUInt32 (buf, value, offset, littleEndian) {\n if (value < 0) value = 0xffffffff + value + 1\n for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {\n buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff\n }\n}\n\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) {\n var limit = Math.pow(2, 8 * byteLength - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n } else {\n objectWriteUInt16(this, value, offset, true)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n } else {\n objectWriteUInt16(this, value, offset, false)\n }\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n } else {\n objectWriteUInt32(this, value, offset, true)\n }\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset | 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n if (Buffer.TYPED_ARRAY_SUPPORT) {\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n } else {\n objectWriteUInt32(this, value, offset, false)\n }\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n var i\n\n if (this === target && start < targetStart && targetStart < end) {\n // descending copy from end\n for (i = len - 1; i >= 0; --i) {\n target[i + targetStart] = this[i + start]\n }\n } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {\n // ascending copy from start\n for (i = 0; i < len; ++i) {\n target[i + targetStart] = this[i + start]\n }\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, start + len),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if (code < 256) {\n val = code\n }\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n } else if (typeof val === 'number') {\n val = val & 255\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = internalIsBuffer(val)\n ? val\n : utf8ToBytes(new Buffer(val, encoding).toString())\n var len = bytes.length\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+\\/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = stringtrim(str).replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction stringtrim (str) {\n if (str.trim) return str.trim()\n return str.replace(/^\\s+|\\s+$/g, '')\n}\n\nfunction toHex (n) {\n if (n < 16) return '0' + n.toString(16)\n return n.toString(16)\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\nfunction isnan (val) {\n return val !== val // eslint-disable-line no-self-compare\n}\n\n\n// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nexport function isBuffer(obj) {\n return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))\n}\n\nfunction isFastBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))\n}\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n","import {\n joinKey, keySep, getHashCode,\n} from '../common';\nimport { getLastPartInKey } from '../templateApi/hierarchy';\n\nexport const TRANSACTIONS_FOLDER = `${keySep}.transactions`;\nexport const LOCK_FILENAME = 'lock';\nexport const LOCK_FILE_KEY = joinKey(\n TRANSACTIONS_FOLDER, LOCK_FILENAME,\n);\nexport const idSep = '$';\n\nconst isOfType = typ => trans => trans.transactionType === typ;\n\nexport const CREATE_RECORD_TRANSACTION = 'create';\nexport const UPDATE_RECORD_TRANSACTION = 'update';\nexport const DELETE_RECORD_TRANSACTION = 'delete';\nexport const BUILD_INDEX_TRANSACTION = 'build';\n\nexport const isUpdate = isOfType(UPDATE_RECORD_TRANSACTION);\nexport const isDelete = isOfType(DELETE_RECORD_TRANSACTION);\nexport const isCreate = isOfType(CREATE_RECORD_TRANSACTION);\nexport const isBuildIndex = isOfType(BUILD_INDEX_TRANSACTION);\n\nexport const keyToFolderName = nodeKey => getHashCode(nodeKey);\n\nexport const getTransactionId = (recordId, transactionType, uniqueId) => \n `${recordId}${idSep}${transactionType}${idSep}${uniqueId}`;\n\nexport const buildIndexFolder = '.BUILD-';\nexport const nodeKeyHashFromBuildFolder = folder => folder.replace(buildIndexFolder, '');\n\nexport const isBuildIndexFolder = key => getLastPartInKey(key).startsWith(buildIndexFolder);\n\nexport const IndexNodeKeyFolder = indexNodeKey => joinKey(\n TRANSACTIONS_FOLDER,\n buildIndexFolder + keyToFolderName(indexNodeKey),\n);\n\nexport const IndexNodeKeyBatchFolder = (indexNodeKey, count) => \n joinKey(IndexNodeKeyFolder(indexNodeKey), Math.floor(count / BUILDINDEX_BATCH_COUNT).toString());\n\nexport const IndexShardKeyFolder = (indexNodeKey, indexShardKey) => \n joinKey(IndexNodeKeyFolder(indexNodeKey), indexShardKey);\n\nexport const BUILDINDEX_BATCH_COUNT = 1000;\nexport const timeoutMilliseconds = 30 * 1000; // 30 secs\nexport const maxLockRetries = 1;\n","import { each, find } from 'lodash';\nimport { map, max, constant } from 'lodash/fp';\nimport {\n switchCase, defaultCase, joinKey,\n $, isNothing, isSomething,\n} from '../common';\nimport {\n isIndex, isRoot, isSingleRecord, isCollectionRecord,\n isRecord, isaggregateGroup,\n getFlattenedHierarchy,\n} from './hierarchy';\nimport { all } from '../types';\nimport { BadRequestError } from '../common/errors';\n\nexport const createNodeErrors = {\n indexCannotBeParent: 'Index template cannot be a parent',\n allNonRootNodesMustHaveParent: 'Only the root node may have no parent',\n indexParentMustBeRecordOrRoot: 'An index may only have a record or root as a parent',\n aggregateParentMustBeAnIndex: 'aggregateGroup parent must be an index',\n};\n\nconst pathRegxMaker = node => () => node.nodeKey().replace(/{id}/g, '[a-zA-Z0-9_-]+');\n\nconst nodeKeyMaker = node => () => switchCase(\n\n [n => isRecord(n) && !isSingleRecord(n),\n n => joinKey(\n node.parent().nodeKey(),\n node.collectionName,\n `${n.nodeId}-{id}`,\n )],\n\n [isRoot,\n constant('/')],\n\n [defaultCase,\n n => joinKey(node.parent().nodeKey(), n.name)],\n\n)(node);\n\n\nconst validate = parent => (node) => {\n if (isIndex(node)\n && isSomething(parent)\n && !isRoot(parent)\n && !isRecord(parent)) {\n throw new BadRequestError(createNodeErrors.indexParentMustBeRecordOrRoot);\n }\n\n if (isaggregateGroup(node)\n && isSomething(parent)\n && !isIndex(parent)) {\n throw new BadRequestError(createNodeErrors.aggregateParentMustBeAnIndex);\n }\n\n if (isNothing(parent) && !isRoot(node)) { throw new BadRequestError(createNodeErrors.allNonRootNodesMustHaveParent); }\n\n return node;\n};\n\nconst construct = parent => (node) => {\n node.nodeKey = nodeKeyMaker(node);\n node.pathRegx = pathRegxMaker(node);\n node.parent = constant(parent);\n node.isRoot = () => isNothing(parent)\n && node.name === 'root'\n && node.type === 'root';\n if (isCollectionRecord(node)) {\n node.collectionNodeKey = () => joinKey(\n parent.nodeKey(), node.collectionName,\n );\n node.collectionPathRegx = () => joinKey(\n parent.pathRegx(), node.collectionName,\n );\n }\n return node;\n};\n\nconst addToParent = (obj) => {\n const parent = obj.parent();\n if (isSomething(parent)) {\n if (isIndex(obj))\n // Q: why are indexes not children ?\n // A: because they cannot have children of their own.\n { \n parent.indexes.push(obj); \n } \n else if (isaggregateGroup(obj)) \n { \n parent.aggregateGroups.push(obj); \n } else { \n parent.children.push(obj); \n }\n\n if (isRecord(obj)) {\n const defaultIndex = find(\n parent.indexes,\n i => i.name === `${parent.name}_index`,\n );\n if (defaultIndex) {\n defaultIndex.allowedRecordNodeIds.push(obj.nodeId);\n }\n }\n }\n return obj;\n};\n\nexport const constructNode = (parent, obj) => $(obj, [\n construct(parent),\n validate(parent),\n addToParent,\n]);\n\nconst getNodeId = (parentNode) => {\n // this case is handled better elsewhere\n if (!parentNode) return null;\n const findRoot = n => (isRoot(n) ? n : findRoot(n.parent()));\n const root = findRoot(parentNode);\n\n return ($(root, [\n getFlattenedHierarchy,\n map(n => n.nodeId),\n max]) + 1);\n};\n\nexport const constructHierarchy = (node, parent) => {\n construct(parent)(node);\n if (node.indexes) {\n each(node.indexes,\n child => constructHierarchy(child, node));\n }\n if (node.aggregateGroups) {\n each(node.aggregateGroups,\n child => constructHierarchy(child, node));\n }\n if (node.children && node.children.length > 0) {\n each(node.children,\n child => constructHierarchy(child, node));\n }\n if (node.fields) {\n each(node.fields,\n f => each(f.typeOptions, (val, key) => {\n const def = all[f.type].optionDefinitions[key];\n if (!def) {\n // unknown typeOption\n delete f.typeOptions[key];\n } else {\n f.typeOptions[key] = def.parse(val);\n }\n }));\n }\n return node;\n};\n\n\nexport const getNewRootLevel = () => construct()({\n name: 'root',\n type: 'root',\n children: [],\n pathMaps: [],\n indexes: [],\n nodeId: 0,\n});\n\nconst _getNewRecordTemplate = (parent, name, createDefaultIndex, isSingle) => {\n const node = constructNode(parent, {\n name,\n type: 'record',\n fields: [],\n children: [],\n validationRules: [],\n nodeId: getNodeId(parent),\n indexes: [],\n allidsShardFactor: isRecord(parent) ? 1 : 64,\n collectionName: '',\n isSingle,\n });\n\n if (createDefaultIndex) {\n const defaultIndex = getNewIndexTemplate(parent);\n defaultIndex.name = `${name}_index`;\n defaultIndex.allowedRecordNodeIds.push(node.nodeId);\n }\n\n return node;\n};\n\nexport const getNewRecordTemplate = (parent, name = '', createDefaultIndex = true) => _getNewRecordTemplate(parent, name, createDefaultIndex, false);\n\nexport const getNewSingleRecordTemplate = parent => _getNewRecordTemplate(parent, '', false, true);\n\nexport const getNewIndexTemplate = (parent, type = 'ancestor') => constructNode(parent, {\n name: '',\n type: 'index',\n map: 'return {...record};',\n filter: '',\n indexType: type,\n getShardName: '',\n getSortKey: 'record.id',\n aggregateGroups: [],\n allowedRecordNodeIds: [],\n nodeId: getNodeId(parent),\n});\n\nexport const getNewAggregateGroupTemplate = index => constructNode(index, {\n name: '',\n type: 'aggregateGroup',\n groupBy: '',\n aggregates: [],\n condition: '',\n nodeId: getNodeId(index),\n});\n\nexport const getNewAggregateTemplate = (set) => {\n const aggregatedValue = {\n name: '',\n aggregatedValue: '',\n };\n set.aggregates.push(aggregatedValue);\n return aggregatedValue;\n};\n\nexport default {\n getNewRootLevel,\n getNewRecordTemplate,\n getNewIndexTemplate,\n createNodeErrors,\n constructHierarchy,\n getNewAggregateGroupTemplate,\n getNewAggregateTemplate,\n};\n","import {\n some, map, filter, keys, includes,\n countBy, flatten,\n} from 'lodash/fp';\nimport {\n isSomething, $,\n isNonEmptyString,\n isNothingOrEmpty,\n isNothing,\n} from '../common';\nimport { all, getDefaultOptions } from '../types';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\nimport { BadRequestError } from '../common/errors';\n\nexport const fieldErrors = {\n AddFieldValidationFailed: 'Add field validation: ',\n};\n\nexport const allowedTypes = () => keys(all);\n\nexport const getNewField = type => ({\n name: '', // how field is referenced internally\n type,\n typeOptions: getDefaultOptions(type),\n label: '', // how field is displayed\n getInitialValue: 'default', // function that gets value when initially created\n getUndefinedValue: 'default', // function that gets value when field undefined on record\n});\n\nconst fieldRules = allFields => [\n makerule('name', 'field name is not set',\n f => isNonEmptyString(f.name)),\n makerule('type', 'field type is not set',\n f => isNonEmptyString(f.type)),\n makerule('label', 'field label is not set',\n f => isNonEmptyString(f.label)),\n makerule('getInitialValue', 'getInitialValue function is not set',\n f => isNonEmptyString(f.getInitialValue)),\n makerule('getUndefinedValue', 'getUndefinedValue function is not set',\n f => isNonEmptyString(f.getUndefinedValue)),\n makerule('name', 'field name is duplicated',\n f => isNothingOrEmpty(f.name)\n || countBy('name')(allFields)[f.name] === 1),\n makerule('type', 'type is unknown',\n f => isNothingOrEmpty(f.type)\n || some(t => f.type === t)(allowedTypes())),\n];\n\nconst typeOptionsRules = (field) => {\n const type = all[field.type];\n if (isNothing(type)) return [];\n\n const def = optName => type.optionDefinitions[optName];\n\n return $(field.typeOptions, [\n keys,\n filter(o => isSomething(def(o))\n && isSomething(def(o).isValid)),\n map(o => makerule(\n `typeOptions.${o}`,\n `${def(o).requirementDescription}`,\n field => def(o).isValid(field.typeOptions[o]),\n )),\n ]);\n};\n\nexport const validateField = allFields => (field) => {\n const everySingleField = includes(field)(allFields) ? allFields : [...allFields, field];\n return applyRuleSet([...fieldRules(everySingleField), ...typeOptionsRules(field)])(field);\n};\n\nexport const validateAllFields = recordNode => $(recordNode.fields, [\n map(validateField(recordNode.fields)),\n flatten,\n]);\n\nexport const addField = (recordTemplate, field) => {\n if (isNothingOrEmpty(field.label)) {\n field.label = field.name;\n }\n const validationMessages = validateField([...recordTemplate.fields, field])(field);\n if (validationMessages.length > 0) {\n const errors = map(m => m.error)(validationMessages);\n throw new BadRequestError(`${fieldErrors.AddFieldValidationFailed} ${errors.join(', ')}`);\n }\n recordTemplate.fields.push(field);\n};\n","import { isNumber, isBoolean, defaultCase } from 'lodash/fp';\nimport { switchCase } from '../common';\n\nexport const getNewRecordValidationRule = (invalidFields,\n messageWhenInvalid,\n expressionWhenValid) => ({\n invalidFields, messageWhenInvalid, expressionWhenValid,\n});\n\nconst getStaticValue = switchCase(\n [isNumber, v => v.toString()],\n [isBoolean, v => v.toString()],\n [defaultCase, v => `'${v}'`],\n);\n\nexport const commonRecordValidationRules = ({\n\n fieldNotEmpty: fieldName => getNewRecordValidationRule(\n [fieldName],\n `${fieldName} is empty`,\n `!_.isEmpty(record['${fieldName}'])`,\n ),\n\n fieldBetween: (fieldName, min, max) => getNewRecordValidationRule(\n [fieldName],\n `${fieldName} must be between ${min.toString()} and ${max.toString()}`,\n `record['${fieldName}'] >= ${getStaticValue(min)} && record['${fieldName}'] <= ${getStaticValue(max)} `,\n ),\n\n fieldGreaterThan: (fieldName, min, max) => getNewRecordValidationRule(\n [fieldName],\n `${fieldName} must be greater than ${min.toString()} and ${max.toString()}`,\n `record['${fieldName}'] >= ${getStaticValue(min)} `,\n ),\n});\n\nexport const addRecordValidationRule = recordNode => rule => recordNode.validationRules.push(rule);\n","\nexport const createTrigger = () => ({\n actionName: '',\n eventName: '',\n // function, has access to event context,\n // returns object that is used as parameter to action\n // only used if triggered by event\n optionsCreator: '',\n // action runs if true,\n // has access to event context\n condition: '',\n});\n\nexport const createAction = () => ({\n name: '',\n behaviourSource: '',\n // name of function in actionSource\n behaviourName: '',\n // parameter passed into behaviour.\n // any other parms passed at runtime e.g.\n // by trigger, or manually, will be merged into this\n initialOptions: {},\n});\n","import { flatten, map, isEmpty } from 'lodash/fp';\nimport { compileCode } from '@nx-js/compiler-util';\nimport {\n isNonEmptyString, \n executesWithoutException, $, \n} from '../common';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\n\nconst aggregateRules = [\n makerule('name', 'choose a name for the aggregate',\n a => isNonEmptyString(a.name)),\n makerule('aggregatedValue', 'aggregatedValue does not compile',\n a => isEmpty(a.aggregatedValue)\n || executesWithoutException(\n () => compileCode(a.aggregatedValue),\n )),\n];\n\nexport const validateAggregate = aggregate => applyRuleSet(aggregateRules)(aggregate);\n\nexport const validateAllAggregates = all => $(all, [\n map(validateAggregate),\n flatten,\n]);\n","import {\n filter, union, constant,\n map, flatten, every, uniqBy,\n some, includes, isEmpty, has\n} from 'lodash/fp';\nimport { compileExpression, compileCode } from '@nx-js/compiler-util';\nimport {\n $, isSomething, switchCase,\n anyTrue, isNonEmptyArray, executesWithoutException,\n isNonEmptyString, defaultCase,\n} from '../common';\nimport {\n isRecord, isRoot, isaggregateGroup,\n isIndex, getFlattenedHierarchy,\n} from './hierarchy';\nimport { eventsList } from '../common/events';\nimport { validateAllFields } from './fields';\nimport {\n applyRuleSet, makerule, stringNotEmpty,\n validationError,\n} from '../common/validationCommon';\nimport { indexRuleSet } from './indexes';\nimport { validateAllAggregates } from './validateAggregate';\n\nexport const ruleSet = (...sets) => constant(flatten([...sets]));\n\nconst commonRules = [\n makerule('name', 'node name is not set',\n node => stringNotEmpty(node.name)),\n makerule('type', 'node type not recognised',\n anyTrue(isRecord, isRoot, isIndex, isaggregateGroup)),\n];\n\nconst recordRules = [\n makerule('fields', 'no fields have been added to the record',\n node => isNonEmptyArray(node.fields)),\n makerule('validationRules', \"validation rule is missing a 'messageWhenValid' member\",\n node => every(r => has('messageWhenInvalid')(r))(node.validationRules)),\n makerule('validationRules', \"validation rule is missing a 'expressionWhenValid' member\",\n node => every(r => has('expressionWhenValid')(r))(node.validationRules)),\n];\n\n\nconst aggregateGroupRules = [\n makerule('condition', 'condition does not compile',\n a => isEmpty(a.condition)\n || executesWithoutException(\n () => compileExpression(a.condition),\n )),\n];\n\nconst getRuleSet = node => switchCase(\n\n [isRecord, ruleSet(\n commonRules,\n recordRules,\n )],\n\n [isIndex, ruleSet(\n commonRules,\n indexRuleSet,\n )],\n\n [isaggregateGroup, ruleSet(\n commonRules,\n aggregateGroupRules,\n )],\n\n [defaultCase, ruleSet(commonRules, [])],\n)(node);\n\nexport const validateNode = node => applyRuleSet(getRuleSet(node))(node);\n\nexport const validateAll = (appHierarchy) => {\n const flattened = getFlattenedHierarchy(\n appHierarchy,\n );\n\n const duplicateNameRule = makerule(\n 'name', 'node names must be unique under shared parent',\n n => filter(f => f.parent() === n.parent()\n && f.name === n.name)(flattened).length === 1,\n );\n\n const duplicateNodeKeyErrors = $(flattened, [\n map(n => applyRuleSet([duplicateNameRule])(n)),\n filter(isSomething),\n flatten,\n ]);\n\n const fieldErrors = $(flattened, [\n filter(isRecord),\n map(validateAllFields),\n flatten,\n ]);\n\n const aggregateErrors = $(flattened, [\n filter(isaggregateGroup),\n map(s => validateAllAggregates(\n s.aggregates,\n )),\n flatten,\n ]);\n\n return $(flattened, [\n map(validateNode),\n flatten,\n union(duplicateNodeKeyErrors),\n union(fieldErrors),\n union(aggregateErrors),\n ]);\n};\n\nconst actionRules = [\n makerule('name', 'action must have a name',\n a => isNonEmptyString(a.name)),\n makerule('behaviourName', 'must supply a behaviour name to the action',\n a => isNonEmptyString(a.behaviourName)),\n makerule('behaviourSource', 'must supply a behaviour source for the action',\n a => isNonEmptyString(a.behaviourSource)),\n];\n\nconst duplicateActionRule = makerule('', 'action name must be unique', () => {});\n\nconst validateAction = action => applyRuleSet(actionRules)(action);\n\n\nexport const validateActions = (allActions) => {\n const duplicateActions = $(allActions, [\n filter(a => filter(a2 => a2.name === a.name)(allActions).length > 1),\n map(a => validationError(duplicateActionRule, a)),\n ]);\n\n const errors = $(allActions, [\n map(validateAction),\n flatten,\n union(duplicateActions),\n uniqBy('name'),\n ]);\n\n return errors;\n};\n\nconst triggerRules = actions => ([\n makerule('actionName', 'must specify an action',\n t => isNonEmptyString(t.actionName)),\n makerule('eventName', 'must specify and event',\n t => isNonEmptyString(t.eventName)),\n makerule('actionName', 'specified action not supplied',\n t => !t.actionName\n || some(a => a.name === t.actionName)(actions)),\n makerule('eventName', 'invalid Event Name',\n t => !t.eventName\n || includes(t.eventName)(eventsList)),\n makerule('optionsCreator', 'Options Creator does not compile - check your expression',\n (t) => {\n if (!t.optionsCreator) return true;\n try {\n compileCode(t.optionsCreator);\n return true;\n } catch (_) { return false; }\n }),\n makerule('condition', 'Trigger condition does not compile - check your expression',\n (t) => {\n if (!t.condition) return true;\n try {\n compileExpression(t.condition);\n return true;\n } catch (_) { return false; }\n }),\n]);\n\nexport const validateTrigger = (trigger, allActions) => {\n const errors = applyRuleSet(triggerRules(allActions))(trigger);\n\n return errors;\n};\n\nexport const validateTriggers = (triggers, allActions) => $(triggers, [\n map(t => validateTrigger(t, allActions)),\n flatten,\n]);\n","import { appDefinitionFile } from '../common';\nimport { constructHierarchy } from './createNodes';\n\nexport const getApplicationDefinition = datastore => async () => {\n const exists = await datastore.exists(appDefinitionFile);\n\n if (!exists) throw new Error('Application definition does not exist');\n\n const appDefinition = await datastore.loadJson(appDefinitionFile);\n appDefinition.hierarchy = constructHierarchy(\n appDefinition.hierarchy,\n );\n return appDefinition;\n};\n","import { join } from 'lodash';\nimport { permission } from '../authApi/permissions';\nimport { appDefinitionFile } from '../common';\nimport { validateAll } from './validate';\nimport { apiWrapper } from '../common/apiWrapper';\nimport { events } from '../common/events';\n\nexport const saveApplicationHierarchy = app => async hierarchy => apiWrapper(\n app,\n events.templateApi.saveApplicationHierarchy,\n permission.writeTemplates.isAuthorized,\n { hierarchy },\n _saveApplicationHierarchy, app.datastore, hierarchy,\n);\n\n\nexport const _saveApplicationHierarchy = async (datastore, hierarchy) => {\n const validationErrors = await validateAll(hierarchy);\n if (validationErrors.length > 0) {\n throw new Error(`Hierarchy is invalid: ${join(\n validationErrors.map(e => `${e.item.nodeKey ? e.item.nodeKey() : ''} : ${e.error}`),\n ',',\n )}`);\n }\n\n if (await datastore.exists(appDefinitionFile)) {\n const appDefinition = await datastore.loadJson(appDefinitionFile);\n appDefinition.hierarchy = hierarchy;\n await datastore.updateJson(appDefinitionFile, appDefinition);\n } else {\n await datastore.createFolder('/.config');\n const appDefinition = { actions: [], triggers: [], hierarchy };\n await datastore.createJson(appDefinitionFile, appDefinition);\n }\n};\n","import { join } from 'lodash';\nimport { map } from 'lodash/fp';\nimport { appDefinitionFile } from '../common';\nimport { validateTriggers, validateActions } from './validate';\nimport { apiWrapper } from '../common/apiWrapper';\nimport { events } from '../common/events';\nimport { permission } from '../authApi/permissions';\nimport { BadRequestError } from '../common/errors';\n\nexport const saveActionsAndTriggers = app => async (actions, triggers) => apiWrapper(\n app,\n events.templateApi.saveActionsAndTriggers,\n permission.writeTemplates.isAuthorized,\n { actions, triggers },\n _saveActionsAndTriggers, app.datastore, actions, triggers,\n);\n\nexport const _saveActionsAndTriggers = async (datastore, actions, triggers) => {\n if (await datastore.exists(appDefinitionFile)) {\n const appDefinition = await datastore.loadJson(appDefinitionFile);\n appDefinition.actions = actions;\n appDefinition.triggers = triggers;\n\n const actionValidErrs = map(e => e.error)(validateActions(actions));\n\n if (actionValidErrs.length > 0) {\n throw new BadRequestError(`Actions are invalid: ${join(actionValidErrs, ', ')}`);\n }\n\n const triggerValidErrs = map(e => e.error)(validateTriggers(triggers, actions));\n\n if (triggerValidErrs.length > 0) {\n throw new BadRequestError(`Triggers are invalid: ${join(triggerValidErrs, ', ')}`);\n }\n\n await datastore.updateJson(appDefinitionFile, appDefinition);\n } else {\n throw new BadRequestError('Cannot save actions: Application definition does not exist');\n }\n};\n","import {\n getNewRootLevel,\n getNewRecordTemplate, getNewIndexTemplate,\n createNodeErrors, constructHierarchy,\n getNewAggregateGroupTemplate, getNewSingleRecordTemplate,\n getNewAggregateTemplate, constructNode,\n}\n from './createNodes';\nimport {\n getNewField, validateField,\n addField, fieldErrors,\n} from './fields';\nimport {\n getNewRecordValidationRule, commonRecordValidationRules,\n addRecordValidationRule,\n} from './recordValidationRules';\nimport { createAction, createTrigger } from './createActions';\nimport {\n validateTriggers, validateTrigger, validateNode,\n validateActions, validateAll,\n} from './validate';\nimport { getApplicationDefinition } from './getApplicationDefinition';\nimport { saveApplicationHierarchy } from './saveApplicationHierarchy';\nimport { saveActionsAndTriggers } from './saveActionsAndTriggers';\nimport { all } from '../types';\nimport { getBehaviourSources } from \"./getBehaviourSources\";\n\nconst api = app => ({\n\n getApplicationDefinition: getApplicationDefinition(app.datastore),\n saveApplicationHierarchy: saveApplicationHierarchy(app),\n saveActionsAndTriggers: saveActionsAndTriggers(app),\n getBehaviourSources: () => getBehaviourSources(app.datastore),\n getNewRootLevel,\n constructNode,\n getNewIndexTemplate,\n getNewRecordTemplate,\n getNewField,\n validateField,\n addField,\n fieldErrors,\n getNewRecordValidationRule,\n commonRecordValidationRules,\n addRecordValidationRule,\n createAction,\n createTrigger,\n validateActions,\n validateTrigger,\n getNewAggregateGroupTemplate,\n getNewAggregateTemplate,\n constructHierarchy,\n getNewSingleRecordTemplate,\n allTypes: all,\n validateNode,\n validateAll,\n validateTriggers,\n});\n\n\nexport const getTemplateApi = app => api(app);\n\nexport const errors = createNodeErrors;\n\nexport default getTemplateApi;\n","\nexport const getBehaviourSources = async (datastore) => {\n await datastore.loadFile('/.config/behaviourSources.js');\n};\n","import { map } from 'lodash/fp';\nimport {\n USERS_LIST_FILE,\n stripUserOfSensitiveStuff,\n} from './authCommon';\nimport { $, apiWrapper, events } from '../common';\nimport { permission } from './permissions';\n\nexport const getUsers = app => async () => apiWrapper(\n app,\n events.authApi.getUsers,\n permission.listUsers.isAuthorized,\n {},\n _getUsers, app,\n);\n\nexport const _getUsers = async app => $(await app.datastore.loadJson(USERS_LIST_FILE), [\n map(stripUserOfSensitiveStuff),\n]);\n","import { ACCESS_LEVELS_FILE } from './authCommon';\nimport { apiWrapper, events } from '../common';\nimport { permission } from './permissions';\n\nexport const loadAccessLevels = app => async () => apiWrapper(\n app,\n events.authApi.loadAccessLevels,\n permission.listAccessLevels.isAuthorized,\n {},\n _loadAccessLevels, app,\n);\n\nexport const _loadAccessLevels = async app => await app.datastore.loadJson(ACCESS_LEVELS_FILE);\n","import {\n find, filter, some,\n map, flatten,\n} from 'lodash/fp';\nimport { generate } from 'shortid';\nimport { _getUsers } from './getUsers';\nimport {\n getUserByName, userAuthFile,\n parseTemporaryCode,\n} from './authCommon';\nimport { _loadAccessLevels } from './loadAccessLevels';\nimport {\n isNothingOrEmpty, $, apiWrapper, events,\n} from '../common';\nimport { alwaysAuthorized } from './permissions';\n\nconst dummyHash = '$argon2i$v=19$m=4096,t=3,p=1$UZRo409UYBGjHJS3CV6Uxw$rU84qUqPeORFzKYmYY0ceBLDaPO+JWSH4PfNiKXfIKk';\n\nexport const authenticate = app => async (username, password) => apiWrapper(\n app,\n events.authApi.authenticate,\n alwaysAuthorized,\n { username, password },\n _authenticate, app, username, password,\n);\n\nexport const _authenticate = async (app, username, password) => {\n if (isNothingOrEmpty(username) || isNothingOrEmpty(password)) { return null; }\n\n const allUsers = await _getUsers(app);\n let user = getUserByName(\n allUsers,\n username,\n );\n\n const notAUser = 'not-a-user';\n // continue with non-user - so time to verify remains consistent\n // with verification of a valid user\n if (!user || !user.enabled) { user = notAUser; }\n\n let userAuth;\n try {\n userAuth = await app.datastore.loadJson(\n userAuthFile(username),\n );\n } catch (_) {\n userAuth = { accessLevels: [], passwordHash: dummyHash };\n }\n\n const permissions = await buildUserPermissions(app, user.accessLevels);\n\n const verified = await app.crypto.verify(\n userAuth.passwordHash,\n password,\n );\n\n if (user === notAUser) { return null; }\n\n return verified\n ? {\n ...user, permissions, temp: false, isUser: true,\n }\n : null;\n};\n\nexport const authenticateTemporaryAccess = app => async (tempAccessCode) => {\n if (isNothingOrEmpty(tempAccessCode)) { return null; }\n\n const temp = parseTemporaryCode(tempAccessCode);\n let user = $(await _getUsers(app), [\n find(u => u.temporaryAccessId === temp.id),\n ]);\n\n const notAUser = 'not-a-user';\n if (!user || !user.enabled) { user = notAUser; }\n\n let userAuth;\n try {\n userAuth = await app.datastore.loadJson(\n userAuthFile(user.name),\n );\n } catch (e) {\n userAuth = {\n temporaryAccessHash: dummyHash,\n temporaryAccessExpiryEpoch: (await app.getEpochTime() + 10000),\n };\n }\n\n if (userAuth.temporaryAccessExpiryEpoch < await app.getEpochTime()) { user = notAUser; }\n\n const tempCode = !temp.code ? generate() : temp.code;\n const verified = await app.crypto.verify(\n userAuth.temporaryAccessHash,\n tempCode,\n );\n\n if (user === notAUser) { return null; }\n\n return verified\n ? {\n ...user,\n permissions: [],\n temp: true,\n isUser: true,\n }\n : null;\n};\n\nexport const buildUserPermissions = async (app, userAccessLevels) => {\n const allAccessLevels = await _loadAccessLevels(app);\n\n return $(allAccessLevels.levels, [\n filter(l => some(ua => l.name === ua)(userAccessLevels)),\n map(l => l.permissions),\n flatten,\n ]);\n};\n","import { generate } from 'shortid';\nimport {\n tempCodeExpiryLength, USERS_LOCK_FILE,\n USERS_LIST_FILE, userAuthFile,\n getUserByName,\n} from './authCommon';\nimport {\n getLock, isNolock,\n releaseLock,\n} from '../common/lock';\nimport { apiWrapper, events } from '../common';\nimport { alwaysAuthorized } from './permissions';\n\nexport const createTemporaryAccess = app => async userName => apiWrapper(\n app,\n events.authApi.createTemporaryAccess,\n alwaysAuthorized,\n { userName },\n _createTemporaryAccess, app, userName,\n);\n\nexport const _createTemporaryAccess = async (app, userName) => {\n const tempCode = await getTemporaryCode(app);\n\n const lock = await getLock(\n app, USERS_LOCK_FILE, 1000, 2,\n );\n\n if (isNolock(lock)) { throw new Error('Unable to create temporary access, could not get lock - try again'); }\n\n try {\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n\n const user = getUserByName(users, userName);\n user.temporaryAccessId = tempCode.temporaryAccessId;\n\n await app.datastore.updateJson(\n USERS_LIST_FILE,\n users,\n );\n } finally {\n await releaseLock(app, lock);\n }\n\n const userAuth = await app.datastore.loadJson(\n userAuthFile(userName),\n );\n userAuth.temporaryAccessHash = tempCode.temporaryAccessHash;\n\n userAuth.temporaryAccessExpiryEpoch = tempCode.temporaryAccessExpiryEpoch;\n\n await app.datastore.updateJson(\n userAuthFile(userName),\n userAuth,\n );\n\n return tempCode.tempCode;\n};\n\nexport const getTemporaryCode = async (app) => {\n const tempCode = generate()\n + generate()\n + generate()\n + generate();\n\n const tempId = generate();\n\n return {\n temporaryAccessHash: await app.crypto.hash(\n tempCode,\n ),\n temporaryAccessExpiryEpoch:\n (await app.getEpochTime()) + tempCodeExpiryLength,\n tempCode: `tmp:${tempId}:${tempCode}`,\n temporaryAccessId: tempId,\n };\n};\n\nexport const looksLikeTemporaryCode = code => code.startsWith('tmp:');\n","import {\n map, uniqWith,\n flatten, filter,\n} from 'lodash/fp';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\nimport {\n $, insensitiveEquals, apiWrapper, events,\n isNonEmptyString, all,\n} from '../common';\nimport { alwaysAuthorized } from './permissions';\n\nconst userRules = allUsers => [\n makerule('name', 'username must be set',\n u => isNonEmptyString(u.name)),\n makerule('accessLevels', 'user must have at least one access level',\n u => u.accessLevels.length > 0),\n makerule('name', 'username must be unique',\n u => filter(u2 => insensitiveEquals(u2.name, u.name))(allUsers).length === 1),\n makerule('accessLevels', 'access levels must only contain stings',\n u => all(isNonEmptyString)(u.accessLevels)),\n];\n\nexport const validateUser = () => (allusers, user) => applyRuleSet(userRules(allusers))(user);\n\nexport const validateUsers = app => allUsers => apiWrapper(\n app,\n events.authApi.validateUsers,\n alwaysAuthorized,\n { allUsers },\n _validateUsers, app, allUsers,\n);\n\nexport const _validateUsers = (app, allUsers) => $(allUsers, [\n map(l => validateUser(app)(allUsers, l)),\n flatten,\n uniqWith((x, y) => x.field === y.field\n && x.item === y.item\n && x.error === y.error),\n]);\n","import { apiWrapperSync, events } from '../common';\nimport { permission } from './permissions';\n\nexport const getNewUser = app => () => apiWrapperSync(\n app,\n events.authApi.getNewUser,\n permission.createUser.isAuthorized,\n {},\n _getNewUser, app,\n);\n\nexport const _getNewUser = () => ({\n name: '',\n accessLevels: [],\n enabled: true,\n temporaryAccessId: '',\n});\n\nexport const getNewUserAuth = app => () => apiWrapperSync(\n app,\n events.authApi.getNewUserAuth,\n permission.createUser.isAuthorized,\n {},\n _getNewUserAuth, app,\n);\n\nexport const _getNewUserAuth = () => ({\n passwordHash: '',\n temporaryAccessHash: '',\n temporaryAccessExpiryEpoch: 0,\n});\n","import { find } from 'lodash/fp';\nimport { userAuthFile, parseTemporaryCode } from './authCommon';\nimport {\n isSomething, $, apiWrapper, apiWrapperSync, events,\n} from '../common';\nimport { _getUsers } from './getUsers';\nimport { alwaysAuthorized } from './permissions';\n\nexport const isValidPassword = app => password => apiWrapperSync(\n app,\n events.authApi.isValidPassword,\n alwaysAuthorized,\n { password },\n _isValidPassword, app, password,\n);\n\nexport const _isValidPassword = (app, password) => scorePassword(password).score > 30;\n\nexport const changeMyPassword = app => async (currentPw, newpassword) => apiWrapper(\n app,\n events.authApi.changeMyPassword,\n alwaysAuthorized,\n { currentPw, newpassword },\n _changeMyPassword, app, currentPw, newpassword,\n);\n\nexport const _changeMyPassword = async (app, currentPw, newpassword) => {\n const existingAuth = await app.datastore.loadJson(\n userAuthFile(app.user.name),\n );\n\n if (isSomething(existingAuth.passwordHash)) {\n const verified = await app.crypto.verify(\n existingAuth.passwordHash,\n currentPw,\n );\n\n if (verified) {\n await await doSet(\n app, existingAuth,\n app.user.name, newpassword,\n );\n return true;\n }\n }\n\n return false;\n};\n\nexport const setPasswordFromTemporaryCode = app => async (tempCode, newpassword) => apiWrapper(\n app,\n events.authApi.setPasswordFromTemporaryCode,\n alwaysAuthorized,\n { tempCode, newpassword },\n _setPasswordFromTemporaryCode, app, tempCode, newpassword,\n);\n\n\nexport const _setPasswordFromTemporaryCode = async (app, tempCode, newpassword) => {\n const currentTime = await app.getEpochTime();\n\n const temp = parseTemporaryCode(tempCode);\n\n const user = $(await _getUsers(app), [\n find(u => u.temporaryAccessId === temp.id),\n ]);\n\n if (!user) { return false; }\n\n const existingAuth = await app.datastore.loadJson(\n userAuthFile(user.name),\n );\n\n if (isSomething(existingAuth.temporaryAccessHash)\n && existingAuth.temporaryAccessExpiryEpoch > currentTime) {\n const verified = await app.crypto.verify(\n existingAuth.temporaryAccessHash,\n temp.code,\n );\n\n if (verified) {\n await doSet(\n app, existingAuth,\n user.name, newpassword,\n );\n return true;\n }\n }\n\n return false;\n};\n\nconst doSet = async (app, auth, username, newpassword) => {\n auth.temporaryAccessHash = '';\n auth.temporaryAccessExpiryEpoch = 0;\n auth.passwordHash = await app.crypto.hash(\n newpassword,\n );\n await app.datastore.updateJson(\n userAuthFile(username),\n auth,\n );\n};\n\nexport const scorePassword = app => password => apiWrapperSync(\n app,\n events.authApi.scorePassword,\n alwaysAuthorized,\n { password },\n _scorePassword, password,\n);\n\nexport const _scorePassword = (password) => {\n // from https://stackoverflow.com/questions/948172/password-strength-meter\n // thank you https://stackoverflow.com/users/46617/tm-lv\n\n let score = 0;\n if (!password) { return score; }\n\n // award every unique letter until 5 repetitions\n const letters = new Object();\n for (let i = 0; i < password.length; i++) {\n letters[password[i]] = (letters[password[i]] || 0) + 1;\n score += 5.0 / letters[password[i]];\n }\n\n // bonus points for mixing it up\n const variations = {\n digits: /\\d/.test(password),\n lower: /[a-z]/.test(password),\n upper: /[A-Z]/.test(password),\n nonWords: /\\W/.test(password),\n };\n\n let variationCount = 0;\n for (const check in variations) {\n variationCount += (variations[check] == true) ? 1 : 0;\n }\n score += (variationCount - 1) * 10;\n\n const strengthText = score > 80\n ? 'strong'\n : score > 60\n ? 'good'\n : score >= 30\n ? 'weak'\n : 'very weak';\n\n return {\n score: parseInt(score),\n strengthText,\n };\n};\n","import { join, some } from 'lodash/fp';\nimport { validateUser } from './validateUser';\nimport { getNewUserAuth } from './getNewUser';\nimport {\n getLock, isNolock, releaseLock, apiWrapper, events,\n insensitiveEquals, isNonEmptyString,\n} from '../common';\nimport {\n USERS_LOCK_FILE, stripUserOfSensitiveStuff,\n USERS_LIST_FILE, userAuthFile,\n} from './authCommon';\nimport { getTemporaryCode } from './createTemporaryAccess';\nimport { isValidPassword } from './setPassword';\nimport { permission } from './permissions';\nimport { BadRequestError } from '../common/errors';\n\nexport const createUser = app => async (user, password = null) => apiWrapper(\n app,\n events.authApi.createUser,\n permission.createUser.isAuthorized,\n { user, password },\n _createUser, app, user, password,\n);\n\nexport const _createUser = async (app, user, password = null) => {\n const lock = await getLock(\n app, USERS_LOCK_FILE, 1000, 2,\n );\n\n if (isNolock(lock)) { throw new Error('Unable to create user, could not get lock - try again'); }\n\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n\n const userErrors = validateUser(app)([...users, user], user);\n if (userErrors.length > 0) { throw new BadRequestError(`User is invalid. ${join('; ')(userErrors)}`); }\n\n const { auth, tempCode, temporaryAccessId } = await getAccess(\n app, password,\n );\n user.tempCode = tempCode;\n user.temporaryAccessId = temporaryAccessId;\n\n if (some(u => insensitiveEquals(u.name, user.name))(users)) { \n throw new BadRequestError('User already exists'); \n }\n\n users.push(\n stripUserOfSensitiveStuff(user),\n );\n\n await app.datastore.updateJson(\n USERS_LIST_FILE,\n users,\n );\n\n try {\n await app.datastore.createJson(\n userAuthFile(user.name),\n auth,\n );\n } catch (_) {\n await app.datastore.updateJson(\n userAuthFile(user.name),\n auth,\n );\n }\n\n await releaseLock(app, lock);\n\n return user;\n};\n\nconst getAccess = async (app, password) => {\n const auth = getNewUserAuth(app)();\n\n if (isNonEmptyString(password)) {\n if (isValidPassword(password)) {\n auth.passwordHash = await app.crypto.hash(password);\n auth.temporaryAccessHash = '';\n auth.temporaryAccessId = '';\n auth.temporaryAccessExpiryEpoch = 0;\n return { auth };\n }\n throw new BadRequestError('Password does not meet requirements');\n } else {\n const tempAccess = await getTemporaryCode(app);\n auth.temporaryAccessHash = tempAccess.temporaryAccessHash;\n auth.temporaryAccessExpiryEpoch = tempAccess.temporaryAccessExpiryEpoch;\n auth.passwordHash = '';\n return ({\n auth,\n tempCode: tempAccess.tempCode,\n temporaryAccessId: tempAccess.temporaryAccessId,\n });\n }\n};\n","import {\n getLock,\n isNolock, releaseLock,\n} from '../common/lock';\nimport { USERS_LOCK_FILE, USERS_LIST_FILE, getUserByName } from './authCommon';\nimport { apiWrapper, events } from '../common';\nimport { permission } from './permissions';\nimport { NotFoundError } from '../common/errors';\n\nexport const enableUser = app => async username => apiWrapper(\n app,\n events.authApi.enableUser,\n permission.enableDisableUser.isAuthorized,\n { username },\n _enableUser, app, username,\n);\n\nexport const disableUser = app => async username => apiWrapper(\n app,\n events.authApi.disableUser,\n permission.enableDisableUser.isAuthorized,\n { username },\n _disableUser, app, username,\n);\n\nexport const _enableUser = async (app, username) => await toggleUser(app, username, true);\n\nexport const _disableUser = async (app, username) => await toggleUser(app, username, false);\n\nconst toggleUser = async (app, username, enabled) => {\n const lock = await getLock(app, USERS_LOCK_FILE, 1000, 1, 0);\n\n const actionName = enabled ? 'enable' : 'disable';\n\n if (isNolock(lock)) { throw new Error(`Could not ${actionName} user - cannot get lock`); }\n\n try {\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n const user = getUserByName(users, username);\n if (!user) { throw new NotFoundError(`Could not find user to ${actionName}`); }\n\n if (user.enabled === !enabled) {\n user.enabled = enabled;\n await app.datastore.updateJson(USERS_LIST_FILE, users);\n }\n } finally {\n releaseLock(app, lock);\n }\n};\n","import {\n values, includes, map, concat, isEmpty, uniqWith, some,\n flatten, filter,\n} from 'lodash/fp';\nimport { applyRuleSet, makerule } from '../common/validationCommon';\nimport { permissionTypes } from './authCommon';\nimport {\n $, isSomething, insensitiveEquals,\n isNonEmptyString, apiWrapperSync, events,\n} from '../common';\nimport { getNode } from '../templateApi/hierarchy';\nimport { alwaysAuthorized } from './permissions';\n\nconst isAllowedType = t => $(permissionTypes, [\n values,\n includes(t),\n]);\n\nconst isRecordOrIndexType = t => some(p => p === t)([\n permissionTypes.CREATE_RECORD,\n permissionTypes.UPDATE_RECORD,\n permissionTypes.DELETE_RECORD,\n permissionTypes.READ_RECORD,\n permissionTypes.READ_INDEX,\n permissionTypes.EXECUTE_ACTION,\n]);\n\n\nconst permissionRules = app => ([\n makerule('type', 'type must be one of allowed types',\n p => isAllowedType(p.type)),\n makerule('nodeKey', 'record and index permissions must include a valid nodeKey',\n p => (!isRecordOrIndexType(p.type))\n || isSomething(getNode(app.hierarchy, p.nodeKey))),\n]);\n\nconst applyPermissionRules = app => applyRuleSet(permissionRules(app));\n\nconst accessLevelRules = allLevels => ([\n makerule('name', 'name must be set',\n l => isNonEmptyString(l.name)),\n makerule('name', 'access level names must be unique',\n l => isEmpty(l.name)\n || filter(a => insensitiveEquals(l.name, a.name))(allLevels).length === 1),\n]);\n\nconst applyLevelRules = allLevels => applyRuleSet(accessLevelRules(allLevels));\n\nexport const validateAccessLevel = app => (allLevels, level) => {\n const errs = $(level.permissions, [\n map(applyPermissionRules(app)),\n flatten,\n concat(\n applyLevelRules(allLevels)(level),\n ),\n ]);\n\n return errs;\n};\n\nexport const validateAccessLevels = app => allLevels => apiWrapperSync(\n app,\n events.authApi.validateAccessLevels,\n alwaysAuthorized,\n { allLevels },\n _validateAccessLevels, app, allLevels,\n);\n\nexport const _validateAccessLevels = (app, allLevels) => $(allLevels, [\n map(l => validateAccessLevel(app)(allLevels, l)),\n flatten,\n uniqWith((x, y) => x.field === y.field\n && x.item === y.item\n && x.error === y.error),\n]);\n","import { join, map } from 'lodash/fp';\nimport {\n getLock, releaseLock, $,\n isNolock, apiWrapper, events,\n} from '../common';\nimport {\n ACCESS_LEVELS_LOCK_FILE,\n ACCESS_LEVELS_FILE,\n} from './authCommon';\nimport { validateAccessLevels } from './validateAccessLevels';\nimport { permission } from './permissions';\n\nexport const saveAccessLevels = app => async accessLevels => apiWrapper(\n app,\n events.authApi.saveAccessLevels,\n permission.writeAccessLevels.isAuthorized,\n { accessLevels },\n _saveAccessLevels, app, accessLevels,\n);\n\nexport const _saveAccessLevels = async (app, accessLevels) => {\n const validationErrors = validateAccessLevels(app)(accessLevels.levels);\n if (validationErrors.length > 0) {\n const errs = $(validationErrors, [\n map(e => e.error),\n join(', '),\n ]);\n throw new Error(\n `Access Levels Invalid: ${errs}`,\n );\n }\n\n const lock = await getLock(\n app, ACCESS_LEVELS_LOCK_FILE, 2000, 2,\n );\n\n if (isNolock(lock)) { throw new Error('Could not get lock to save access levels'); }\n\n try {\n const existing = await app.datastore.loadJson(ACCESS_LEVELS_FILE);\n if (existing.version !== accessLevels.version) { throw new Error('Access levels have already been updated, since you loaded'); }\n\n accessLevels.version++;\n\n app.datastore.updateJson(ACCESS_LEVELS_FILE, accessLevels);\n } finally {\n await releaseLock(app, lock);\n }\n};\n","import {\n filter, values, each, keys,\n} from 'lodash/fp';\nimport { permission } from './permissions';\nimport {\n getFlattenedHierarchy,\n isIndex, isRecord,\n} from '../templateApi/hierarchy';\nimport { $ } from '../common';\n\nexport const generateFullPermissions = (app) => {\n const allNodes = getFlattenedHierarchy(app.hierarchy);\n const accessLevel = { permissions: [] };\n\n const recordNodes = $(allNodes, [\n filter(isRecord),\n ]);\n\n for (const n of recordNodes) {\n permission.createRecord.add(n.nodeKey(), accessLevel);\n permission.updateRecord.add(n.nodeKey(), accessLevel);\n permission.deleteRecord.add(n.nodeKey(), accessLevel);\n permission.readRecord.add(n.nodeKey(), accessLevel);\n }\n\n const indexNodes = $(allNodes, [\n filter(isIndex),\n ]);\n\n for (const n of indexNodes) {\n permission.readIndex.add(n.nodeKey(), accessLevel);\n }\n\n for (const a of keys(app.actions)) {\n permission.executeAction.add(a, accessLevel);\n }\n\n $(permission, [\n values,\n filter(p => !p.isNode),\n each(p => p.add(accessLevel)),\n ]);\n\n return accessLevel.permissions;\n};\n","import { difference, map, join } from 'lodash/fp';\nimport {\n getLock, isNolock, releaseLock, $,\n apiWrapper, events,\n} from '../common';\nimport {\n USERS_LOCK_FILE, ACCESS_LEVELS_FILE,\n getUserByName, USERS_LIST_FILE,\n} from './authCommon';\nimport { permission } from './permissions';\nimport { NotFoundError } from '../common/errors';\n\nexport const setUserAccessLevels = app => async (userName, accessLevels) => apiWrapper(\n app,\n events.authApi.setUserAccessLevels,\n permission.setUserAccessLevels.isAuthorized,\n { userName, accessLevels },\n _setUserAccessLevels, app, userName, accessLevels,\n);\n\nexport const _setUserAccessLevels = async (app, username, accessLevels) => {\n const lock = await getLock(app, USERS_LOCK_FILE, 1000, 1, 0);\n\n const actualAccessLevels = $(\n await app.datastore.loadJson(ACCESS_LEVELS_FILE),\n [\n l => l.levels,\n map(l => l.name),\n ],\n );\n\n const missing = difference(accessLevels)(actualAccessLevels);\n if (missing.length > 0) {\n throw new Error(`Invalid access levels supplied: ${join(', ', missing)}`);\n }\n\n if (isNolock(lock)) { throw new Error('Could set user access levels cannot get lock'); }\n\n try {\n const users = await app.datastore.loadJson(USERS_LIST_FILE);\n const user = getUserByName(users, username);\n if (!user) { throw new NotFoundError(`Could not find user with ${username}`); }\n\n user.accessLevels = accessLevels;\n await app.datastore.updateJson(USERS_LIST_FILE, users);\n } finally {\n releaseLock(app, lock);\n }\n};\n","import getRecordApi from \"./recordApi\";\nimport getCollectionApi from \"./collectionApi\";\nimport getIndexApi from \"./indexApi\";\nimport getTemplateApi from \"./templateApi\";\nimport getAuthApi from \"./authApi\";\nimport getActionsApi from \"./actionsApi\";\nimport {setupDatastore, createEventAggregator} from \"./appInitialise\";\nimport {initialiseActions} from \"./actionsApi/initialise\"\nimport {isSomething} from \"./common\";\nimport {cleanup} from \"./transactions/cleanup\";\nimport {generateFullPermissions} from \"./authApi/generateFullPermissions\";\nimport {getApplicationDefinition} from \"./templateApi/getApplicationDefinition\";\nimport common from \"./common\";\nimport {getBehaviourSources} from \"./templateApi/getBehaviourSources\";\nimport hierarchy from \"./templateApi/hierarchy\";\n\nexport const getAppApis = async (store, behaviourSources = null, \n cleanupTransactions = null, \n getEpochTime = null,\n crypto = null,\n appDefinition = null) => {\n\n store = setupDatastore(store);\n\n if(!appDefinition)\n appDefinition = await getApplicationDefinition(store)();\n\n if(!behaviourSources)\n behaviourSources = await getBehaviourSources(store);\n\n const eventAggregator = createEventAggregator();\n\n const app = {\n datastore:store,\n crypto,\n publish:eventAggregator.publish,\n hierarchy:appDefinition.hierarchy,\n actions:appDefinition.actions\n };\n\n const templateApi = getTemplateApi(app); \n\n app.cleanupTransactions = isSomething(cleanupTransactions) \n ? cleanupTransactions\n : async () => await cleanup(app);\n\n app.getEpochTime = isSomething(getEpochTime)\n ? getEpochTime\n : async () => (new Date()).getTime();\n\n const recordApi = getRecordApi(app);\n const collectionApi = getCollectionApi(app);\n const indexApi = getIndexApi(app);\n const authApi = getAuthApi(app);\n const actionsApi = getActionsApi(app);\n\n const authenticateAs = async (username, password) => {\n app.user = await authApi.authenticate(username, password);\n };\n\n const withFullAccess = () => \n userWithFullAccess(app); \n\n const asUser = (user) => {\n app.user = user\n }; \n\n let apis = {\n recordApi, \n templateApi,\n collectionApi,\n indexApi,\n authApi,\n actionsApi,\n subscribe: eventAggregator.subscribe,\n authenticateAs,\n withFullAccess,\n asUser\n };\n\n apis.actions = initialiseActions(\n eventAggregator.subscribe,\n behaviourSources,\n appDefinition.actions,\n appDefinition.triggers,\n apis);\n\n\n return apis;\n};\n\nexport const userWithFullAccess = (app) => {\n app.user = {\n name: \"app\",\n permissions : generateFullPermissions(app),\n isUser:false,\n temp:false\n }\n return app.user;\n};\n\nexport {events, eventsList} from \"./common/events\";\nexport {getTemplateApi} from \"./templateApi\";\nexport {getRecordApi} from \"./recordApi\";\nexport {getCollectionApi} from \"./collectionApi\";\nexport {getAuthApi} from \"./authApi\";\nexport {getIndexApi} from \"./indexApi\";\nexport {setupDatastore} from \"./appInitialise\";\nexport {getActionsApi} from \"./actionsApi\";\nexport {initialiseData} from \"./appInitialise/initialiseData\";\nexport {getDatabaseManager} from \"./appInitialise/databaseManager\";\nexport {hierarchy};\nexport {common};\n\nexport default getAppApis;","import {hierarchy as hierarchyFunctions, \n common, getTemplateApi, getAuthApi } from \"../../../core/src\"; \nimport {find, filter, includes, keyBy, some,\n flatten, map} from \"lodash/fp\";\n\nimport {\n generateSchema\n} from \"../../../core/src/indexing/indexSchemaCreator\";\n\nexport { userWithFullAccess } from \"../../../core/src/index\";\n\nexport const pipe = common.$;\n\nexport const events = common.eventsList;\n\nexport const getNode = (hierarchy, nodeId) => \n pipe(hierarchy, [\n hierarchyFunctions.getFlattenedHierarchy,\n find(n => n.nodeId === nodeId || n.nodeKey() === nodeId)\n ]);\n\nexport const constructHierarchy = node => {\n if(!node) return node;\n return templateApi(node).constructHierarchy(node);\n}\n\nexport const createNewHierarchy = () => {\n return templateApi().getNewRootLevel();\n}\n\nexport const templateApi = hierarchy => getTemplateApi({hierarchy})\nexport const authApi = (hierarchy, actions) => getAuthApi({\n hierarchy, actions: keyBy(\"name\")(actions), publish:()=>{}})\n\nexport const allTypes = templateApi({}).allTypes;\n\nexport const validate = {\n all: templateApi({}).validateAll,\n node: templateApi({}).validateNode,\n field: templateApi({}).validateField\n};\n\nexport const getPotentialReverseReferenceIndexes = (hierarchy, refIndex) => {\n const res = pipe(hierarchy, [\n hierarchyFunctions.getFlattenedHierarchy,\n filter(n => hierarchyFunctions.isAncestor(refIndex)(n)\n || hierarchyFunctions.isAncestor(refIndex)(n.parent())),\n map(n => n.indexes),\n flatten,\n filter(hierarchyFunctions.isReferenceIndex)\n ]);\n\n return res;\n}\n\nexport const getPotentialReferenceIndexes = (hierarchy, record) =>\n pipe(hierarchy, [\n hierarchyFunctions.getFlattenedHierarchy,\n filter(hierarchyFunctions.isAncestorIndex),\n filter(i => hierarchyFunctions.isAncestor(record)(i.parent())\n || i.parent().nodeId === record.parent().nodeId\n || hierarchyFunctions.isRoot(i.parent()))\n ]);\n\nexport const getDefaultTypeOptions = type => \n !type ? {} : allTypes[type].getDefaultOptions();\n\nexport const getNewAction = () => templateApi({}).createAction();\nexport const getNewTrigger = () => templateApi({}).createTrigger();\n\nexport const validateActions = actions => templateApi({}).validateActions(actions);\nexport const validateTriggers = (triggers, actions) => templateApi({}).validateTriggers(triggers, actions);\n\nexport const generateFullPermissions = (hierarchy, actions) => \n authApi(hierarchy,actions).generateFullPermissions();\n\nexport const getNewAccessLevel = () => \n authApi().getNewAccessLevel();\n\nexport const validateAccessLevels = (hierarchy, actions, accessLevels) => \n authApi(hierarchy, actions).validateAccessLevels(accessLevels);\n\nexport const getIndexNodes = (hierarchy) => \n pipe(hierarchy, [\n hierarchyFunctions.getFlattenedHierarchy,\n filter(hierarchyFunctions.isIndex)\n ]);\n\nexport const getRecordNodes = (hierarchy) => \n pipe(hierarchy, [\n hierarchyFunctions.getFlattenedHierarchy,\n filter(hierarchyFunctions.isRecord)\n ]);\n\nexport const getIndexSchema = hierarchy => index => \n generateSchema(hierarchy, index);","import {\n authenticate,\n authenticateTemporaryAccess,\n} from './authenticate';\nimport { createTemporaryAccess } from './createTemporaryAccess';\nimport { createUser } from './createUser';\nimport { enableUser, disableUser } from './enableUser';\nimport { loadAccessLevels } from './loadAccessLevels';\nimport { getNewAccessLevel } from './getNewAccessLevel';\nimport { getNewUser, getNewUserAuth } from './getNewUser';\nimport { getUsers } from './getUsers';\nimport { isAuthorized } from './isAuthorized';\nimport { saveAccessLevels } from './saveAccessLevels';\nimport {\n changeMyPassword,\n scorePassword, setPasswordFromTemporaryCode,\n isValidPassword,\n} from './setPassword';\nimport { validateUser } from './validateUser';\nimport { validateAccessLevels } from './validateAccessLevels';\nimport { generateFullPermissions } from './generateFullPermissions';\nimport { setUserAccessLevels } from './setUserAccessLevels';\n\nexport const getAuthApi = app => ({\n authenticate: authenticate(app),\n authenticateTemporaryAccess: authenticateTemporaryAccess(app),\n createTemporaryAccess: createTemporaryAccess(app),\n createUser: createUser(app),\n loadAccessLevels: loadAccessLevels(app),\n enableUser: enableUser(app),\n disableUser: disableUser(app),\n getNewAccessLevel: getNewAccessLevel(app),\n getNewUser: getNewUser(app),\n getNewUserAuth: getNewUserAuth(app),\n getUsers: getUsers(app),\n saveAccessLevels: saveAccessLevels(app),\n isAuthorized: isAuthorized(app),\n changeMyPassword: changeMyPassword(app),\n setPasswordFromTemporaryCode: setPasswordFromTemporaryCode(app),\n scorePassword,\n isValidPassword: isValidPassword(app),\n validateUser: validateUser(app),\n validateAccessLevels: validateAccessLevels(app),\n generateFullPermissions: () => generateFullPermissions(app),\n setUserAccessLevels: setUserAccessLevels(app),\n});\n\nexport default getAuthApi;\n","export const getNewAccessLevel = () => () => ({\n name: '',\n permissions: [],\n default:false\n});\n","import { safe_not_equal, noop, run_all, is_function } from '../internal';\nexport { get_store_value as get } from '../internal';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe,\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = [];\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (let i = 0; i < subscribers.length; i += 1) {\n const s = subscribers[i];\n s[1]();\n subscriber_queue.push(s, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.push(subscriber);\n if (subscribers.length === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n const index = subscribers.indexOf(subscriber);\n if (index !== -1) {\n subscribers.splice(index, 1);\n }\n if (subscribers.length === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\n/**\n * Derived value store by synchronizing one or more readable stores and\n * applying an aggregation function over its input values.\n * @param {Stores} stores input stores\n * @param {function(Stores=, function(*)=):*}fn function callback that aggregates the values\n * @param {*=}initial_value when used asynchronously\n */\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => store.subscribe((value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","export const defaultPagesObject = () => ({\n main: {\n index: {\n _component : \"./components/indexHtml\"\n },\n appBody: \"bbapp.main.json\"\n },\n unauthenticated: {\n index: {\n _component : \"./components/indexHtml\"\n },\n appBody: \"bbapp.unauthenticated.json\"\n },\n componentLibraries: [],\n stylesheets: []\n\n});","import {\r\n isObject\r\n} from \"lodash/fp\";\r\nimport { BB_STATE_BINDINGPATH } from \"./isState\";\r\n\r\nexport const setState = (store, path, value) => {\r\n\r\n if(!path || path.length === 0) return;\r\n\r\n const pathParts = path.split(\".\");\r\n const safeSetPath = (obj, currentPartIndex=0) => {\r\n\r\n const currentKey = pathParts[currentPartIndex];\r\n\r\n if(pathParts.length - 1 == currentPartIndex) {\r\n obj[currentKey] = value;\r\n return;\r\n }\r\n\r\n if(obj[currentKey] === null \r\n || obj[currentKey] === undefined\r\n || !isObject(obj[currentKey])) {\r\n\r\n obj[currentKey] = {};\r\n }\r\n\r\n safeSetPath(obj[currentKey], currentPartIndex + 1);\r\n\r\n }\r\n\r\n store.update(s => {\r\n safeSetPath(s);\r\n return s;\r\n });\r\n};\r\n\r\nexport const setStateFromBinding = (store, binding, value) => \r\n setState(store, binding[BB_STATE_BINDINGPATH], value);","export const trimSlash = (str) => str.replace(/^\\/+|\\/+$/g, '');","import {trimSlash} from \"../common/trimSlash\";\r\n\r\n export const loadRecord = (api) => async ({recordKey, statePath}) => {\r\n\r\n if(!recordKey) {\r\n api.error(\"Load Record: record key not set\");\r\n return;\r\n } \r\n \r\n if(!statePath) {\r\n api.error(\"Load Record: state path not set\");\r\n return;\r\n } \r\n\r\n const record = await api.get({\r\n url:`/api/record/${trimSlash(recordKey)}`\r\n });\r\n\r\n if(api.isSuccess(record))\r\n api.setState(statePath, record);\r\n}","import {trimSlash} from \"../common/trimSlash\";\r\n\r\nexport const listRecords = api => async ({indexKey, statePath}) => {\r\n if(!indexKey) {\r\n api.error(\"Load Record: record key not set\");\r\n return;\r\n } \r\n \r\n if(!statePath) {\r\n api.error(\"Load Record: state path not set\");\r\n return;\r\n } \r\n\r\n const records = await api.get({\r\n url:`/api/listRecords/${trimSlash(indexKey)}`\r\n });\r\n\r\n if(api.isSuccess(records))\r\n api.setState(statePath, records);\r\n}","\r\nexport const USER_STATE_PATH = \"_bbuser\";\r\n\r\nexport const authenticate = (api) => async ({username, password}) => {\r\n\r\n if(!username) {\r\n api.error(\"Authenticate: username not set\");\r\n return;\r\n } \r\n \r\n if(!password) {\r\n api.error(\"Authenticate: password not set\");\r\n return;\r\n } \r\n\r\n const user = await api.post({\r\n url:\"/api/authenticate\",\r\n body : {username, password}\r\n });\r\n\r\n // set user even if error - so it is defined at least\r\n api.setState(USER_STATE_PATH, user);\r\n localStorage.setItem(\"budibase:user\", JSON.stringify(user));\r\n}","import {trimSlash} from \"../common/trimSlash\";\r\n\r\n export const saveRecord = (api) => async ({statePath}) => {\r\n \r\n if(!statePath) {\r\n api.error(\"Load Record: state path not set\");\r\n return;\r\n } \r\n\r\n const recordtoSave = api.getState(statePath);\r\n\r\n if(!recordtoSave) {\r\n api.error(`there is no record in state: ${statePath}`);\r\n return;\r\n }\r\n\r\n if(!recordtoSave.key) {\r\n api.error(`item in state does not appear to be a record - it has no key (${statePath})`);\r\n return;\r\n }\r\n\r\n const savedRecord = await api.post({\r\n url:`/api/record/${trimSlash(recordtoSave.key)}`,\r\n body: recordtoSave\r\n });\r\n\r\n if(api.isSuccess(savedRecord))\r\n api.setState(statePath, savedRecord);\r\n}","import { ERROR } from \"./standardState\";\r\n\r\nexport const getNewChildRecordToState = (coreApi, setState) =>\r\n ({recordKey, collectionName,childRecordType,statePath}) => {\r\n const error = errorHandler(setState);\r\n try {\r\n if(!recordKey) {\r\n error(\"getNewChild > recordKey not set\");\r\n return;\r\n }\r\n\r\n if(!collectionName) {\r\n error(\"getNewChild > collectionName not set\");\r\n return;\r\n }\r\n\r\n if(!childRecordType) {\r\n error(\"getNewChild > childRecordType not set\");\r\n return;\r\n }\r\n\r\n if(!statePath) {\r\n error(\"getNewChild > statePath not set\");\r\n return;\r\n }\r\n\r\n const rec = coreApi.recordApi.getNewChild(recordKey, collectionName, childRecordType);\r\n setState(statePath, rec);\r\n }\r\n catch(e) {\r\n error(e.message);\r\n }\r\n}\r\n\r\n\r\nexport const getNewRecordToState = (coreApi, setState) =>\r\n ({collectionKey,childRecordType,statePath}) => {\r\n const error = errorHandler(setState);\r\n try {\r\n if(!collectionKey) {\r\n error(\"getNewChild > collectionKey not set\");\r\n return;\r\n }\r\n\r\n if(!childRecordType) {\r\n error(\"getNewChild > childRecordType not set\");\r\n return;\r\n }\r\n\r\n if(!statePath) {\r\n error(\"getNewChild > statePath not set\");\r\n return;\r\n }\r\n\r\n const rec = coreApi.recordApi.getNew(collectionKey, childRecordType);\r\n setState(statePath, rec);\r\n }\r\n catch(e) {\r\n error(e.message);\r\n }\r\n}\r\n\r\nconst errorHandler = setState => message => setState(ERROR, message);","\r\nexport const ERROR = \"##error_message\";","import { setState } from \"./setState\";\r\nimport { getState } from \"./getState\";\r\nimport {\r\n isArray, isUndefined\r\n} from \"lodash/fp\";\r\n\r\nimport { createApi } from \"../api\";\r\nimport {\r\n getNewChildRecordToState, getNewRecordToState\r\n} from \"./coreHandlers\";\r\n\r\nexport const EVENT_TYPE_MEMBER_NAME = \"##eventHandlerType\";\r\n\r\nexport const eventHandlers = (store,coreApi,rootPath) => {\r\n \r\n const handler = (parameters, execute) => ({\r\n execute, parameters\r\n });\r\n\r\n const setStateWithStore = (path, value) => setState(store, path, value);\r\n\r\n let currentState;\r\n store.subscribe(s => {\r\n currentState = s;\r\n });\r\n\r\n const api = createApi({\r\n rootPath:rootPath,\r\n setState: setStateWithStore,\r\n getState: (path, fallback) => getState(currentState, path, fallback)\r\n });\r\n\r\n const setStateHandler = ({path, value}) => setState(store, path, value);\r\n \r\n return {\r\n \"Set State\": handler([\"path\", \"value\"], setStateHandler),\r\n \"Load Record\": handler([\"recordKey\", \"statePath\"], api.loadRecord),\r\n \"List Records\": handler([\"indexKey\", \"statePath\"], api.listRecords),\r\n \"Save Record\": handler([\"statePath\"], api.saveRecord),\r\n \r\n \"Get New Child Record\": handler(\r\n [\"recordKey\", \"collectionName\", \"childRecordType\", \"statePath\"], \r\n getNewChildRecordToState(coreApi, setStateWithStore)),\r\n\r\n \"Get New Record\": handler(\r\n [\"collectionKey\", \"childRecordType\", \"statePath\"], \r\n getNewRecordToState(coreApi, setStateWithStore)),\r\n\r\n \"Authenticate\": handler([\"username\", \"password\"], api.authenticate)\r\n };\r\n};\r\n\r\nexport const isEventType = prop => \r\n isArray(prop) \r\n && prop.length > 0\r\n && !isUndefined(prop[0][EVENT_TYPE_MEMBER_NAME]);\r\n","import { ERROR } from \"../state/standardState\";\r\nimport {loadRecord} from \"./loadRecord\";\r\nimport {listRecords} from \"./listRecords\";\r\nimport {authenticate} from \"./authenticate\";\r\nimport {saveRecord} from \"./saveRecord\";\r\n\r\nexport const createApi = ({rootPath, setState, getState}) => {\r\n\r\n const apiCall = (method) => ({url, body, notFound, badRequest, forbidden}) => {\r\n return fetch(`${rootPath}${url}`, {\r\n method: method,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n },\r\n body: body && JSON.stringify(body), \r\n credentials: \"same-origin\"\r\n }).then(r => {\r\n switch (r.status) {\r\n case 200:\r\n return r.json();\r\n case 404:\r\n return error(notFound || `${url} Not found`);\r\n case 400:\r\n return error(badRequest || `${url} Bad Request`);\r\n case 403:\r\n return error(forbidden || `${url} Forbidden`);\r\n default:\r\n if(r.status.toString().startsWith(\"2\")\r\n || r.status.toString().startsWith(\"3\"))\r\n return r.json()\r\n else\r\n return error(`${url} - ${r.statusText}`);\r\n }\r\n });\r\n }\r\n\r\n const post = apiCall(\"POST\");\r\n const get = apiCall(\"GET\");\r\n const patch = apiCall(\"PATCH\");\r\n const del = apiCall(\"DELETE\");\r\n\r\n const ERROR_MEMBER = \"##error\";\r\n const error = message => {\r\n const e = {};\r\n e[ERROR_MEMBER] = message;\r\n setState(ERROR, message);\r\n return e;\r\n }\r\n\r\n const isSuccess = obj => !obj || !obj[ERROR_MEMBER];\r\n\r\n const apiOpts = {\r\n rootPath, setState, getState, isSuccess, error,\r\n post, get, patch, delete:del\r\n };\r\n\r\n return {\r\n loadRecord:loadRecord(apiOpts), \r\n listRecords: listRecords(apiOpts),\r\n authenticate: authenticate(apiOpts),\r\n saveRecord: saveRecord(apiOpts)\r\n }\r\n}\r\n\r\n\r\n","import {\r\n isUndefined,\r\n isObject\r\n} from \"lodash/fp\";\r\nimport { \r\n isBound,BB_STATE_BINDINGPATH, BB_STATE_FALLBACK, takeStateFromStore\r\n} from \"./isState\";\r\n\r\nexport const getState = (s, path, fallback) => {\r\n\r\n if(!s) return fallback;\r\n if(!path || path.length === 0) return fallback;\r\n\r\n if(path === \"$\") return s;\r\n\r\n const pathParts = path.split(\".\");\r\n const safeGetPath = (obj, currentPartIndex=0) => {\r\n\r\n const currentKey = pathParts[currentPartIndex];\r\n\r\n if(pathParts.length - 1 == currentPartIndex) {\r\n const value = obj[currentKey];\r\n if(isUndefined(value))\r\n return fallback;\r\n else \r\n return value;\r\n }\r\n\r\n if(obj[currentKey] === null \r\n || obj[currentKey] === undefined\r\n || !isObject(obj[currentKey])) {\r\n\r\n return fallback;\r\n }\r\n\r\n return safeGetPath(obj[currentKey], currentPartIndex + 1);\r\n\r\n }\r\n\r\n\r\n return safeGetPath(s);\r\n}\r\n\r\nexport const getStateOrValue = (globalState, prop, currentContext) => {\r\n \r\n if(!prop) return prop;\r\n \r\n if(isBound(prop)) {\r\n\r\n const stateToUse = takeStateFromStore(prop) \r\n ? globalState\r\n : currentContext;\r\n\r\n return getState(stateToUse, prop[BB_STATE_BINDINGPATH], prop[BB_STATE_FALLBACK]);\r\n }\r\n\r\n if(prop.path && prop.source) {\r\n const stateToUse = prop.source === \"store\" \r\n ? globalState\r\n : currentContext;\r\n\r\n return getState(stateToUse, prop.path, prop.fallback);\r\n }\r\n\r\n return prop;\r\n \r\n}","import {\r\n eventHandlers\r\n} from \"../../../client/src/state/eventHandlers\";\r\nimport {writable} from \"svelte/store\";\r\nexport {\r\n EVENT_TYPE_MEMBER_NAME\r\n } from \"../../../client/src/state/eventHandlers\";\r\n import { \r\n createCoreApi \r\n} from \"../../../client/src/core\";\r\n\r\nexport const allHandlers = (appDefinition, user) => {\r\n\r\n const coreApi = createCoreApi(appDefinition, user);\r\n appDefinition.hierarchy = coreApi.templateApi.constructHierarchy(appDefinition.hierarchy);\r\n const store = writable({\r\n _bbuser: user\r\n });\r\n\r\n const handlersObj = eventHandlers(store, coreApi);\r\n const handlersArray = [];\r\n for(let key in handlersObj) {\r\n handlersArray.push({name:key, ...handlersObj[key]});\r\n }\r\n return handlersArray;\r\n}","import { createCoreApp } from \"./createCoreApp\"\r\nimport {\r\n getNew, getNewChild\r\n} from \"../../../core/src/recordApi/getNew\";\r\nimport {\r\n constructHierarchy\r\n} from \"../../../core/src/templateApi/createNodes\";\r\n\r\nexport const createCoreApi = (appDefinition, user) => {\r\n \r\n const app = createCoreApp(appDefinition, user);\r\n\r\n return {\r\n recordApi: {\r\n getNew: getNew(app),\r\n getNewChild: getNewChild(app)\r\n },\r\n\r\n templateApi: {\r\n constructHierarchy\r\n }\r\n }\r\n\r\n}","\r\n\r\nexport const createCoreApp = (appDefinition, user) => {\r\n const app = {\r\n datastore: null,\r\n crypto:null,\r\n publish: () => {},\r\n hierarchy: appDefinition.hierarchy,\r\n actions: appDefinition.actions,\r\n user\r\n };\r\n\r\n return app;\r\n}","import {\n isString, \n isBoolean, \n isNumber,\n isArray,\n isObjectLike,\n isPlainObject,\n every\n} from \"lodash/fp\";\n\nimport {\n EVENT_TYPE_MEMBER_NAME\n} from \"../../common/eventHandlers\";\n\nimport {\n isBound, BB_STATE_BINDINGPATH\n} from \"@budibase/client/src/state/isState\";\n\nconst defaultDef = typeName => () => ({\n type: typeName,\n required:false,\n default:types[typeName].default(),\n options: typeName === \"options\" ? [] : undefined,\n elementDefinition: typeName === \"array\" ? {} : undefined\n});\n\nconst propType = (defaultValue, isOfType, defaultDefinition) => ({\n isOfType, default:defaultValue, defaultDefinition\n});\n\nconst expandSingleProp = propDef => {\n const p = isString(propDef)\n ? types[propDef].defaultDefinition()\n : propDef;\n \n if(!isString(propDef)) {\n const def = types[propDef.type].defaultDefinition();\n for(let p in def) {\n if(propDef[p] === undefined) {\n propDef[p] = def[p];\n }\n }\n }\n\n if(p.type === \"array\") {\n p.elementDefinition = expandPropsDefinition(p.elementDefinition);\n }\n return p;\n}\n\nexport const expandPropsDefinition = propsDefinition => {\n const expandedProps = {};\n for(let p in propsDefinition) {\n expandedProps[p] = expandSingleProp(propsDefinition[p]);\n }\n return expandedProps;\n}\n\nconst isComponent = isObjectLike;\nconst isEvent = e => \n isPlainObject(e) \n && isString(e[EVENT_TYPE_MEMBER_NAME])\n && isPlainObject(e.parameters);\n\nconst isEventList = e => \n isArray(e) && every(isEvent)(e);\n\nconst emptyState = () => {\n const s = {};\n s[BB_STATE_BINDINGPATH] = \"\";\n return s;\n}\n\nexport const types = {\n string: propType(() => \"\", isString, defaultDef(\"string\")),\n bool: propType(() => false, isBoolean, defaultDef(\"bool\")),\n number: propType(() => 0, isNumber, defaultDef(\"number\")),\n array: propType(() => [], isArray, defaultDef(\"array\")),\n options: propType(() => \"\", isString, defaultDef(\"options\")),\n component: propType(() => ({_component:\"\"}), isComponent, defaultDef(\"component\")),\n asset: propType(() => \"\", isString, defaultDef(\"asset\")),\n event: propType(() => [], isEventList, defaultDef(\"event\")),\n state: propType(() => emptyState(), isBound, defaultDef(\"state\"))\n};","export const BB_STATE_BINDINGPATH = \"##bbstate\";\r\nexport const BB_STATE_BINDINGSOURCE = \"##bbsource\";\r\nexport const BB_STATE_FALLBACK = \"##bbstatefallback\";\r\n\r\nexport const isBound = (prop) =>\r\n prop !== undefined \r\n && prop[BB_STATE_BINDINGPATH] !== undefined;\r\n \r\nexport const takeStateFromStore = (prop) => \r\n prop[BB_STATE_BINDINGSOURCE] === undefined \r\n || prop[BB_STATE_BINDINGSOURCE] === \"store\";\r\n\r\nexport const takeStateFromContext = (prop) => \r\n prop[BB_STATE_BINDINGSOURCE] === \"context\";\r\n\r\nexport const takeStateFromEventParameters = (prop) => \r\n prop[BB_STATE_BINDINGSOURCE] === \"event\";","import {pipe} from \"../../common/core\";\n\nimport {\n find,\n isUndefined,\n filter,\n some,\n includes,\n has\n} from \"lodash/fp\";\n\nconst normalString = s => (s||\"\").trim().toLowerCase();\n\nexport const isRootComponent = c => isComponent(c) && isUndefined(c.inherits);\n\nexport const isComponent = c => {\n const hasProp = (n) => !isUndefined(c[n]);\n return hasProp(\"name\") && hasProp(\"props\");\n}\n\nexport const searchAllComponents = (allComponents, phrase) => {\n\n const hasPhrase = (...vals) => \n pipe(vals, [\n some(v => includes(normalString(phrase))(normalString(v)))\n ]);\n\n const componentMatches = c => {\n if(hasPhrase(c.name, ...(c.tags || []))) return true;\n\n if(isRootComponent(c)) return false;\n \n const parent = getExactComponent(\n allComponents,\n c.inherits);\n\n return componentMatches(parent);\n }\n\n return filter(componentMatches)(allComponents);\n} \n\nexport const getExactComponent = (allComponents, name) => {\n \n const stringEquals = (s1, s2) => \n normalString(s1) === normalString(s2);\n \n return pipe(allComponents,[\n find(c => stringEquals(c.name, name))\n ]);\n}\n\nexport const getAncestorProps = (allComponents, name, found=[]) => {\n const thisComponent = getExactComponent(\n allComponents, name);\n\n if(isRootComponent(thisComponent)) \n return [thisComponent.props, ...found];\n\n return getAncestorProps(\n allComponents, \n thisComponent.inherits,\n [{...thisComponent.props}, \n ...found]);\n\n}\n","import {\n isString, \n isUndefined,\n find,\n keys,\n uniq,\n some,\n filter,\n reduce,\n cloneDeep,\n includes,\n last\n} from \"lodash/fp\";\nimport { types, expandPropsDefinition } from \"./types\";\nimport { assign } from \"lodash\";\nimport { pipe } from \"../../common/core\";\nimport { isRootComponent } from \"./searchComponents\";\n\nexport const createPropDefinitionForDerived = (allComponents, componentName) => {\n \n\n const {propDef, derivedProps} = getComponentInfo(allComponents, componentName);\n\n const hasDerivedProp = k => pipe(derivedProps, [\n keys,\n uniq,\n some(key => key === k)\n ]);\n\n return pipe(propDef, [\n keys,\n filter(k => !hasDerivedProp(k)),\n reduce((obj, k) => {\n obj[k] = propDef[k];\n return obj;\n }, {}),\n expandPropsDefinition\n ])\n}\n\nexport const traverseForProps = getComponentInfo;\n\nexport const getInstanceProps = (componentInfo, props) => {\n const finalProps = cloneDeep(componentInfo.fullProps);\n\n for(let p in props) {\n finalProps[p] = props[p];\n }\n\n return finalProps;\n}\n\nexport const getNewComponentInfo = (allComponents, inherits) => {\n const parentcomponent = find(c => c.name === inherits)(allComponents);\n const component = {\n name:\"\", \n description:\"\", \n inherits, \n props:{}, \n tags:parentcomponent.tags\n };\n return getComponentInfo(\n allComponents,\n inherits,\n [component],\n {});\n}\n\n\nexport const getComponentInfo = (allComponents, comp, stack=[], subComponentProps=null) => {\n const component = isString(comp) \n ? find(c => c.name === comp)(allComponents)\n : comp;\n const cname = isString(comp) ? comp : comp.name;\n if(isRootComponent(component)) {\n subComponentProps = subComponentProps||{};\n const p = createProps(cname, component.props, subComponentProps);\n const rootProps = createProps(cname, component.props);\n const inheritedProps = [];\n const targetComponent = stack.length > 0\n ? last(stack)\n : component;\n if(stack.length > 0) {\n \n for(let prop in subComponentProps) {\n const hasProp = pipe(targetComponent.props, [\n keys,\n includes(prop)]);\n\n if(!hasProp)\n inheritedProps.push(prop);\n }\n }\n const unsetProps = pipe(p.props, [\n keys,\n filter(k => !includes(k)(keys(subComponentProps)) && k !== \"_component\")\n ]);\n\n const fullProps = cloneDeep(p.props);\n fullProps._component = targetComponent.name;\n\n return ({\n propsDefinition:expandPropsDefinition(component.props), \n inheritedProps,\n rootDefaultProps: rootProps.props,\n unsetProps,\n fullProps: fullProps,\n errors: p.errors,\n component: targetComponent,\n rootComponent: component\n });\n }\n return getComponentInfo(\n allComponents, \n component.inherits, \n [component, ...stack],\n {...component.props, ...subComponentProps});\n}\n\nexport const createProps = (componentName, propsDefinition, derivedFromProps) => {\n\n const error = (propName, error) =>\n errors.push({propName, error});\n\n const props = {\n _component: componentName\n };\n\n const errors = [];\n\n if(!componentName)\n error(\"_component\", \"Component name not supplied\");\n\n for(let propDef in propsDefinition) {\n const parsedPropDef = parsePropDef(propsDefinition[propDef]);\n if(parsedPropDef.error)\n error(propDef, parsedPropDef.error); \n else \n props[propDef] = parsedPropDef;\n }\n\n if(derivedFromProps) {\n assign(props, derivedFromProps);\n }\n\n return ({\n props, errors\n });\n}\n\nexport const createArrayElementProps = (arrayPropName, elementDefinition) => \n createProps(\n `#${arrayPropName}#array_element`,\n elementDefinition);\n\nconst parsePropDef = propDef => {\n const error = message => ({error:message, propDef});\n\n if(isString(propDef)) {\n if(!types[propDef])\n return error(`Do not recognise type ${propDef}`);\n \n return types[propDef].default();\n }\n\n if(!propDef.type)\n return error(\"Property Definition must declare a type\");\n \n const type = types[propDef.type];\n if(!type)\n return error(`Do not recognise type ${propDef.type}`);\n\n if(isUndefined(propDef.default))\n return type.default(propDef);\n\n if(!type.isOfType(propDef.default))\n return error(`${propDef.default} is not of type ${type}`);\n\n return propDef.default;\n}\n\nexport const arrayElementComponentName = (parentComponentName, arrayPropName) => \n `${parentComponentName}:${arrayPropName}`;\n\n/*\nAllowed propDefOptions\n- type: string, bool, number, array\n- default: default value, when undefined\n- required: field is required \n*/","import { \n getComponentInfo, createProps, getInstanceProps \n} from \"./createProps\";\n\nexport const buildPropsHierarchy = (allComponents, baseComponent) => {\n\n const buildProps = (componentName, propsDefinition, derivedFromProps) => {\n\n const {props} = createProps(componentName, propsDefinition, derivedFromProps);\n props._component = componentName;\n for(let propName in props) {\n if(propName === \"_component\") continue;\n\n const propDef = propsDefinition[propName];\n if(!propDef) continue;\n if(propDef.type === \"component\") {\n\n const subComponentProps = props[propName];\n \n if(!subComponentProps._component) continue;\n\n const propComponentInfo = getComponentInfo(\n allComponents, subComponentProps._component);\n\n const subComponentInstanceProps = getInstanceProps(\n propComponentInfo,\n subComponentProps\n );\n\n props[propName] = buildProps(\n propComponentInfo.rootComponent.name,\n propComponentInfo.propsDefinition,\n subComponentInstanceProps);\n\n } else if(propDef.type === \"array\") {\n const propsArray = props[propName];\n const newPropsArray = [];\n let index = 0;\n for(let element of propsArray) {\n newPropsArray.push(\n buildProps(\n `${propName}#array_element#`,\n propDef.elementDefinition,\n element));\n index++;\n }\n\n props[propName] = newPropsArray;\n }\n }\n\n return props;\n\n }\n\n if(!baseComponent) return {};\n\n const baseComponentInfo = getComponentInfo(allComponents, baseComponent);\n\n return buildProps(\n baseComponentInfo.rootComponent.name,\n baseComponentInfo.propsDefinition,\n baseComponentInfo.fullProps);\n\n}","const apiCall = (method) => (url, body) => \n fetch(url, {\n method: method,\n headers: {\n 'Content-Type': 'application/json',\n },\n body: body && JSON.stringify(body), \n });\n\nconst post = apiCall(\"POST\");\nconst get = apiCall(\"GET\");\nconst patch = apiCall(\"PATCH\");\nconst del = apiCall(\"DELETE\");\n\nexport default {\n post, get, patch, delete:del\n};","import { \n isPlainObject, isArray, cloneDeep\n} from \"lodash/fp\";\nimport {\n isRootComponent, getExactComponent\n} from \"./searchComponents\";\n\nexport const rename = (pages, allComponents, oldname, newname) => {\n\n pages = cloneDeep(pages);\n allComponents = cloneDeep(allComponents);\n const changedComponents = [];\n\n const existingWithNewName = getExactComponent(allComponents, newname);\n if(existingWithNewName) return {\n allComponents, pages, error: \"Component by that name already exists\"\n };\n\n const traverseProps = (props) => {\n let hasEdited = false;\n if(props._component && props._component === oldname) {\n props._component = newname;\n hasEdited = true;\n } \n\n for(let propName in props) {\n const prop = props[propName];\n if(isPlainObject(prop) && prop._component) {\n hasEdited = traverseProps(prop) || hasEdited;\n }\n if(isArray(prop)) {\n for(let element of prop) {\n hasEdited = traverseProps(element) || hasEdited;\n }\n }\n }\n return hasEdited;\n }\n\n\n for(let component of allComponents) {\n \n if(isRootComponent(component)) {\n continue;\n }\n\n let hasEdited = false;\n\n if(component.name === oldname) {\n component.name = newname;\n hasEdited = true;\n }\n\n if(component.inherits === oldname) {\n component.inherits = newname;\n hasEdited = true;\n }\n \n hasEdited = traverseProps(component.props) || hasEdited;\n\n if(hasEdited && component.name !== newname)\n changedComponents.push(component.name);\n }\n\n for(let pageName in pages) {\n const page = pages[pageName];\n if(page.appBody === oldname) {\n page.appBody = newname;\n }\n }\n\n return {allComponents, pages, changedComponents};\n\n\n}","import { map } from \"lodash/fp\";\n\nexport const loadLibs = async (appName, appPackage) => {\n\n const allLibraries = {};\n for(let lib of appPackage.pages.componentLibraries) {\n const libModule = await import(makeLibraryUrl(appName, lib));\n allLibraries[lib] = libModule;\n }\n\n return allLibraries;\n}\n\nexport const loadGeneratorLibs = async (appName, appPackage) => {\n\n const allGeneratorLibs = {};\n for(let lib of appPackage.pages.componentLibraries) {\n const generatorModule = await import(makeGeneratorLibraryUrl(appName, lib));\n allGeneratorLibs[lib] = generatorModule;\n }\n\n return allGeneratorLibs;\n}\n\nexport const loadLibUrls = (appName, appPackage) => {\n\n const allLibraries = [];\n for(let lib of appPackage.pages.componentLibraries) {\n const libUrl = makeLibraryUrl(appName, lib);\n allLibraries.push({libName:lib, importPath:libUrl});\n }\n\n return allLibraries;\n}\n\nexport const loadLib = async (appName, lib, allLibs) => {\n allLibs[lib] = await import(makeLibraryUrl(appName, lib));\n return allLibs;\n}\n\nexport const loadGeneratorLib = async (appName, lib, allGeneratorLibs) => {\n allGeneratorLibs[lib] = await import(makeGeneratorLibraryUrl(appName, lib));\n return allGeneratorLibs;\n}\n\nexport const makeLibraryUrl = (appName, lib) => \n `/_builder/${appName}/componentlibrary?lib=${encodeURI(lib)}`\n\nexport const makeGeneratorLibraryUrl = (appName, lib) => \n `/_builder/${appName}/componentlibraryGenerators?lib=${encodeURI(lib)}`","import {\n hierarchy as hierarchyFunctions, \n} from \"../../../core/src\";\nimport {\n filter, cloneDeep, sortBy, \n map, last, keys, concat, keyBy,\n find, isEmpty, reduce, values\n} from \"lodash/fp\";\nimport {\n pipe, getNode, validate,\n constructHierarchy, templateApi\n} from \"../common/core\";\nimport {writable} from \"svelte/store\";\nimport { defaultPagesObject } from \"../userInterface/pagesParsing/defaultPagesObject\"\nimport { buildPropsHierarchy } from \"../userInterface/pagesParsing/buildPropsHierarchy\"\nimport api from \"./api\";\nimport { isRootComponent, getExactComponent } from \"../userInterface/pagesParsing/searchComponents\";\nimport { rename } from \"../userInterface/pagesParsing/renameComponent\";\nimport { \n getComponentInfo, getNewComponentInfo \n} from \"../userInterface/pagesParsing/createProps\";\nimport { \n loadLibs, loadLibUrls, loadGeneratorLibs\n} from \"./loadComponentLibraries\";\n\nlet appname = \"\";\n\nexport const getStore = () => {\n\n const initial = {\n apps:[],\n appname:\"\",\n hierarchy: {},\n actions: [],\n triggers: [],\n pages:defaultPagesObject(),\n mainUi:{},\n unauthenticatedUi:{},\n allComponents:[],\n currentFrontEndItem:null,\n currentComponentInfo:null,\n currentComponentIsNew:false,\n currentFrontEndType:\"none\",\n currentPageName: \"\",\n currentNodeIsNew: false,\n errors: [],\n activeNav: \"database\",\n isBackend:true,\n hasAppPackage: false,\n accessLevels: {version:0, levels:[]},\n currentNode: null,\n libraries:null,\n showSettings:false,\n useAnalytics:true,\n };\n\n const store = writable(initial);\n\n store.initialise = initialise(store, initial);\n store.newChildRecord = newRecord(store, false);\n store.newRootRecord = newRecord(store, true);\n store.selectExistingNode = selectExistingNode(store);\n store.newChildIndex = newIndex(store, false);\n store.newRootIndex = newIndex(store, true);\n store.saveCurrentNode = saveCurrentNode(store);\n store.importAppDefinition = importAppDefinition(store);\n store.deleteCurrentNode = deleteCurrentNode(store);\n store.saveField = saveField(store);\n store.deleteField = deleteField(store);\n store.saveAction = saveAction(store);\n store.deleteAction = deleteAction(store);\n store.saveTrigger = saveTrigger(store);\n store.deleteTrigger = deleteTrigger(store);\n store.saveLevel = saveLevel(store);\n store.deleteLevel = deleteLevel(store);\n store.setActiveNav = setActiveNav(store);\n store.saveDerivedComponent = saveDerivedComponent(store);\n store.refreshComponents = refreshComponents(store);\n store.addComponentLibrary = addComponentLibrary(store);\n store.renameDerivedComponent = renameDerivedComponent(store);\n store.deleteDerivedComponent = deleteDerivedComponent(store);\n store.setCurrentComponent = setCurrentComponent(store);\n store.setCurrentPage = setCurrentPage(store);\n store.createDerivedComponent = createDerivedComponent(store);\n store.removeComponentLibrary =removeComponentLibrary(store);\n store.addStylesheet = addStylesheet(store);\n store.removeStylesheet = removeStylesheet(store);\n store.savePage = savePage(store);\n store.showFrontend = showFrontend(store);\n store.showBackend = showBackend(store);\n store.showSettings = showSettings(store);\n store.useAnalytics = useAnalytics(store);\n store.createGeneratedComponents = createGeneratedComponents(store);\n return store;\n} \n\nexport default getStore;\n\nconst initialise = (store, initial) => async () => {\n\n appname = window.location.hash \n ? last(window.location.hash.substr(1).split(\"/\"))\n : \"\";\n\n if(!appname) {\n initial.apps = await api.get(`/_builder/api/apps`).then(r => r.json());\n initial.hasAppPackage = false;\n store.set(initial);\n return initial;\n }\n\n const pkg = await api.get(`/_builder/api/${appname}/appPackage`)\n .then(r => r.json());\n\n initial.libraries = await loadLibs(appname, pkg);\n initial.generatorLibraries = await loadGeneratorLibs(appname, pkg);\n initial.loadLibraryUrls = () => loadLibUrls(appname, pkg);\n initial.appname = appname;\n initial.pages = pkg.pages;\n initial.hasAppPackage = true;\n initial.hierarchy = pkg.appDefinition.hierarchy;\n initial.accessLevels = pkg.accessLevels;\n initial.derivedComponents = values(pkg.derivedComponents);\n initial.generators = generatorsArray(pkg.rootComponents.generators);\n initial.allComponents = combineComponents(\n pkg.derivedComponents, pkg.rootComponents.components);\n initial.actions = values(pkg.appDefinition.actions);\n initial.triggers = pkg.appDefinition.triggers;\n\n if(!!initial.hierarchy && !isEmpty(initial.hierarchy)) {\n initial.hierarchy = constructHierarchy(initial.hierarchy);\n const shadowHierarchy = createShadowHierarchy(initial.hierarchy);\n if(initial.currentNode !== null)\n initial.currentNode = getNode(\n shadowHierarchy, initial.currentNode.nodeId\n );\n }\n store.set(initial);\n return initial;\n}\n\nconst generatorsArray = generators => \n pipe(generators, [\n keys,\n filter(k => k !== \"_lib\"),\n map(k => generators[k])\n ]);\n\n\nconst showSettings = store => show => {\n store.update(s => {\n s.showSettings = !s.showSettings;\n return s;\n });\n}\n\nconst useAnalytics = store => useAnalytics => {\n store.update(s => {\n s.useAnalytics = !s.useAnalytics;\n return s;\n });\n}\n\nconst showBackend = store => () => {\n store.update(s => {\n s.isBackend = true;\n return s;\n })\n}\n\nconst showFrontend = store => () => {\n store.update(s => {\n s.isBackend = false;\n return s;\n })\n}\n\nconst combineComponents = (root, derived) => {\n const all = []\n for(let r in root) {\n all.push(root[r]);\n }\n for(let d in derived) {\n all.push(derived[d]);\n }\n return all;\n}\n\nconst newRecord = (store, useRoot) => () => {\n store.update(s => {\n s.currentNodeIsNew = true;\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\n parent = useRoot ? shadowHierarchy\n : getNode(\n shadowHierarchy, \n s.currentNode.nodeId);\n s.errors = [];\n s.currentNode = templateApi(shadowHierarchy)\n .getNewRecordTemplate(parent, \"\", true);\n return s;\n });\n}\n\n\nconst selectExistingNode = (store) => (nodeId) => {\n store.update(s => {\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\n s.currentNode = getNode(\n shadowHierarchy, nodeId\n );\n s.currentNodeIsNew = false;\n s.errors = [];\n s.activeNav = \"database\";\n return s;\n })\n}\n\nconst newIndex = (store, useRoot) => () => {\n store.update(s => {\n s.currentNodeIsNew = true;\n s.errors = [];\n const shadowHierarchy = createShadowHierarchy(s.hierarchy);\n parent = useRoot ? shadowHierarchy\n : getNode(\n shadowHierarchy, \n s.currentNode.nodeId);\n\n s.currentNode = templateApi(shadowHierarchy)\n .getNewIndexTemplate(parent);\n return s;\n });\n}\n\nconst saveCurrentNode = (store) => () => {\n store.update(s => {\n\n const errors = validate.node(s.currentNode);\n s.errors = errors;\n if(errors.length > 0) {\n return s;\n }\n\n const parentNode = getNode(\n s.hierarchy, s.currentNode.parent().nodeId);\n\n const existingNode = getNode(\n s.hierarchy, s.currentNode.nodeId);\n\n let index = parentNode.children.length;\n if(!!existingNode) {\n // remove existing\n index = existingNode.parent().children.indexOf(existingNode);\n existingNode.parent().children = pipe(existingNode.parent().children, [\n filter(c => c.nodeId !== existingNode.nodeId)\n ]);\n } \n\n // should add node into existing hierarchy\n const cloned = cloneDeep(s.currentNode);\n templateApi(s.hierarchy).constructNode(\n parentNode, \n cloned\n );\n\n const newIndexOfchild = child => {\n if(child === cloned) return index;\n const currentIndex = parentNode.children.indexOf(child);\n return currentIndex >= index ? currentIndex + 1 : currentIndex;\n }\n\n parentNode.children = pipe(parentNode.children, [\n sortBy(newIndexOfchild)\n ]);\n\n if(!existingNode && s.currentNode.type === \"record\") {\n const defaultIndex = templateApi(s.hierarchy)\n .getNewIndexTemplate(cloned.parent());\n defaultIndex.name = `all_${cloned.collectionName}`;\n defaultIndex.allowedRecordNodeIds = [cloned.nodeId];\n }\n\n s.currentNodeIsNew = false;\n \n savePackage(store, s);\n\n return s;\n });\n}\n\nconst importAppDefinition = store => appDefinition => {\n store.update(s => {\n s.hierarchy = appDefinition.hierarchy;\n s.currentNode = appDefinition.hierarchy.children.length > 0\n ? appDefinition.hierarchy.children[0] \n : null;\n s.actions = appDefinition.actions;\n s.triggers = appDefinition.triggers;\n s.currentNodeIsNew = false; \n return s;\n });\n} \n\nconst deleteCurrentNode = store => () => {\n store.update(s => {\n const nodeToDelete = getNode(s.hierarchy, s.currentNode.nodeId);\n s.currentNode = hierarchyFunctions.isRoot(nodeToDelete.parent())\n ? find(n => n != s.currentNode)\n (s.hierarchy.children)\n : nodeToDelete.parent();\n if(hierarchyFunctions.isRecord(nodeToDelete)) {\n nodeToDelete.parent().children = filter(c => c.nodeId !== nodeToDelete.nodeId)\n (nodeToDelete.parent().children);\n } else {\n nodeToDelete.parent().indexes = filter(c => c.nodeId !== nodeToDelete.nodeId)\n (nodeToDelete.parent().indexes);\n }\n s.errors = [];\n savePackage(store, s);\n return s;\n });\n}\n\nconst saveField = databaseStore => (field) => {\n databaseStore.update(db => {\n db.currentNode.fields = filter(f => f.name !== field.name)\n (db.currentNode.fields);\n \n templateApi(db.hierarchy).addField(db.currentNode, field);\n return db;\n });\n}\n\n\nconst deleteField = databaseStore => field => {\n databaseStore.update(db => {\n db.currentNode.fields = filter(f => f.name !== field.name)\n (db.currentNode.fields);\n\n return db;\n });\n}\n\n\nconst saveAction = store => (newAction, isNew, oldAction=null) => {\n store.update(s => {\n\n const existingAction = isNew \n ? null\n : find(a => a.name === oldAction.name)(s.actions);\n \n if(existingAction) {\n s.actions = pipe(s.actions, [\n map(a => a === existingAction ? newAction : a)\n ]);\n } else {\n s.actions.push(newAction);\n }\n savePackage(store, s);\n return s;\n });\n}\n\nconst deleteAction = store => action => {\n store.update(s => {\n s.actions = filter(a => a.name !== action.name)(s.actions);\n savePackage(store, s);\n return s;\n });\n}\n\nconst saveTrigger = store => (newTrigger, isNew, oldTrigger=null) => {\n store.update(s => {\n\n const existingTrigger = isNew \n ? null\n : find(a => a.name === oldTrigger.name)(s.triggers);\n \n if(existingTrigger) {\n s.triggers = pipe(s.triggers, [\n map(a => a === existingTrigger ? newTrigger : a)\n ]);\n } else {\n s.triggers.push(newTrigger);\n }\n savePackage(store, s);\n return s;\n });\n}\n\nconst deleteTrigger = store => trigger => {\n store.update(s => {\n s.triggers = filter(t => t.name !== trigger.name)(s.triggers);\n return s;\n });\n}\n\nconst incrementAccessLevelsVersion = (s) =>\n s.accessLevels.version = (s.accessLevels.version || 0) + 1; \n\nconst saveLevel = store => (newLevel, isNew, oldLevel=null) => {\n store.update(s => {\n\n const levels = s.accessLevels.levels;\n\n const existingLevel = isNew \n ? null\n : find(a => a.name === oldLevel.name)(levels);\n \n if(existingLevel) {\n s.accessLevels.levels = pipe(levels, [\n map(a => a === existingLevel ? newLevel : a)\n ]);\n } else {\n s.accessLevels.levels.push(newLevel);\n }\n\n incrementAccessLevelsVersion(s);\n\n savePackage(store, s);\n return s;\n });\n}\n\nconst deleteLevel = store => level => {\n store.update(s => {\n s.accessLevels.levels = filter(t => t.name !== level.name)(s.accessLevels.levels);\n incrementAccessLevelsVersion(s);\n savePackage(store, s);\n return s;\n });\n}\n\nconst setActiveNav = store => navName => {\n store.update(s => {\n s.activeNav = navName;\n return s;\n });\n}\n\nconst createShadowHierarchy = hierarchy => \n constructHierarchy(JSON.parse(JSON.stringify(hierarchy)));\n\nconst saveDerivedComponent = store => (derivedComponent) => {\n\n store.update(s => {\n\n const components = pipe(s.allComponents, [\n filter(c => c.name !== derivedComponent.name),\n concat([derivedComponent])\n ]);\n\n const derivedComponents = pipe(s.derivedComponents, [\n filter(c => c.name !== derivedComponent.name),\n concat([derivedComponent])\n ]);\n\n s.allComponents = components;\n s.derivedComponents = derivedComponents;\n s.currentFrontEndItem = derivedComponent;\n s.currentComponentInfo = getComponentInfo(\n s.allComponents, derivedComponent.name);\n s.currentComponentIsNew = false;\n \n api.post(`/_builder/api/${s.appname}/derivedcomponent`, derivedComponent)\n .then(() => savePackage(store, s));\n\n return s;\n })\n};\n\nconst createDerivedComponent = store => componentName => {\n store.update(s => {\n const newComponentInfo = getNewComponentInfo(\n s.allComponents, componentName);\n\n s.currentFrontEndItem = newComponentInfo.component;\n s.currentComponentInfo = newComponentInfo;\n s.currentFrontEndType = \"component\";\n s.currentComponentIsNew = true;\n return s;\n });\n};\n\nconst createGeneratedComponents = store => components => {\n store.update(s => {\n s.allComponents = [...s.allComponents, ...components];\n s.derivedComponents = [...s.derivedComponents, ...components];\n\n const doCreate = async () => {\n for(let c of components) {\n await api.post(`/_builder/api/${s.appname}/derivedcomponent`, c);\n }\n\n await savePackage(store, s);\n }\n \n doCreate();\n\n return s;\n });\n};\n\nconst deleteDerivedComponent = store => name => {\n store.update(s => {\n\n const allComponents = pipe(s.allComponents, [\n filter(c => c.name !== name)\n ]);\n\n const derivedComponents = pipe(s.derivedComponents, [\n filter(c => c.name !== name)\n ]);\n\n s.allComponents = allComponents;\n s.derivedComponents = derivedComponents;\n if(s.currentFrontEndItem.name === name) {\n s.currentFrontEndItem = null;\n s.currentFrontEndType = \"\";\n }\n\n api.delete(`/_builder/api/${s.appname}/derivedcomponent/${name}`);\n\n return s;\n })\n}\n\nconst renameDerivedComponent = store => (oldname, newname) => {\n store.update(s => {\n\n const {\n allComponents, pages, error, changedComponents\n } = rename(s.pages, s.allComponents, oldname, newname);\n\n if(error) {\n // should really do something with this\n return s;\n }\n\n s.allComponents = allComponents;\n s.pages = pages;\n if(s.currentFrontEndItem.name === oldname)\n s.currentFrontEndItem.name = newname;\n\n const saveAllChanged = async () => {\n for(let cname of changedComponents) {\n const changedComponent = getExactComponent(allComponents, cname);\n await api.post(`/_builder/api/${s.appname}/derivedcomponent`, changedComponent);\n }\n }\n\n api.patch(`/_builder/api/${s.appname}/derivedcomponent`, {\n oldname, newname\n })\n .then(() => saveAllChanged())\n .then(() => {\n savePackage(store, s);\n }); \n\n return s;\n })\n}\n\nconst savePage = store => async page => {\n store.update(s => {\n if(s.currentFrontEndType !== \"page\" || !s.currentPageName) {\n return s;\n }\n\n s.pages[s.currentPageName] = page;\n savePackage(store, s);\n return s;\n });\n}\n\nconst addComponentLibrary = store => async lib => {\n\n const response = \n await api.get(`/_builder/api/${appname}/componentlibrary?lib=${encodeURI(lib)}`,undefined, false);\n\n const success = response.status === 200;\n\n const error = response.status === 404 \n ? `Could not find library ${lib}`\n : success\n ? \"\"\n : response.statusText;\n \n const components = success\n ? await response.json()\n : [];\n\n store.update(s => {\n if(success) {\n \n const componentsArray = [];\n for(let c in components) {\n componentsArray.push(components[c]);\n }\n\n s.allComponents = pipe(s.allComponents, [\n filter(c => !c.name.startsWith(`${lib}/`)),\n concat(componentsArray)\n ]);\n\n s.pages.componentLibraries.push(lib);\n savePackage(store, s);\n }\n\n return s;\n })\n \n\n}\n\nconst removeComponentLibrary = store => lib => {\n store.update(s => {\n \n \n s.pages.componentLibraries = filter(l => l !== lib)(\n s.pages.componentLibraries);\n savePackage(store, s);\n \n\n return s;\n })\n}\n\nconst addStylesheet = store => stylesheet => {\n store.update(s => {\n s.pages.stylesheets.push(stylesheet);\n savePackage(store, s);\n return s;\n })\n}\n\nconst removeStylesheet = store => stylesheet => {\n store.update(s => {\n s.pages.stylesheets = filter(s => s !== stylesheet)(s.pages.stylesheets);\n savePackage(store, s);\n return s;\n });\n}\n\nconst refreshComponents = store => async () => {\n\n const components = \n await api.get(`/_builder/api/${db.appname}/rootcomponents`).then(r => r.json());\n\n const rootComponents = pipe(components.components, [\n keys,\n map(k => ({...components[k], name:k}))\n ]);\n\n store.update(s => {\n s.allComponents = pipe(s.allComponents, [\n filter(c => !isRootComponent(c)),\n concat(rootComponents)\n ]);\n s.generators = components.generators;\n return s;\n });\n};\n\nconst savePackage = (store, s) => {\n\n const appDefinition = {\n hierarchy:s.hierarchy,\n triggers:s.triggers,\n actions: keyBy(\"name\")(s.actions),\n props: {\n main: buildPropsHierarchy(s.allComponents, s.pages.main.appBody),\n unauthenticated: buildPropsHierarchy(s.allComponents, s.pages.unauthenticated.appBody)\n }\n };\n\n const data = {\n appDefinition,\n accessLevels:s.accessLevels,\n pages:s.pages,\n }\n\n return api.post(`/_builder/api/${s.appname}/appPackage`, data);\n}\n\nconst setCurrentComponent = store => componentName => {\n store.update(s => {\n const component = getExactComponent(s.allComponents, componentName);\n s.currentFrontEndItem = component;\n s.currentFrontEndType = \"component\";\n s.currentComponentIsNew = false;\n s.currentComponentInfo = getComponentInfo(s.allComponents, component.name);\n return s;\n })\n}\n\nconst setCurrentPage = store => pageName => {\n store.update(s => {\n s.currentFrontEndType = \"page\";\n s.currentPageName = pageName;\n return s;\n })\n}\n","import {createPackage} from \"./createPackage\";\nimport getStore from \"./store\";\n\nexport const store = getStore();\n\nexport const createNewPackage = () =>\n createPackage(packageInfo, store);\n\nexport const initialise = async () => {\n try {\n setupRouter(store);\n await store.initialise();\n } catch(err) {\n console.log(err);\n }\n\n} \n\nconst setupRouter = (writable) => {\n const pushState = history.pushState;\n history.pushState = () => {\n pushState.apply(history, arguments);\n //fireEvents('pushState', arguments); \n writable.initialise();\n }\n window.addEventListener('hashchange',()=>{\n writable.initialise();\n })\n}\n","<script>\n\nimport Button from \"./common/Button.svelte\"\nimport { store } from \"./builderStore\";\n\nlet errors = [];\n\n</script>\n\n<div class=\"root\">\n <div class=\"inner\">\n <img src=\"/_builder/assets/budibase-logo.png\" class=\"logo\" alt=\"budibase logo\"/>\n <div>\n \n <div>\n <h4 style=\"margin-bottom: 20px\">Choose an Application</h4>\n {#each $store.apps as app}\n <a href={`#/${app}`} class=\"app-link\">{app}</a>\n {/each}\n </div>\n </div>\n </div>\n</div>\n\n<style>\n\n.root {\n position: fixed;\n margin: 0 auto;\n text-align: center;\n top: 20%;\n /*color: #333333;\n background-color: #fdfdfd;*/\n width:100%;\n}\n\n.inner {\n display:inline-block;\n margin: auto;\n}\n\n.logo {\n width: 300px;\n margin-bottom: 40px;\n}\n\n.root :global(.option) {\n width:250px;\n}\n\n.app-link {\n margin-top: 10px;\n display: block;\n}\n\n</style>","(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[\"feather\"] = factory();\n\telse\n\t\troot[\"feather\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./dist/icons.json\":\n/*!*************************!*\\\n !*** ./dist/icons.json ***!\n \\*************************/\n/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, download-cloud, download, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitch, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */\n/***/ (function(module) {\n\nmodule.exports = {\"activity\":\"<polyline points=\\\"22 12 18 12 15 21 9 3 6 12 2 12\\\"></polyline>\",\"airplay\":\"<path d=\\\"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1\\\"></path><polygon points=\\\"12 15 17 21 7 21 12 15\\\"></polygon>\",\"alert-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12.01\\\" y2=\\\"16\\\"></line>\",\"alert-octagon\":\"<polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12.01\\\" y2=\\\"16\\\"></line>\",\"alert-triangle\":\"<path d=\\\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\\\"></path><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"13\\\"></line><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12.01\\\" y2=\\\"17\\\"></line>\",\"align-center\":\"<line x1=\\\"18\\\" y1=\\\"10\\\" x2=\\\"6\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"18\\\" y1=\\\"18\\\" x2=\\\"6\\\" y2=\\\"18\\\"></line>\",\"align-justify\":\"<line x1=\\\"21\\\" y1=\\\"10\\\" x2=\\\"3\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line>\",\"align-left\":\"<line x1=\\\"17\\\" y1=\\\"10\\\" x2=\\\"3\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"17\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line>\",\"align-right\":\"<line x1=\\\"21\\\" y1=\\\"10\\\" x2=\\\"7\\\" y2=\\\"10\\\"></line><line x1=\\\"21\\\" y1=\\\"6\\\" x2=\\\"3\\\" y2=\\\"6\\\"></line><line x1=\\\"21\\\" y1=\\\"14\\\" x2=\\\"3\\\" y2=\\\"14\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"7\\\" y2=\\\"18\\\"></line>\",\"anchor\":\"<circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"3\\\"></circle><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line><path d=\\\"M5 12H2a10 10 0 0 0 20 0h-3\\\"></path>\",\"aperture\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"14.31\\\" y1=\\\"8\\\" x2=\\\"20.05\\\" y2=\\\"17.94\\\"></line><line x1=\\\"9.69\\\" y1=\\\"8\\\" x2=\\\"21.17\\\" y2=\\\"8\\\"></line><line x1=\\\"7.38\\\" y1=\\\"12\\\" x2=\\\"13.12\\\" y2=\\\"2.06\\\"></line><line x1=\\\"9.69\\\" y1=\\\"16\\\" x2=\\\"3.95\\\" y2=\\\"6.06\\\"></line><line x1=\\\"14.31\\\" y1=\\\"16\\\" x2=\\\"2.83\\\" y2=\\\"16\\\"></line><line x1=\\\"16.62\\\" y1=\\\"12\\\" x2=\\\"10.88\\\" y2=\\\"21.94\\\"></line>\",\"archive\":\"<polyline points=\\\"21 8 21 21 3 21 3 8\\\"></polyline><rect x=\\\"1\\\" y=\\\"3\\\" width=\\\"22\\\" height=\\\"5\\\"></rect><line x1=\\\"10\\\" y1=\\\"12\\\" x2=\\\"14\\\" y2=\\\"12\\\"></line>\",\"arrow-down-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"8 12 12 16 16 12\\\"></polyline><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line>\",\"arrow-down-left\":\"<line x1=\\\"17\\\" y1=\\\"7\\\" x2=\\\"7\\\" y2=\\\"17\\\"></line><polyline points=\\\"17 17 7 17 7 7\\\"></polyline>\",\"arrow-down-right\":\"<line x1=\\\"7\\\" y1=\\\"7\\\" x2=\\\"17\\\" y2=\\\"17\\\"></line><polyline points=\\\"17 7 17 17 7 17\\\"></polyline>\",\"arrow-down\":\"<line x1=\\\"12\\\" y1=\\\"5\\\" x2=\\\"12\\\" y2=\\\"19\\\"></line><polyline points=\\\"19 12 12 19 5 12\\\"></polyline>\",\"arrow-left-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 8 8 12 12 16\\\"></polyline><line x1=\\\"16\\\" y1=\\\"12\\\" x2=\\\"8\\\" y2=\\\"12\\\"></line>\",\"arrow-left\":\"<line x1=\\\"19\\\" y1=\\\"12\\\" x2=\\\"5\\\" y2=\\\"12\\\"></line><polyline points=\\\"12 19 5 12 12 5\\\"></polyline>\",\"arrow-right-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 16 16 12 12 8\\\"></polyline><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"arrow-right\":\"<line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line><polyline points=\\\"12 5 19 12 12 19\\\"></polyline>\",\"arrow-up-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"16 12 12 8 8 12\\\"></polyline><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line>\",\"arrow-up-left\":\"<line x1=\\\"17\\\" y1=\\\"17\\\" x2=\\\"7\\\" y2=\\\"7\\\"></line><polyline points=\\\"7 17 7 7 17 7\\\"></polyline>\",\"arrow-up-right\":\"<line x1=\\\"7\\\" y1=\\\"17\\\" x2=\\\"17\\\" y2=\\\"7\\\"></line><polyline points=\\\"7 7 17 7 17 17\\\"></polyline>\",\"arrow-up\":\"<line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"5\\\"></line><polyline points=\\\"5 12 12 5 19 12\\\"></polyline>\",\"at-sign\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><path d=\\\"M16 8v5a3 3 0 0 0 6 0v-1a10 10 0 1 0-3.92 7.94\\\"></path>\",\"award\":\"<circle cx=\\\"12\\\" cy=\\\"8\\\" r=\\\"7\\\"></circle><polyline points=\\\"8.21 13.89 7 23 12 20 17 23 15.79 13.88\\\"></polyline>\",\"bar-chart-2\":\"<line x1=\\\"18\\\" y1=\\\"20\\\" x2=\\\"18\\\" y2=\\\"10\\\"></line><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12\\\" y2=\\\"4\\\"></line><line x1=\\\"6\\\" y1=\\\"20\\\" x2=\\\"6\\\" y2=\\\"14\\\"></line>\",\"bar-chart\":\"<line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12\\\" y2=\\\"10\\\"></line><line x1=\\\"18\\\" y1=\\\"20\\\" x2=\\\"18\\\" y2=\\\"4\\\"></line><line x1=\\\"6\\\" y1=\\\"20\\\" x2=\\\"6\\\" y2=\\\"16\\\"></line>\",\"battery-charging\":\"<path d=\\\"M5 18H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3.19M15 6h2a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2h-3.19\\\"></path><line x1=\\\"23\\\" y1=\\\"13\\\" x2=\\\"23\\\" y2=\\\"11\\\"></line><polyline points=\\\"11 6 7 12 13 12 9 18\\\"></polyline>\",\"battery\":\"<rect x=\\\"1\\\" y=\\\"6\\\" width=\\\"18\\\" height=\\\"12\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"23\\\" y1=\\\"13\\\" x2=\\\"23\\\" y2=\\\"11\\\"></line>\",\"bell-off\":\"<path d=\\\"M13.73 21a2 2 0 0 1-3.46 0\\\"></path><path d=\\\"M18.63 13A17.89 17.89 0 0 1 18 8\\\"></path><path d=\\\"M6.26 6.26A5.86 5.86 0 0 0 6 8c0 7-3 9-3 9h14\\\"></path><path d=\\\"M18 8a6 6 0 0 0-9.33-5\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"bell\":\"<path d=\\\"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9\\\"></path><path d=\\\"M13.73 21a2 2 0 0 1-3.46 0\\\"></path>\",\"bluetooth\":\"<polyline points=\\\"6.5 6.5 17.5 17.5 12 23 12 1 17.5 6.5 6.5 17.5\\\"></polyline>\",\"bold\":\"<path d=\\\"M6 4h8a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\\\"></path><path d=\\\"M6 12h9a4 4 0 0 1 4 4 4 4 0 0 1-4 4H6z\\\"></path>\",\"book-open\":\"<path d=\\\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\\\"></path><path d=\\\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\\\"></path>\",\"book\":\"<path d=\\\"M4 19.5A2.5 2.5 0 0 1 6.5 17H20\\\"></path><path d=\\\"M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z\\\"></path>\",\"bookmark\":\"<path d=\\\"M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z\\\"></path>\",\"box\":\"<path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"briefcase\":\"<rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M16 21V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16\\\"></path>\",\"calendar\":\"<rect x=\\\"3\\\" y=\\\"4\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"16\\\" y1=\\\"2\\\" x2=\\\"16\\\" y2=\\\"6\\\"></line><line x1=\\\"8\\\" y1=\\\"2\\\" x2=\\\"8\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"10\\\" x2=\\\"21\\\" y2=\\\"10\\\"></line>\",\"camera-off\":\"<line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M21 21H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h3m3-3h6l2 3h4a2 2 0 0 1 2 2v9.34m-7.72-2.06a4 4 0 1 1-5.56-5.56\\\"></path>\",\"camera\":\"<path d=\\\"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z\\\"></path><circle cx=\\\"12\\\" cy=\\\"13\\\" r=\\\"4\\\"></circle>\",\"cast\":\"<path d=\\\"M2 16.1A5 5 0 0 1 5.9 20M2 12.05A9 9 0 0 1 9.95 20M2 8V6a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-6\\\"></path><line x1=\\\"2\\\" y1=\\\"20\\\" x2=\\\"2.01\\\" y2=\\\"20\\\"></line>\",\"check-circle\":\"<path d=\\\"M22 11.08V12a10 10 0 1 1-5.93-9.14\\\"></path><polyline points=\\\"22 4 12 14.01 9 11.01\\\"></polyline>\",\"check-square\":\"<polyline points=\\\"9 11 12 14 22 4\\\"></polyline><path d=\\\"M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11\\\"></path>\",\"check\":\"<polyline points=\\\"20 6 9 17 4 12\\\"></polyline>\",\"chevron-down\":\"<polyline points=\\\"6 9 12 15 18 9\\\"></polyline>\",\"chevron-left\":\"<polyline points=\\\"15 18 9 12 15 6\\\"></polyline>\",\"chevron-right\":\"<polyline points=\\\"9 18 15 12 9 6\\\"></polyline>\",\"chevron-up\":\"<polyline points=\\\"18 15 12 9 6 15\\\"></polyline>\",\"chevrons-down\":\"<polyline points=\\\"7 13 12 18 17 13\\\"></polyline><polyline points=\\\"7 6 12 11 17 6\\\"></polyline>\",\"chevrons-left\":\"<polyline points=\\\"11 17 6 12 11 7\\\"></polyline><polyline points=\\\"18 17 13 12 18 7\\\"></polyline>\",\"chevrons-right\":\"<polyline points=\\\"13 17 18 12 13 7\\\"></polyline><polyline points=\\\"6 17 11 12 6 7\\\"></polyline>\",\"chevrons-up\":\"<polyline points=\\\"17 11 12 6 7 11\\\"></polyline><polyline points=\\\"17 18 12 13 7 18\\\"></polyline>\",\"chrome\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"21.17\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"8\\\"></line><line x1=\\\"3.95\\\" y1=\\\"6.06\\\" x2=\\\"8.54\\\" y2=\\\"14\\\"></line><line x1=\\\"10.88\\\" y1=\\\"21.94\\\" x2=\\\"15.46\\\" y2=\\\"14\\\"></line>\",\"circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle>\",\"clipboard\":\"<path d=\\\"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\\\"></path><rect x=\\\"8\\\" y=\\\"2\\\" width=\\\"8\\\" height=\\\"4\\\" rx=\\\"1\\\" ry=\\\"1\\\"></rect>\",\"clock\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polyline points=\\\"12 6 12 12 16 14\\\"></polyline>\",\"cloud-drizzle\":\"<line x1=\\\"8\\\" y1=\\\"19\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"8\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"15\\\"></line><line x1=\\\"16\\\" y1=\\\"19\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"16\\\" y2=\\\"15\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"17\\\"></line><path d=\\\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\\\"></path>\",\"cloud-lightning\":\"<path d=\\\"M19 16.9A5 5 0 0 0 18 7h-1.26a8 8 0 1 0-11.62 9\\\"></path><polyline points=\\\"13 11 9 17 15 17 11 23\\\"></polyline>\",\"cloud-off\":\"<path d=\\\"M22.61 16.95A5 5 0 0 0 18 10h-1.26a8 8 0 0 0-7.05-6M5 5a8 8 0 0 0 4 15h9a5 5 0 0 0 1.7-.3\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"cloud-rain\":\"<line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"8\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><path d=\\\"M20 16.58A5 5 0 0 0 18 7h-1.26A8 8 0 1 0 4 15.25\\\"></path>\",\"cloud-snow\":\"<path d=\\\"M20 17.58A5 5 0 0 0 18 8h-1.26A8 8 0 1 0 4 16.25\\\"></path><line x1=\\\"8\\\" y1=\\\"16\\\" x2=\\\"8.01\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"20\\\" x2=\\\"8.01\\\" y2=\\\"20\\\"></line><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12.01\\\" y2=\\\"18\\\"></line><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12.01\\\" y2=\\\"22\\\"></line><line x1=\\\"16\\\" y1=\\\"16\\\" x2=\\\"16.01\\\" y2=\\\"16\\\"></line><line x1=\\\"16\\\" y1=\\\"20\\\" x2=\\\"16.01\\\" y2=\\\"20\\\"></line>\",\"cloud\":\"<path d=\\\"M18 10h-1.26A8 8 0 1 0 9 20h9a5 5 0 0 0 0-10z\\\"></path>\",\"code\":\"<polyline points=\\\"16 18 22 12 16 6\\\"></polyline><polyline points=\\\"8 6 2 12 8 18\\\"></polyline>\",\"codepen\":\"<polygon points=\\\"12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2\\\"></polygon><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"15.5\\\"></line><polyline points=\\\"22 8.5 12 15.5 2 8.5\\\"></polyline><polyline points=\\\"2 15.5 12 8.5 22 15.5\\\"></polyline><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"8.5\\\"></line>\",\"codesandbox\":\"<path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"7.5 4.21 12 6.81 16.5 4.21\\\"></polyline><polyline points=\\\"7.5 19.79 7.5 14.6 3 12\\\"></polyline><polyline points=\\\"21 12 16.5 14.6 16.5 19.79\\\"></polyline><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"coffee\":\"<path d=\\\"M18 8h1a4 4 0 0 1 0 8h-1\\\"></path><path d=\\\"M2 8h16v9a4 4 0 0 1-4 4H6a4 4 0 0 1-4-4V8z\\\"></path><line x1=\\\"6\\\" y1=\\\"1\\\" x2=\\\"6\\\" y2=\\\"4\\\"></line><line x1=\\\"10\\\" y1=\\\"1\\\" x2=\\\"10\\\" y2=\\\"4\\\"></line><line x1=\\\"14\\\" y1=\\\"1\\\" x2=\\\"14\\\" y2=\\\"4\\\"></line>\",\"columns\":\"<path d=\\\"M12 3h7a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-7m0-18H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7m0-18v18\\\"></path>\",\"command\":\"<path d=\\\"M18 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3 3 3 0 0 0 3-3 3 3 0 0 0-3-3H6a3 3 0 0 0-3 3 3 3 0 0 0 3 3 3 3 0 0 0 3-3V6a3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3h12a3 3 0 0 0 3-3 3 3 0 0 0-3-3z\\\"></path>\",\"compass\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polygon points=\\\"16.24 7.76 14.12 14.12 7.76 16.24 9.88 9.88 16.24 7.76\\\"></polygon>\",\"copy\":\"<rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"13\\\" height=\\\"13\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\\\"></path>\",\"corner-down-left\":\"<polyline points=\\\"9 10 4 15 9 20\\\"></polyline><path d=\\\"M20 4v7a4 4 0 0 1-4 4H4\\\"></path>\",\"corner-down-right\":\"<polyline points=\\\"15 10 20 15 15 20\\\"></polyline><path d=\\\"M4 4v7a4 4 0 0 0 4 4h12\\\"></path>\",\"corner-left-down\":\"<polyline points=\\\"14 15 9 20 4 15\\\"></polyline><path d=\\\"M20 4h-7a4 4 0 0 0-4 4v12\\\"></path>\",\"corner-left-up\":\"<polyline points=\\\"14 9 9 4 4 9\\\"></polyline><path d=\\\"M20 20h-7a4 4 0 0 1-4-4V4\\\"></path>\",\"corner-right-down\":\"<polyline points=\\\"10 15 15 20 20 15\\\"></polyline><path d=\\\"M4 4h7a4 4 0 0 1 4 4v12\\\"></path>\",\"corner-right-up\":\"<polyline points=\\\"10 9 15 4 20 9\\\"></polyline><path d=\\\"M4 20h7a4 4 0 0 0 4-4V4\\\"></path>\",\"corner-up-left\":\"<polyline points=\\\"9 14 4 9 9 4\\\"></polyline><path d=\\\"M20 20v-7a4 4 0 0 0-4-4H4\\\"></path>\",\"corner-up-right\":\"<polyline points=\\\"15 14 20 9 15 4\\\"></polyline><path d=\\\"M4 20v-7a4 4 0 0 1 4-4h12\\\"></path>\",\"cpu\":\"<rect x=\\\"4\\\" y=\\\"4\\\" width=\\\"16\\\" height=\\\"16\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"6\\\" height=\\\"6\\\"></rect><line x1=\\\"9\\\" y1=\\\"1\\\" x2=\\\"9\\\" y2=\\\"4\\\"></line><line x1=\\\"15\\\" y1=\\\"1\\\" x2=\\\"15\\\" y2=\\\"4\\\"></line><line x1=\\\"9\\\" y1=\\\"20\\\" x2=\\\"9\\\" y2=\\\"23\\\"></line><line x1=\\\"15\\\" y1=\\\"20\\\" x2=\\\"15\\\" y2=\\\"23\\\"></line><line x1=\\\"20\\\" y1=\\\"9\\\" x2=\\\"23\\\" y2=\\\"9\\\"></line><line x1=\\\"20\\\" y1=\\\"14\\\" x2=\\\"23\\\" y2=\\\"14\\\"></line><line x1=\\\"1\\\" y1=\\\"9\\\" x2=\\\"4\\\" y2=\\\"9\\\"></line><line x1=\\\"1\\\" y1=\\\"14\\\" x2=\\\"4\\\" y2=\\\"14\\\"></line>\",\"credit-card\":\"<rect x=\\\"1\\\" y=\\\"4\\\" width=\\\"22\\\" height=\\\"16\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"1\\\" y1=\\\"10\\\" x2=\\\"23\\\" y2=\\\"10\\\"></line>\",\"crop\":\"<path d=\\\"M6.13 1L6 16a2 2 0 0 0 2 2h15\\\"></path><path d=\\\"M1 6.13L16 6a2 2 0 0 1 2 2v15\\\"></path>\",\"crosshair\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"22\\\" y1=\\\"12\\\" x2=\\\"18\\\" y2=\\\"12\\\"></line><line x1=\\\"6\\\" y1=\\\"12\\\" x2=\\\"2\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"6\\\" x2=\\\"12\\\" y2=\\\"2\\\"></line><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"18\\\"></line>\",\"database\":\"<ellipse cx=\\\"12\\\" cy=\\\"5\\\" rx=\\\"9\\\" ry=\\\"3\\\"></ellipse><path d=\\\"M21 12c0 1.66-4 3-9 3s-9-1.34-9-3\\\"></path><path d=\\\"M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5\\\"></path>\",\"delete\":\"<path d=\\\"M21 4H8l-7 8 7 8h13a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2z\\\"></path><line x1=\\\"18\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"18\\\" y2=\\\"15\\\"></line>\",\"disc\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"dollar-sign\":\"<line x1=\\\"12\\\" y1=\\\"1\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><path d=\\\"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6\\\"></path>\",\"download-cloud\":\"<polyline points=\\\"8 17 12 21 16 17\\\"></polyline><line x1=\\\"12\\\" y1=\\\"12\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line><path d=\\\"M20.88 18.09A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.29\\\"></path>\",\"download\":\"<path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\"></path><polyline points=\\\"7 10 12 15 17 10\\\"></polyline><line x1=\\\"12\\\" y1=\\\"15\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line>\",\"droplet\":\"<path d=\\\"M12 2.69l5.66 5.66a8 8 0 1 1-11.31 0z\\\"></path>\",\"edit-2\":\"<path d=\\\"M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z\\\"></path>\",\"edit-3\":\"<path d=\\\"M12 20h9\\\"></path><path d=\\\"M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z\\\"></path>\",\"edit\":\"<path d=\\\"M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7\\\"></path><path d=\\\"M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z\\\"></path>\",\"external-link\":\"<path d=\\\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\\\"></path><polyline points=\\\"15 3 21 3 21 9\\\"></polyline><line x1=\\\"10\\\" y1=\\\"14\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line>\",\"eye-off\":\"<path d=\\\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"eye\":\"<path d=\\\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\\\"></path><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"facebook\":\"<path d=\\\"M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z\\\"></path>\",\"fast-forward\":\"<polygon points=\\\"13 19 22 12 13 5 13 19\\\"></polygon><polygon points=\\\"2 19 11 12 2 5 2 19\\\"></polygon>\",\"feather\":\"<path d=\\\"M20.24 12.24a6 6 0 0 0-8.49-8.49L5 10.5V19h8.5z\\\"></path><line x1=\\\"16\\\" y1=\\\"8\\\" x2=\\\"2\\\" y2=\\\"22\\\"></line><line x1=\\\"17.5\\\" y1=\\\"15\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line>\",\"figma\":\"<path d=\\\"M5 5.5A3.5 3.5 0 0 1 8.5 2H12v7H8.5A3.5 3.5 0 0 1 5 5.5z\\\"></path><path d=\\\"M12 2h3.5a3.5 3.5 0 1 1 0 7H12V2z\\\"></path><path d=\\\"M12 12.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 1 1-7 0z\\\"></path><path d=\\\"M5 19.5A3.5 3.5 0 0 1 8.5 16H12v3.5a3.5 3.5 0 1 1-7 0z\\\"></path><path d=\\\"M5 12.5A3.5 3.5 0 0 1 8.5 9H12v7H8.5A3.5 3.5 0 0 1 5 12.5z\\\"></path>\",\"file-minus\":\"<path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"9\\\" y1=\\\"15\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"file-plus\":\"<path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"9\\\" y1=\\\"15\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"file-text\":\"<path d=\\\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\\\"></path><polyline points=\\\"14 2 14 8 20 8\\\"></polyline><line x1=\\\"16\\\" y1=\\\"13\\\" x2=\\\"8\\\" y2=\\\"13\\\"></line><line x1=\\\"16\\\" y1=\\\"17\\\" x2=\\\"8\\\" y2=\\\"17\\\"></line><polyline points=\\\"10 9 9 9 8 9\\\"></polyline>\",\"file\":\"<path d=\\\"M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z\\\"></path><polyline points=\\\"13 2 13 9 20 9\\\"></polyline>\",\"film\":\"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"20\\\" rx=\\\"2.18\\\" ry=\\\"2.18\\\"></rect><line x1=\\\"7\\\" y1=\\\"2\\\" x2=\\\"7\\\" y2=\\\"22\\\"></line><line x1=\\\"17\\\" y1=\\\"2\\\" x2=\\\"17\\\" y2=\\\"22\\\"></line><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"2\\\" y1=\\\"7\\\" x2=\\\"7\\\" y2=\\\"7\\\"></line><line x1=\\\"2\\\" y1=\\\"17\\\" x2=\\\"7\\\" y2=\\\"17\\\"></line><line x1=\\\"17\\\" y1=\\\"17\\\" x2=\\\"22\\\" y2=\\\"17\\\"></line><line x1=\\\"17\\\" y1=\\\"7\\\" x2=\\\"22\\\" y2=\\\"7\\\"></line>\",\"filter\":\"<polygon points=\\\"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\\\"></polygon>\",\"flag\":\"<path d=\\\"M4 15s1-1 4-1 5 2 8 2 4-1 4-1V3s-1 1-4 1-5-2-8-2-4 1-4 1z\\\"></path><line x1=\\\"4\\\" y1=\\\"22\\\" x2=\\\"4\\\" y2=\\\"15\\\"></line>\",\"folder-minus\":\"<path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path><line x1=\\\"9\\\" y1=\\\"14\\\" x2=\\\"15\\\" y2=\\\"14\\\"></line>\",\"folder-plus\":\"<path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path><line x1=\\\"12\\\" y1=\\\"11\\\" x2=\\\"12\\\" y2=\\\"17\\\"></line><line x1=\\\"9\\\" y1=\\\"14\\\" x2=\\\"15\\\" y2=\\\"14\\\"></line>\",\"folder\":\"<path d=\\\"M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z\\\"></path>\",\"framer\":\"<path d=\\\"M5 16V9h14V2H5l14 14h-7m-7 0l7 7v-7m-7 0h7\\\"></path>\",\"frown\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M16 16s-1.5-2-4-2-4 2-4 2\\\"></path><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line>\",\"gift\":\"<polyline points=\\\"20 12 20 22 4 22 4 12\\\"></polyline><rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"5\\\"></rect><line x1=\\\"12\\\" y1=\\\"22\\\" x2=\\\"12\\\" y2=\\\"7\\\"></line><path d=\\\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\\\"></path><path d=\\\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\\\"></path>\",\"git-branch\":\"<line x1=\\\"6\\\" y1=\\\"3\\\" x2=\\\"6\\\" y2=\\\"15\\\"></line><circle cx=\\\"18\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><path d=\\\"M18 9a9 9 0 0 1-9 9\\\"></path>\",\"git-commit\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"1.05\\\" y1=\\\"12\\\" x2=\\\"7\\\" y2=\\\"12\\\"></line><line x1=\\\"17.01\\\" y1=\\\"12\\\" x2=\\\"22.96\\\" y2=\\\"12\\\"></line>\",\"git-merge\":\"<circle cx=\\\"18\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><path d=\\\"M6 21V9a9 9 0 0 0 9 9\\\"></path>\",\"git-pull-request\":\"<circle cx=\\\"18\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><path d=\\\"M13 6h3a2 2 0 0 1 2 2v7\\\"></path><line x1=\\\"6\\\" y1=\\\"9\\\" x2=\\\"6\\\" y2=\\\"21\\\"></line>\",\"github\":\"<path d=\\\"M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22\\\"></path>\",\"gitlab\":\"<path d=\\\"M22.65 14.39L12 22.13 1.35 14.39a.84.84 0 0 1-.3-.94l1.22-3.78 2.44-7.51A.42.42 0 0 1 4.82 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.49h8.1l2.44-7.51A.42.42 0 0 1 18.6 2a.43.43 0 0 1 .58 0 .42.42 0 0 1 .11.18l2.44 7.51L23 13.45a.84.84 0 0 1-.35.94z\\\"></path>\",\"globe\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><path d=\\\"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z\\\"></path>\",\"grid\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"14\\\" y=\\\"3\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"14\\\" y=\\\"14\\\" width=\\\"7\\\" height=\\\"7\\\"></rect><rect x=\\\"3\\\" y=\\\"14\\\" width=\\\"7\\\" height=\\\"7\\\"></rect>\",\"hard-drive\":\"<line x1=\\\"22\\\" y1=\\\"12\\\" x2=\\\"2\\\" y2=\\\"12\\\"></line><path d=\\\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\\\"></path><line x1=\\\"6\\\" y1=\\\"16\\\" x2=\\\"6.01\\\" y2=\\\"16\\\"></line><line x1=\\\"10\\\" y1=\\\"16\\\" x2=\\\"10.01\\\" y2=\\\"16\\\"></line>\",\"hash\":\"<line x1=\\\"4\\\" y1=\\\"9\\\" x2=\\\"20\\\" y2=\\\"9\\\"></line><line x1=\\\"4\\\" y1=\\\"15\\\" x2=\\\"20\\\" y2=\\\"15\\\"></line><line x1=\\\"10\\\" y1=\\\"3\\\" x2=\\\"8\\\" y2=\\\"21\\\"></line><line x1=\\\"16\\\" y1=\\\"3\\\" x2=\\\"14\\\" y2=\\\"21\\\"></line>\",\"headphones\":\"<path d=\\\"M3 18v-6a9 9 0 0 1 18 0v6\\\"></path><path d=\\\"M21 19a2 2 0 0 1-2 2h-1a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h3zM3 19a2 2 0 0 0 2 2h1a2 2 0 0 0 2-2v-3a2 2 0 0 0-2-2H3z\\\"></path>\",\"heart\":\"<path d=\\\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\\\"></path>\",\"help-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\\\"></path><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12.01\\\" y2=\\\"17\\\"></line>\",\"hexagon\":\"<path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path>\",\"home\":\"<path d=\\\"M3 9l9-7 9 7v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z\\\"></path><polyline points=\\\"9 22 9 12 15 12 15 22\\\"></polyline>\",\"image\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><circle cx=\\\"8.5\\\" cy=\\\"8.5\\\" r=\\\"1.5\\\"></circle><polyline points=\\\"21 15 16 10 5 21\\\"></polyline>\",\"inbox\":\"<polyline points=\\\"22 12 16 12 14 15 10 15 8 12 2 12\\\"></polyline><path d=\\\"M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\\\"></path>\",\"info\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"16\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12.01\\\" y2=\\\"8\\\"></line>\",\"instagram\":\"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"20\\\" rx=\\\"5\\\" ry=\\\"5\\\"></rect><path d=\\\"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\\\"></path><line x1=\\\"17.5\\\" y1=\\\"6.5\\\" x2=\\\"17.51\\\" y2=\\\"6.5\\\"></line>\",\"italic\":\"<line x1=\\\"19\\\" y1=\\\"4\\\" x2=\\\"10\\\" y2=\\\"4\\\"></line><line x1=\\\"14\\\" y1=\\\"20\\\" x2=\\\"5\\\" y2=\\\"20\\\"></line><line x1=\\\"15\\\" y1=\\\"4\\\" x2=\\\"9\\\" y2=\\\"20\\\"></line>\",\"key\":\"<path d=\\\"M21 2l-2 2m-7.61 7.61a5.5 5.5 0 1 1-7.778 7.778 5.5 5.5 0 0 1 7.777-7.777zm0 0L15.5 7.5m0 0l3 3L22 7l-3-3m-3.5 3.5L19 4\\\"></path>\",\"layers\":\"<polygon points=\\\"12 2 2 7 12 12 22 7 12 2\\\"></polygon><polyline points=\\\"2 17 12 22 22 17\\\"></polyline><polyline points=\\\"2 12 12 17 22 12\\\"></polyline>\",\"layout\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"3\\\" y1=\\\"9\\\" x2=\\\"21\\\" y2=\\\"9\\\"></line><line x1=\\\"9\\\" y1=\\\"21\\\" x2=\\\"9\\\" y2=\\\"9\\\"></line>\",\"life-buoy\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"4\\\"></circle><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"9.17\\\" y2=\\\"9.17\\\"></line><line x1=\\\"14.83\\\" y1=\\\"14.83\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line><line x1=\\\"14.83\\\" y1=\\\"9.17\\\" x2=\\\"19.07\\\" y2=\\\"4.93\\\"></line><line x1=\\\"14.83\\\" y1=\\\"9.17\\\" x2=\\\"18.36\\\" y2=\\\"5.64\\\"></line><line x1=\\\"4.93\\\" y1=\\\"19.07\\\" x2=\\\"9.17\\\" y2=\\\"14.83\\\"></line>\",\"link-2\":\"<path d=\\\"M15 7h3a5 5 0 0 1 5 5 5 5 0 0 1-5 5h-3m-6 0H6a5 5 0 0 1-5-5 5 5 0 0 1 5-5h3\\\"></path><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"link\":\"<path d=\\\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\\\"></path><path d=\\\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\\\"></path>\",\"linkedin\":\"<path d=\\\"M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z\\\"></path><rect x=\\\"2\\\" y=\\\"9\\\" width=\\\"4\\\" height=\\\"12\\\"></rect><circle cx=\\\"4\\\" cy=\\\"4\\\" r=\\\"2\\\"></circle>\",\"list\":\"<line x1=\\\"8\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"21\\\" y2=\\\"12\\\"></line><line x1=\\\"8\\\" y1=\\\"18\\\" x2=\\\"21\\\" y2=\\\"18\\\"></line><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"3.01\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"12\\\" x2=\\\"3.01\\\" y2=\\\"12\\\"></line><line x1=\\\"3\\\" y1=\\\"18\\\" x2=\\\"3.01\\\" y2=\\\"18\\\"></line>\",\"loader\":\"<line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"6\\\"></line><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12\\\" y2=\\\"22\\\"></line><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"7.76\\\" y2=\\\"7.76\\\"></line><line x1=\\\"16.24\\\" y1=\\\"16.24\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"6\\\" y2=\\\"12\\\"></line><line x1=\\\"18\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"4.93\\\" y1=\\\"19.07\\\" x2=\\\"7.76\\\" y2=\\\"16.24\\\"></line><line x1=\\\"16.24\\\" y1=\\\"7.76\\\" x2=\\\"19.07\\\" y2=\\\"4.93\\\"></line>\",\"lock\":\"<rect x=\\\"3\\\" y=\\\"11\\\" width=\\\"18\\\" height=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M7 11V7a5 5 0 0 1 10 0v4\\\"></path>\",\"log-in\":\"<path d=\\\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\\\"></path><polyline points=\\\"10 17 15 12 10 7\\\"></polyline><line x1=\\\"15\\\" y1=\\\"12\\\" x2=\\\"3\\\" y2=\\\"12\\\"></line>\",\"log-out\":\"<path d=\\\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\\\"></path><polyline points=\\\"16 17 21 12 16 7\\\"></polyline><line x1=\\\"21\\\" y1=\\\"12\\\" x2=\\\"9\\\" y2=\\\"12\\\"></line>\",\"mail\":\"<path d=\\\"M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z\\\"></path><polyline points=\\\"22,6 12,13 2,6\\\"></polyline>\",\"map-pin\":\"<path d=\\\"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z\\\"></path><circle cx=\\\"12\\\" cy=\\\"10\\\" r=\\\"3\\\"></circle>\",\"map\":\"<polygon points=\\\"1 6 1 22 8 18 16 22 23 18 23 2 16 6 8 2 1 6\\\"></polygon><line x1=\\\"8\\\" y1=\\\"2\\\" x2=\\\"8\\\" y2=\\\"18\\\"></line><line x1=\\\"16\\\" y1=\\\"6\\\" x2=\\\"16\\\" y2=\\\"22\\\"></line>\",\"maximize-2\":\"<polyline points=\\\"15 3 21 3 21 9\\\"></polyline><polyline points=\\\"9 21 3 21 3 15\\\"></polyline><line x1=\\\"21\\\" y1=\\\"3\\\" x2=\\\"14\\\" y2=\\\"10\\\"></line><line x1=\\\"3\\\" y1=\\\"21\\\" x2=\\\"10\\\" y2=\\\"14\\\"></line>\",\"maximize\":\"<path d=\\\"M8 3H5a2 2 0 0 0-2 2v3m18 0V5a2 2 0 0 0-2-2h-3m0 18h3a2 2 0 0 0 2-2v-3M3 16v3a2 2 0 0 0 2 2h3\\\"></path>\",\"meh\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"8\\\" y1=\\\"15\\\" x2=\\\"16\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line>\",\"menu\":\"<line x1=\\\"3\\\" y1=\\\"12\\\" x2=\\\"21\\\" y2=\\\"12\\\"></line><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><line x1=\\\"3\\\" y1=\\\"18\\\" x2=\\\"21\\\" y2=\\\"18\\\"></line>\",\"message-circle\":\"<path d=\\\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\\\"></path>\",\"message-square\":\"<path d=\\\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\\\"></path>\",\"mic-off\":\"<line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M9 9v3a3 3 0 0 0 5.12 2.12M15 9.34V4a3 3 0 0 0-5.94-.6\\\"></path><path d=\\\"M17 16.95A7 7 0 0 1 5 12v-2m14 0v2a7 7 0 0 1-.11 1.23\\\"></path><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"8\\\" y1=\\\"23\\\" x2=\\\"16\\\" y2=\\\"23\\\"></line>\",\"mic\":\"<path d=\\\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\\\"></path><path d=\\\"M19 10v2a7 7 0 0 1-14 0v-2\\\"></path><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"8\\\" y1=\\\"23\\\" x2=\\\"16\\\" y2=\\\"23\\\"></line>\",\"minimize-2\":\"<polyline points=\\\"4 14 10 14 10 20\\\"></polyline><polyline points=\\\"20 10 14 10 14 4\\\"></polyline><line x1=\\\"14\\\" y1=\\\"10\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line><line x1=\\\"3\\\" y1=\\\"21\\\" x2=\\\"10\\\" y2=\\\"14\\\"></line>\",\"minimize\":\"<path d=\\\"M8 3v3a2 2 0 0 1-2 2H3m18 0h-3a2 2 0 0 1-2-2V3m0 18v-3a2 2 0 0 1 2-2h3M3 16h3a2 2 0 0 1 2 2v3\\\"></path>\",\"minus-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"minus-square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"minus\":\"<line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line>\",\"monitor\":\"<rect x=\\\"2\\\" y=\\\"3\\\" width=\\\"20\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"8\\\" y1=\\\"21\\\" x2=\\\"16\\\" y2=\\\"21\\\"></line><line x1=\\\"12\\\" y1=\\\"17\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line>\",\"moon\":\"<path d=\\\"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z\\\"></path>\",\"more-horizontal\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"19\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"5\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle>\",\"more-vertical\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"1\\\"></circle><circle cx=\\\"12\\\" cy=\\\"5\\\" r=\\\"1\\\"></circle><circle cx=\\\"12\\\" cy=\\\"19\\\" r=\\\"1\\\"></circle>\",\"mouse-pointer\":\"<path d=\\\"M3 3l7.07 16.97 2.51-7.39 7.39-2.51L3 3z\\\"></path><path d=\\\"M13 13l6 6\\\"></path>\",\"move\":\"<polyline points=\\\"5 9 2 12 5 15\\\"></polyline><polyline points=\\\"9 5 12 2 15 5\\\"></polyline><polyline points=\\\"15 19 12 22 9 19\\\"></polyline><polyline points=\\\"19 9 22 12 19 15\\\"></polyline><line x1=\\\"2\\\" y1=\\\"12\\\" x2=\\\"22\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"22\\\"></line>\",\"music\":\"<path d=\\\"M9 18V5l12-2v13\\\"></path><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><circle cx=\\\"18\\\" cy=\\\"16\\\" r=\\\"3\\\"></circle>\",\"navigation-2\":\"<polygon points=\\\"12 2 19 21 12 17 5 21 12 2\\\"></polygon>\",\"navigation\":\"<polygon points=\\\"3 11 22 2 13 21 11 13 3 11\\\"></polygon>\",\"octagon\":\"<polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon>\",\"package\":\"<line x1=\\\"16.5\\\" y1=\\\"9.4\\\" x2=\\\"7.5\\\" y2=\\\"4.21\\\"></line><path d=\\\"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z\\\"></path><polyline points=\\\"3.27 6.96 12 12.01 20.73 6.96\\\"></polyline><line x1=\\\"12\\\" y1=\\\"22.08\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"paperclip\":\"<path d=\\\"M21.44 11.05l-9.19 9.19a6 6 0 0 1-8.49-8.49l9.19-9.19a4 4 0 0 1 5.66 5.66l-9.2 9.19a2 2 0 0 1-2.83-2.83l8.49-8.48\\\"></path>\",\"pause-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"10\\\" y1=\\\"15\\\" x2=\\\"10\\\" y2=\\\"9\\\"></line><line x1=\\\"14\\\" y1=\\\"15\\\" x2=\\\"14\\\" y2=\\\"9\\\"></line>\",\"pause\":\"<rect x=\\\"6\\\" y=\\\"4\\\" width=\\\"4\\\" height=\\\"16\\\"></rect><rect x=\\\"14\\\" y=\\\"4\\\" width=\\\"4\\\" height=\\\"16\\\"></rect>\",\"pen-tool\":\"<path d=\\\"M12 19l7-7 3 3-7 7-3-3z\\\"></path><path d=\\\"M18 13l-1.5-7.5L2 2l3.5 14.5L13 18l5-5z\\\"></path><path d=\\\"M2 2l7.586 7.586\\\"></path><circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"2\\\"></circle>\",\"percent\":\"<line x1=\\\"19\\\" y1=\\\"5\\\" x2=\\\"5\\\" y2=\\\"19\\\"></line><circle cx=\\\"6.5\\\" cy=\\\"6.5\\\" r=\\\"2.5\\\"></circle><circle cx=\\\"17.5\\\" cy=\\\"17.5\\\" r=\\\"2.5\\\"></circle>\",\"phone-call\":\"<path d=\\\"M15.05 5A5 5 0 0 1 19 8.95M15.05 1A9 9 0 0 1 23 8.94m-1 7.98v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-forwarded\":\"<polyline points=\\\"19 1 23 5 19 9\\\"></polyline><line x1=\\\"15\\\" y1=\\\"5\\\" x2=\\\"23\\\" y2=\\\"5\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-incoming\":\"<polyline points=\\\"16 2 16 8 22 8\\\"></polyline><line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"16\\\" y2=\\\"8\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-missed\":\"<line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"17\\\" y2=\\\"7\\\"></line><line x1=\\\"17\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"7\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone-off\":\"<path d=\\\"M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m-2.67-3.34a19.79 19.79 0 0 1-3.07-8.63A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91\\\"></path><line x1=\\\"23\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"23\\\"></line>\",\"phone-outgoing\":\"<polyline points=\\\"23 7 23 1 17 1\\\"></polyline><line x1=\\\"16\\\" y1=\\\"8\\\" x2=\\\"23\\\" y2=\\\"1\\\"></line><path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"phone\":\"<path d=\\\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z\\\"></path>\",\"pie-chart\":\"<path d=\\\"M21.21 15.89A10 10 0 1 1 8 2.83\\\"></path><path d=\\\"M22 12A10 10 0 0 0 12 2v10z\\\"></path>\",\"play-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><polygon points=\\\"10 8 16 12 10 16 10 8\\\"></polygon>\",\"play\":\"<polygon points=\\\"5 3 19 12 5 21 5 3\\\"></polygon>\",\"plus-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"plus-square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"16\\\"></line><line x1=\\\"8\\\" y1=\\\"12\\\" x2=\\\"16\\\" y2=\\\"12\\\"></line>\",\"plus\":\"<line x1=\\\"12\\\" y1=\\\"5\\\" x2=\\\"12\\\" y2=\\\"19\\\"></line><line x1=\\\"5\\\" y1=\\\"12\\\" x2=\\\"19\\\" y2=\\\"12\\\"></line>\",\"pocket\":\"<path d=\\\"M4 3h16a2 2 0 0 1 2 2v6a10 10 0 0 1-10 10A10 10 0 0 1 2 11V5a2 2 0 0 1 2-2z\\\"></path><polyline points=\\\"8 10 12 14 16 10\\\"></polyline>\",\"power\":\"<path d=\\\"M18.36 6.64a9 9 0 1 1-12.73 0\\\"></path><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"printer\":\"<polyline points=\\\"6 9 6 2 18 2 18 9\\\"></polyline><path d=\\\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2\\\"></path><rect x=\\\"6\\\" y=\\\"14\\\" width=\\\"12\\\" height=\\\"8\\\"></rect>\",\"radio\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2\\\"></circle><path d=\\\"M16.24 7.76a6 6 0 0 1 0 8.49m-8.48-.01a6 6 0 0 1 0-8.49m11.31-2.82a10 10 0 0 1 0 14.14m-14.14 0a10 10 0 0 1 0-14.14\\\"></path>\",\"refresh-ccw\":\"<polyline points=\\\"1 4 1 10 7 10\\\"></polyline><polyline points=\\\"23 20 23 14 17 14\\\"></polyline><path d=\\\"M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15\\\"></path>\",\"refresh-cw\":\"<polyline points=\\\"23 4 23 10 17 10\\\"></polyline><polyline points=\\\"1 20 1 14 7 14\\\"></polyline><path d=\\\"M3.51 9a9 9 0 0 1 14.85-3.36L23 10M1 14l4.64 4.36A9 9 0 0 0 20.49 15\\\"></path>\",\"repeat\":\"<polyline points=\\\"17 1 21 5 17 9\\\"></polyline><path d=\\\"M3 11V9a4 4 0 0 1 4-4h14\\\"></path><polyline points=\\\"7 23 3 19 7 15\\\"></polyline><path d=\\\"M21 13v2a4 4 0 0 1-4 4H3\\\"></path>\",\"rewind\":\"<polygon points=\\\"11 19 2 12 11 5 11 19\\\"></polygon><polygon points=\\\"22 19 13 12 22 5 22 19\\\"></polygon>\",\"rotate-ccw\":\"<polyline points=\\\"1 4 1 10 7 10\\\"></polyline><path d=\\\"M3.51 15a9 9 0 1 0 2.13-9.36L1 10\\\"></path>\",\"rotate-cw\":\"<polyline points=\\\"23 4 23 10 17 10\\\"></polyline><path d=\\\"M20.49 15a9 9 0 1 1-2.12-9.36L23 10\\\"></path>\",\"rss\":\"<path d=\\\"M4 11a9 9 0 0 1 9 9\\\"></path><path d=\\\"M4 4a16 16 0 0 1 16 16\\\"></path><circle cx=\\\"5\\\" cy=\\\"19\\\" r=\\\"1\\\"></circle>\",\"save\":\"<path d=\\\"M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z\\\"></path><polyline points=\\\"17 21 17 13 7 13 7 21\\\"></polyline><polyline points=\\\"7 3 7 8 15 8\\\"></polyline>\",\"scissors\":\"<circle cx=\\\"6\\\" cy=\\\"6\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"18\\\" r=\\\"3\\\"></circle><line x1=\\\"20\\\" y1=\\\"4\\\" x2=\\\"8.12\\\" y2=\\\"15.88\\\"></line><line x1=\\\"14.47\\\" y1=\\\"14.48\\\" x2=\\\"20\\\" y2=\\\"20\\\"></line><line x1=\\\"8.12\\\" y1=\\\"8.12\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line>\",\"search\":\"<circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line>\",\"send\":\"<line x1=\\\"22\\\" y1=\\\"2\\\" x2=\\\"11\\\" y2=\\\"13\\\"></line><polygon points=\\\"22 2 15 22 11 13 2 9 22 2\\\"></polygon>\",\"server\":\"<rect x=\\\"2\\\" y=\\\"2\\\" width=\\\"20\\\" height=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"2\\\" y=\\\"14\\\" width=\\\"20\\\" height=\\\"8\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"6\\\" y1=\\\"6\\\" x2=\\\"6.01\\\" y2=\\\"6\\\"></line><line x1=\\\"6\\\" y1=\\\"18\\\" x2=\\\"6.01\\\" y2=\\\"18\\\"></line>\",\"settings\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle><path d=\\\"M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z\\\"></path>\",\"share-2\":\"<circle cx=\\\"18\\\" cy=\\\"5\\\" r=\\\"3\\\"></circle><circle cx=\\\"6\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle><circle cx=\\\"18\\\" cy=\\\"19\\\" r=\\\"3\\\"></circle><line x1=\\\"8.59\\\" y1=\\\"13.51\\\" x2=\\\"15.42\\\" y2=\\\"17.49\\\"></line><line x1=\\\"15.41\\\" y1=\\\"6.51\\\" x2=\\\"8.59\\\" y2=\\\"10.49\\\"></line>\",\"share\":\"<path d=\\\"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8\\\"></path><polyline points=\\\"16 6 12 2 8 6\\\"></polyline><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line>\",\"shield-off\":\"<path d=\\\"M19.69 14a6.9 6.9 0 0 0 .31-2V5l-8-3-3.16 1.18\\\"></path><path d=\\\"M4.73 4.73L4 5v7c0 6 8 10 8 10a20.29 20.29 0 0 0 5.62-4.38\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"shield\":\"<path d=\\\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\\\"></path>\",\"shopping-bag\":\"<path d=\\\"M6 2L3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z\\\"></path><line x1=\\\"3\\\" y1=\\\"6\\\" x2=\\\"21\\\" y2=\\\"6\\\"></line><path d=\\\"M16 10a4 4 0 0 1-8 0\\\"></path>\",\"shopping-cart\":\"<circle cx=\\\"9\\\" cy=\\\"21\\\" r=\\\"1\\\"></circle><circle cx=\\\"20\\\" cy=\\\"21\\\" r=\\\"1\\\"></circle><path d=\\\"M1 1h4l2.68 13.39a2 2 0 0 0 2 1.61h9.72a2 2 0 0 0 2-1.61L23 6H6\\\"></path>\",\"shuffle\":\"<polyline points=\\\"16 3 21 3 21 8\\\"></polyline><line x1=\\\"4\\\" y1=\\\"20\\\" x2=\\\"21\\\" y2=\\\"3\\\"></line><polyline points=\\\"21 16 21 21 16 21\\\"></polyline><line x1=\\\"15\\\" y1=\\\"15\\\" x2=\\\"21\\\" y2=\\\"21\\\"></line><line x1=\\\"4\\\" y1=\\\"4\\\" x2=\\\"9\\\" y2=\\\"9\\\"></line>\",\"sidebar\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"9\\\" y1=\\\"3\\\" x2=\\\"9\\\" y2=\\\"21\\\"></line>\",\"skip-back\":\"<polygon points=\\\"19 20 9 12 19 4 19 20\\\"></polygon><line x1=\\\"5\\\" y1=\\\"19\\\" x2=\\\"5\\\" y2=\\\"5\\\"></line>\",\"skip-forward\":\"<polygon points=\\\"5 4 15 12 5 20 5 4\\\"></polygon><line x1=\\\"19\\\" y1=\\\"5\\\" x2=\\\"19\\\" y2=\\\"19\\\"></line>\",\"slack\":\"<path d=\\\"M14.5 10c-.83 0-1.5-.67-1.5-1.5v-5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5z\\\"></path><path d=\\\"M20.5 10H19V8.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5-.67 1.5-1.5 1.5z\\\"></path><path d=\\\"M9.5 14c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5S8 21.33 8 20.5v-5c0-.83.67-1.5 1.5-1.5z\\\"></path><path d=\\\"M3.5 14H5v1.5c0 .83-.67 1.5-1.5 1.5S2 16.33 2 15.5 2.67 14 3.5 14z\\\"></path><path d=\\\"M14 14.5c0-.83.67-1.5 1.5-1.5h5c.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5h-5c-.83 0-1.5-.67-1.5-1.5z\\\"></path><path d=\\\"M15.5 19H14v1.5c0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5-.67-1.5-1.5-1.5z\\\"></path><path d=\\\"M10 9.5C10 8.67 9.33 8 8.5 8h-5C2.67 8 2 8.67 2 9.5S2.67 11 3.5 11h5c.83 0 1.5-.67 1.5-1.5z\\\"></path><path d=\\\"M8.5 5H10V3.5C10 2.67 9.33 2 8.5 2S7 2.67 7 3.5 7.67 5 8.5 5z\\\"></path>\",\"slash\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"4.93\\\" y1=\\\"4.93\\\" x2=\\\"19.07\\\" y2=\\\"19.07\\\"></line>\",\"sliders\":\"<line x1=\\\"4\\\" y1=\\\"21\\\" x2=\\\"4\\\" y2=\\\"14\\\"></line><line x1=\\\"4\\\" y1=\\\"10\\\" x2=\\\"4\\\" y2=\\\"3\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"12\\\"></line><line x1=\\\"12\\\" y1=\\\"8\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line><line x1=\\\"20\\\" y1=\\\"21\\\" x2=\\\"20\\\" y2=\\\"16\\\"></line><line x1=\\\"20\\\" y1=\\\"12\\\" x2=\\\"20\\\" y2=\\\"3\\\"></line><line x1=\\\"1\\\" y1=\\\"14\\\" x2=\\\"7\\\" y2=\\\"14\\\"></line><line x1=\\\"9\\\" y1=\\\"8\\\" x2=\\\"15\\\" y2=\\\"8\\\"></line><line x1=\\\"17\\\" y1=\\\"16\\\" x2=\\\"23\\\" y2=\\\"16\\\"></line>\",\"smartphone\":\"<rect x=\\\"5\\\" y=\\\"2\\\" width=\\\"14\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12.01\\\" y2=\\\"18\\\"></line>\",\"smile\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><path d=\\\"M8 14s1.5 2 4 2 4-2 4-2\\\"></path><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"9.01\\\" y2=\\\"9\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"15.01\\\" y2=\\\"9\\\"></line>\",\"speaker\":\"<rect x=\\\"4\\\" y=\\\"2\\\" width=\\\"16\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><circle cx=\\\"12\\\" cy=\\\"14\\\" r=\\\"4\\\"></circle><line x1=\\\"12\\\" y1=\\\"6\\\" x2=\\\"12.01\\\" y2=\\\"6\\\"></line>\",\"square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect>\",\"star\":\"<polygon points=\\\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\\\"></polygon>\",\"stop-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><rect x=\\\"9\\\" y=\\\"9\\\" width=\\\"6\\\" height=\\\"6\\\"></rect>\",\"sun\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"5\\\"></circle><line x1=\\\"12\\\" y1=\\\"1\\\" x2=\\\"12\\\" y2=\\\"3\\\"></line><line x1=\\\"12\\\" y1=\\\"21\\\" x2=\\\"12\\\" y2=\\\"23\\\"></line><line x1=\\\"4.22\\\" y1=\\\"4.22\\\" x2=\\\"5.64\\\" y2=\\\"5.64\\\"></line><line x1=\\\"18.36\\\" y1=\\\"18.36\\\" x2=\\\"19.78\\\" y2=\\\"19.78\\\"></line><line x1=\\\"1\\\" y1=\\\"12\\\" x2=\\\"3\\\" y2=\\\"12\\\"></line><line x1=\\\"21\\\" y1=\\\"12\\\" x2=\\\"23\\\" y2=\\\"12\\\"></line><line x1=\\\"4.22\\\" y1=\\\"19.78\\\" x2=\\\"5.64\\\" y2=\\\"18.36\\\"></line><line x1=\\\"18.36\\\" y1=\\\"5.64\\\" x2=\\\"19.78\\\" y2=\\\"4.22\\\"></line>\",\"sunrise\":\"<path d=\\\"M17 18a5 5 0 0 0-10 0\\\"></path><line x1=\\\"12\\\" y1=\\\"2\\\" x2=\\\"12\\\" y2=\\\"9\\\"></line><line x1=\\\"4.22\\\" y1=\\\"10.22\\\" x2=\\\"5.64\\\" y2=\\\"11.64\\\"></line><line x1=\\\"1\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"23\\\" y2=\\\"18\\\"></line><line x1=\\\"18.36\\\" y1=\\\"11.64\\\" x2=\\\"19.78\\\" y2=\\\"10.22\\\"></line><line x1=\\\"23\\\" y1=\\\"22\\\" x2=\\\"1\\\" y2=\\\"22\\\"></line><polyline points=\\\"8 6 12 2 16 6\\\"></polyline>\",\"sunset\":\"<path d=\\\"M17 18a5 5 0 0 0-10 0\\\"></path><line x1=\\\"12\\\" y1=\\\"9\\\" x2=\\\"12\\\" y2=\\\"2\\\"></line><line x1=\\\"4.22\\\" y1=\\\"10.22\\\" x2=\\\"5.64\\\" y2=\\\"11.64\\\"></line><line x1=\\\"1\\\" y1=\\\"18\\\" x2=\\\"3\\\" y2=\\\"18\\\"></line><line x1=\\\"21\\\" y1=\\\"18\\\" x2=\\\"23\\\" y2=\\\"18\\\"></line><line x1=\\\"18.36\\\" y1=\\\"11.64\\\" x2=\\\"19.78\\\" y2=\\\"10.22\\\"></line><line x1=\\\"23\\\" y1=\\\"22\\\" x2=\\\"1\\\" y2=\\\"22\\\"></line><polyline points=\\\"16 5 12 9 8 5\\\"></polyline>\",\"tablet\":\"<rect x=\\\"4\\\" y=\\\"2\\\" width=\\\"16\\\" height=\\\"20\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"12\\\" y1=\\\"18\\\" x2=\\\"12.01\\\" y2=\\\"18\\\"></line>\",\"tag\":\"<path d=\\\"M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z\\\"></path><line x1=\\\"7\\\" y1=\\\"7\\\" x2=\\\"7.01\\\" y2=\\\"7\\\"></line>\",\"target\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"6\\\"></circle><circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"2\\\"></circle>\",\"terminal\":\"<polyline points=\\\"4 17 10 11 4 5\\\"></polyline><line x1=\\\"12\\\" y1=\\\"19\\\" x2=\\\"20\\\" y2=\\\"19\\\"></line>\",\"thermometer\":\"<path d=\\\"M14 14.76V3.5a2.5 2.5 0 0 0-5 0v11.26a4.5 4.5 0 1 0 5 0z\\\"></path>\",\"thumbs-down\":\"<path d=\\\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\\\"></path>\",\"thumbs-up\":\"<path d=\\\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\\\"></path>\",\"toggle-left\":\"<rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"22\\\" height=\\\"14\\\" rx=\\\"7\\\" ry=\\\"7\\\"></rect><circle cx=\\\"8\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"toggle-right\":\"<rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"22\\\" height=\\\"14\\\" rx=\\\"7\\\" ry=\\\"7\\\"></rect><circle cx=\\\"16\\\" cy=\\\"12\\\" r=\\\"3\\\"></circle>\",\"tool\":\"<path d=\\\"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z\\\"></path>\",\"trash-2\":\"<polyline points=\\\"3 6 5 6 21 6\\\"></polyline><path d=\\\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\\\"></path><line x1=\\\"10\\\" y1=\\\"11\\\" x2=\\\"10\\\" y2=\\\"17\\\"></line><line x1=\\\"14\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"17\\\"></line>\",\"trash\":\"<polyline points=\\\"3 6 5 6 21 6\\\"></polyline><path d=\\\"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\\\"></path>\",\"trello\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><rect x=\\\"7\\\" y=\\\"7\\\" width=\\\"3\\\" height=\\\"9\\\"></rect><rect x=\\\"14\\\" y=\\\"7\\\" width=\\\"3\\\" height=\\\"5\\\"></rect>\",\"trending-down\":\"<polyline points=\\\"23 18 13.5 8.5 8.5 13.5 1 6\\\"></polyline><polyline points=\\\"17 18 23 18 23 12\\\"></polyline>\",\"trending-up\":\"<polyline points=\\\"23 6 13.5 15.5 8.5 10.5 1 18\\\"></polyline><polyline points=\\\"17 6 23 6 23 12\\\"></polyline>\",\"triangle\":\"<path d=\\\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\\\"></path>\",\"truck\":\"<rect x=\\\"1\\\" y=\\\"3\\\" width=\\\"15\\\" height=\\\"13\\\"></rect><polygon points=\\\"16 8 20 8 23 11 23 16 16 16 16 8\\\"></polygon><circle cx=\\\"5.5\\\" cy=\\\"18.5\\\" r=\\\"2.5\\\"></circle><circle cx=\\\"18.5\\\" cy=\\\"18.5\\\" r=\\\"2.5\\\"></circle>\",\"tv\":\"<rect x=\\\"2\\\" y=\\\"7\\\" width=\\\"20\\\" height=\\\"15\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><polyline points=\\\"17 2 12 7 7 2\\\"></polyline>\",\"twitch\":\"<path d=\\\"M21 2H3v16h5v4l4-4h5l4-4V2zm-10 9V7m5 4V7\\\"></path>\",\"twitter\":\"<path d=\\\"M23 3a10.9 10.9 0 0 1-3.14 1.53 4.48 4.48 0 0 0-7.86 3v1A10.66 10.66 0 0 1 3 4s-4 9 5 13a11.64 11.64 0 0 1-7 2c9 5 20 0 20-11.5a4.5 4.5 0 0 0-.08-.83A7.72 7.72 0 0 0 23 3z\\\"></path>\",\"type\":\"<polyline points=\\\"4 7 4 4 20 4 20 7\\\"></polyline><line x1=\\\"9\\\" y1=\\\"20\\\" x2=\\\"15\\\" y2=\\\"20\\\"></line><line x1=\\\"12\\\" y1=\\\"4\\\" x2=\\\"12\\\" y2=\\\"20\\\"></line>\",\"umbrella\":\"<path d=\\\"M23 12a11.05 11.05 0 0 0-22 0zm-5 7a3 3 0 0 1-6 0v-7\\\"></path>\",\"underline\":\"<path d=\\\"M6 3v7a6 6 0 0 0 6 6 6 6 0 0 0 6-6V3\\\"></path><line x1=\\\"4\\\" y1=\\\"21\\\" x2=\\\"20\\\" y2=\\\"21\\\"></line>\",\"unlock\":\"<rect x=\\\"3\\\" y=\\\"11\\\" width=\\\"18\\\" height=\\\"11\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><path d=\\\"M7 11V7a5 5 0 0 1 9.9-1\\\"></path>\",\"upload-cloud\":\"<polyline points=\\\"16 16 12 12 8 16\\\"></polyline><line x1=\\\"12\\\" y1=\\\"12\\\" x2=\\\"12\\\" y2=\\\"21\\\"></line><path d=\\\"M20.39 18.39A5 5 0 0 0 18 9h-1.26A8 8 0 1 0 3 16.3\\\"></path><polyline points=\\\"16 16 12 12 8 16\\\"></polyline>\",\"upload\":\"<path d=\\\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\\\"></path><polyline points=\\\"17 8 12 3 7 8\\\"></polyline><line x1=\\\"12\\\" y1=\\\"3\\\" x2=\\\"12\\\" y2=\\\"15\\\"></line>\",\"user-check\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><polyline points=\\\"17 11 19 13 23 9\\\"></polyline>\",\"user-minus\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"23\\\" y1=\\\"11\\\" x2=\\\"17\\\" y2=\\\"11\\\"></line>\",\"user-plus\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"20\\\" y1=\\\"8\\\" x2=\\\"20\\\" y2=\\\"14\\\"></line><line x1=\\\"23\\\" y1=\\\"11\\\" x2=\\\"17\\\" y2=\\\"11\\\"></line>\",\"user-x\":\"<path d=\\\"M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"8.5\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><line x1=\\\"18\\\" y1=\\\"8\\\" x2=\\\"23\\\" y2=\\\"13\\\"></line><line x1=\\\"23\\\" y1=\\\"8\\\" x2=\\\"18\\\" y2=\\\"13\\\"></line>\",\"user\":\"<path d=\\\"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"12\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle>\",\"users\":\"<path d=\\\"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2\\\"></path><circle cx=\\\"9\\\" cy=\\\"7\\\" r=\\\"4\\\"></circle><path d=\\\"M23 21v-2a4 4 0 0 0-3-3.87\\\"></path><path d=\\\"M16 3.13a4 4 0 0 1 0 7.75\\\"></path>\",\"video-off\":\"<path d=\\\"M16 16v1a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V7a2 2 0 0 1 2-2h2m5.66 0H14a2 2 0 0 1 2 2v3.34l1 1L23 7v10\\\"></path><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"video\":\"<polygon points=\\\"23 7 16 12 23 17 23 7\\\"></polygon><rect x=\\\"1\\\" y=\\\"5\\\" width=\\\"15\\\" height=\\\"14\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect>\",\"voicemail\":\"<circle cx=\\\"5.5\\\" cy=\\\"11.5\\\" r=\\\"4.5\\\"></circle><circle cx=\\\"18.5\\\" cy=\\\"11.5\\\" r=\\\"4.5\\\"></circle><line x1=\\\"5.5\\\" y1=\\\"16\\\" x2=\\\"18.5\\\" y2=\\\"16\\\"></line>\",\"volume-1\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><path d=\\\"M15.54 8.46a5 5 0 0 1 0 7.07\\\"></path>\",\"volume-2\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><path d=\\\"M19.07 4.93a10 10 0 0 1 0 14.14M15.54 8.46a5 5 0 0 1 0 7.07\\\"></path>\",\"volume-x\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon><line x1=\\\"23\\\" y1=\\\"9\\\" x2=\\\"17\\\" y2=\\\"15\\\"></line><line x1=\\\"17\\\" y1=\\\"9\\\" x2=\\\"23\\\" y2=\\\"15\\\"></line>\",\"volume\":\"<polygon points=\\\"11 5 6 9 2 9 2 15 6 15 11 19 11 5\\\"></polygon>\",\"watch\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"7\\\"></circle><polyline points=\\\"12 9 12 12 13.5 13.5\\\"></polyline><path d=\\\"M16.51 17.35l-.35 3.83a2 2 0 0 1-2 1.82H9.83a2 2 0 0 1-2-1.82l-.35-3.83m.01-10.7l.35-3.83A2 2 0 0 1 9.83 1h4.35a2 2 0 0 1 2 1.82l.35 3.83\\\"></path>\",\"wifi-off\":\"<line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line><path d=\\\"M16.72 11.06A10.94 10.94 0 0 1 19 12.55\\\"></path><path d=\\\"M5 12.55a10.94 10.94 0 0 1 5.17-2.39\\\"></path><path d=\\\"M10.71 5.05A16 16 0 0 1 22.58 9\\\"></path><path d=\\\"M1.42 9a15.91 15.91 0 0 1 4.7-2.88\\\"></path><path d=\\\"M8.53 16.11a6 6 0 0 1 6.95 0\\\"></path><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12.01\\\" y2=\\\"20\\\"></line>\",\"wifi\":\"<path d=\\\"M5 12.55a11 11 0 0 1 14.08 0\\\"></path><path d=\\\"M1.42 9a16 16 0 0 1 21.16 0\\\"></path><path d=\\\"M8.53 16.11a6 6 0 0 1 6.95 0\\\"></path><line x1=\\\"12\\\" y1=\\\"20\\\" x2=\\\"12.01\\\" y2=\\\"20\\\"></line>\",\"wind\":\"<path d=\\\"M9.59 4.59A2 2 0 1 1 11 8H2m10.59 11.41A2 2 0 1 0 14 16H2m15.73-8.27A2.5 2.5 0 1 1 19.5 12H2\\\"></path>\",\"x-circle\":\"<circle cx=\\\"12\\\" cy=\\\"12\\\" r=\\\"10\\\"></circle><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"x-octagon\":\"<polygon points=\\\"7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86 7.86 2\\\"></polygon><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line>\",\"x-square\":\"<rect x=\\\"3\\\" y=\\\"3\\\" width=\\\"18\\\" height=\\\"18\\\" rx=\\\"2\\\" ry=\\\"2\\\"></rect><line x1=\\\"9\\\" y1=\\\"9\\\" x2=\\\"15\\\" y2=\\\"15\\\"></line><line x1=\\\"15\\\" y1=\\\"9\\\" x2=\\\"9\\\" y2=\\\"15\\\"></line>\",\"x\":\"<line x1=\\\"18\\\" y1=\\\"6\\\" x2=\\\"6\\\" y2=\\\"18\\\"></line><line x1=\\\"6\\\" y1=\\\"6\\\" x2=\\\"18\\\" y2=\\\"18\\\"></line>\",\"youtube\":\"<path d=\\\"M22.54 6.42a2.78 2.78 0 0 0-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 0 0-1.94 2A29 29 0 0 0 1 11.75a29 29 0 0 0 .46 5.33A2.78 2.78 0 0 0 3.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 0 0 1.94-2 29 29 0 0 0 .46-5.25 29 29 0 0 0-.46-5.33z\\\"></path><polygon points=\\\"9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02\\\"></polygon>\",\"zap-off\":\"<polyline points=\\\"12.41 6.75 13 2 10.57 4.92\\\"></polyline><polyline points=\\\"18.57 12.91 21 10 15.66 10\\\"></polyline><polyline points=\\\"8 8 3 14 12 14 11 22 16 16\\\"></polyline><line x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"23\\\" y2=\\\"23\\\"></line>\",\"zap\":\"<polygon points=\\\"13 2 3 14 12 14 11 22 21 10 12 10 13 2\\\"></polygon>\",\"zoom-in\":\"<circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line><line x1=\\\"11\\\" y1=\\\"8\\\" x2=\\\"11\\\" y2=\\\"14\\\"></line><line x1=\\\"8\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"11\\\"></line>\",\"zoom-out\":\"<circle cx=\\\"11\\\" cy=\\\"11\\\" r=\\\"8\\\"></circle><line x1=\\\"21\\\" y1=\\\"21\\\" x2=\\\"16.65\\\" y2=\\\"16.65\\\"></line><line x1=\\\"8\\\" y1=\\\"11\\\" x2=\\\"14\\\" y2=\\\"11\\\"></line>\"};\n\n/***/ }),\n\n/***/ \"./node_modules/classnames/dedupe.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/classnames/dedupe.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2016 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar classNames = (function () {\n\t\t// don't inherit from Object so we can skip hasOwnProperty check later\n\t\t// http://stackoverflow.com/questions/15518328/creating-js-object-with-object-createnull#answer-21079232\n\t\tfunction StorageObject() {}\n\t\tStorageObject.prototype = Object.create(null);\n\n\t\tfunction _parseArray (resultSet, array) {\n\t\t\tvar length = array.length;\n\n\t\t\tfor (var i = 0; i < length; ++i) {\n\t\t\t\t_parse(resultSet, array[i]);\n\t\t\t}\n\t\t}\n\n\t\tvar hasOwn = {}.hasOwnProperty;\n\n\t\tfunction _parseNumber (resultSet, num) {\n\t\t\tresultSet[num] = true;\n\t\t}\n\n\t\tfunction _parseObject (resultSet, object) {\n\t\t\tfor (var k in object) {\n\t\t\t\tif (hasOwn.call(object, k)) {\n\t\t\t\t\t// set value to false instead of deleting it to avoid changing object structure\n\t\t\t\t\t// https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#de-referencing-misconceptions\n\t\t\t\t\tresultSet[k] = !!object[k];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvar SPACE = /\\s+/;\n\t\tfunction _parseString (resultSet, str) {\n\t\t\tvar array = str.split(SPACE);\n\t\t\tvar length = array.length;\n\n\t\t\tfor (var i = 0; i < length; ++i) {\n\t\t\t\tresultSet[array[i]] = true;\n\t\t\t}\n\t\t}\n\n\t\tfunction _parse (resultSet, arg) {\n\t\t\tif (!arg) return;\n\t\t\tvar argType = typeof arg;\n\n\t\t\t// 'foo bar'\n\t\t\tif (argType === 'string') {\n\t\t\t\t_parseString(resultSet, arg);\n\n\t\t\t// ['foo', 'bar', ...]\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\t_parseArray(resultSet, arg);\n\n\t\t\t// { 'foo': true, ... }\n\t\t\t} else if (argType === 'object') {\n\t\t\t\t_parseObject(resultSet, arg);\n\n\t\t\t// '130'\n\t\t\t} else if (argType === 'number') {\n\t\t\t\t_parseNumber(resultSet, arg);\n\t\t\t}\n\t\t}\n\n\t\tfunction _classNames () {\n\t\t\t// don't leak arguments\n\t\t\t// https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n\t\t\tvar len = arguments.length;\n\t\t\tvar args = Array(len);\n\t\t\tfor (var i = 0; i < len; i++) {\n\t\t\t\targs[i] = arguments[i];\n\t\t\t}\n\n\t\t\tvar classSet = new StorageObject();\n\t\t\t_parseArray(classSet, args);\n\n\t\t\tvar list = [];\n\n\t\t\tfor (var k in classSet) {\n\t\t\t\tif (classSet[k]) {\n\t\t\t\t\tlist.push(k)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn list.join(' ');\n\t\t}\n\n\t\treturn _classNames;\n\t})();\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}());\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/es/array/from.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/es/array/from.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(/*! ../../modules/es.string.iterator */ \"./node_modules/core-js/modules/es.string.iterator.js\");\n__webpack_require__(/*! ../../modules/es.array.from */ \"./node_modules/core-js/modules/es.array.from.js\");\nvar path = __webpack_require__(/*! ../../internals/path */ \"./node_modules/core-js/internals/path.js\");\n\nmodule.exports = path.Array.from;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/a-function.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/a-function.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/an-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/an-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/array-from.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/array-from.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar bind = __webpack_require__(/*! ../internals/bind-context */ \"./node_modules/core-js/internals/bind-context.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ \"./node_modules/core-js/internals/call-with-safe-iteration-closing.js\");\nvar isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ \"./node_modules/core-js/internals/is-array-iterator-method.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar createProperty = __webpack_require__(/*! ../internals/create-property */ \"./node_modules/core-js/internals/create-property.js\");\nvar getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ \"./node_modules/core-js/internals/get-iterator-method.js\");\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iteratorMethod = getIteratorMethod(O);\n var length, result, step, iterator;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n result = new C();\n for (;!(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping\n ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true)\n : step.value\n );\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/array-includes.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/array-includes.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ \"./node_modules/core-js/internals/to-absolute-index.js\");\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\n// false -> Array#indexOf\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n// true -> Array#includes\n// https://tc39.github.io/ecma262/#sec-array.prototype.includes\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/bind-context.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/core-js/internals/bind-context.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar aFunction = __webpack_require__(/*! ../internals/a-function */ \"./node_modules/core-js/internals/a-function.js\");\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/call-with-safe-iteration-closing.js\":\n/*!****************************************************************************!*\\\n !*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***!\n \\****************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\":\n/*!**************************************************************************!*\\\n !*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***!\n \\**************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line no-throw-literal\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/classof-raw.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/classof-raw.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/classof.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/core-js/internals/classof.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classofRaw = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/copy-constructor-properties.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar ownKeys = __webpack_require__(/*! ../internals/own-keys */ \"./node_modules/core-js/internals/own-keys.js\");\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/correct-prototype-getter.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/correct-prototype-getter.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-iterator-constructor.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/core-js/internals/create-iterator-constructor.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js/internals/iterators-core.js\").IteratorPrototype;\nvar create = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-property-descriptor.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/core-js/internals/create-property-descriptor.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/create-property.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/create-property.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/define-iterator.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/define-iterator.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ \"./node_modules/core-js/internals/create-iterator-constructor.js\");\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ \"./node_modules/core-js/internals/object-set-prototype-of.js\");\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ \"./node_modules/core-js/internals/iterators-core.js\");\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n hide(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n hide(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/descriptors.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/descriptors.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !fails(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/document-create-element.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/document-create-element.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar exist = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return exist ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/enum-bug-keys.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/enum-bug-keys.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/export.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/export.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\").f;\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \"./node_modules/core-js/internals/copy-constructor-properties.js\");\nvar isForced = __webpack_require__(/*! ../internals/is-forced */ \"./node_modules/core-js/internals/is-forced.js\");\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n hide(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/fails.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/core-js/internals/fails.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/function-to-string.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/core-js/internals/function-to-string.js ***!\n \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\n\nmodule.exports = shared('native-function-to-string', Function.toString);\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/get-iterator-method.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/core-js/internals/get-iterator-method.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar classof = __webpack_require__(/*! ../internals/classof */ \"./node_modules/core-js/internals/classof.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/global.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/global.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var O = 'object';\nvar check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line no-undef\n check(typeof globalThis == O && globalThis) ||\n check(typeof window == O && window) ||\n check(typeof self == O && self) ||\n check(typeof global == O && global) ||\n // eslint-disable-next-line no-new-func\n Function('return this')();\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/has.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/internals/has.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/hidden-keys.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/hidden-keys.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/hide.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/hide.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/html.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/html.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nvar document = global.document;\n\nmodule.exports = document && document.documentElement;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/ie8-dom-define.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/ie8-dom-define.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/indexed-object.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/indexed-object.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\nvar classof = __webpack_require__(/*! ../internals/classof-raw */ \"./node_modules/core-js/internals/classof-raw.js\");\n\nvar split = ''.split;\n\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/internal-state.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/internal-state.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ \"./node_modules/core-js/internals/native-weak-map.js\");\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar objectHas = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP) {\n var store = new WeakMap();\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n hide(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-array-iterator-method.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/is-array-iterator-method.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar Iterators = __webpack_require__(/*! ../internals/iterators */ \"./node_modules/core-js/internals/iterators.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-forced.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/is-forced.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/is-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/is-pure.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/core-js/internals/is-pure.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = false;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/iterators-core.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/internals/iterators-core.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ \"./node_modules/core-js/internals/object-get-prototype-of.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nif (IteratorPrototype == undefined) IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nif (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/iterators.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/iterators.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = {};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/native-symbol.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/native-symbol.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/native-weak-map.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/core-js/internals/native-weak-map.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ \"./node_modules/core-js/internals/function-to-string.js\");\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-create.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/internals/object-create.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ \"./node_modules/core-js/internals/object-define-properties.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\nvar html = __webpack_require__(/*! ../internals/html */ \"./node_modules/core-js/internals/html.js\");\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\nvar Empty = function () { /* empty */ };\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];\n return createDict();\n};\n\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-define-properties.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-define-properties.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js/internals/object-keys.js\");\n\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var i = 0;\n var key;\n while (length > i) definePropertyModule.f(O, key = keys[i++], Properties[key]);\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-define-property.js\":\n/*!******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-define-property.js ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js/internals/ie8-dom-define.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\n\nvar nativeDefineProperty = Object.defineProperty;\n\nexports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\":\n/*!******************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***!\n \\******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js/internals/object-property-is-enumerable.js\");\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ \"./node_modules/core-js/internals/ie8-dom-define.js\");\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\nexports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-names.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\":\n/*!***************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***!\n \\***************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-get-prototype-of.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-get-prototype-of.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\nvar sharedKey = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\");\nvar CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ \"./node_modules/core-js/internals/correct-prototype-getter.js\");\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-keys-internal.js\":\n/*!****************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-keys-internal.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\nvar arrayIncludes = __webpack_require__(/*! ../internals/array-includes */ \"./node_modules/core-js/internals/array-includes.js\");\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar arrayIndexOf = arrayIncludes(false);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-keys.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/internals/object-keys.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ \"./node_modules/core-js/internals/object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-property-is-enumerable.js\":\n/*!*************************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***!\n \\*************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);\n\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/object-set-prototype-of.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/internals/object-set-prototype-of.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar validateSetPrototypeOfArguments = __webpack_require__(/*! ../internals/validate-set-prototype-of-arguments */ \"./node_modules/core-js/internals/validate-set-prototype-of-arguments.js\");\n\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var correctSetter = false;\n var test = {};\n var setter;\n try {\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n correctSetter = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n validateSetPrototypeOfArguments(O, proto);\n if (correctSetter) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/own-keys.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/core-js/internals/own-keys.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\");\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar Reflect = global.Reflect;\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/path.js\":\n/*!************************************************!*\\\n !*** ./node_modules/core-js/internals/path.js ***!\n \\************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/redefine.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/core-js/internals/redefine.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ \"./node_modules/core-js/internals/function-to-string.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else hide(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/require-object-coercible.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/internals/require-object-coercible.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/set-global.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/set-global.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\n\nmodule.exports = function (key, value) {\n try {\n hide(global, key, value);\n } catch (error) {\n global[key] = value;\n } return value;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/set-to-string-tag.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/set-to-string-tag.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f;\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/shared-key.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/shared-key.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/shared.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/core-js/internals/shared.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.1.3',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/string-at.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/string-at.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\n// CONVERT_TO_STRING: true -> String#at\n// CONVERT_TO_STRING: false -> String#codePointAt\nmodule.exports = function (that, pos, CONVERT_TO_STRING) {\n var S = String(requireObjectCoercible(that));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-absolute-index.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/to-absolute-index.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-indexed-object.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/to-indexed-object.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-integer.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/internals/to-integer.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-length.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/to-length.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-object.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/core-js/internals/to-object.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\n// `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/to-primitive.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/core-js/internals/to-primitive.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/uid.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/core-js/internals/uid.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/validate-set-prototype-of-arguments.js\":\n/*!*******************************************************************************!*\\\n !*** ./node_modules/core-js/internals/validate-set-prototype-of-arguments.js ***!\n \\*******************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nmodule.exports = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) {\n throw TypeError(\"Can't set \" + String(proto) + ' as a prototype');\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/internals/well-known-symbol.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/internals/well-known-symbol.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ \"./node_modules/core-js/internals/native-symbol.js\");\n\nvar Symbol = global.Symbol;\nvar store = shared('wks');\n\nmodule.exports = function (name) {\n return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]\n || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/modules/es.array.from.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/modules/es.array.from.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar $ = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\nvar from = __webpack_require__(/*! ../internals/array-from */ \"./node_modules/core-js/internals/array-from.js\");\nvar checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ \"./node_modules/core-js/internals/check-correctness-of-iteration.js\");\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.github.io/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/modules/es.string.iterator.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/core-js/modules/es.string.iterator.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar codePointAt = __webpack_require__(/*! ../internals/string-at */ \"./node_modules/core-js/internals/string-at.js\");\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\nvar defineIterator = __webpack_require__(/*! ../internals/define-iterator */ \"./node_modules/core-js/internals/define-iterator.js\");\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: String(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = codePointAt(string, index, true);\n state.index += point.length;\n return { value: point, done: false };\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/webpack/buildin/global.js\":\n/*!***********************************!*\\\n !*** (webpack)/buildin/global.js ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\r\n} catch (e) {\r\n\t// This works if the window reference is available\r\n\tif (typeof window === \"object\") g = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n\n/***/ \"./src/default-attrs.json\":\n/*!********************************!*\\\n !*** ./src/default-attrs.json ***!\n \\********************************/\n/*! exports provided: xmlns, width, height, viewBox, fill, stroke, stroke-width, stroke-linecap, stroke-linejoin, default */\n/***/ (function(module) {\n\nmodule.exports = {\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":24,\"height\":24,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"stroke-width\":2,\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\"};\n\n/***/ }),\n\n/***/ \"./src/icon.js\":\n/*!*********************!*\\\n !*** ./src/icon.js ***!\n \\*********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _dedupe = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n\nvar _dedupe2 = _interopRequireDefault(_dedupe);\n\nvar _defaultAttrs = __webpack_require__(/*! ./default-attrs.json */ \"./src/default-attrs.json\");\n\nvar _defaultAttrs2 = _interopRequireDefault(_defaultAttrs);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Icon = function () {\n function Icon(name, contents) {\n var tags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n _classCallCheck(this, Icon);\n\n this.name = name;\n this.contents = contents;\n this.tags = tags;\n this.attrs = _extends({}, _defaultAttrs2.default, { class: 'feather feather-' + name });\n }\n\n /**\n * Create an SVG string.\n * @param {Object} attrs\n * @returns {string}\n */\n\n\n _createClass(Icon, [{\n key: 'toSvg',\n value: function toSvg() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) });\n\n return '<svg ' + attrsToString(combinedAttrs) + '>' + this.contents + '</svg>';\n }\n\n /**\n * Return string representation of an `Icon`.\n *\n * Added for backward compatibility. If old code expects `feather.icons.<name>`\n * to be a string, `toString()` will get implicitly called.\n *\n * @returns {string}\n */\n\n }, {\n key: 'toString',\n value: function toString() {\n return this.contents;\n }\n }]);\n\n return Icon;\n}();\n\n/**\n * Convert attributes object to string of HTML attributes.\n * @param {Object} attrs\n * @returns {string}\n */\n\n\nfunction attrsToString(attrs) {\n return Object.keys(attrs).map(function (key) {\n return key + '=\"' + attrs[key] + '\"';\n }).join(' ');\n}\n\nexports.default = Icon;\n\n/***/ }),\n\n/***/ \"./src/icons.js\":\n/*!**********************!*\\\n !*** ./src/icons.js ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _icon = __webpack_require__(/*! ./icon */ \"./src/icon.js\");\n\nvar _icon2 = _interopRequireDefault(_icon);\n\nvar _icons = __webpack_require__(/*! ../dist/icons.json */ \"./dist/icons.json\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _tags = __webpack_require__(/*! ./tags.json */ \"./src/tags.json\");\n\nvar _tags2 = _interopRequireDefault(_tags);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = Object.keys(_icons2.default).map(function (key) {\n return new _icon2.default(key, _icons2.default[key], _tags2.default[key]);\n}).reduce(function (object, icon) {\n object[icon.name] = icon;\n return object;\n}, {});\n\n/***/ }),\n\n/***/ \"./src/index.js\":\n/*!**********************!*\\\n !*** ./src/index.js ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _toSvg = __webpack_require__(/*! ./to-svg */ \"./src/to-svg.js\");\n\nvar _toSvg2 = _interopRequireDefault(_toSvg);\n\nvar _replace = __webpack_require__(/*! ./replace */ \"./src/replace.js\");\n\nvar _replace2 = _interopRequireDefault(_replace);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default };\n\n/***/ }),\n\n/***/ \"./src/replace.js\":\n/*!************************!*\\\n !*** ./src/replace.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* eslint-env browser */\n\n\nvar _dedupe = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n\nvar _dedupe2 = _interopRequireDefault(_dedupe);\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Replace all HTML elements that have a `data-feather` attribute with SVG markup\n * corresponding to the element's `data-feather` attribute value.\n * @param {Object} attrs\n */\nfunction replace() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (typeof document === 'undefined') {\n throw new Error('`feather.replace()` only works in a browser environment.');\n }\n\n var elementsToReplace = document.querySelectorAll('[data-feather]');\n\n Array.from(elementsToReplace).forEach(function (element) {\n return replaceElement(element, attrs);\n });\n}\n\n/**\n * Replace a single HTML element with SVG markup\n * corresponding to the element's `data-feather` attribute value.\n * @param {HTMLElement} element\n * @param {Object} attrs\n */\nfunction replaceElement(element) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var elementAttrs = getAttrs(element);\n var name = elementAttrs['data-feather'];\n delete elementAttrs['data-feather'];\n\n var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) }));\n var svgDocument = new DOMParser().parseFromString(svgString, 'image/svg+xml');\n var svgElement = svgDocument.querySelector('svg');\n\n element.parentNode.replaceChild(svgElement, element);\n}\n\n/**\n * Get the attributes of an HTML element.\n * @param {HTMLElement} element\n * @returns {Object}\n */\nfunction getAttrs(element) {\n return Array.from(element.attributes).reduce(function (attrs, attr) {\n attrs[attr.name] = attr.value;\n return attrs;\n }, {});\n}\n\nexports.default = replace;\n\n/***/ }),\n\n/***/ \"./src/tags.json\":\n/*!***********************!*\\\n !*** ./src/tags.json ***!\n \\***********************/\n/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, at-sign, award, aperture, bell, bell-off, bluetooth, book-open, book, bookmark, briefcase, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, coffee, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, film, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, global, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, life-bouy, linkedin, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, play, play-circle, plus, plus-circle, plus-square, pocket, power, radio, rewind, rss, save, search, send, settings, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slash, sliders, smile, speaker, star, sun, sunrise, sunset, tag, target, terminal, thumbs-down, thumbs-up, toggle-left, toggle-right, trash, trash-2, triangle, truck, twitter, umbrella, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, default */\n/***/ (function(module) {\n\nmodule.exports = {\"activity\":[\"pulse\",\"health\",\"action\",\"motion\"],\"airplay\":[\"stream\",\"cast\",\"mirroring\"],\"alert-circle\":[\"warning\"],\"alert-octagon\":[\"warning\"],\"alert-triangle\":[\"warning\"],\"at-sign\":[\"mention\"],\"award\":[\"achievement\",\"badge\"],\"aperture\":[\"camera\",\"photo\"],\"bell\":[\"alarm\",\"notification\"],\"bell-off\":[\"alarm\",\"notification\",\"silent\"],\"bluetooth\":[\"wireless\"],\"book-open\":[\"read\"],\"book\":[\"read\",\"dictionary\",\"booklet\",\"magazine\"],\"bookmark\":[\"read\",\"clip\",\"marker\",\"tag\"],\"briefcase\":[\"work\",\"bag\",\"baggage\",\"folder\"],\"clipboard\":[\"copy\"],\"clock\":[\"time\",\"watch\",\"alarm\"],\"cloud-drizzle\":[\"weather\",\"shower\"],\"cloud-lightning\":[\"weather\",\"bolt\"],\"cloud-rain\":[\"weather\"],\"cloud-snow\":[\"weather\",\"blizzard\"],\"cloud\":[\"weather\"],\"codepen\":[\"logo\"],\"codesandbox\":[\"logo\"],\"coffee\":[\"drink\",\"cup\",\"mug\",\"tea\",\"cafe\",\"hot\",\"beverage\"],\"command\":[\"keyboard\",\"cmd\"],\"compass\":[\"navigation\",\"safari\",\"travel\"],\"copy\":[\"clone\",\"duplicate\"],\"corner-down-left\":[\"arrow\"],\"corner-down-right\":[\"arrow\"],\"corner-left-down\":[\"arrow\"],\"corner-left-up\":[\"arrow\"],\"corner-right-down\":[\"arrow\"],\"corner-right-up\":[\"arrow\"],\"corner-up-left\":[\"arrow\"],\"corner-up-right\":[\"arrow\"],\"credit-card\":[\"purchase\",\"payment\",\"cc\"],\"crop\":[\"photo\",\"image\"],\"crosshair\":[\"aim\",\"target\"],\"database\":[\"storage\"],\"delete\":[\"remove\"],\"disc\":[\"album\",\"cd\",\"dvd\",\"music\"],\"dollar-sign\":[\"currency\",\"money\",\"payment\"],\"droplet\":[\"water\"],\"edit\":[\"pencil\",\"change\"],\"edit-2\":[\"pencil\",\"change\"],\"edit-3\":[\"pencil\",\"change\"],\"eye\":[\"view\",\"watch\"],\"eye-off\":[\"view\",\"watch\"],\"external-link\":[\"outbound\"],\"facebook\":[\"logo\"],\"fast-forward\":[\"music\"],\"figma\":[\"logo\",\"design\",\"tool\"],\"film\":[\"movie\",\"video\"],\"folder-minus\":[\"directory\"],\"folder-plus\":[\"directory\"],\"folder\":[\"directory\"],\"framer\":[\"logo\",\"design\",\"tool\"],\"frown\":[\"emoji\",\"face\",\"bad\",\"sad\",\"emotion\"],\"gift\":[\"present\",\"box\",\"birthday\",\"party\"],\"git-branch\":[\"code\",\"version control\"],\"git-commit\":[\"code\",\"version control\"],\"git-merge\":[\"code\",\"version control\"],\"git-pull-request\":[\"code\",\"version control\"],\"github\":[\"logo\",\"version control\"],\"gitlab\":[\"logo\",\"version control\"],\"global\":[\"world\",\"browser\",\"language\",\"translate\"],\"hard-drive\":[\"computer\",\"server\"],\"hash\":[\"hashtag\",\"number\",\"pound\"],\"headphones\":[\"music\",\"audio\"],\"heart\":[\"like\",\"love\"],\"help-circle\":[\"question mark\"],\"hexagon\":[\"shape\",\"node.js\",\"logo\"],\"home\":[\"house\"],\"image\":[\"picture\"],\"inbox\":[\"email\"],\"instagram\":[\"logo\",\"camera\"],\"key\":[\"password\",\"login\",\"authentication\"],\"life-bouy\":[\"help\",\"life ring\",\"support\"],\"linkedin\":[\"logo\"],\"lock\":[\"security\",\"password\"],\"log-in\":[\"sign in\",\"arrow\"],\"log-out\":[\"sign out\",\"arrow\"],\"mail\":[\"email\"],\"map-pin\":[\"location\",\"navigation\",\"travel\",\"marker\"],\"map\":[\"location\",\"navigation\",\"travel\"],\"maximize\":[\"fullscreen\"],\"maximize-2\":[\"fullscreen\",\"arrows\"],\"meh\":[\"emoji\",\"face\",\"neutral\",\"emotion\"],\"menu\":[\"bars\",\"navigation\",\"hamburger\"],\"message-circle\":[\"comment\",\"chat\"],\"message-square\":[\"comment\",\"chat\"],\"mic-off\":[\"record\"],\"mic\":[\"record\"],\"minimize\":[\"exit fullscreen\"],\"minimize-2\":[\"exit fullscreen\",\"arrows\"],\"monitor\":[\"tv\"],\"moon\":[\"dark\",\"night\"],\"more-horizontal\":[\"ellipsis\"],\"more-vertical\":[\"ellipsis\"],\"mouse-pointer\":[\"arrow\",\"cursor\"],\"move\":[\"arrows\"],\"navigation\":[\"location\",\"travel\"],\"navigation-2\":[\"location\",\"travel\"],\"octagon\":[\"stop\"],\"package\":[\"box\"],\"paperclip\":[\"attachment\"],\"pause\":[\"music\",\"stop\"],\"pause-circle\":[\"music\",\"stop\"],\"pen-tool\":[\"vector\",\"drawing\"],\"play\":[\"music\",\"start\"],\"play-circle\":[\"music\",\"start\"],\"plus\":[\"add\",\"new\"],\"plus-circle\":[\"add\",\"new\"],\"plus-square\":[\"add\",\"new\"],\"pocket\":[\"logo\",\"save\"],\"power\":[\"on\",\"off\"],\"radio\":[\"signal\"],\"rewind\":[\"music\"],\"rss\":[\"feed\",\"subscribe\"],\"save\":[\"floppy disk\"],\"search\":[\"find\",\"magnifier\",\"magnifying glass\"],\"send\":[\"message\",\"mail\",\"paper airplane\"],\"settings\":[\"cog\",\"edit\",\"gear\",\"preferences\"],\"shield\":[\"security\"],\"shield-off\":[\"security\"],\"shopping-bag\":[\"ecommerce\",\"cart\",\"purchase\",\"store\"],\"shopping-cart\":[\"ecommerce\",\"cart\",\"purchase\",\"store\"],\"shuffle\":[\"music\"],\"skip-back\":[\"music\"],\"skip-forward\":[\"music\"],\"slash\":[\"ban\",\"no\"],\"sliders\":[\"settings\",\"controls\"],\"smile\":[\"emoji\",\"face\",\"happy\",\"good\",\"emotion\"],\"speaker\":[\"music\"],\"star\":[\"bookmark\",\"favorite\",\"like\"],\"sun\":[\"brightness\",\"weather\",\"light\"],\"sunrise\":[\"weather\"],\"sunset\":[\"weather\"],\"tag\":[\"label\"],\"target\":[\"bullseye\"],\"terminal\":[\"code\",\"command line\"],\"thumbs-down\":[\"dislike\",\"bad\"],\"thumbs-up\":[\"like\",\"good\"],\"toggle-left\":[\"on\",\"off\",\"switch\"],\"toggle-right\":[\"on\",\"off\",\"switch\"],\"trash\":[\"garbage\",\"delete\",\"remove\"],\"trash-2\":[\"garbage\",\"delete\",\"remove\"],\"triangle\":[\"delta\"],\"truck\":[\"delivery\",\"van\",\"shipping\"],\"twitter\":[\"logo\"],\"umbrella\":[\"rain\",\"weather\"],\"video-off\":[\"camera\",\"movie\",\"film\"],\"video\":[\"camera\",\"movie\",\"film\"],\"voicemail\":[\"phone\"],\"volume\":[\"music\",\"sound\",\"mute\"],\"volume-1\":[\"music\",\"sound\"],\"volume-2\":[\"music\",\"sound\"],\"volume-x\":[\"music\",\"sound\",\"mute\"],\"watch\":[\"clock\",\"time\"],\"wind\":[\"weather\",\"air\"],\"x-circle\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\"],\"x-octagon\":[\"delete\",\"stop\",\"alert\",\"warning\",\"times\"],\"x-square\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\"],\"x\":[\"cancel\",\"close\",\"delete\",\"remove\",\"times\"],\"youtube\":[\"logo\",\"video\",\"play\"],\"zap-off\":[\"flash\",\"camera\",\"lightning\"],\"zap\":[\"flash\",\"camera\",\"lightning\"]};\n\n/***/ }),\n\n/***/ \"./src/to-svg.js\":\n/*!***********************!*\\\n !*** ./src/to-svg.js ***!\n \\***********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _icons = __webpack_require__(/*! ./icons */ \"./src/icons.js\");\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Create an SVG string.\n * @deprecated\n * @param {string} name\n * @param {Object} attrs\n * @returns {string}\n */\nfunction toSvg(name) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n console.warn('feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead.');\n\n if (!name) {\n throw new Error('The required `key` (icon name) parameter is missing.');\n }\n\n if (!_icons2.default[name]) {\n throw new Error('No icon matching \\'' + name + '\\'. See the complete list of icons at https://feathericons.com');\n }\n\n return _icons2.default[name].toSvg(attrs);\n}\n\nexports.default = toSvg;\n\n/***/ }),\n\n/***/ 0:\n/*!**************************************************!*\\\n !*** multi core-js/es/array/from ./src/index.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(/*! core-js/es/array/from */\"./node_modules/core-js/es/array/from.js\");\nmodule.exports = __webpack_require__(/*! /home/travis/build/feathericons/feather/src/index.js */\"./src/index.js\");\n\n\n/***/ })\n\n/******/ });\n});\n//# sourceMappingURL=feather.js.map","import feather from \"feather-icons\";\nconst getIcon = (icon, size) => feather.icons[icon].toSvg({height:size||\"16\", width:size||\"16\"});\nexport default getIcon;","<script>\nimport getIcon from \"./icon\";\n\nexport let size = 18;\nexport let icon = \"\";\nexport let style = \"\";\nexport let color = \"var(--secondary100)\";\nexport let hoverColor = \"var(--secondary75)\";\nexport let attributes = {};\n\nlet currentAttributes = [];\nconst addAttributes = (node, attributes) => {\n\n const add = (_attributes) => {\n const attrs = [];\n for(let attr in _attributes) {\n node.setAttribute(attr, _attributes[attr]);\n attrs.push(\"uk-toggle\")\n }\n currentAttributes = attrs;\n }\n\n add(attributes);\n\n return {\n // should implement update method\n update(attributes) {\n for(let attr of currentAttributes) {\n node.removeAttribute(attr)\n }\n add(attributes);\n },\n destroy() {}\n }\n}\n\n</script>\n\n<button style=\"{style}{style ? \";\" : \"\"} color:{color}; --hovercolor:{hoverColor}\"\n on:click\n use:addAttributes={attributes}>\n {@html getIcon(icon, size)}\n</button>\n\n\n<style>\n\nbutton {\n border-style: none;\n background-color: rgba(0,0,0,0);\n cursor: pointer;\n outline:none;\n}\n\nbutton:hover {\n color: var(--hovercolor);\n}\n\nbutton:active {\n outline:none;\n}\n\n</style>","<script>\n\nimport { \n last, \n sortBy, \n filter, \n map,\n uniqWith,\n isEqual,\n trimCharsStart,\n trimChars,\n join,\n includes\n} from \"lodash/fp\";\n\nimport { pipe } from \"../common/core\";\nimport getIcon from \"../common/icon\";\nimport { store } from \"../builderStore\";\n\nexport let components = []\nexport let thisLevel = \"\";\n\nlet pathPartsThisLevel;\nlet componentsThisLevel;\nlet subfolders;\n\nlet expandedFolders = [];\n\nconst joinPath = join(\"/\");\n\nconst normalizedName = name => pipe(name, [\n trimCharsStart(\"./\"),\n trimCharsStart(\"~/\"),\n trimCharsStart(\"../\"),\n trimChars(\" \")\n ]);\n\n\nconst isOnThisLevel = (c) => \n normalizedName(c.name).split(\"/\").length === pathPartsThisLevel\n &&\n (!thisLevel || normalizedName(c.name).startsWith(normalizedName(thisLevel)));\n\nconst notOnThisLevel = (c) => !isOnThisLevel(c);\n\nconst isInSubfolder = (subfolder, c) => \n normalizedName(c.name).startsWith(\n trimCharsStart(\"/\")(\n joinPath([thisLevel, subfolder])));\n\nconst isOnNextLevel = (c) => \n normalizedName(c.name).split(\"/\").length === pathPartsThisLevel + 1\n\nconst lastPartOfName = (c) => \n last(c.name.split(\"/\"))\n\nconst subFolder = (c) => {\n const cname = normalizedName(c.name);\n const folderName = cname.substring(thisLevel.length, cname.length).split(\"/\")[0];\n\n return ({\n name: folderName,\n isExpanded: includes(folderName)(expandedFolders),\n path: thisLevel + \"/\" + folderName\n });\n}\n\nconst subComponents = (subfolder) => pipe(components, [\n filter(c => isInSubfolder(subfolder, c))\n ]);\n\nconst expandFolder = folder => {\n const expandedFolder = {...folder};\n if(expandedFolder.isExpanded) {\n expandedFolder.isExpanded = false;\n expandedFolders = filter(f => f.name !== folder.name)(expandedFolders);\n } else {\n expandedFolder.isExpanded = true;\n expandedFolders.push(folder.name);\n }\n const newFolders = [...subfolders];\n newFolders.splice(\n newFolders.indexOf(folder),\n 1,\n expandedFolder);\n subfolders = newFolders;\n \n}\n\nconst isComponentSelected = (type, current,c) =>\n type===\"component\"\n && current \n && current.name === c.name\n\nconst isFolderSelected = (current, folder) => \n isInSubfolder(current, folder)\n\n\n\n$: {\n pathPartsThisLevel = !thisLevel \n ? 1\n : normalizedName(thisLevel).split(\"/\").length + 1;\n\n componentsThisLevel = \n pipe(components, [\n filter(isOnThisLevel),\n map(c => ({component:c, title:lastPartOfName(c)})),\n sortBy(\"title\")\n ]);\n\n subfolders = \n pipe(components, [\n filter(notOnThisLevel),\n sortBy(\"name\"),\n map(subFolder),\n uniqWith((f1,f2) => f1.path === f2.path)\n ]);\n}\n\n</script>\n\n<div class=\"root\" style={`padding-left: calc(10px * ${pathPartsThisLevel})`}>\n \n {#each subfolders as folder}\n <div class=\"hierarchy-item folder\"\n on:click|stopPropagation={() => expandFolder(folder)}>\n <span>{@html getIcon(folder.isExpanded ? \"chevron-down\" : \"chevron-right\", \"16\")}</span>\n <span class=\"title\" class:currentfolder={$store.currentFrontEndItem && isInSubfolder(folder.name, $store.currentFrontEndItem)}>{folder.name}</span>\n {#if folder.isExpanded}\n <svelte:self components={subComponents(folder.name)} \n thisLevel={folder.path} />\n {/if}\n </div>\n {/each}\n\n {#each componentsThisLevel as component}\n <div class=\"hierarchy-item component\" class:selected={isComponentSelected($store.currentFrontEndType, $store.currentFrontEndItem, component.component)}\n on:click|stopPropagation={() => store.setCurrentComponent(component.component.name)}>\n <span>{@html getIcon(\"circle\", \"7\")}</span>\n <span class=\"title\">{component.title}</span>\n </div>\n {/each}\n\n</div>\n\n<style>\n\n.root {\n color: var(--secondary50);\n font-size: .9rem;\n font-weight: bold;\n}\n\n.hierarchy-item {\n cursor: pointer;\n padding: 5px 0px;\n}\n\n.hierarchy-item:hover {\n color: var(--secondary);\n}\n\n.component {\n margin-left: 5px;\n}\n\n.currentfolder {\n color: var(--secondary100);\n}\n\n.selected {\n color: var(--primary100);\n font-weight: bold;\n}\n\n.title {\n margin-left: 10px;\n}\n\n\n</style>","<script>\nimport { store } from \"../builderStore\";\nimport getIcon from \"../common/icon\";\n\nconst getPage = (s, name) => {\n const props = s.pages[name];\n return ({name, props});\n}\n\n</script>\n\n<div class=\"root\">\n <div class=\"hierarchy-item component\" class:selected={$store.currentFrontEndType === \"page\" && $store.currentPageName === \"main\"}\n on:click|stopPropagation={() => store.setCurrentPage(\"main\")}>\n <span>{@html getIcon(\"circle\", \"7\")}</span>\n <span class=\"title\">Main</span>\n </div>\n\n <div class=\"hierarchy-item component\" class:selected={$store.currentFrontEndType === \"page\" && $store.currentPageName === \"unauthenticated\"}\n on:click|stopPropagation={() => store.setCurrentPage(\"unauthenticated\")}>\n <span>{@html getIcon(\"circle\", \"7\")}</span>\n <span class=\"title\">Login</span>\n </div>\n\n</div>\n\n<style>\n\n.root {\n padding-bottom: 10px;\n padding-left: 10px;\n font-size: .9rem;\n color: var(--secondary50);\n font-weight: bold;\n}\n\n.hierarchy-item {\n cursor: pointer;\n padding: 5px 0px;\n}\n\n.hierarchy-item:hover {\n color: var(--secondary100);\n}\n\n.component {\n margin-left: 5px;\n}\n\n.selected {\n color: var(--primary100);\n font-weight: bold;\n}\n\n\n.title {\n margin-left: 10px;\n}\n\n</style>","<script>\n\nexport let checked=false;\nexport let label=\"\";\n\n</script>\n\n<input class=\"uk-checkbox\" type=\"checkbox\" bind:checked on:change />{label}\n\n<style>\n\ninput {\n margin-right:7px;\n}\n\n</style>","<script>\nexport let text = \"\";\nexport let label = \"\";\nexport let width = \"medium\";\nexport let size = \"small\";\nexport let margin = true;\nexport let infoText = \"\";\nexport let hasError = false;\nexport let disabled = false;\n</script>\n\n<div class:uk-margin={margin}>\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n <input class=\"uk-input uk-form-width-{width} uk-form-{size}\"\n class:uk-form-danger={hasError}\n on:change\n bind:value={text} \n {disabled}>\n </div>\n {#if infoText}\n <div class=\"info-text\">{infoText}</div>\n {/if}\n</div>\n\n<style>\n.info-text {\n font-size: 0.7rem;\n color: var(--secondary50);\n}\n</style>\n\n","<script>\nimport {createEventDispatcher} from \"svelte\";\n\nexport let selected;\nexport let label;\nexport let options;\nexport let valueMember;\nexport let textMember;\nexport let multiple=false;\nexport let width = \"medium\";\nexport let size = \"small\";\n\nconst dispatch =createEventDispatcher();\n\n\n</script>\n\n\n<div class=\"uk-margin\">\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n {#if multiple}\n \n <select class=\"uk-select uk-form-width-{width} uk-form-{size}\" multiple bind:value={selected} on:change>\n {#each options as option}\n <option value={!valueMember ? option : valueMember(option)}>{!textMember ? option : textMember(option)}</option>\n {/each}\n </select>\n\n {:else}\n\n <select class=\"uk-select uk-form-width-{width} uk-form-{size}\" bind:value={selected} on:change>\n {#each options as option}\n <option value={!valueMember ? option : valueMember(option)}>{!textMember ? option : textMember(option)}</option>\n {/each}\n </select>\n {/if}\n </div>\n</div>\n","// shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\nif (typeof global.setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n}\nif (typeof global.clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n}\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\nexport function nextTick(fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nexport var title = 'browser';\nexport var platform = 'browser';\nexport var browser = true;\nexport var env = {};\nexport var argv = [];\nexport var version = ''; // empty string to avoid regexp issues\nexport var versions = {};\nexport var release = {};\nexport var config = {};\n\nfunction noop() {}\n\nexport var on = noop;\nexport var addListener = noop;\nexport var once = noop;\nexport var off = noop;\nexport var removeListener = noop;\nexport var removeAllListeners = noop;\nexport var emit = noop;\n\nexport function binding(name) {\n throw new Error('process.binding is not supported');\n}\n\nexport function cwd () { return '/' }\nexport function chdir (dir) {\n throw new Error('process.chdir is not supported');\n};\nexport function umask() { return 0; }\n\n// from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\nvar performance = global.performance || {}\nvar performanceNow =\n performance.now ||\n performance.mozNow ||\n performance.msNow ||\n performance.oNow ||\n performance.webkitNow ||\n function(){ return (new Date()).getTime() }\n\n// generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\nexport function hrtime(previousTimestamp){\n var clocktime = performanceNow.call(performance)*1e-3\n var seconds = Math.floor(clocktime)\n var nanoseconds = Math.floor((clocktime%1)*1e9)\n if (previousTimestamp) {\n seconds = seconds - previousTimestamp[0]\n nanoseconds = nanoseconds - previousTimestamp[1]\n if (nanoseconds<0) {\n seconds--\n nanoseconds += 1e9\n }\n }\n return [seconds,nanoseconds]\n}\n\nvar startTime = new Date();\nexport function uptime() {\n var currentTime = new Date();\n var dif = currentTime - startTime;\n return dif / 1000;\n}\n\nexport default {\n nextTick: nextTick,\n title: title,\n browser: browser,\n env: env,\n argv: argv,\n version: version,\n versions: versions,\n on: on,\n addListener: addListener,\n once: once,\n off: off,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners,\n emit: emit,\n binding: binding,\n cwd: cwd,\n chdir: chdir,\n umask: umask,\n hrtime: hrtime,\n platform: platform,\n release: release,\n config: config,\n uptime: uptime\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.\nimport process from 'process';\nvar formatRegExp = /%[sdj%]/g;\nexport function format(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexport function deprecate(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexport function debuglog(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = 0;\n debugs[set] = function() {\n var msg = format.apply(null, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nexport function inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n _extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexport function isArray(ar) {\n return Array.isArray(ar);\n}\n\nexport function isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nexport function isNull(arg) {\n return arg === null;\n}\n\nexport function isNullOrUndefined(arg) {\n return arg == null;\n}\n\nexport function isNumber(arg) {\n return typeof arg === 'number';\n}\n\nexport function isString(arg) {\n return typeof arg === 'string';\n}\n\nexport function isSymbol(arg) {\n return typeof arg === 'symbol';\n}\n\nexport function isUndefined(arg) {\n return arg === void 0;\n}\n\nexport function isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\n\nexport function isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nexport function isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\n\nexport function isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\n\nexport function isFunction(arg) {\n return typeof arg === 'function';\n}\n\nexport function isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nexport function isBuffer(maybeBuf) {\n return Buffer.isBuffer(maybeBuf);\n}\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexport function log() {\n console.log('%s - %s', timestamp(), format.apply(null, arguments));\n}\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nimport inherits from './inherits';\nexport {inherits}\n\nexport function _extend(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nexport default {\n inherits: inherits,\n _extend: _extend,\n log: log,\n isBuffer: isBuffer,\n isPrimitive: isPrimitive,\n isFunction: isFunction,\n isError: isError,\n isDate: isDate,\n isObject: isObject,\n isRegExp: isRegExp,\n isUndefined: isUndefined,\n isSymbol: isSymbol,\n isString: isString,\n isNumber: isNumber,\n isNullOrUndefined: isNullOrUndefined,\n isNull: isNull,\n isBoolean: isBoolean,\n isArray: isArray,\n inspect: inspect,\n deprecate: deprecate,\n format: format,\n debuglog: debuglog\n}\n","import {\r\n isString\r\n} from \"lodash/fp\";\r\n\r\nimport {\r\n BB_STATE_BINDINGPATH, BB_STATE_FALLBACK, \r\n BB_STATE_BINDINGSOURCE\r\n} from \"@budibase/client/src/state/isState\";\r\n\r\nexport const isBinding = value => \r\n !isString(value) \r\n && value\r\n && isString(value[BB_STATE_BINDINGPATH])\r\n && value[BB_STATE_BINDINGPATH].length > 0;\r\n\r\nexport const setBinding = ({path, fallback, source}, binding={} ) => {\r\n if(isNonEmptyString(path)) binding[BB_STATE_BINDINGPATH] = path;\r\n if(isNonEmptyString(fallback)) binding[BB_STATE_FALLBACK] = fallback;\r\n binding[BB_STATE_BINDINGSOURCE] = source || \"store\";\r\n return binding\r\n}\r\n\r\nexport const getBinding = binding => ({\r\n path: binding[BB_STATE_BINDINGPATH] || \"\",\r\n fallback: binding[BB_STATE_FALLBACK] || \"\",\r\n source: binding[BB_STATE_BINDINGSOURCE] || \"store\"\r\n});\r\n\r\nconst isNonEmptyString = s => isString(s) && s.length > 0;","import { types } from \"./types\";\nimport { \n createProps, arrayElementComponentName \n} from \"./createProps\";\nimport { isString } from \"util\";\nimport { \n includes, filter, map, keys, \n flatten, flattenDeep, each,\n indexOf, isUndefined\n} from \"lodash/fp\";\nimport { common } from \"../../../../core/src\";\nimport {\n isBinding\n} from \"../../common/binding\";\n\nconst pipe = common.$;\n\nconst makeError = (errors, propName, stack) => (message) =>\n errors.push({\n stack,\n propName, \n error:message});\n\nexport const recursivelyValidate = (rootProps, getComponent, stack=[]) => {\n\n const getComponentPropsDefinition = componentName => {\n if(componentName.includes(\":\")) {\n const [parentComponent, arrayProp] = componentName.split(\":\");\n return getComponent(parentComponent)[arrayProp].elementDefinition;\n }\n return getComponent(componentName);\n }\n\n if(!rootProps._component) {\n const errs = [];\n makeError(errs, \"_component\", stack)(\"Component is not set\");\n return errs;\n // this would break everything else anyway\n }\n\n const propsDef = getComponentPropsDefinition(\n rootProps._component);\n\n const getPropsDefArray = (def) => pipe(def, [\n keys,\n map(k => def[k].name \n ? expandPropDef(def[k])\n : ({\n ...expandPropDef(def[k]), \n name:k }))\n ]);\n\n const propsDefArray = getPropsDefArray(propsDef);\n\n const errors = validateProps(\n propsDef,\n rootProps,\n stack,\n true);\n\n const validateChildren = (_defArray, _props, _stack) => pipe(_defArray, [\n filter(d => d.type === \"component\"),\n map(d => recursivelyValidate(\n _props[d.name], \n getComponentPropsDefinition, \n [..._stack, d.name])),\n flatten\n ]);\n\n const childErrors = validateChildren(\n propsDefArray, rootProps, stack);\n\n const childArrayErrors = pipe(propsDefArray, [\n filter(d => d.type === \"array\"),\n map(d => pipe(rootProps[d.name], [ \n map(elementProps => pipe(d.elementDefinition, [\n getPropsDefArray,\n arr => validateChildren(\n arr, \n elementProps,\n [...stack, \n `${d.name}[${indexOf(elementProps)(rootProps[d.name])}]`]) \n ])) \n ]))\n ]);\n\n return flattenDeep([errors, ...childErrors, ...childArrayErrors]);\n}\n\nconst expandPropDef = propDef => {\n const p = isString(propDef)\n ? types[propDef].defaultDefinition()\n : propDef;\n if(p.type === \"array\" && isString(p.elementDefinition)) {\n p.elementDefinition = types[p.elementDefinition].defaultDefinition()\n }\n return p;\n}\n\n\nexport const validateProps = (propsDefinition, props, stack=[], isFinal=true, isArrayElement=false) => {\n\n const errors = [];\n\n if(isFinal && !props._component && !isArrayElement) {\n makeError(errors, \"_component\", stack)(\"Component is not set\");\n return errors;\n // this would break everything else anyway\n }\n\n for(let propDefName in propsDefinition) {\n \n if(propDefName === \"_component\") continue;\n\n const propDef = expandPropDef(propsDefinition[propDefName]);\n\n const type = types[propDef.type];\n\n const error = makeError(errors, propDefName, stack); \n\n const propValue = props[propDefName];\n\n // component declarations dont need to define al props.\n if(!isFinal && isUndefined(propValue)) continue;\n\n if(isFinal && propDef.required && propValue) {\n error(`Property ${propDefName} is required`);\n continue;\n } \n\n if(isBinding(propValue)) {\n if(propDef.type === \"array\" \n || propDef.type === \"component\"\n || propDef.type === \"event\") {\n error(`Cannot apply binding to type ${propDef.type}`);\n continue;\n }\n }\n else if(!type.isOfType(propValue)) {\n error(`Property ${propDefName} is not of type ${propDef.type}. Actual value ${propValue}`)\n continue;\n }\n\n if(propDef.type === \"array\") {\n let index = 0;\n for(let arrayItem of propValue) {\n const arrayErrs = validateProps(\n propDef.elementDefinition,\n arrayItem,\n [...stack, `${propDefName}[${index}]`],\n isFinal,\n true\n )\n for(let arrErr of arrayErrs) {\n errors.push(arrErr);\n }\n index++;\n } \n }\n\n if(propDef.type === \"options\" \n && propValue\n && !isBinding(propValue)\n && !includes(propValue)(propDef.options)) {\n error(`Property ${propDefName} is not one of allowed options. Acutal value is ${propValue}`);\n }\n\n }\n\n return errors;\n}\n\nexport const validatePropsDefinition = (propsDefinition) => {\n const { errors } = createProps(\"dummy_component_name\", propsDefinition);\n \n\n // arrar props without elementDefinition\n pipe(propsDefinition, [\n keys,\n map(k => ({\n propDef:propsDefinition[k],\n propName:k\n })),\n filter(d => d.propDef.type === \"array\" && !d.propDef.elementDefinition),\n each(d => makeError(errors, d.propName)(`${d.propName} does not have a definition for it's item props`))\n ]);\n\n const arrayPropValidationErrors = pipe(propsDefinition, [\n keys,\n map(k => propsDefinition[k]),\n filter(d => d.type === \"array\" && d.elementDefinition),\n map(d => validatePropsDefinition(d.elementDefinition)),\n flatten\n ]);\n\n pipe(propsDefinition, [\n keys,\n map(k => ({\n propDef:propsDefinition[k],\n propName:k\n })),\n filter(d => d.propDef.type === \"options\"\n && (!d.propDef.options || d.propDef.options.length === 0)),\n each(d => makeError(errors, d.propName)(`${d.propName} does not have any options`))\n ]);\n\n return [...errors, ...arrayPropValidationErrors] \n\n}\n\n","import {\n split,\n last\n} from \"lodash/fp\";\n\nimport { pipe } from \"../../common/core\";\n\nexport const splitName = fullname => {\n const componentName = pipe(fullname, [\n split(\"/\"),\n last\n ]);\n\n const libName =fullname.substring(\n 0, fullname.length - componentName.length - 1);\n\n return {libName, componentName}; \n}","<script>\r\nimport {\r\n isRootComponent\r\n} from \"./pagesParsing/searchComponents\"\r\nimport { splitName } from \"./pagesParsing/splitRootComponentName.js\"\r\nimport { store } from \"../builderStore\";\r\nimport {\r\n groupBy, keys, find, sortBy\r\n} from \"lodash/fp\";\r\nimport { pipe } from \"../common/core\";\r\n\r\nexport let onComponentChosen;\r\nexport let onGeneratorChosen;\r\nexport let allowGenerators;\r\n\r\nlet derivedComponents=[];\r\nlet componentLibraries=[];\r\n\r\nconst addRootComponent = (c, all, isGenerator) => {\r\n const { libName } = splitName(c.name);\r\n let group = find(r => r.libName === libName)(all);\r\n\r\n if(!group) {\r\n group = {\r\n libName,\r\n components: [],\r\n generators: []\r\n };\r\n\r\n all.push(group);\r\n } \r\n \r\n if(isGenerator) {\r\n group.generators.push(c)\r\n } else {\r\n group.components.push(c)\r\n }\r\n \r\n};\r\n\r\nstore.subscribe(s => {\r\n\r\n const newComponentLibraries = [];\r\n const newDerivedComponents = [];\r\n\r\n for(let comp of sortBy([\"name\"])(s.allComponents)) {\r\n if(isRootComponent(comp)) {\r\n addRootComponent(\r\n comp, \r\n newComponentLibraries, \r\n false);\r\n } else {\r\n newDerivedComponents.push(comp);\r\n }\r\n }\r\n\r\n for(let generator of s.generators) {\r\n addRootComponent(\r\n generator, \r\n newComponentLibraries, \r\n true);\r\n }\r\n\r\n derivedComponents = sortBy([\"name\"])(newDerivedComponents);\r\n componentLibraries = newComponentLibraries;\r\n});\r\n\r\n\r\n\r\n\r\n\r\n</script>\r\n\r\n{#each componentLibraries as lib}\r\n<div class=\"library-header\">\r\n {lib.libName}\r\n</div>\r\n\r\n<div class=\"library-container\">\r\n\r\n {#if allowGenerators}\r\n <div class=\"inner-header\">\r\n Generators\r\n </div>\r\n\r\n {#each lib.generators as generator}\r\n\r\n <div class=\"component\"\r\n on:click={() => onGeneratorChosen(generator)}>\r\n <div class=\"name\">\r\n {splitName(generator.name).componentName}\r\n </div>\r\n <div class=\"description\">\r\n {generator.description}\r\n </div>\r\n </div>\r\n\r\n {/each}\r\n {/if}\r\n\r\n <div class=\"inner-header\">\r\n Components\r\n </div>\r\n\r\n {#each lib.components as component}\r\n\r\n <div class=\"component\"\r\n on:click={() => onComponentChosen(component)}>\r\n <div class=\"name\">\r\n {splitName(component.name).componentName}\r\n </div>\r\n <div class=\"description\">\r\n {component.description}\r\n </div>\r\n </div>\r\n\r\n {/each}\r\n\r\n</div>\r\n\r\n{/each}\r\n\r\n\r\n<div class=\"library-header\">\r\n My Components\r\n</div>\r\n\r\n<div class=\"library-container\">\r\n\r\n {#each derivedComponents as component}\r\n\r\n <div class=\"component\"\r\n on:click={() => onComponentChosen(component)}>\r\n <div class=\"name\">\r\n {component.name}\r\n </div>\r\n <div class=\"description\">\r\n {component.description}\r\n </div>\r\n </div>\r\n\r\n {/each}\r\n\r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.library-header {\r\n font-size: 1.1em;\r\n border-color: var(--primary25);\r\n border-width: 1px 0px;\r\n border-style: solid;\r\n background-color: var(--primary10);\r\n padding: 5px 0;\r\n}\r\n\r\n.library-container {\r\n padding: 0 0 10px 10px;\r\n}\r\n\r\n.inner-header {\r\n font-size: 0.9em;\r\n font-weight: bold;\r\n margin-top: 7px;\r\n margin-bottom: 3px;\r\n}\r\n\r\n.component {\r\n padding: 2px 0px;\r\n cursor: pointer;\r\n}\r\n\r\n.component:hover {\r\n background-color: var(--lightslate);\r\n}\r\n\r\n.component > .name {\r\n color: var(--secondary100);\r\n display: inline-block;\r\n}\r\n\r\n.component > .description {\r\n font-size: 0.8em;\r\n color: var(--secondary75);\r\n display: inline-block;\r\n margin-left: 10px;\r\n}\r\n\r\n\r\n\r\n</style>\r\n","<script>\nexport let style=\"\";\n</script>\n\n<div class=\"root\" style={style}>\n <slot />\n</div>\n\n<style>\n\n.root {\n display: flex;\n}\n\n.root:last-child {\n border-radius: 0 var(--borderradius) var(--borderradius) 0;\n}\n\n.root:first-child {\n border-radius: var(--borderradius) 0 0 var(--borderradius); \n}\n\n.root:not(:first-child):not(:last-child) {\n border-radius: 0;\n}\n\n</style>","/*! UIkit 3.2.0 | http://www.getuikit.com | (c) 2014 - 2019 YOOtheme | MIT License */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define('uikit', factory) :\n (global = global || self, global.UIkit = factory());\n}(this, function () { 'use strict';\n\n var objPrototype = Object.prototype;\n var hasOwnProperty = objPrototype.hasOwnProperty;\n\n function hasOwn(obj, key) {\n return hasOwnProperty.call(obj, key);\n }\n\n var hyphenateCache = {};\n var hyphenateRe = /([a-z\\d])([A-Z])/g;\n\n function hyphenate(str) {\n\n if (!(str in hyphenateCache)) {\n hyphenateCache[str] = str\n .replace(hyphenateRe, '$1-$2')\n .toLowerCase();\n }\n\n return hyphenateCache[str];\n }\n\n var camelizeRe = /-(\\w)/g;\n\n function camelize(str) {\n return str.replace(camelizeRe, toUpper);\n }\n\n function toUpper(_, c) {\n return c ? c.toUpperCase() : '';\n }\n\n function ucfirst(str) {\n return str.length ? toUpper(null, str.charAt(0)) + str.slice(1) : '';\n }\n\n var strPrototype = String.prototype;\n var startsWithFn = strPrototype.startsWith || function (search) { return this.lastIndexOf(search, 0) === 0; };\n\n function startsWith(str, search) {\n return startsWithFn.call(str, search);\n }\n\n var endsWithFn = strPrototype.endsWith || function (search) { return this.substr(-search.length) === search; };\n\n function endsWith(str, search) {\n return endsWithFn.call(str, search);\n }\n\n var arrPrototype = Array.prototype;\n\n var includesFn = function (search, i) { return ~this.indexOf(search, i); };\n var includesStr = strPrototype.includes || includesFn;\n var includesArray = arrPrototype.includes || includesFn;\n\n function includes(obj, search) {\n return obj && (isString(obj) ? includesStr : includesArray).call(obj, search);\n }\n\n var findIndexFn = arrPrototype.findIndex || function (predicate) {\n var arguments$1 = arguments;\n\n for (var i = 0; i < this.length; i++) {\n if (predicate.call(arguments$1[1], this[i], i, this)) {\n return i;\n }\n }\n return -1;\n };\n\n function findIndex(array, predicate) {\n return findIndexFn.call(array, predicate);\n }\n\n var isArray = Array.isArray;\n\n function isFunction(obj) {\n return typeof obj === 'function';\n }\n\n function isObject(obj) {\n return obj !== null && typeof obj === 'object';\n }\n\n function isPlainObject(obj) {\n return isObject(obj) && Object.getPrototypeOf(obj) === objPrototype;\n }\n\n function isWindow(obj) {\n return isObject(obj) && obj === obj.window;\n }\n\n function isDocument(obj) {\n return isObject(obj) && obj.nodeType === 9;\n }\n\n function isJQuery(obj) {\n return isObject(obj) && !!obj.jquery;\n }\n\n function isNode(obj) {\n return obj instanceof Node || isObject(obj) && obj.nodeType >= 1;\n }\n\n var toString = objPrototype.toString;\n function isNodeCollection(obj) {\n return toString.call(obj).match(/^\\[object (NodeList|HTMLCollection)\\]$/);\n }\n\n function isBoolean(value) {\n return typeof value === 'boolean';\n }\n\n function isString(value) {\n return typeof value === 'string';\n }\n\n function isNumber(value) {\n return typeof value === 'number';\n }\n\n function isNumeric(value) {\n return isNumber(value) || isString(value) && !isNaN(value - parseFloat(value));\n }\n\n function isEmpty(obj) {\n return !(isArray(obj)\n ? obj.length\n : isObject(obj)\n ? Object.keys(obj).length\n : false\n );\n }\n\n function isUndefined(value) {\n return value === void 0;\n }\n\n function toBoolean(value) {\n return isBoolean(value)\n ? value\n : value === 'true' || value === '1' || value === ''\n ? true\n : value === 'false' || value === '0'\n ? false\n : value;\n }\n\n function toNumber(value) {\n var number = Number(value);\n return !isNaN(number) ? number : false;\n }\n\n function toFloat(value) {\n return parseFloat(value) || 0;\n }\n\n function toNode(element) {\n return isNode(element) || isWindow(element) || isDocument(element)\n ? element\n : isNodeCollection(element) || isJQuery(element)\n ? element[0]\n : isArray(element)\n ? toNode(element[0])\n : null;\n }\n\n function toNodes(element) {\n return isNode(element)\n ? [element]\n : isNodeCollection(element)\n ? arrPrototype.slice.call(element)\n : isArray(element)\n ? element.map(toNode).filter(Boolean)\n : isJQuery(element)\n ? element.toArray()\n : [];\n }\n\n function toList(value) {\n return isArray(value)\n ? value\n : isString(value)\n ? value.split(/,(?![^(]*\\))/).map(function (value) { return isNumeric(value)\n ? toNumber(value)\n : toBoolean(value.trim()); })\n : [value];\n }\n\n function toMs(time) {\n return !time\n ? 0\n : endsWith(time, 'ms')\n ? toFloat(time)\n : toFloat(time) * 1000;\n }\n\n function isEqual(value, other) {\n return value === other\n || isObject(value)\n && isObject(other)\n && Object.keys(value).length === Object.keys(other).length\n && each(value, function (val, key) { return val === other[key]; });\n }\n\n function swap(value, a, b) {\n return value.replace(new RegExp((a + \"|\" + b), 'mg'), function (match) {\n return match === a ? b : a;\n });\n }\n\n var assign = Object.assign || function (target) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n target = Object(target);\n for (var i = 0; i < args.length; i++) {\n var source = args[i];\n if (source !== null) {\n for (var key in source) {\n if (hasOwn(source, key)) {\n target[key] = source[key];\n }\n }\n }\n }\n return target;\n };\n\n function last(array) {\n return array[array.length - 1];\n }\n\n function each(obj, cb) {\n for (var key in obj) {\n if (false === cb(obj[key], key)) {\n return false;\n }\n }\n return true;\n }\n\n function sortBy(array, prop) {\n return array.sort(function (ref, ref$1) {\n var propA = ref[prop]; if ( propA === void 0 ) propA = 0;\n var propB = ref$1[prop]; if ( propB === void 0 ) propB = 0;\n\n return propA > propB\n ? 1\n : propB > propA\n ? -1\n : 0;\n }\n );\n }\n\n function uniqueBy(array, prop) {\n var seen = new Set();\n return array.filter(function (ref) {\n var check = ref[prop];\n\n return seen.has(check)\n ? false\n : seen.add(check) || true;\n } // IE 11 does not return the Set object\n );\n }\n\n function clamp(number, min, max) {\n if ( min === void 0 ) min = 0;\n if ( max === void 0 ) max = 1;\n\n return Math.min(Math.max(toNumber(number) || 0, min), max);\n }\n\n function noop() {}\n\n function intersectRect(r1, r2) {\n return r1.left < r2.right &&\n r1.right > r2.left &&\n r1.top < r2.bottom &&\n r1.bottom > r2.top;\n }\n\n function pointInRect(point, rect) {\n return point.x <= rect.right &&\n point.x >= rect.left &&\n point.y <= rect.bottom &&\n point.y >= rect.top;\n }\n\n var Dimensions = {\n\n ratio: function(dimensions, prop, value) {\n var obj;\n\n\n var aProp = prop === 'width' ? 'height' : 'width';\n\n return ( obj = {}, obj[aProp] = dimensions[prop] ? Math.round(value * dimensions[aProp] / dimensions[prop]) : dimensions[aProp], obj[prop] = value, obj );\n },\n\n contain: function(dimensions, maxDimensions) {\n var this$1 = this;\n\n dimensions = assign({}, dimensions);\n\n each(dimensions, function (_, prop) { return dimensions = dimensions[prop] > maxDimensions[prop]\n ? this$1.ratio(dimensions, prop, maxDimensions[prop])\n : dimensions; }\n );\n\n return dimensions;\n },\n\n cover: function(dimensions, maxDimensions) {\n var this$1 = this;\n\n dimensions = this.contain(dimensions, maxDimensions);\n\n each(dimensions, function (_, prop) { return dimensions = dimensions[prop] < maxDimensions[prop]\n ? this$1.ratio(dimensions, prop, maxDimensions[prop])\n : dimensions; }\n );\n\n return dimensions;\n }\n\n };\n\n function attr(element, name, value) {\n\n if (isObject(name)) {\n for (var key in name) {\n attr(element, key, name[key]);\n }\n return;\n }\n\n if (isUndefined(value)) {\n element = toNode(element);\n return element && element.getAttribute(name);\n } else {\n toNodes(element).forEach(function (element) {\n\n if (isFunction(value)) {\n value = value.call(element, attr(element, name));\n }\n\n if (value === null) {\n removeAttr(element, name);\n } else {\n element.setAttribute(name, value);\n }\n });\n }\n\n }\n\n function hasAttr(element, name) {\n return toNodes(element).some(function (element) { return element.hasAttribute(name); });\n }\n\n function removeAttr(element, name) {\n element = toNodes(element);\n name.split(' ').forEach(function (name) { return element.forEach(function (element) { return element.hasAttribute(name) && element.removeAttribute(name); }\n ); }\n );\n }\n\n function data(element, attribute) {\n for (var i = 0, attrs = [attribute, (\"data-\" + attribute)]; i < attrs.length; i++) {\n if (hasAttr(element, attrs[i])) {\n return attr(element, attrs[i]);\n }\n }\n }\n\n /* global DocumentTouch */\n\n var isIE = /msie|trident/i.test(window.navigator.userAgent);\n var isRtl = attr(document.documentElement, 'dir') === 'rtl';\n\n var hasTouchEvents = 'ontouchstart' in window;\n var hasPointerEvents = window.PointerEvent;\n var hasTouch = hasTouchEvents\n || window.DocumentTouch && document instanceof DocumentTouch\n || navigator.maxTouchPoints; // IE >=11\n\n var pointerDown = hasPointerEvents ? 'pointerdown' : hasTouchEvents ? 'touchstart' : 'mousedown';\n var pointerMove = hasPointerEvents ? 'pointermove' : hasTouchEvents ? 'touchmove' : 'mousemove';\n var pointerUp = hasPointerEvents ? 'pointerup' : hasTouchEvents ? 'touchend' : 'mouseup';\n var pointerEnter = hasPointerEvents ? 'pointerenter' : hasTouchEvents ? '' : 'mouseenter';\n var pointerLeave = hasPointerEvents ? 'pointerleave' : hasTouchEvents ? '' : 'mouseleave';\n var pointerCancel = hasPointerEvents ? 'pointercancel' : 'touchcancel';\n\n function query(selector, context) {\n return toNode(selector) || find(selector, getContext(selector, context));\n }\n\n function queryAll(selector, context) {\n var nodes = toNodes(selector);\n return nodes.length && nodes || findAll(selector, getContext(selector, context));\n }\n\n function getContext(selector, context) {\n if ( context === void 0 ) context = document;\n\n return isContextSelector(selector) || isDocument(context)\n ? context\n : context.ownerDocument;\n }\n\n function find(selector, context) {\n return toNode(_query(selector, context, 'querySelector'));\n }\n\n function findAll(selector, context) {\n return toNodes(_query(selector, context, 'querySelectorAll'));\n }\n\n function _query(selector, context, queryFn) {\n if ( context === void 0 ) context = document;\n\n\n if (!selector || !isString(selector)) {\n return null;\n }\n\n selector = selector.replace(contextSanitizeRe, '$1 *');\n\n var removes;\n\n if (isContextSelector(selector)) {\n\n removes = [];\n\n selector = splitSelector(selector).map(function (selector, i) {\n\n var ctx = context;\n\n if (selector[0] === '!') {\n\n var selectors = selector.substr(1).trim().split(' ');\n ctx = closest(context.parentNode, selectors[0]);\n selector = selectors.slice(1).join(' ').trim();\n\n }\n\n if (selector[0] === '-') {\n\n var selectors$1 = selector.substr(1).trim().split(' ');\n var prev = (ctx || context).previousElementSibling;\n ctx = matches(prev, selector.substr(1)) ? prev : null;\n selector = selectors$1.slice(1).join(' ');\n\n }\n\n if (!ctx) {\n return null;\n }\n\n if (!ctx.id) {\n ctx.id = \"uk-\" + (Date.now()) + i;\n removes.push(function () { return removeAttr(ctx, 'id'); });\n }\n\n return (\"#\" + (escape(ctx.id)) + \" \" + selector);\n\n }).filter(Boolean).join(',');\n\n context = document;\n\n }\n\n try {\n\n return context[queryFn](selector);\n\n } catch (e) {\n\n return null;\n\n } finally {\n\n removes && removes.forEach(function (remove) { return remove(); });\n\n }\n\n }\n\n var contextSelectorRe = /(^|[^\\\\],)\\s*[!>+~-]/;\n var contextSanitizeRe = /([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;\n\n function isContextSelector(selector) {\n return isString(selector) && selector.match(contextSelectorRe);\n }\n\n var selectorRe = /.*?[^\\\\](?:,|$)/g;\n\n function splitSelector(selector) {\n return selector.match(selectorRe).map(function (selector) { return selector.replace(/,$/, '').trim(); });\n }\n\n var elProto = Element.prototype;\n var matchesFn = elProto.matches || elProto.webkitMatchesSelector || elProto.msMatchesSelector;\n\n function matches(element, selector) {\n return toNodes(element).some(function (element) { return matchesFn.call(element, selector); });\n }\n\n var closestFn = elProto.closest || function (selector) {\n var ancestor = this;\n\n do {\n\n if (matches(ancestor, selector)) {\n return ancestor;\n }\n\n ancestor = ancestor.parentNode;\n\n } while (ancestor && ancestor.nodeType === 1);\n };\n\n function closest(element, selector) {\n\n if (startsWith(selector, '>')) {\n selector = selector.slice(1);\n }\n\n return isNode(element)\n ? closestFn.call(element, selector)\n : toNodes(element).map(function (element) { return closest(element, selector); }).filter(Boolean);\n }\n\n function parents(element, selector) {\n var elements = [];\n element = toNode(element);\n\n while ((element = element.parentNode) && element.nodeType === 1) {\n if (matches(element, selector)) {\n elements.push(element);\n }\n }\n\n return elements;\n }\n\n var escapeFn = window.CSS && CSS.escape || function (css) { return css.replace(/([^\\x7f-\\uFFFF\\w-])/g, function (match) { return (\"\\\\\" + match); }); };\n function escape(css) {\n return isString(css) ? escapeFn.call(null, css) : '';\n }\n\n var voidElements = {\n area: true,\n base: true,\n br: true,\n col: true,\n embed: true,\n hr: true,\n img: true,\n input: true,\n keygen: true,\n link: true,\n menuitem: true,\n meta: true,\n param: true,\n source: true,\n track: true,\n wbr: true\n };\n function isVoidElement(element) {\n return toNodes(element).some(function (element) { return voidElements[element.tagName.toLowerCase()]; });\n }\n\n function isVisible(element) {\n return toNodes(element).some(function (element) { return element.offsetWidth || element.offsetHeight || element.getClientRects().length; });\n }\n\n var selInput = 'input,select,textarea,button';\n function isInput(element) {\n return toNodes(element).some(function (element) { return matches(element, selInput); });\n }\n\n function filter(element, selector) {\n return toNodes(element).filter(function (element) { return matches(element, selector); });\n }\n\n function within(element, selector) {\n return !isString(selector)\n ? element === selector || (isDocument(selector)\n ? selector.documentElement\n : toNode(selector)).contains(toNode(element)) // IE 11 document does not implement contains\n : matches(element, selector) || closest(element, selector);\n }\n\n function on() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n\n var ref = getArgs(args);\n var targets = ref[0];\n var type = ref[1];\n var selector = ref[2];\n var listener = ref[3];\n var useCapture = ref[4];\n\n targets = toEventTargets(targets);\n\n if (listener.length > 1) {\n listener = detail(listener);\n }\n\n if (selector) {\n listener = delegate(targets, selector, listener);\n }\n\n if (useCapture && useCapture.self) {\n listener = selfFilter(listener);\n }\n\n useCapture = useCaptureFilter(useCapture);\n\n type.split(' ').forEach(function (type) { return targets.forEach(function (target) { return target.addEventListener(type, listener, useCapture); }\n ); }\n );\n return function () { return off(targets, type, listener, useCapture); };\n }\n\n function off(targets, type, listener, useCapture) {\n if ( useCapture === void 0 ) useCapture = false;\n\n useCapture = useCaptureFilter(useCapture);\n targets = toEventTargets(targets);\n type.split(' ').forEach(function (type) { return targets.forEach(function (target) { return target.removeEventListener(type, listener, useCapture); }\n ); }\n );\n }\n\n function once() {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n\n var ref = getArgs(args);\n var element = ref[0];\n var type = ref[1];\n var selector = ref[2];\n var listener = ref[3];\n var useCapture = ref[4];\n var condition = ref[5];\n var off = on(element, type, selector, function (e) {\n var result = !condition || condition(e);\n if (result) {\n off();\n listener(e, result);\n }\n }, useCapture);\n\n return off;\n }\n\n function trigger(targets, event, detail) {\n return toEventTargets(targets).reduce(function (notCanceled, target) { return notCanceled && target.dispatchEvent(createEvent(event, true, true, detail)); }\n , true);\n }\n\n function createEvent(e, bubbles, cancelable, detail) {\n if ( bubbles === void 0 ) bubbles = true;\n if ( cancelable === void 0 ) cancelable = false;\n\n if (isString(e)) {\n var event = document.createEvent('CustomEvent'); // IE 11\n event.initCustomEvent(e, bubbles, cancelable, detail);\n e = event;\n }\n\n return e;\n }\n\n function getArgs(args) {\n if (isFunction(args[2])) {\n args.splice(2, 0, false);\n }\n return args;\n }\n\n function delegate(delegates, selector, listener) {\n var this$1 = this;\n\n return function (e) {\n\n delegates.forEach(function (delegate) {\n\n var current = selector[0] === '>'\n ? findAll(selector, delegate).reverse().filter(function (element) { return within(e.target, element); })[0]\n : closest(e.target, selector);\n\n if (current) {\n e.delegate = delegate;\n e.current = current;\n\n listener.call(this$1, e);\n }\n\n });\n\n };\n }\n\n function detail(listener) {\n return function (e) { return isArray(e.detail) ? listener.apply(void 0, [e].concat(e.detail)) : listener(e); };\n }\n\n function selfFilter(listener) {\n return function (e) {\n if (e.target === e.currentTarget || e.target === e.current) {\n return listener.call(null, e);\n }\n };\n }\n\n function useCaptureFilter(options) {\n return options && isIE && !isBoolean(options)\n ? !!options.capture\n : options;\n }\n\n function isEventTarget(target) {\n return target && 'addEventListener' in target;\n }\n\n function toEventTarget(target) {\n return isEventTarget(target) ? target : toNode(target);\n }\n\n function toEventTargets(target) {\n return isArray(target)\n ? target.map(toEventTarget).filter(Boolean)\n : isString(target)\n ? findAll(target)\n : isEventTarget(target)\n ? [target]\n : toNodes(target);\n }\n\n function isTouch(e) {\n return e.pointerType === 'touch' || !!e.touches;\n }\n\n function getEventPos(e, prop) {\n if ( prop === void 0 ) prop = 'client';\n\n var touches = e.touches;\n var changedTouches = e.changedTouches;\n var ref = touches && touches[0] || changedTouches && changedTouches[0] || e;\n var x = ref[(prop + \"X\")];\n var y = ref[(prop + \"Y\")];\n\n return {x: x, y: y};\n }\n\n /* global setImmediate */\n\n var Promise = 'Promise' in window ? window.Promise : PromiseFn;\n\n var Deferred = function() {\n var this$1 = this;\n\n this.promise = new Promise(function (resolve, reject) {\n this$1.reject = reject;\n this$1.resolve = resolve;\n });\n };\n\n /**\n * Promises/A+ polyfill v1.1.4 (https://github.com/bramstein/promis)\n */\n\n var RESOLVED = 0;\n var REJECTED = 1;\n var PENDING = 2;\n\n var async = 'setImmediate' in window ? setImmediate : setTimeout;\n\n function PromiseFn(executor) {\n\n this.state = PENDING;\n this.value = undefined;\n this.deferred = [];\n\n var promise = this;\n\n try {\n executor(\n function (x) {\n promise.resolve(x);\n },\n function (r) {\n promise.reject(r);\n }\n );\n } catch (e) {\n promise.reject(e);\n }\n }\n\n PromiseFn.reject = function (r) {\n return new PromiseFn(function (resolve, reject) {\n reject(r);\n });\n };\n\n PromiseFn.resolve = function (x) {\n return new PromiseFn(function (resolve, reject) {\n resolve(x);\n });\n };\n\n PromiseFn.all = function all(iterable) {\n return new PromiseFn(function (resolve, reject) {\n var result = [];\n var count = 0;\n\n if (iterable.length === 0) {\n resolve(result);\n }\n\n function resolver(i) {\n return function (x) {\n result[i] = x;\n count += 1;\n\n if (count === iterable.length) {\n resolve(result);\n }\n };\n }\n\n for (var i = 0; i < iterable.length; i += 1) {\n PromiseFn.resolve(iterable[i]).then(resolver(i), reject);\n }\n });\n };\n\n PromiseFn.race = function race(iterable) {\n return new PromiseFn(function (resolve, reject) {\n for (var i = 0; i < iterable.length; i += 1) {\n PromiseFn.resolve(iterable[i]).then(resolve, reject);\n }\n });\n };\n\n var p = PromiseFn.prototype;\n\n p.resolve = function resolve(x) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (x === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n var called = false;\n\n try {\n var then = x && x.then;\n\n if (x !== null && isObject(x) && isFunction(then)) {\n then.call(\n x,\n function (x) {\n if (!called) {\n promise.resolve(x);\n }\n called = true;\n },\n function (r) {\n if (!called) {\n promise.reject(r);\n }\n called = true;\n }\n );\n return;\n }\n } catch (e) {\n if (!called) {\n promise.reject(e);\n }\n return;\n }\n\n promise.state = RESOLVED;\n promise.value = x;\n promise.notify();\n }\n };\n\n p.reject = function reject(reason) {\n var promise = this;\n\n if (promise.state === PENDING) {\n if (reason === promise) {\n throw new TypeError('Promise settled with itself.');\n }\n\n promise.state = REJECTED;\n promise.value = reason;\n promise.notify();\n }\n };\n\n p.notify = function notify() {\n var this$1 = this;\n\n async(function () {\n if (this$1.state !== PENDING) {\n while (this$1.deferred.length) {\n var ref = this$1.deferred.shift();\n var onResolved = ref[0];\n var onRejected = ref[1];\n var resolve = ref[2];\n var reject = ref[3];\n\n try {\n if (this$1.state === RESOLVED) {\n if (isFunction(onResolved)) {\n resolve(onResolved.call(undefined, this$1.value));\n } else {\n resolve(this$1.value);\n }\n } else if (this$1.state === REJECTED) {\n if (isFunction(onRejected)) {\n resolve(onRejected.call(undefined, this$1.value));\n } else {\n reject(this$1.value);\n }\n }\n } catch (e) {\n reject(e);\n }\n }\n }\n });\n };\n\n p.then = function then(onResolved, onRejected) {\n var this$1 = this;\n\n return new PromiseFn(function (resolve, reject) {\n this$1.deferred.push([onResolved, onRejected, resolve, reject]);\n this$1.notify();\n });\n };\n\n p.catch = function (onRejected) {\n return this.then(undefined, onRejected);\n };\n\n function ajax(url, options) {\n return new Promise(function (resolve, reject) {\n\n var env = assign({\n data: null,\n method: 'GET',\n headers: {},\n xhr: new XMLHttpRequest(),\n beforeSend: noop,\n responseType: ''\n }, options);\n\n env.beforeSend(env);\n\n var xhr = env.xhr;\n\n for (var prop in env) {\n if (prop in xhr) {\n try {\n\n xhr[prop] = env[prop];\n\n } catch (e) {}\n }\n }\n\n xhr.open(env.method.toUpperCase(), url);\n\n for (var header in env.headers) {\n xhr.setRequestHeader(header, env.headers[header]);\n }\n\n on(xhr, 'load', function () {\n\n if (xhr.status === 0 || xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n resolve(xhr);\n } else {\n reject(assign(Error(xhr.statusText), {\n xhr: xhr,\n status: xhr.status\n }));\n }\n\n });\n\n on(xhr, 'error', function () { return reject(assign(Error('Network Error'), {xhr: xhr})); });\n on(xhr, 'timeout', function () { return reject(assign(Error('Network Timeout'), {xhr: xhr})); });\n\n xhr.send(env.data);\n });\n }\n\n function getImage(src, srcset, sizes) {\n\n return new Promise(function (resolve, reject) {\n var img = new Image();\n\n img.onerror = reject;\n img.onload = function () { return resolve(img); };\n\n sizes && (img.sizes = sizes);\n srcset && (img.srcset = srcset);\n img.src = src;\n });\n\n }\n\n function ready(fn) {\n\n if (document.readyState !== 'loading') {\n fn();\n return;\n }\n\n var unbind = on(document, 'DOMContentLoaded', function () {\n unbind();\n fn();\n });\n }\n\n function index(element, ref) {\n return ref\n ? toNodes(element).indexOf(toNode(ref))\n : toNodes((element = toNode(element)) && element.parentNode.children).indexOf(element);\n }\n\n function getIndex(i, elements, current, finite) {\n if ( current === void 0 ) current = 0;\n if ( finite === void 0 ) finite = false;\n\n\n elements = toNodes(elements);\n\n var length = elements.length;\n\n i = isNumeric(i)\n ? toNumber(i)\n : i === 'next'\n ? current + 1\n : i === 'previous'\n ? current - 1\n : index(elements, i);\n\n if (finite) {\n return clamp(i, 0, length - 1);\n }\n\n i %= length;\n\n return i < 0 ? i + length : i;\n }\n\n function empty(element) {\n element = $(element);\n element.innerHTML = '';\n return element;\n }\n\n function html(parent, html) {\n parent = $(parent);\n return isUndefined(html)\n ? parent.innerHTML\n : append(parent.hasChildNodes() ? empty(parent) : parent, html);\n }\n\n function prepend(parent, element) {\n\n parent = $(parent);\n\n if (!parent.hasChildNodes()) {\n return append(parent, element);\n } else {\n return insertNodes(element, function (element) { return parent.insertBefore(element, parent.firstChild); });\n }\n }\n\n function append(parent, element) {\n parent = $(parent);\n return insertNodes(element, function (element) { return parent.appendChild(element); });\n }\n\n function before(ref, element) {\n ref = $(ref);\n return insertNodes(element, function (element) { return ref.parentNode.insertBefore(element, ref); });\n }\n\n function after(ref, element) {\n ref = $(ref);\n return insertNodes(element, function (element) { return ref.nextSibling\n ? before(ref.nextSibling, element)\n : append(ref.parentNode, element); }\n );\n }\n\n function insertNodes(element, fn) {\n element = isString(element) ? fragment(element) : element;\n return element\n ? 'length' in element\n ? toNodes(element).map(fn)\n : fn(element)\n : null;\n }\n\n function remove(element) {\n toNodes(element).map(function (element) { return element.parentNode && element.parentNode.removeChild(element); });\n }\n\n function wrapAll(element, structure) {\n\n structure = toNode(before(element, structure));\n\n while (structure.firstChild) {\n structure = structure.firstChild;\n }\n\n append(structure, element);\n\n return structure;\n }\n\n function wrapInner(element, structure) {\n return toNodes(toNodes(element).map(function (element) { return element.hasChildNodes ? wrapAll(toNodes(element.childNodes), structure) : append(element, structure); }\n ));\n }\n\n function unwrap(element) {\n toNodes(element)\n .map(function (element) { return element.parentNode; })\n .filter(function (value, index, self) { return self.indexOf(value) === index; })\n .forEach(function (parent) {\n before(parent, parent.childNodes);\n remove(parent);\n });\n }\n\n var fragmentRe = /^\\s*<(\\w+|!)[^>]*>/;\n var singleTagRe = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;\n\n function fragment(html) {\n\n var matches = singleTagRe.exec(html);\n if (matches) {\n return document.createElement(matches[1]);\n }\n\n var container = document.createElement('div');\n if (fragmentRe.test(html)) {\n container.insertAdjacentHTML('beforeend', html.trim());\n } else {\n container.textContent = html;\n }\n\n return container.childNodes.length > 1 ? toNodes(container.childNodes) : container.firstChild;\n\n }\n\n function apply(node, fn) {\n\n if (!node || node.nodeType !== 1) {\n return;\n }\n\n fn(node);\n node = node.firstElementChild;\n while (node) {\n apply(node, fn);\n node = node.nextElementSibling;\n }\n }\n\n function $(selector, context) {\n return !isString(selector)\n ? toNode(selector)\n : isHtml(selector)\n ? toNode(fragment(selector))\n : find(selector, context);\n }\n\n function $$(selector, context) {\n return !isString(selector)\n ? toNodes(selector)\n : isHtml(selector)\n ? toNodes(fragment(selector))\n : findAll(selector, context);\n }\n\n function isHtml(str) {\n return str[0] === '<' || str.match(/^\\s*</);\n }\n\n function addClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n apply$1(element, args, 'add');\n }\n\n function removeClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n apply$1(element, args, 'remove');\n }\n\n function removeClasses(element, cls) {\n attr(element, 'class', function (value) { return (value || '').replace(new RegExp((\"\\\\b\" + cls + \"\\\\b\"), 'g'), ''); });\n }\n\n function replaceClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n args[0] && removeClass(element, args[0]);\n args[1] && addClass(element, args[1]);\n }\n\n function hasClass(element, cls) {\n return cls && toNodes(element).some(function (element) { return element.classList.contains(cls.split(' ')[0]); });\n }\n\n function toggleClass(element) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n\n if (!args.length) {\n return;\n }\n\n args = getArgs$1(args);\n\n var force = !isString(last(args)) ? args.pop() : []; // in iOS 9.3 force === undefined evaluates to false\n\n args = args.filter(Boolean);\n\n toNodes(element).forEach(function (ref) {\n var classList = ref.classList;\n\n for (var i = 0; i < args.length; i++) {\n supports.Force\n ? classList.toggle.apply(classList, [args[i]].concat(force))\n : (classList[(!isUndefined(force) ? force : !classList.contains(args[i])) ? 'add' : 'remove'](args[i]));\n }\n });\n\n }\n\n function apply$1(element, args, fn) {\n args = getArgs$1(args).filter(Boolean);\n\n args.length && toNodes(element).forEach(function (ref) {\n var classList = ref.classList;\n\n supports.Multiple\n ? classList[fn].apply(classList, args)\n : args.forEach(function (cls) { return classList[fn](cls); });\n });\n }\n\n function getArgs$1(args) {\n return args.reduce(function (args, arg) { return args.concat.call(args, isString(arg) && includes(arg, ' ') ? arg.trim().split(' ') : arg); }\n , []);\n }\n\n // IE 11\n var supports = {\n\n get Multiple() {\n return this.get('_multiple');\n },\n\n get Force() {\n return this.get('_force');\n },\n\n get: function(key) {\n\n if (!hasOwn(this, key)) {\n var ref = document.createElement('_');\n var classList = ref.classList;\n classList.add('a', 'b');\n classList.toggle('c', false);\n this._multiple = classList.contains('b');\n this._force = !classList.contains('c');\n }\n\n return this[key];\n }\n\n };\n\n var cssNumber = {\n 'animation-iteration-count': true,\n 'column-count': true,\n 'fill-opacity': true,\n 'flex-grow': true,\n 'flex-shrink': true,\n 'font-weight': true,\n 'line-height': true,\n 'opacity': true,\n 'order': true,\n 'orphans': true,\n 'stroke-dasharray': true,\n 'stroke-dashoffset': true,\n 'widows': true,\n 'z-index': true,\n 'zoom': true\n };\n\n function css(element, property, value) {\n\n return toNodes(element).map(function (element) {\n\n if (isString(property)) {\n\n property = propName(property);\n\n if (isUndefined(value)) {\n return getStyle(element, property);\n } else if (!value && !isNumber(value)) {\n element.style.removeProperty(property);\n } else {\n element.style[property] = isNumeric(value) && !cssNumber[property] ? (value + \"px\") : value;\n }\n\n } else if (isArray(property)) {\n\n var styles = getStyles(element);\n\n return property.reduce(function (props, property) {\n props[property] = styles[propName(property)];\n return props;\n }, {});\n\n } else if (isObject(property)) {\n each(property, function (value, property) { return css(element, property, value); });\n }\n\n return element;\n\n })[0];\n\n }\n\n function getStyles(element, pseudoElt) {\n element = toNode(element);\n return element.ownerDocument.defaultView.getComputedStyle(element, pseudoElt);\n }\n\n function getStyle(element, property, pseudoElt) {\n return getStyles(element, pseudoElt)[property];\n }\n\n var vars = {};\n\n function getCssVar(name) {\n\n var docEl = document.documentElement;\n\n if (!isIE) {\n return getStyles(docEl).getPropertyValue((\"--uk-\" + name));\n }\n\n if (!(name in vars)) {\n\n /* usage in css: .uk-name:before { content:\"xyz\" } */\n\n var element = append(docEl, document.createElement('div'));\n\n addClass(element, (\"uk-\" + name));\n\n vars[name] = getStyle(element, 'content', ':before').replace(/^[\"'](.*)[\"']$/, '$1');\n\n remove(element);\n\n }\n\n return vars[name];\n\n }\n\n var cssProps = {};\n\n function propName(name) {\n\n var ret = cssProps[name];\n if (!ret) {\n ret = cssProps[name] = vendorPropName(name) || name;\n }\n return ret;\n }\n\n var cssPrefixes = ['webkit', 'moz', 'ms'];\n\n function vendorPropName(name) {\n\n name = hyphenate(name);\n\n var ref = document.documentElement;\n var style = ref.style;\n\n if (name in style) {\n return name;\n }\n\n var i = cssPrefixes.length, prefixedName;\n\n while (i--) {\n prefixedName = \"-\" + (cssPrefixes[i]) + \"-\" + name;\n if (prefixedName in style) {\n return prefixedName;\n }\n }\n }\n\n function transition(element, props, duration, timing) {\n if ( duration === void 0 ) duration = 400;\n if ( timing === void 0 ) timing = 'linear';\n\n\n return Promise.all(toNodes(element).map(function (element) { return new Promise(function (resolve, reject) {\n\n for (var name in props) {\n var value = css(element, name);\n if (value === '') {\n css(element, name, value);\n }\n }\n\n var timer = setTimeout(function () { return trigger(element, 'transitionend'); }, duration);\n\n once(element, 'transitionend transitioncanceled', function (ref) {\n var type = ref.type;\n\n clearTimeout(timer);\n removeClass(element, 'uk-transition');\n css(element, {\n 'transition-property': '',\n 'transition-duration': '',\n 'transition-timing-function': ''\n });\n type === 'transitioncanceled' ? reject() : resolve();\n }, {self: true});\n\n addClass(element, 'uk-transition');\n css(element, assign({\n 'transition-property': Object.keys(props).map(propName).join(','),\n 'transition-duration': (duration + \"ms\"),\n 'transition-timing-function': timing\n }, props));\n\n }); }\n ));\n\n }\n\n var Transition = {\n\n start: transition,\n\n stop: function(element) {\n trigger(element, 'transitionend');\n return Promise.resolve();\n },\n\n cancel: function(element) {\n trigger(element, 'transitioncanceled');\n },\n\n inProgress: function(element) {\n return hasClass(element, 'uk-transition');\n }\n\n };\n\n var animationPrefix = 'uk-animation-';\n var clsCancelAnimation = 'uk-cancel-animation';\n\n function animate(element, animation, duration, origin, out) {\n var arguments$1 = arguments;\n if ( duration === void 0 ) duration = 200;\n\n\n return Promise.all(toNodes(element).map(function (element) { return new Promise(function (resolve, reject) {\n\n if (hasClass(element, clsCancelAnimation)) {\n requestAnimationFrame(function () { return Promise.resolve().then(function () { return animate.apply(void 0, arguments$1).then(resolve, reject); }\n ); }\n );\n return;\n }\n\n var cls = animation + \" \" + animationPrefix + (out ? 'leave' : 'enter');\n\n if (startsWith(animation, animationPrefix)) {\n\n if (origin) {\n cls += \" uk-transform-origin-\" + origin;\n }\n\n if (out) {\n cls += \" \" + animationPrefix + \"reverse\";\n }\n\n }\n\n reset();\n\n once(element, 'animationend animationcancel', function (ref) {\n var type = ref.type;\n\n\n var hasReset = false;\n\n if (type === 'animationcancel') {\n reject();\n reset();\n } else {\n resolve();\n Promise.resolve().then(function () {\n hasReset = true;\n reset();\n });\n }\n\n requestAnimationFrame(function () {\n if (!hasReset) {\n addClass(element, clsCancelAnimation);\n\n requestAnimationFrame(function () { return removeClass(element, clsCancelAnimation); });\n }\n });\n\n }, {self: true});\n\n css(element, 'animationDuration', (duration + \"ms\"));\n addClass(element, cls);\n\n function reset() {\n css(element, 'animationDuration', '');\n removeClasses(element, (animationPrefix + \"\\\\S*\"));\n }\n\n }); }\n ));\n\n }\n\n var inProgress = new RegExp((animationPrefix + \"(enter|leave)\"));\n var Animation = {\n\n in: function(element, animation, duration, origin) {\n return animate(element, animation, duration, origin, false);\n },\n\n out: function(element, animation, duration, origin) {\n return animate(element, animation, duration, origin, true);\n },\n\n inProgress: function(element) {\n return inProgress.test(attr(element, 'class'));\n },\n\n cancel: function(element) {\n trigger(element, 'animationcancel');\n }\n\n };\n\n var dirs = {\n width: ['x', 'left', 'right'],\n height: ['y', 'top', 'bottom']\n };\n\n function positionAt(element, target, elAttach, targetAttach, elOffset, targetOffset, flip, boundary) {\n\n elAttach = getPos(elAttach);\n targetAttach = getPos(targetAttach);\n\n var flipped = {element: elAttach, target: targetAttach};\n\n if (!element || !target) {\n return flipped;\n }\n\n var dim = getDimensions(element);\n var targetDim = getDimensions(target);\n var position = targetDim;\n\n moveTo(position, elAttach, dim, -1);\n moveTo(position, targetAttach, targetDim, 1);\n\n elOffset = getOffsets(elOffset, dim.width, dim.height);\n targetOffset = getOffsets(targetOffset, targetDim.width, targetDim.height);\n\n elOffset['x'] += targetOffset['x'];\n elOffset['y'] += targetOffset['y'];\n\n position.left += elOffset['x'];\n position.top += elOffset['y'];\n\n if (flip) {\n\n var boundaries = [getDimensions(getWindow(element))];\n\n if (boundary) {\n boundaries.unshift(getDimensions(boundary));\n }\n\n each(dirs, function (ref, prop) {\n var dir = ref[0];\n var align = ref[1];\n var alignFlip = ref[2];\n\n\n if (!(flip === true || includes(flip, dir))) {\n return;\n }\n\n boundaries.some(function (boundary) {\n\n var elemOffset = elAttach[dir] === align\n ? -dim[prop]\n : elAttach[dir] === alignFlip\n ? dim[prop]\n : 0;\n\n var targetOffset = targetAttach[dir] === align\n ? targetDim[prop]\n : targetAttach[dir] === alignFlip\n ? -targetDim[prop]\n : 0;\n\n if (position[align] < boundary[align] || position[align] + dim[prop] > boundary[alignFlip]) {\n\n var centerOffset = dim[prop] / 2;\n var centerTargetOffset = targetAttach[dir] === 'center' ? -targetDim[prop] / 2 : 0;\n\n return elAttach[dir] === 'center' && (\n apply(centerOffset, centerTargetOffset)\n || apply(-centerOffset, -centerTargetOffset)\n ) || apply(elemOffset, targetOffset);\n\n }\n\n function apply(elemOffset, targetOffset) {\n\n var newVal = position[align] + elemOffset + targetOffset - elOffset[dir] * 2;\n\n if (newVal >= boundary[align] && newVal + dim[prop] <= boundary[alignFlip]) {\n position[align] = newVal;\n\n ['element', 'target'].forEach(function (el) {\n flipped[el][dir] = !elemOffset\n ? flipped[el][dir]\n : flipped[el][dir] === dirs[prop][1]\n ? dirs[prop][2]\n : dirs[prop][1];\n });\n\n return true;\n }\n\n }\n\n });\n\n });\n }\n\n offset(element, position);\n\n return flipped;\n }\n\n function offset(element, coordinates) {\n\n element = toNode(element);\n\n if (coordinates) {\n\n var currentOffset = offset(element);\n var pos = css(element, 'position');\n\n ['left', 'top'].forEach(function (prop) {\n if (prop in coordinates) {\n var value = css(element, prop);\n css(element, prop, coordinates[prop] - currentOffset[prop]\n + toFloat(pos === 'absolute' && value === 'auto'\n ? position(element)[prop]\n : value)\n );\n }\n });\n\n return;\n }\n\n return getDimensions(element);\n }\n\n function getDimensions(element) {\n\n element = toNode(element);\n\n if (!element) {\n return {};\n }\n\n var ref = getWindow(element);\n var top = ref.pageYOffset;\n var left = ref.pageXOffset;\n\n if (isWindow(element)) {\n\n var height = element.innerHeight;\n var width = element.innerWidth;\n\n return {\n top: top,\n left: left,\n height: height,\n width: width,\n bottom: top + height,\n right: left + width\n };\n }\n\n var style, hidden;\n\n if (!isVisible(element) && css(element, 'display') === 'none') {\n\n style = attr(element, 'style');\n hidden = attr(element, 'hidden');\n\n attr(element, {\n style: ((style || '') + \";display:block !important;\"),\n hidden: null\n });\n }\n\n var rect = element.getBoundingClientRect();\n\n if (!isUndefined(style)) {\n attr(element, {style: style, hidden: hidden});\n }\n\n return {\n height: rect.height,\n width: rect.width,\n top: rect.top + top,\n left: rect.left + left,\n bottom: rect.bottom + top,\n right: rect.right + left\n };\n }\n\n function position(element) {\n element = toNode(element);\n\n var parent = element.offsetParent || getDocEl(element);\n var parentOffset = offset(parent);\n var ref = ['top', 'left'].reduce(function (props, prop) {\n var propName = ucfirst(prop);\n props[prop] -= parentOffset[prop]\n + toFloat(css(element, (\"margin\" + propName)))\n + toFloat(css(parent, (\"border\" + propName + \"Width\")));\n return props;\n }, offset(element));\n var top = ref.top;\n var left = ref.left;\n\n return {top: top, left: left};\n }\n\n var height = dimension('height');\n var width = dimension('width');\n\n function dimension(prop) {\n var propName = ucfirst(prop);\n return function (element, value) {\n\n element = toNode(element);\n\n if (isUndefined(value)) {\n\n if (isWindow(element)) {\n return element[(\"inner\" + propName)];\n }\n\n if (isDocument(element)) {\n var doc = element.documentElement;\n return Math.max(doc[(\"offset\" + propName)], doc[(\"scroll\" + propName)]);\n }\n\n value = css(element, prop);\n value = value === 'auto' ? element[(\"offset\" + propName)] : toFloat(value) || 0;\n\n return value - boxModelAdjust(prop, element);\n\n } else {\n\n css(element, prop, !value && value !== 0\n ? ''\n : +value + boxModelAdjust(prop, element) + 'px'\n );\n\n }\n\n };\n }\n\n function boxModelAdjust(prop, element, sizing) {\n if ( sizing === void 0 ) sizing = 'border-box';\n\n return css(element, 'boxSizing') === sizing\n ? dirs[prop].slice(1).map(ucfirst).reduce(function (value, prop) { return value\n + toFloat(css(element, (\"padding\" + prop)))\n + toFloat(css(element, (\"border\" + prop + \"Width\"))); }\n , 0)\n : 0;\n }\n\n function moveTo(position, attach, dim, factor) {\n each(dirs, function (ref, prop) {\n var dir = ref[0];\n var align = ref[1];\n var alignFlip = ref[2];\n\n if (attach[dir] === alignFlip) {\n position[align] += dim[prop] * factor;\n } else if (attach[dir] === 'center') {\n position[align] += dim[prop] * factor / 2;\n }\n });\n }\n\n function getPos(pos) {\n\n var x = /left|center|right/;\n var y = /top|center|bottom/;\n\n pos = (pos || '').split(' ');\n\n if (pos.length === 1) {\n pos = x.test(pos[0])\n ? pos.concat(['center'])\n : y.test(pos[0])\n ? ['center'].concat(pos)\n : ['center', 'center'];\n }\n\n return {\n x: x.test(pos[0]) ? pos[0] : 'center',\n y: y.test(pos[1]) ? pos[1] : 'center'\n };\n }\n\n function getOffsets(offsets, width, height) {\n\n var ref = (offsets || '').split(' ');\n var x = ref[0];\n var y = ref[1];\n\n return {\n x: x ? toFloat(x) * (endsWith(x, '%') ? width / 100 : 1) : 0,\n y: y ? toFloat(y) * (endsWith(y, '%') ? height / 100 : 1) : 0\n };\n }\n\n function flipPosition(pos) {\n switch (pos) {\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n default:\n return pos;\n }\n }\n\n function isInView(element, topOffset, leftOffset) {\n if ( topOffset === void 0 ) topOffset = 0;\n if ( leftOffset === void 0 ) leftOffset = 0;\n\n\n if (!isVisible(element)) {\n return false;\n }\n\n element = toNode(element);\n\n var win = getWindow(element);\n var client = element.getBoundingClientRect();\n var bounding = {\n top: -topOffset,\n left: -leftOffset,\n bottom: topOffset + height(win),\n right: leftOffset + width(win)\n };\n\n return intersectRect(client, bounding) || pointInRect({x: client.left, y: client.top}, bounding);\n\n }\n\n function scrolledOver(element, heightOffset) {\n if ( heightOffset === void 0 ) heightOffset = 0;\n\n\n if (!isVisible(element)) {\n return 0;\n }\n\n element = toNode(element);\n\n var win = getWindow(element);\n var doc = getDocument(element);\n var elHeight = element.offsetHeight + heightOffset;\n var ref = offsetPosition(element);\n var top = ref[0];\n var vp = height(win);\n var vh = vp + Math.min(0, top - vp);\n var diff = Math.max(0, vp - (height(doc) + heightOffset - (top + elHeight)));\n\n return clamp(((vh + win.pageYOffset - top) / ((vh + (elHeight - (diff < vp ? diff : 0))) / 100)) / 100);\n }\n\n function scrollTop(element, top) {\n element = toNode(element);\n\n if (isWindow(element) || isDocument(element)) {\n var ref = getWindow(element);\n var scrollTo = ref.scrollTo;\n var pageXOffset = ref.pageXOffset;\n scrollTo(pageXOffset, top);\n } else {\n element.scrollTop = top;\n }\n }\n\n function offsetPosition(element) {\n var offset = [0, 0];\n\n do {\n\n offset[0] += element.offsetTop;\n offset[1] += element.offsetLeft;\n\n if (css(element, 'position') === 'fixed') {\n var win = getWindow(element);\n offset[0] += win.pageYOffset;\n offset[1] += win.pageXOffset;\n return offset;\n }\n\n } while ((element = element.offsetParent));\n\n return offset;\n }\n\n function toPx(value, property, element) {\n if ( property === void 0 ) property = 'width';\n if ( element === void 0 ) element = window;\n\n return isNumeric(value)\n ? +value\n : endsWith(value, 'vh')\n ? percent(height(getWindow(element)), value)\n : endsWith(value, 'vw')\n ? percent(width(getWindow(element)), value)\n : endsWith(value, '%')\n ? percent(getDimensions(element)[property], value)\n : toFloat(value);\n }\n\n function percent(base, value) {\n return base * toFloat(value) / 100;\n }\n\n function getWindow(element) {\n return isWindow(element) ? element : getDocument(element).defaultView;\n }\n\n function getDocument(element) {\n return toNode(element).ownerDocument;\n }\n\n function getDocEl(element) {\n return getDocument(element).documentElement;\n }\n\n /*\n Based on:\n Copyright (c) 2016 Wilson Page wilsonpage@me.com\n https://github.com/wilsonpage/fastdom\n */\n\n var fastdom = {\n\n reads: [],\n writes: [],\n\n read: function(task) {\n this.reads.push(task);\n scheduleFlush();\n return task;\n },\n\n write: function(task) {\n this.writes.push(task);\n scheduleFlush();\n return task;\n },\n\n clear: function(task) {\n return remove$1(this.reads, task) || remove$1(this.writes, task);\n },\n\n flush: flush\n\n };\n\n function flush() {\n runTasks(fastdom.reads);\n runTasks(fastdom.writes.splice(0, fastdom.writes.length));\n\n fastdom.scheduled = false;\n\n if (fastdom.reads.length || fastdom.writes.length) {\n scheduleFlush(true);\n }\n }\n\n function scheduleFlush(microtask) {\n if ( microtask === void 0 ) microtask = false;\n\n if (!fastdom.scheduled) {\n fastdom.scheduled = true;\n if (microtask) {\n Promise.resolve().then(flush);\n } else {\n requestAnimationFrame(flush);\n }\n }\n }\n\n function runTasks(tasks) {\n var task;\n while ((task = tasks.shift())) {\n task();\n }\n }\n\n function remove$1(array, item) {\n var index = array.indexOf(item);\n return !!~index && !!array.splice(index, 1);\n }\n\n function MouseTracker() {}\n\n MouseTracker.prototype = {\n\n positions: [],\n position: null,\n\n init: function() {\n var this$1 = this;\n\n\n this.positions = [];\n this.position = null;\n\n var ticking = false;\n this.unbind = on(document, 'mousemove', function (e) {\n\n if (ticking) {\n return;\n }\n\n setTimeout(function () {\n\n var time = Date.now();\n var ref = this$1.positions;\n var length = ref.length;\n\n if (length && (time - this$1.positions[length - 1].time > 100)) {\n this$1.positions.splice(0, length);\n }\n\n this$1.positions.push({time: time, x: e.pageX, y: e.pageY});\n\n if (this$1.positions.length > 5) {\n this$1.positions.shift();\n }\n\n ticking = false;\n }, 5);\n\n ticking = true;\n });\n\n },\n\n cancel: function() {\n if (this.unbind) {\n this.unbind();\n }\n },\n\n movesTo: function(target) {\n\n if (this.positions.length < 2) {\n return false;\n }\n\n var p = offset(target);\n var position = last(this.positions);\n var ref = this.positions;\n var prevPos = ref[0];\n\n if (p.left <= position.x && position.x <= p.right && p.top <= position.y && position.y <= p.bottom) {\n return false;\n }\n\n var points = [\n [{x: p.left, y: p.top}, {x: p.right, y: p.bottom}],\n [{x: p.right, y: p.top}, {x: p.left, y: p.bottom}]\n ];\n\n if (p.right <= position.x) ; else if (p.left >= position.x) {\n points[0].reverse();\n points[1].reverse();\n } else if (p.bottom <= position.y) {\n points[0].reverse();\n } else if (p.top >= position.y) {\n points[1].reverse();\n }\n\n return !!points.reduce(function (result, point) {\n return result + (slope(prevPos, point[0]) < slope(position, point[0]) && slope(prevPos, point[1]) > slope(position, point[1]));\n }, 0);\n }\n\n };\n\n function slope(a, b) {\n return (b.y - a.y) / (b.x - a.x);\n }\n\n var strats = {};\n\n strats.events =\n strats.created =\n strats.beforeConnect =\n strats.connected =\n strats.beforeDisconnect =\n strats.disconnected =\n strats.destroy = concatStrat;\n\n // args strategy\n strats.args = function (parentVal, childVal) {\n return childVal !== false && concatStrat(childVal || parentVal);\n };\n\n // update strategy\n strats.update = function (parentVal, childVal) {\n return sortBy(concatStrat(parentVal, isFunction(childVal) ? {read: childVal} : childVal), 'order');\n };\n\n // property strategy\n strats.props = function (parentVal, childVal) {\n\n if (isArray(childVal)) {\n childVal = childVal.reduce(function (value, key) {\n value[key] = String;\n return value;\n }, {});\n }\n\n return strats.methods(parentVal, childVal);\n };\n\n // extend strategy\n strats.computed =\n strats.methods = function (parentVal, childVal) {\n return childVal\n ? parentVal\n ? assign({}, parentVal, childVal)\n : childVal\n : parentVal;\n };\n\n // data strategy\n strats.data = function (parentVal, childVal, vm) {\n\n if (!vm) {\n\n if (!childVal) {\n return parentVal;\n }\n\n if (!parentVal) {\n return childVal;\n }\n\n return function (vm) {\n return mergeFnData(parentVal, childVal, vm);\n };\n\n }\n\n return mergeFnData(parentVal, childVal, vm);\n };\n\n function mergeFnData(parentVal, childVal, vm) {\n return strats.computed(\n isFunction(parentVal)\n ? parentVal.call(vm, vm)\n : parentVal,\n isFunction(childVal)\n ? childVal.call(vm, vm)\n : childVal\n );\n }\n\n // concat strategy\n function concatStrat(parentVal, childVal) {\n\n parentVal = parentVal && !isArray(parentVal) ? [parentVal] : parentVal;\n\n return childVal\n ? parentVal\n ? parentVal.concat(childVal)\n : isArray(childVal)\n ? childVal\n : [childVal]\n : parentVal;\n }\n\n // default strategy\n function defaultStrat(parentVal, childVal) {\n return isUndefined(childVal) ? parentVal : childVal;\n }\n\n function mergeOptions(parent, child, vm) {\n\n var options = {};\n\n if (isFunction(child)) {\n child = child.options;\n }\n\n if (child.extends) {\n parent = mergeOptions(parent, child.extends, vm);\n }\n\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n parent = mergeOptions(parent, child.mixins[i], vm);\n }\n }\n\n for (var key in parent) {\n mergeKey(key);\n }\n\n for (var key$1 in child) {\n if (!hasOwn(parent, key$1)) {\n mergeKey(key$1);\n }\n }\n\n function mergeKey(key) {\n options[key] = (strats[key] || defaultStrat)(parent[key], child[key], vm);\n }\n\n return options;\n }\n\n function parseOptions(options, args) {\n var obj;\n\n if ( args === void 0 ) args = [];\n\n try {\n\n return !options\n ? {}\n : startsWith(options, '{')\n ? JSON.parse(options)\n : args.length && !includes(options, ':')\n ? (( obj = {}, obj[args[0]] = options, obj ))\n : options.split(';').reduce(function (options, option) {\n var ref = option.split(/:(.*)/);\n var key = ref[0];\n var value = ref[1];\n if (key && !isUndefined(value)) {\n options[key.trim()] = value.trim();\n }\n return options;\n }, {});\n\n } catch (e) {\n return {};\n }\n\n }\n\n var id = 0;\n\n var Player = function(el) {\n this.id = ++id;\n this.el = toNode(el);\n };\n\n Player.prototype.isVideo = function () {\n return this.isYoutube() || this.isVimeo() || this.isHTML5();\n };\n\n Player.prototype.isHTML5 = function () {\n return this.el.tagName === 'VIDEO';\n };\n\n Player.prototype.isIFrame = function () {\n return this.el.tagName === 'IFRAME';\n };\n\n Player.prototype.isYoutube = function () {\n return this.isIFrame() && !!this.el.src.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/(watch\\?v=[^&\\s]+|embed)|youtu\\.be\\/.*/);\n };\n\n Player.prototype.isVimeo = function () {\n return this.isIFrame() && !!this.el.src.match(/vimeo\\.com\\/video\\/.*/);\n };\n\n Player.prototype.enableApi = function () {\n var this$1 = this;\n\n\n if (this.ready) {\n return this.ready;\n }\n\n var youtube = this.isYoutube();\n var vimeo = this.isVimeo();\n\n var poller;\n\n if (youtube || vimeo) {\n\n return this.ready = new Promise(function (resolve) {\n\n once(this$1.el, 'load', function () {\n if (youtube) {\n var listener = function () { return post(this$1.el, {event: 'listening', id: this$1.id}); };\n poller = setInterval(listener, 100);\n listener();\n }\n });\n\n listen(function (data) { return youtube && data.id === this$1.id && data.event === 'onReady' || vimeo && Number(data.player_id) === this$1.id; })\n .then(function () {\n resolve();\n poller && clearInterval(poller);\n });\n\n attr(this$1.el, 'src', (\"\" + (this$1.el.src) + (includes(this$1.el.src, '?') ? '&' : '?') + (youtube ? 'enablejsapi=1' : (\"api=1&player_id=\" + (this$1.id)))));\n\n });\n\n }\n\n return Promise.resolve();\n\n };\n\n Player.prototype.play = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'playVideo', method: 'play'}); });\n } else if (this.isHTML5()) {\n try {\n var promise = this.el.play();\n\n if (promise) {\n promise.catch(noop);\n }\n } catch (e) {}\n }\n };\n\n Player.prototype.pause = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'pauseVideo', method: 'pause'}); });\n } else if (this.isHTML5()) {\n this.el.pause();\n }\n };\n\n Player.prototype.mute = function () {\n var this$1 = this;\n\n\n if (!this.isVideo()) {\n return;\n }\n\n if (this.isIFrame()) {\n this.enableApi().then(function () { return post(this$1.el, {func: 'mute', method: 'setVolume', value: 0}); });\n } else if (this.isHTML5()) {\n this.el.muted = true;\n attr(this.el, 'muted', '');\n }\n\n };\n\n function post(el, cmd) {\n try {\n el.contentWindow.postMessage(JSON.stringify(assign({event: 'command'}, cmd)), '*');\n } catch (e) {}\n }\n\n function listen(cb) {\n\n return new Promise(function (resolve) {\n\n once(window, 'message', function (_, data) { return resolve(data); }, false, function (ref) {\n var data = ref.data;\n\n\n if (!data || !isString(data)) {\n return;\n }\n\n try {\n data = JSON.parse(data);\n } catch (e) {\n return;\n }\n\n return data && cb(data);\n\n });\n\n });\n\n }\n\n var IntersectionObserver = 'IntersectionObserver' in window\n ? window.IntersectionObserver\n : /*@__PURE__*/(function () {\n function IntersectionObserverClass(callback, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var rootMargin = ref.rootMargin; if ( rootMargin === void 0 ) rootMargin = '0 0';\n\n\n this.targets = [];\n\n var ref$1 = (rootMargin || '0 0').split(' ').map(toFloat);\n var offsetTop = ref$1[0];\n var offsetLeft = ref$1[1];\n\n this.offsetTop = offsetTop;\n this.offsetLeft = offsetLeft;\n\n var pending;\n this.apply = function () {\n\n if (pending) {\n return;\n }\n\n pending = requestAnimationFrame(function () { return setTimeout(function () {\n var records = this$1.takeRecords();\n\n if (records.length) {\n callback(records, this$1);\n }\n\n pending = false;\n }); });\n\n };\n\n this.off = on(window, 'scroll resize load', this.apply, {passive: true, capture: true});\n\n }\n\n IntersectionObserverClass.prototype.takeRecords = function () {\n var this$1 = this;\n\n return this.targets.filter(function (entry) {\n\n var inView = isInView(entry.target, this$1.offsetTop, this$1.offsetLeft);\n\n if (entry.isIntersecting === null || inView ^ entry.isIntersecting) {\n entry.isIntersecting = inView;\n return true;\n }\n\n });\n };\n\n IntersectionObserverClass.prototype.observe = function (target) {\n this.targets.push({\n target: target,\n isIntersecting: null\n });\n this.apply();\n };\n\n IntersectionObserverClass.prototype.disconnect = function () {\n this.targets = [];\n this.off();\n };\n\n return IntersectionObserverClass;\n }());\n\n\n\n var util = /*#__PURE__*/Object.freeze({\n ajax: ajax,\n getImage: getImage,\n transition: transition,\n Transition: Transition,\n animate: animate,\n Animation: Animation,\n attr: attr,\n hasAttr: hasAttr,\n removeAttr: removeAttr,\n data: data,\n addClass: addClass,\n removeClass: removeClass,\n removeClasses: removeClasses,\n replaceClass: replaceClass,\n hasClass: hasClass,\n toggleClass: toggleClass,\n positionAt: positionAt,\n offset: offset,\n position: position,\n height: height,\n width: width,\n boxModelAdjust: boxModelAdjust,\n flipPosition: flipPosition,\n isInView: isInView,\n scrolledOver: scrolledOver,\n scrollTop: scrollTop,\n offsetPosition: offsetPosition,\n toPx: toPx,\n ready: ready,\n index: index,\n getIndex: getIndex,\n empty: empty,\n html: html,\n prepend: prepend,\n append: append,\n before: before,\n after: after,\n remove: remove,\n wrapAll: wrapAll,\n wrapInner: wrapInner,\n unwrap: unwrap,\n fragment: fragment,\n apply: apply,\n $: $,\n $$: $$,\n isIE: isIE,\n isRtl: isRtl,\n hasTouch: hasTouch,\n pointerDown: pointerDown,\n pointerMove: pointerMove,\n pointerUp: pointerUp,\n pointerEnter: pointerEnter,\n pointerLeave: pointerLeave,\n pointerCancel: pointerCancel,\n on: on,\n off: off,\n once: once,\n trigger: trigger,\n createEvent: createEvent,\n toEventTargets: toEventTargets,\n isTouch: isTouch,\n getEventPos: getEventPos,\n fastdom: fastdom,\n isVoidElement: isVoidElement,\n isVisible: isVisible,\n selInput: selInput,\n isInput: isInput,\n filter: filter,\n within: within,\n hasOwn: hasOwn,\n hyphenate: hyphenate,\n camelize: camelize,\n ucfirst: ucfirst,\n startsWith: startsWith,\n endsWith: endsWith,\n includes: includes,\n findIndex: findIndex,\n isArray: isArray,\n isFunction: isFunction,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isWindow: isWindow,\n isDocument: isDocument,\n isJQuery: isJQuery,\n isNode: isNode,\n isNodeCollection: isNodeCollection,\n isBoolean: isBoolean,\n isString: isString,\n isNumber: isNumber,\n isNumeric: isNumeric,\n isEmpty: isEmpty,\n isUndefined: isUndefined,\n toBoolean: toBoolean,\n toNumber: toNumber,\n toFloat: toFloat,\n toNode: toNode,\n toNodes: toNodes,\n toList: toList,\n toMs: toMs,\n isEqual: isEqual,\n swap: swap,\n assign: assign,\n last: last,\n each: each,\n sortBy: sortBy,\n uniqueBy: uniqueBy,\n clamp: clamp,\n noop: noop,\n intersectRect: intersectRect,\n pointInRect: pointInRect,\n Dimensions: Dimensions,\n MouseTracker: MouseTracker,\n mergeOptions: mergeOptions,\n parseOptions: parseOptions,\n Player: Player,\n Promise: Promise,\n Deferred: Deferred,\n IntersectionObserver: IntersectionObserver,\n query: query,\n queryAll: queryAll,\n find: find,\n findAll: findAll,\n matches: matches,\n closest: closest,\n parents: parents,\n escape: escape,\n css: css,\n getStyles: getStyles,\n getStyle: getStyle,\n getCssVar: getCssVar,\n propName: propName\n });\n\n function componentAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n var components = {};\n\n UIkit.component = function (name, options) {\n\n if (!options) {\n\n if (isPlainObject(components[name])) {\n components[name] = UIkit.extend(components[name]);\n }\n\n return components[name];\n\n }\n\n UIkit[name] = function (element, data) {\n var i = arguments.length, argsArray = Array(i);\n while ( i-- ) argsArray[i] = arguments[i];\n\n\n var component = UIkit.component(name);\n\n if (isPlainObject(element)) {\n return new component({data: element});\n }\n\n if (component.options.functional) {\n return new component({data: [].concat( argsArray )});\n }\n\n return element && element.nodeType ? init(element) : $$(element).map(init)[0];\n\n function init(element) {\n\n var instance = UIkit.getComponent(element, name);\n\n if (instance) {\n if (!data) {\n return instance;\n } else {\n instance.$destroy();\n }\n }\n\n return new component({el: element, data: data});\n\n }\n\n };\n\n var opt = isPlainObject(options) ? assign({}, options) : options.options;\n\n opt.name = name;\n\n if (opt.install) {\n opt.install(UIkit, opt, name);\n }\n\n if (UIkit._initialized && !opt.functional) {\n var id = hyphenate(name);\n fastdom.read(function () { return UIkit[name]((\"[uk-\" + id + \"],[data-uk-\" + id + \"]\")); });\n }\n\n return components[name] = isPlainObject(options) ? opt : options;\n };\n\n UIkit.getComponents = function (element) { return element && element[DATA] || {}; };\n UIkit.getComponent = function (element, name) { return UIkit.getComponents(element)[name]; };\n\n UIkit.connect = function (node) {\n\n if (node[DATA]) {\n for (var name in node[DATA]) {\n node[DATA][name]._callConnected();\n }\n }\n\n for (var i = 0; i < node.attributes.length; i++) {\n\n var name$1 = getComponentName(node.attributes[i].name);\n\n if (name$1 && name$1 in components) {\n UIkit[name$1](node);\n }\n\n }\n\n };\n\n UIkit.disconnect = function (node) {\n for (var name in node[DATA]) {\n node[DATA][name]._callDisconnected();\n }\n };\n\n }\n\n function getComponentName(attribute) {\n return startsWith(attribute, 'uk-') || startsWith(attribute, 'data-uk-')\n ? camelize(attribute.replace('data-uk-', '').replace('uk-', ''))\n : false;\n }\n\n function boot (UIkit) {\n\n var connect = UIkit.connect;\n var disconnect = UIkit.disconnect;\n\n if (!('MutationObserver' in window)) {\n return;\n }\n\n if (document.body) {\n\n fastdom.read(init);\n\n } else {\n\n (new MutationObserver(function () {\n\n if (document.body) {\n this.disconnect();\n init();\n }\n\n })).observe(document, {childList: true, subtree: true});\n\n }\n\n function init() {\n\n apply(document.body, connect);\n\n // Safari renders prior to first animation frame\n fastdom.flush();\n\n (new MutationObserver(function (mutations) { return mutations.forEach(applyMutation); })).observe(document, {\n childList: true,\n subtree: true,\n characterData: true,\n attributes: true\n });\n\n UIkit._initialized = true;\n }\n\n function applyMutation(mutation) {\n\n var target = mutation.target;\n var type = mutation.type;\n\n var update = type !== 'attributes'\n ? applyChildList(mutation)\n : applyAttribute(mutation);\n\n update && UIkit.update(target);\n\n }\n\n function applyAttribute(ref) {\n var target = ref.target;\n var attributeName = ref.attributeName;\n\n\n if (attributeName === 'href') {\n return true;\n }\n\n var name = getComponentName(attributeName);\n\n if (!name || !(name in UIkit)) {\n return;\n }\n\n if (hasAttr(target, attributeName)) {\n UIkit[name](target);\n return true;\n }\n\n var component = UIkit.getComponent(target, name);\n\n if (component) {\n component.$destroy();\n return true;\n }\n\n }\n\n function applyChildList(ref) {\n var addedNodes = ref.addedNodes;\n var removedNodes = ref.removedNodes;\n\n\n for (var i = 0; i < addedNodes.length; i++) {\n apply(addedNodes[i], connect);\n }\n\n for (var i$1 = 0; i$1 < removedNodes.length; i$1++) {\n apply(removedNodes[i$1], disconnect);\n }\n\n return true;\n }\n\n function apply(node, fn) {\n\n if (node.nodeType !== 1 || hasAttr(node, 'uk-no-boot')) {\n return;\n }\n\n fn(node);\n node = node.firstElementChild;\n while (node) {\n var next = node.nextElementSibling;\n apply(node, fn);\n node = next;\n }\n }\n\n }\n\n function globalAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n UIkit.use = function (plugin) {\n\n if (plugin.installed) {\n return;\n }\n\n plugin.call(null, this);\n plugin.installed = true;\n\n return this;\n };\n\n UIkit.mixin = function (mixin, component) {\n component = (isString(component) ? UIkit.component(component) : component) || this;\n component.options = mergeOptions(component.options, mixin);\n };\n\n UIkit.extend = function (options) {\n\n options = options || {};\n\n var Super = this;\n var Sub = function UIkitComponent(options) {\n this._init(options);\n };\n\n Sub.prototype = Object.create(Super.prototype);\n Sub.prototype.constructor = Sub;\n Sub.options = mergeOptions(Super.options, options);\n\n Sub.super = Super;\n Sub.extend = Super.extend;\n\n return Sub;\n };\n\n UIkit.update = function (element, e) {\n\n element = element ? toNode(element) : document.body;\n\n path(element, function (element) { return update(element[DATA], e); });\n apply(element, function (element) { return update(element[DATA], e); });\n\n };\n\n var container;\n Object.defineProperty(UIkit, 'container', {\n\n get: function() {\n return container || document.body;\n },\n\n set: function(element) {\n container = $(element);\n }\n\n });\n\n function update(data, e) {\n\n if (!data) {\n return;\n }\n\n for (var name in data) {\n if (data[name]._connected) {\n data[name]._callUpdate(e);\n }\n }\n\n }\n\n function path(node, fn) {\n if (node && node !== document.body && node.parentNode) {\n path(node.parentNode, fn);\n fn(node.parentNode);\n }\n }\n\n }\n\n function hooksAPI (UIkit) {\n\n UIkit.prototype._callHook = function (hook) {\n var this$1 = this;\n\n\n var handlers = this.$options[hook];\n\n if (handlers) {\n handlers.forEach(function (handler) { return handler.call(this$1); });\n }\n };\n\n UIkit.prototype._callConnected = function () {\n\n if (this._connected) {\n return;\n }\n\n this._data = {};\n this._computeds = {};\n this._initProps();\n\n this._callHook('beforeConnect');\n this._connected = true;\n\n this._initEvents();\n this._initObserver();\n\n this._callHook('connected');\n this._callUpdate();\n };\n\n UIkit.prototype._callDisconnected = function () {\n\n if (!this._connected) {\n return;\n }\n\n this._callHook('beforeDisconnect');\n\n if (this._observer) {\n this._observer.disconnect();\n this._observer = null;\n }\n\n this._unbindEvents();\n this._callHook('disconnected');\n\n this._connected = false;\n\n };\n\n UIkit.prototype._callUpdate = function (e) {\n var this$1 = this;\n if ( e === void 0 ) e = 'update';\n\n\n var type = e.type || e;\n\n if (includes(['update', 'resize'], type)) {\n this._callWatches();\n }\n\n var updates = this.$options.update;\n var ref = this._frames;\n var reads = ref.reads;\n var writes = ref.writes;\n\n if (!updates) {\n return;\n }\n\n updates.forEach(function (ref, i) {\n var read = ref.read;\n var write = ref.write;\n var events = ref.events;\n\n\n if (type !== 'update' && !includes(events, type)) {\n return;\n }\n\n if (read && !includes(fastdom.reads, reads[i])) {\n reads[i] = fastdom.read(function () {\n\n var result = this$1._connected && read.call(this$1, this$1._data, type);\n\n if (result === false && write) {\n fastdom.clear(writes[i]);\n } else if (isPlainObject(result)) {\n assign(this$1._data, result);\n }\n });\n }\n\n if (write && !includes(fastdom.writes, writes[i])) {\n writes[i] = fastdom.write(function () { return this$1._connected && write.call(this$1, this$1._data, type); });\n }\n\n });\n\n };\n\n }\n\n function stateAPI (UIkit) {\n\n var uid = 0;\n\n UIkit.prototype._init = function (options) {\n\n options = options || {};\n options.data = normalizeData(options, this.constructor.options);\n\n this.$options = mergeOptions(this.constructor.options, options, this);\n this.$el = null;\n this.$props = {};\n\n this._frames = {reads: {}, writes: {}};\n this._events = [];\n\n this._uid = uid++;\n this._initData();\n this._initMethods();\n this._initComputeds();\n this._callHook('created');\n\n if (options.el) {\n this.$mount(options.el);\n }\n };\n\n UIkit.prototype._initData = function () {\n\n var ref = this.$options;\n var data = ref.data; if ( data === void 0 ) data = {};\n\n for (var key in data) {\n this.$props[key] = this[key] = data[key];\n }\n };\n\n UIkit.prototype._initMethods = function () {\n\n var ref = this.$options;\n var methods = ref.methods;\n\n if (methods) {\n for (var key in methods) {\n this[key] = methods[key].bind(this);\n }\n }\n };\n\n UIkit.prototype._initComputeds = function () {\n\n var ref = this.$options;\n var computed = ref.computed;\n\n this._computeds = {};\n\n if (computed) {\n for (var key in computed) {\n registerComputed(this, key, computed[key]);\n }\n }\n };\n\n UIkit.prototype._callWatches = function () {\n\n var ref = this;\n var computed = ref.$options.computed;\n var _computeds = ref._computeds;\n\n for (var key in _computeds) {\n\n var value = _computeds[key];\n delete _computeds[key];\n\n if (computed[key].watch && !isEqual(value, this[key])) {\n computed[key].watch.call(this, this[key], value);\n }\n\n }\n\n };\n\n UIkit.prototype._initProps = function (props) {\n\n var key;\n\n props = props || getProps(this.$options, this.$name);\n\n for (key in props) {\n if (!isUndefined(props[key])) {\n this.$props[key] = props[key];\n }\n }\n\n var exclude = [this.$options.computed, this.$options.methods];\n for (key in this.$props) {\n if (key in props && notIn(exclude, key)) {\n this[key] = this.$props[key];\n }\n }\n };\n\n UIkit.prototype._initEvents = function () {\n var this$1 = this;\n\n\n var ref = this.$options;\n var events = ref.events;\n\n if (events) {\n\n events.forEach(function (event) {\n\n if (!hasOwn(event, 'handler')) {\n for (var key in event) {\n registerEvent(this$1, event[key], key);\n }\n } else {\n registerEvent(this$1, event);\n }\n\n });\n }\n };\n\n UIkit.prototype._unbindEvents = function () {\n this._events.forEach(function (unbind) { return unbind(); });\n this._events = [];\n };\n\n UIkit.prototype._initObserver = function () {\n var this$1 = this;\n\n\n var ref = this.$options;\n var attrs = ref.attrs;\n var props = ref.props;\n var el = ref.el;\n if (this._observer || !props || attrs === false) {\n return;\n }\n\n attrs = isArray(attrs) ? attrs : Object.keys(props);\n\n this._observer = new MutationObserver(function () {\n\n var data = getProps(this$1.$options, this$1.$name);\n if (attrs.some(function (key) { return !isUndefined(data[key]) && data[key] !== this$1.$props[key]; })) {\n this$1.$reset();\n }\n\n });\n\n var filter = attrs.map(function (key) { return hyphenate(key); }).concat(this.$name);\n\n this._observer.observe(el, {\n attributes: true,\n attributeFilter: filter.concat(filter.map(function (key) { return (\"data-\" + key); }))\n });\n };\n\n function getProps(opts, name) {\n\n var data$1 = {};\n var args = opts.args; if ( args === void 0 ) args = [];\n var props = opts.props; if ( props === void 0 ) props = {};\n var el = opts.el;\n\n if (!props) {\n return data$1;\n }\n\n for (var key in props) {\n var prop = hyphenate(key);\n var value = data(el, prop);\n\n if (!isUndefined(value)) {\n\n value = props[key] === Boolean && value === ''\n ? true\n : coerce(props[key], value);\n\n if (prop === 'target' && (!value || startsWith(value, '_'))) {\n continue;\n }\n\n data$1[key] = value;\n }\n }\n\n var options = parseOptions(data(el, name), args);\n\n for (var key$1 in options) {\n var prop$1 = camelize(key$1);\n if (props[prop$1] !== undefined) {\n data$1[prop$1] = coerce(props[prop$1], options[key$1]);\n }\n }\n\n return data$1;\n }\n\n function registerComputed(component, key, cb) {\n Object.defineProperty(component, key, {\n\n enumerable: true,\n\n get: function() {\n\n var _computeds = component._computeds;\n var $props = component.$props;\n var $el = component.$el;\n\n if (!hasOwn(_computeds, key)) {\n _computeds[key] = (cb.get || cb).call(component, $props, $el);\n }\n\n return _computeds[key];\n },\n\n set: function(value) {\n\n var _computeds = component._computeds;\n\n _computeds[key] = cb.set ? cb.set.call(component, value) : value;\n\n if (isUndefined(_computeds[key])) {\n delete _computeds[key];\n }\n }\n\n });\n }\n\n function registerEvent(component, event, key) {\n\n if (!isPlainObject(event)) {\n event = ({name: key, handler: event});\n }\n\n var name = event.name;\n var el = event.el;\n var handler = event.handler;\n var capture = event.capture;\n var passive = event.passive;\n var delegate = event.delegate;\n var filter = event.filter;\n var self = event.self;\n el = isFunction(el)\n ? el.call(component)\n : el || component.$el;\n\n if (isArray(el)) {\n el.forEach(function (el) { return registerEvent(component, assign({}, event, {el: el}), key); });\n return;\n }\n\n if (!el || filter && !filter.call(component)) {\n return;\n }\n\n component._events.push(\n on(\n el,\n name,\n !delegate\n ? null\n : isString(delegate)\n ? delegate\n : delegate.call(component),\n isString(handler) ? component[handler] : handler.bind(component),\n {passive: passive, capture: capture, self: self}\n )\n );\n\n }\n\n function notIn(options, key) {\n return options.every(function (arr) { return !arr || !hasOwn(arr, key); });\n }\n\n function coerce(type, value) {\n\n if (type === Boolean) {\n return toBoolean(value);\n } else if (type === Number) {\n return toNumber(value);\n } else if (type === 'list') {\n return toList(value);\n }\n\n return type ? type(value) : value;\n }\n\n function normalizeData(ref, ref$1) {\n var data = ref.data;\n var el = ref.el;\n var args = ref$1.args;\n var props = ref$1.props; if ( props === void 0 ) props = {};\n\n data = isArray(data)\n ? !isEmpty(args)\n ? data.slice(0, args.length).reduce(function (data, value, index) {\n if (isPlainObject(value)) {\n assign(data, value);\n } else {\n data[args[index]] = value;\n }\n return data;\n }, {})\n : undefined\n : data;\n\n if (data) {\n for (var key in data) {\n if (isUndefined(data[key])) {\n delete data[key];\n } else {\n data[key] = props[key] ? coerce(props[key], data[key]) : data[key];\n }\n }\n }\n\n return data;\n }\n }\n\n function instanceAPI (UIkit) {\n\n var DATA = UIkit.data;\n\n UIkit.prototype.$mount = function (el) {\n\n var ref = this.$options;\n var name = ref.name;\n\n if (!el[DATA]) {\n el[DATA] = {};\n }\n\n if (el[DATA][name]) {\n return;\n }\n\n el[DATA][name] = this;\n\n this.$el = this.$options.el = this.$options.el || el;\n\n if (within(el, document)) {\n this._callConnected();\n }\n };\n\n UIkit.prototype.$emit = function (e) {\n this._callUpdate(e);\n };\n\n UIkit.prototype.$reset = function () {\n this._callDisconnected();\n this._callConnected();\n };\n\n UIkit.prototype.$destroy = function (removeEl) {\n if ( removeEl === void 0 ) removeEl = false;\n\n\n var ref = this.$options;\n var el = ref.el;\n var name = ref.name;\n\n if (el) {\n this._callDisconnected();\n }\n\n this._callHook('destroy');\n\n if (!el || !el[DATA]) {\n return;\n }\n\n delete el[DATA][name];\n\n if (!isEmpty(el[DATA])) {\n delete el[DATA];\n }\n\n if (removeEl) {\n remove(this.$el);\n }\n };\n\n UIkit.prototype.$create = function (component, element, data) {\n return UIkit[component](element, data);\n };\n\n UIkit.prototype.$update = UIkit.update;\n UIkit.prototype.$getComponent = UIkit.getComponent;\n\n var names = {};\n Object.defineProperties(UIkit.prototype, {\n\n $container: Object.getOwnPropertyDescriptor(UIkit, 'container'),\n\n $name: {\n\n get: function() {\n var ref = this.$options;\n var name = ref.name;\n\n if (!names[name]) {\n names[name] = UIkit.prefix + hyphenate(name);\n }\n\n return names[name];\n }\n\n }\n\n });\n\n }\n\n var UIkit = function (options) {\n this._init(options);\n };\n\n UIkit.util = util;\n UIkit.data = '__uikit__';\n UIkit.prefix = 'uk-';\n UIkit.options = {};\n\n globalAPI(UIkit);\n hooksAPI(UIkit);\n stateAPI(UIkit);\n componentAPI(UIkit);\n instanceAPI(UIkit);\n\n var Class = {\n\n connected: function() {\n !hasClass(this.$el, this.$name) && addClass(this.$el, this.$name);\n }\n\n };\n\n var Togglable = {\n\n props: {\n cls: Boolean,\n animation: 'list',\n duration: Number,\n origin: String,\n transition: String,\n queued: Boolean\n },\n\n data: {\n cls: false,\n animation: [false],\n duration: 200,\n origin: false,\n transition: 'linear',\n queued: false,\n\n initProps: {\n overflow: '',\n height: '',\n paddingTop: '',\n paddingBottom: '',\n marginTop: '',\n marginBottom: ''\n },\n\n hideProps: {\n overflow: 'hidden',\n height: 0,\n paddingTop: 0,\n paddingBottom: 0,\n marginTop: 0,\n marginBottom: 0\n }\n\n },\n\n computed: {\n\n hasAnimation: function(ref) {\n var animation = ref.animation;\n\n return !!animation[0];\n },\n\n hasTransition: function(ref) {\n var animation = ref.animation;\n\n return this.hasAnimation && animation[0] === true;\n }\n\n },\n\n methods: {\n\n toggleElement: function(targets, show, animate) {\n var this$1 = this;\n\n return new Promise(function (resolve) {\n\n targets = toNodes(targets);\n\n var all = function (targets) { return Promise.all(targets.map(function (el) { return this$1._toggleElement(el, show, animate); })); };\n var toggled = targets.filter(function (el) { return this$1.isToggled(el); });\n var untoggled = targets.filter(function (el) { return !includes(toggled, el); });\n\n var p;\n\n if (!this$1.queued || !isUndefined(animate) || !isUndefined(show) || !this$1.hasAnimation || targets.length < 2) {\n\n p = all(untoggled.concat(toggled));\n\n } else {\n\n var body = document.body;\n var scroll = body.scrollTop;\n var el = toggled[0];\n var inProgress = Animation.inProgress(el) && hasClass(el, 'uk-animation-leave')\n || Transition.inProgress(el) && el.style.height === '0px';\n\n p = all(toggled);\n\n if (!inProgress) {\n p = p.then(function () {\n var p = all(untoggled);\n body.scrollTop = scroll;\n return p;\n });\n }\n\n }\n\n p.then(resolve, noop);\n\n });\n },\n\n toggleNow: function(targets, show) {\n var this$1 = this;\n\n return new Promise(function (resolve) { return Promise.all(toNodes(targets).map(function (el) { return this$1._toggleElement(el, show, false); })).then(resolve, noop); });\n },\n\n isToggled: function(el) {\n var nodes = toNodes(el || this.$el);\n return this.cls\n ? hasClass(nodes, this.cls.split(' ')[0])\n : !hasAttr(nodes, 'hidden');\n },\n\n updateAria: function(el) {\n if (this.cls === false) {\n attr(el, 'aria-hidden', !this.isToggled(el));\n }\n },\n\n _toggleElement: function(el, show, animate) {\n var this$1 = this;\n\n\n show = isBoolean(show)\n ? show\n : Animation.inProgress(el)\n ? hasClass(el, 'uk-animation-leave')\n : Transition.inProgress(el)\n ? el.style.height === '0px'\n : !this.isToggled(el);\n\n if (!trigger(el, (\"before\" + (show ? 'show' : 'hide')), [this])) {\n return Promise.reject();\n }\n\n var promise = (\n isFunction(animate)\n ? animate\n : animate === false || !this.hasAnimation\n ? this._toggle\n : this.hasTransition\n ? toggleHeight(this)\n : toggleAnimation(this)\n )(el, show);\n\n trigger(el, show ? 'show' : 'hide', [this]);\n\n var final = function () {\n trigger(el, show ? 'shown' : 'hidden', [this$1]);\n this$1.$update(el);\n };\n\n return promise ? promise.then(final) : Promise.resolve(final());\n },\n\n _toggle: function(el, toggled) {\n\n if (!el) {\n return;\n }\n\n toggled = Boolean(toggled);\n\n var changed;\n if (this.cls) {\n changed = includes(this.cls, ' ') || toggled !== hasClass(el, this.cls);\n changed && toggleClass(el, this.cls, includes(this.cls, ' ') ? undefined : toggled);\n } else {\n changed = toggled === hasAttr(el, 'hidden');\n changed && attr(el, 'hidden', !toggled ? '' : null);\n }\n\n $$('[autofocus]', el).some(function (el) { return isVisible(el) ? el.focus() || true : el.blur(); });\n\n this.updateAria(el);\n changed && this.$update(el);\n }\n\n }\n\n };\n\n function toggleHeight(ref) {\n var isToggled = ref.isToggled;\n var duration = ref.duration;\n var initProps = ref.initProps;\n var hideProps = ref.hideProps;\n var transition = ref.transition;\n var _toggle = ref._toggle;\n\n return function (el, show) {\n\n var inProgress = Transition.inProgress(el);\n var inner = el.hasChildNodes ? toFloat(css(el.firstElementChild, 'marginTop')) + toFloat(css(el.lastElementChild, 'marginBottom')) : 0;\n var currentHeight = isVisible(el) ? height(el) + (inProgress ? 0 : inner) : 0;\n\n Transition.cancel(el);\n\n if (!isToggled(el)) {\n _toggle(el, true);\n }\n\n height(el, '');\n\n // Update child components first\n fastdom.flush();\n\n var endHeight = height(el) + (inProgress ? 0 : inner);\n height(el, currentHeight);\n\n return (show\n ? Transition.start(el, assign({}, initProps, {overflow: 'hidden', height: endHeight}), Math.round(duration * (1 - currentHeight / endHeight)), transition)\n : Transition.start(el, hideProps, Math.round(duration * (currentHeight / endHeight)), transition).then(function () { return _toggle(el, false); })\n ).then(function () { return css(el, initProps); });\n\n };\n }\n\n function toggleAnimation(ref) {\n var animation = ref.animation;\n var duration = ref.duration;\n var origin = ref.origin;\n var _toggle = ref._toggle;\n\n return function (el, show) {\n\n Animation.cancel(el);\n\n if (show) {\n _toggle(el, true);\n return Animation.in(el, animation[0], duration, origin);\n }\n\n return Animation.out(el, animation[1] || animation[0], duration, origin).then(function () { return _toggle(el, false); });\n };\n }\n\n var Accordion = {\n\n mixins: [Class, Togglable],\n\n props: {\n targets: String,\n active: null,\n collapsible: Boolean,\n multiple: Boolean,\n toggle: String,\n content: String,\n transition: String\n },\n\n data: {\n targets: '> *',\n active: false,\n animation: [true],\n collapsible: true,\n multiple: false,\n clsOpen: 'uk-open',\n toggle: '> .uk-accordion-title',\n content: '> .uk-accordion-content',\n transition: 'ease'\n },\n\n computed: {\n\n items: function(ref, $el) {\n var targets = ref.targets;\n\n return $$(targets, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.targets) + \" \" + (this.$props.toggle));\n },\n\n handler: function(e) {\n e.preventDefault();\n this.toggle(index($$(((this.targets) + \" \" + (this.$props.toggle)), this.$el), e.current));\n }\n\n }\n\n ],\n\n connected: function() {\n\n if (this.active === false) {\n return;\n }\n\n var active = this.items[Number(this.active)];\n if (active && !hasClass(active, this.clsOpen)) {\n this.toggle(active, false);\n }\n },\n\n update: function() {\n var this$1 = this;\n\n\n this.items.forEach(function (el) { return this$1._toggle($(this$1.content, el), hasClass(el, this$1.clsOpen)); });\n\n var active = !this.collapsible && !hasClass(this.items, this.clsOpen) && this.items[0];\n if (active) {\n this.toggle(active, false);\n }\n },\n\n methods: {\n\n toggle: function(item, animate) {\n var this$1 = this;\n\n\n var index = getIndex(item, this.items);\n var active = filter(this.items, (\".\" + (this.clsOpen)));\n\n item = this.items[index];\n\n item && [item]\n .concat(!this.multiple && !includes(active, item) && active || [])\n .forEach(function (el) {\n\n var isItem = el === item;\n var state = isItem && !hasClass(el, this$1.clsOpen);\n\n if (!state && isItem && !this$1.collapsible && active.length < 2) {\n return;\n }\n\n toggleClass(el, this$1.clsOpen, state);\n\n var content = el._wrapper ? el._wrapper.firstElementChild : $(this$1.content, el);\n\n if (!el._wrapper) {\n el._wrapper = wrapAll(content, '<div>');\n attr(el._wrapper, 'hidden', state ? '' : null);\n }\n\n this$1._toggle(content, true);\n this$1.toggleElement(el._wrapper, state, animate).then(function () {\n\n if (hasClass(el, this$1.clsOpen) !== state) {\n return;\n }\n\n if (!state) {\n this$1._toggle(content, false);\n }\n\n el._wrapper = null;\n unwrap(content);\n\n });\n\n });\n }\n\n }\n\n };\n\n var Alert = {\n\n mixins: [Class, Togglable],\n\n args: 'animation',\n\n props: {\n close: String\n },\n\n data: {\n animation: [true],\n selClose: '.uk-alert-close',\n duration: 150,\n hideProps: assign({opacity: 0}, Togglable.data.hideProps)\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.selClose;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.close();\n }\n\n }\n\n ],\n\n methods: {\n\n close: function() {\n var this$1 = this;\n\n this.toggleElement(this.$el).then(function () { return this$1.$destroy(true); });\n }\n\n }\n\n };\n\n function Core (UIkit) {\n\n ready(function () {\n\n UIkit.update();\n on(window, 'load resize', function () { return UIkit.update(null, 'resize'); });\n on(document, 'loadedmetadata load', function (ref) {\n var target = ref.target;\n\n return UIkit.update(target, 'resize');\n }, true);\n\n // throttle `scroll` event (Safari triggers multiple `scroll` events per frame)\n var pending;\n on(window, 'scroll', function (e) {\n\n if (pending) {\n return;\n }\n pending = true;\n fastdom.write(function () { return pending = false; });\n\n var target = e.target;\n UIkit.update(target.nodeType !== 1 ? document.body : target, e.type);\n\n }, {passive: true, capture: true});\n\n var started = 0;\n on(document, 'animationstart', function (ref) {\n var target = ref.target;\n\n if ((css(target, 'animationName') || '').match(/^uk-.*(left|right)/)) {\n\n started++;\n css(document.body, 'overflowX', 'hidden');\n setTimeout(function () {\n if (!--started) {\n css(document.body, 'overflowX', '');\n }\n }, toMs(css(target, 'animationDuration')) + 100);\n }\n }, true);\n\n var off;\n on(document, pointerDown, function (e) {\n\n off && off();\n\n if (!isTouch(e)) {\n return;\n }\n\n // Handle Swipe Gesture\n var pos = getEventPos(e);\n var target = 'tagName' in e.target ? e.target : e.target.parentNode;\n off = once(document, (pointerUp + \" \" + pointerCancel), function (e) {\n\n var ref = getEventPos(e);\n var x = ref.x;\n var y = ref.y;\n\n // swipe\n if (target && x && Math.abs(pos.x - x) > 100 || y && Math.abs(pos.y - y) > 100) {\n\n setTimeout(function () {\n trigger(target, 'swipe');\n trigger(target, (\"swipe\" + (swipeDirection(pos.x, pos.y, x, y))));\n });\n\n }\n\n });\n\n // Force click event anywhere on iOS < 13\n if (pointerDown === 'touchstart') {\n css(document.body, 'cursor', 'pointer');\n once(document, (pointerUp + \" \" + pointerCancel), function () { return setTimeout(function () { return css(document.body, 'cursor', ''); }\n , 50); }\n );\n }\n\n }, {passive: true});\n\n });\n\n }\n\n function swipeDirection(x1, y1, x2, y2) {\n return Math.abs(x1 - x2) >= Math.abs(y1 - y2)\n ? x1 - x2 > 0\n ? 'Left'\n : 'Right'\n : y1 - y2 > 0\n ? 'Up'\n : 'Down';\n }\n\n var Video = {\n\n args: 'autoplay',\n\n props: {\n automute: Boolean,\n autoplay: Boolean\n },\n\n data: {\n automute: false,\n autoplay: true\n },\n\n computed: {\n\n inView: function(ref) {\n var autoplay = ref.autoplay;\n\n return autoplay === 'inview';\n }\n\n },\n\n connected: function() {\n\n if (this.inView && !hasAttr(this.$el, 'preload')) {\n this.$el.preload = 'none';\n }\n\n this.player = new Player(this.$el);\n\n if (this.automute) {\n this.player.mute();\n }\n\n },\n\n update: {\n\n read: function() {\n\n return !this.player\n ? false\n : {\n visible: isVisible(this.$el) && css(this.$el, 'visibility') !== 'hidden',\n inView: this.inView && isInView(this.$el)\n };\n },\n\n write: function(ref) {\n var visible = ref.visible;\n var inView = ref.inView;\n\n\n if (!visible || this.inView && !inView) {\n this.player.pause();\n } else if (this.autoplay === true || this.inView && inView) {\n this.player.play();\n }\n\n },\n\n events: ['resize', 'scroll']\n\n }\n\n };\n\n var Cover = {\n\n mixins: [Class, Video],\n\n props: {\n width: Number,\n height: Number\n },\n\n data: {\n automute: true\n },\n\n update: {\n\n read: function() {\n\n var el = this.$el;\n var ref = el.parentNode;\n var height = ref.offsetHeight;\n var width = ref.offsetWidth;\n var dim = Dimensions.cover(\n {\n width: this.width || el.naturalWidth || el.videoWidth || el.clientWidth,\n height: this.height || el.naturalHeight || el.videoHeight || el.clientHeight\n },\n {\n width: width + (width % 2 ? 1 : 0),\n height: height + (height % 2 ? 1 : 0)\n }\n );\n\n if (!dim.width || !dim.height) {\n return false;\n }\n\n return dim;\n },\n\n write: function(ref) {\n var height = ref.height;\n var width = ref.width;\n\n css(this.$el, {height: height, width: width});\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Position = {\n\n props: {\n pos: String,\n offset: null,\n flip: Boolean,\n clsPos: String\n },\n\n data: {\n pos: (\"bottom-\" + (!isRtl ? 'left' : 'right')),\n flip: true,\n offset: false,\n clsPos: ''\n },\n\n computed: {\n\n pos: function(ref) {\n var pos = ref.pos;\n\n return (pos + (!includes(pos, '-') ? '-center' : '')).split('-');\n },\n\n dir: function() {\n return this.pos[0];\n },\n\n align: function() {\n return this.pos[1];\n }\n\n },\n\n methods: {\n\n positionAt: function(element, target, boundary) {\n\n removeClasses(element, ((this.clsPos) + \"-(top|bottom|left|right)(-[a-z]+)?\"));\n css(element, {top: '', left: ''});\n\n var node;\n var ref = this;\n var offset$1 = ref.offset;\n var axis = this.getAxis();\n\n if (!isNumeric(offset$1)) {\n node = $(offset$1);\n offset$1 = node\n ? offset(node)[axis === 'x' ? 'left' : 'top'] - offset(target)[axis === 'x' ? 'right' : 'bottom']\n : 0;\n }\n\n var ref$1 = positionAt(\n element,\n target,\n axis === 'x' ? ((flipPosition(this.dir)) + \" \" + (this.align)) : ((this.align) + \" \" + (flipPosition(this.dir))),\n axis === 'x' ? ((this.dir) + \" \" + (this.align)) : ((this.align) + \" \" + (this.dir)),\n axis === 'x' ? (\"\" + (this.dir === 'left' ? -offset$1 : offset$1)) : (\" \" + (this.dir === 'top' ? -offset$1 : offset$1)),\n null,\n this.flip,\n boundary\n ).target;\n var x = ref$1.x;\n var y = ref$1.y;\n\n this.dir = axis === 'x' ? x : y;\n this.align = axis === 'x' ? y : x;\n\n toggleClass(element, ((this.clsPos) + \"-\" + (this.dir) + \"-\" + (this.align)), this.offset === false);\n\n },\n\n getAxis: function() {\n return this.dir === 'top' || this.dir === 'bottom' ? 'y' : 'x';\n }\n\n }\n\n };\n\n var active;\n\n var Drop = {\n\n mixins: [Position, Togglable],\n\n args: 'pos',\n\n props: {\n mode: 'list',\n toggle: Boolean,\n boundary: Boolean,\n boundaryAlign: Boolean,\n delayShow: Number,\n delayHide: Number,\n clsDrop: String\n },\n\n data: {\n mode: ['click', 'hover'],\n toggle: '- *',\n boundary: window,\n boundaryAlign: false,\n delayShow: 0,\n delayHide: 800,\n clsDrop: false,\n hoverIdle: 200,\n animation: ['uk-animation-fade'],\n cls: 'uk-open'\n },\n\n computed: {\n\n boundary: function(ref, $el) {\n var boundary = ref.boundary;\n\n return query(boundary, $el);\n },\n\n clsDrop: function(ref) {\n var clsDrop = ref.clsDrop;\n\n return clsDrop || (\"uk-\" + (this.$options.name));\n },\n\n clsPos: function() {\n return this.clsDrop;\n }\n\n },\n\n created: function() {\n this.tracker = new MouseTracker();\n },\n\n connected: function() {\n\n addClass(this.$el, this.clsDrop);\n\n var ref = this.$props;\n var toggle = ref.toggle;\n this.toggle = toggle && this.$create('toggle', query(toggle, this.$el), {\n target: this.$el,\n mode: this.mode\n });\n\n !this.toggle && trigger(this.$el, 'updatearia');\n\n },\n\n events: [\n\n\n {\n\n name: 'click',\n\n delegate: function() {\n return (\".\" + (this.clsDrop) + \"-close\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.hide(false);\n }\n\n },\n\n {\n\n name: 'click',\n\n delegate: function() {\n return 'a[href^=\"#\"]';\n },\n\n handler: function(ref) {\n var defaultPrevented = ref.defaultPrevented;\n var hash = ref.current.hash;\n\n if (!defaultPrevented && hash && !within(hash, this.$el)) {\n this.hide(false);\n }\n }\n\n },\n\n {\n\n name: 'beforescroll',\n\n handler: function() {\n this.hide(false);\n }\n\n },\n\n {\n\n name: 'toggle',\n\n self: true,\n\n handler: function(e, toggle) {\n\n e.preventDefault();\n\n if (this.isToggled()) {\n this.hide(false);\n } else {\n this.show(toggle, false);\n }\n }\n\n },\n\n {\n\n name: pointerEnter,\n\n filter: function() {\n return includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n\n if (isTouch(e)) {\n return;\n }\n\n if (active\n && active !== this\n && active.toggle\n && includes(active.toggle.mode, 'hover')\n && !within(e.target, active.toggle.$el)\n && !pointInRect({x: e.pageX, y: e.pageY}, offset(active.$el))\n ) {\n active.hide(false);\n }\n\n e.preventDefault();\n this.show(this.toggle);\n }\n\n },\n\n {\n\n name: 'toggleshow',\n\n handler: function(e, toggle) {\n\n if (toggle && !includes(toggle.target, this.$el)) {\n return;\n }\n\n e.preventDefault();\n this.show(toggle || this.toggle);\n }\n\n },\n\n {\n\n name: (\"togglehide \" + pointerLeave),\n\n handler: function(e, toggle) {\n\n if (isTouch(e) || toggle && !includes(toggle.target, this.$el)) {\n return;\n }\n\n e.preventDefault();\n\n if (this.toggle && includes(this.toggle.mode, 'hover')) {\n this.hide();\n }\n }\n\n },\n\n {\n\n name: 'beforeshow',\n\n self: true,\n\n handler: function() {\n this.clearTimers();\n Animation.cancel(this.$el);\n this.position();\n }\n\n },\n\n {\n\n name: 'show',\n\n self: true,\n\n handler: function() {\n var this$1 = this;\n\n this.tracker.init();\n trigger(this.$el, 'updatearia');\n\n // If triggered from an click event handler, delay adding the click handler\n var off = delayOn(document, 'click', function (ref) {\n var defaultPrevented = ref.defaultPrevented;\n var target = ref.target;\n\n if (!defaultPrevented && !within(target, this$1.$el) && !(this$1.toggle && within(target, this$1.toggle.$el))) {\n this$1.hide(false);\n }\n });\n\n once(this.$el, 'hide', off, {self: true});\n }\n\n },\n\n {\n\n name: 'beforehide',\n\n self: true,\n\n handler: function() {\n this.clearTimers();\n }\n\n },\n\n {\n\n name: 'hide',\n\n handler: function(ref) {\n var target = ref.target;\n\n\n if (this.$el !== target) {\n active = active === null && within(target, this.$el) && this.isToggled() ? this : active;\n return;\n }\n\n active = this.isActive() ? null : active;\n trigger(this.$el, 'updatearia');\n this.tracker.cancel();\n }\n\n },\n\n {\n\n name: 'updatearia',\n\n self: true,\n\n handler: function(e, toggle) {\n\n e.preventDefault();\n\n this.updateAria(this.$el);\n\n if (toggle || this.toggle) {\n attr((toggle || this.toggle).$el, 'aria-expanded', this.isToggled());\n toggleClass(this.toggle.$el, this.cls, this.isToggled());\n }\n }\n }\n\n ],\n\n update: {\n\n write: function() {\n\n if (this.isToggled() && !Animation.inProgress(this.$el)) {\n this.position();\n }\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n show: function(toggle, delay) {\n var this$1 = this;\n if ( delay === void 0 ) delay = true;\n\n\n var show = function () { return !this$1.isToggled() && this$1.toggleElement(this$1.$el, true); };\n var tryShow = function () {\n\n this$1.toggle = toggle || this$1.toggle;\n\n this$1.clearTimers();\n\n if (this$1.isActive()) {\n return;\n } else if (delay && active && active !== this$1 && active.isDelaying) {\n this$1.showTimer = setTimeout(this$1.show, 10);\n return;\n } else if (this$1.isParentOf(active)) {\n\n if (active.hideTimer) {\n active.hide(false);\n } else {\n return;\n }\n\n } else if (this$1.isChildOf(active)) {\n\n active.clearTimers();\n\n } else if (active && !this$1.isChildOf(active) && !this$1.isParentOf(active)) {\n\n var prev;\n while (active && active !== prev && !this$1.isChildOf(active)) {\n prev = active;\n active.hide(false);\n }\n\n }\n\n if (delay && this$1.delayShow) {\n this$1.showTimer = setTimeout(show, this$1.delayShow);\n } else {\n show();\n }\n\n active = this$1;\n };\n\n if (toggle && this.toggle && toggle.$el !== this.toggle.$el) {\n\n once(this.$el, 'hide', tryShow);\n this.hide(false);\n\n } else {\n tryShow();\n }\n },\n\n hide: function(delay) {\n var this$1 = this;\n if ( delay === void 0 ) delay = true;\n\n\n var hide = function () { return this$1.toggleNow(this$1.$el, false); };\n\n this.clearTimers();\n\n this.isDelaying = this.tracker.movesTo(this.$el);\n\n if (delay && this.isDelaying) {\n this.hideTimer = setTimeout(this.hide, this.hoverIdle);\n } else if (delay && this.delayHide) {\n this.hideTimer = setTimeout(hide, this.delayHide);\n } else {\n hide();\n }\n },\n\n clearTimers: function() {\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.showTimer = null;\n this.hideTimer = null;\n this.isDelaying = false;\n },\n\n isActive: function() {\n return active === this;\n },\n\n isChildOf: function(drop) {\n return drop && drop !== this && within(this.$el, drop.$el);\n },\n\n isParentOf: function(drop) {\n return drop && drop !== this && within(drop.$el, this.$el);\n },\n\n position: function() {\n\n removeClasses(this.$el, ((this.clsDrop) + \"-(stack|boundary)\"));\n css(this.$el, {top: '', left: '', display: 'block'});\n toggleClass(this.$el, ((this.clsDrop) + \"-boundary\"), this.boundaryAlign);\n\n var boundary = offset(this.boundary);\n var alignTo = this.boundaryAlign ? boundary : offset(this.toggle.$el);\n\n if (this.align === 'justify') {\n var prop = this.getAxis() === 'y' ? 'width' : 'height';\n css(this.$el, prop, alignTo[prop]);\n } else if (this.$el.offsetWidth > Math.max(boundary.right - alignTo.left, alignTo.right - boundary.left)) {\n addClass(this.$el, ((this.clsDrop) + \"-stack\"));\n }\n\n this.positionAt(this.$el, this.boundaryAlign ? this.boundary : this.toggle.$el, this.boundary);\n\n css(this.$el, 'display', '');\n\n }\n\n }\n\n };\n\n function delayOn(el, type, fn) {\n var off = once(el, type, function () { return off = on(el, type, fn); }\n , true);\n return function () { return off(); };\n }\n\n var Dropdown = {\n\n extends: Drop\n\n };\n\n var FormCustom = {\n\n mixins: [Class],\n\n args: 'target',\n\n props: {\n target: Boolean\n },\n\n data: {\n target: false\n },\n\n computed: {\n\n input: function(_, $el) {\n return $(selInput, $el);\n },\n\n state: function() {\n return this.input.nextElementSibling;\n },\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return target && (target === true\n && this.input.parentNode === $el\n && this.input.nextElementSibling\n || query(target, $el));\n }\n\n },\n\n update: function() {\n\n var ref = this;\n var target = ref.target;\n var input = ref.input;\n\n if (!target) {\n return;\n }\n\n var option;\n var prop = isInput(target) ? 'value' : 'textContent';\n var prev = target[prop];\n var value = input.files && input.files[0]\n ? input.files[0].name\n : matches(input, 'select') && (option = $$('option', input).filter(function (el) { return el.selected; })[0]) // eslint-disable-line prefer-destructuring\n ? option.textContent\n : input.value;\n\n if (prev !== value) {\n target[prop] = value;\n }\n\n },\n\n events: [\n\n {\n name: 'change',\n\n handler: function() {\n this.$emit();\n }\n },\n\n {\n name: 'reset',\n\n el: function() {\n return closest(this.$el, 'form');\n },\n\n handler: function() {\n this.$emit();\n }\n }\n\n ]\n\n };\n\n // Deprecated\n var Gif = {\n\n update: {\n\n read: function(data) {\n\n var inview = isInView(this.$el);\n\n if (!inview || data.isInView === inview) {\n return false;\n }\n\n data.isInView = inview;\n },\n\n write: function() {\n this.$el.src = this.$el.src;\n },\n\n events: ['scroll', 'resize']\n }\n\n };\n\n var Margin = {\n\n props: {\n margin: String,\n firstColumn: Boolean\n },\n\n data: {\n margin: 'uk-margin-small-top',\n firstColumn: 'uk-first-column'\n },\n\n update: {\n\n read: function(data) {\n\n var items = this.$el.children;\n var rows = [[]];\n\n if (!items.length || !isVisible(this.$el)) {\n return data.rows = rows;\n }\n\n data.rows = getRows(items);\n data.stacks = !data.rows.some(function (row) { return row.length > 1; });\n\n },\n\n write: function(ref) {\n var this$1 = this;\n var rows = ref.rows;\n\n\n rows.forEach(function (row, i) { return row.forEach(function (el, j) {\n toggleClass(el, this$1.margin, i !== 0);\n toggleClass(el, this$1.firstColumn, j === 0);\n }); }\n );\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n function getRows(items) {\n var rows = [[]];\n\n for (var i = 0; i < items.length; i++) {\n\n var el = items[i];\n var dim = getOffset(el);\n\n if (!dim.height) {\n continue;\n }\n\n for (var j = rows.length - 1; j >= 0; j--) {\n\n var row = rows[j];\n\n if (!row[0]) {\n row.push(el);\n break;\n }\n\n var leftDim = (void 0);\n if (row[0].offsetParent === el.offsetParent) {\n leftDim = getOffset(row[0]);\n } else {\n dim = getOffset(el, true);\n leftDim = getOffset(row[0], true);\n }\n\n if (dim.top >= leftDim.bottom - 1 && dim.top !== leftDim.top) {\n rows.push([el]);\n break;\n }\n\n if (dim.bottom > leftDim.top) {\n\n if (dim.left < leftDim.left && !isRtl) {\n row.unshift(el);\n break;\n }\n\n row.push(el);\n break;\n }\n\n if (j === 0) {\n rows.unshift([el]);\n break;\n }\n\n }\n\n }\n\n return rows;\n\n }\n\n function getOffset(element, offset) {\n var assign;\n\n if ( offset === void 0 ) offset = false;\n\n var offsetTop = element.offsetTop;\n var offsetLeft = element.offsetLeft;\n var offsetHeight = element.offsetHeight;\n\n if (offset) {\n (assign = offsetPosition(element), offsetTop = assign[0], offsetLeft = assign[1]);\n }\n\n return {\n top: offsetTop,\n left: offsetLeft,\n height: offsetHeight,\n bottom: offsetTop + offsetHeight\n };\n }\n\n var Grid = {\n\n extends: Margin,\n\n mixins: [Class],\n\n name: 'grid',\n\n props: {\n masonry: Boolean,\n parallax: Number\n },\n\n data: {\n margin: 'uk-grid-margin',\n clsStack: 'uk-grid-stack',\n masonry: false,\n parallax: 0\n },\n\n computed: {\n\n length: function(_, $el) {\n return $el.children.length;\n },\n\n parallax: function(ref) {\n var parallax = ref.parallax;\n\n return parallax && this.length ? Math.abs(parallax) : '';\n }\n\n },\n\n connected: function() {\n this.masonry && addClass(this.$el, 'uk-flex-top uk-flex-wrap-top');\n },\n\n update: [\n\n {\n\n read: function(ref) {\n var rows = ref.rows;\n\n\n if (this.masonry || this.parallax) {\n rows = rows.map(function (elements) { return sortBy(elements, 'offsetLeft'); });\n\n if (isRtl) {\n rows.map(function (row) { return row.reverse(); });\n }\n\n }\n\n var transitionInProgress = rows.some(function (elements) { return elements.some(Transition.inProgress); });\n var translates = false;\n var elHeight = '';\n\n if (this.masonry && this.length) {\n\n var height = 0;\n\n translates = rows.reduce(function (translates, row, i) {\n\n translates[i] = row.map(function (_, j) { return i === 0 ? 0 : toFloat(translates[i - 1][j]) + (height - toFloat(rows[i - 1][j] && rows[i - 1][j].offsetHeight)); });\n height = row.reduce(function (height, el) { return Math.max(height, el.offsetHeight); }, 0);\n\n return translates;\n\n }, []);\n\n elHeight = maxColumnHeight(rows) + getMarginTop(this.$el, this.margin) * (rows.length - 1);\n\n }\n\n var padding = this.parallax && getPaddingBottom(this.parallax, rows, translates);\n\n return {padding: padding, rows: rows, translates: translates, height: !transitionInProgress ? elHeight : false};\n\n },\n\n write: function(ref) {\n var stacks = ref.stacks;\n var height = ref.height;\n var padding = ref.padding;\n\n\n toggleClass(this.$el, this.clsStack, stacks);\n\n css(this.$el, 'paddingBottom', padding);\n height !== false && css(this.$el, 'height', height);\n\n },\n\n events: ['resize']\n\n },\n\n {\n\n read: function(ref) {\n var height$1 = ref.height;\n\n return {\n scrolled: this.parallax\n ? scrolledOver(this.$el, height$1 ? height$1 - height(this.$el) : 0) * this.parallax\n : false\n };\n },\n\n write: function(ref) {\n var rows = ref.rows;\n var scrolled = ref.scrolled;\n var translates = ref.translates;\n\n\n if (scrolled === false && !translates) {\n return;\n }\n\n rows.forEach(function (row, i) { return row.forEach(function (el, j) { return css(el, 'transform', !scrolled && !translates ? '' : (\"translateY(\" + ((translates && -translates[i][j]) + (scrolled ? j % 2 ? scrolled : scrolled / 8 : 0)) + \"px)\")); }\n ); }\n );\n\n },\n\n events: ['scroll', 'resize']\n\n }\n\n ]\n\n };\n\n function getPaddingBottom(distance, rows, translates) {\n var column = 0;\n var max = 0;\n var maxScrolled = 0;\n for (var i = rows.length - 1; i >= 0; i--) {\n for (var j = column; j < rows[i].length; j++) {\n var el = rows[i][j];\n var bottom = el.offsetTop + height(el) + (translates && -translates[i][j]);\n max = Math.max(max, bottom);\n maxScrolled = Math.max(maxScrolled, bottom + (j % 2 ? distance : distance / 8));\n column++;\n }\n }\n return maxScrolled - max;\n }\n\n function getMarginTop(root, cls) {\n\n var nodes = toNodes(root.children);\n var ref = nodes.filter(function (el) { return hasClass(el, cls); });\n var node = ref[0];\n\n return toFloat(node\n ? css(node, 'marginTop')\n : css(nodes[0], 'paddingLeft'));\n }\n\n function maxColumnHeight(rows) {\n return Math.max.apply(Math, rows.reduce(function (sum, row) {\n row.forEach(function (el, i) { return sum[i] = (sum[i] || 0) + el.offsetHeight; });\n return sum;\n }, []));\n }\n\n // IE 11 fix (min-height on a flex container won't apply to its flex items)\n var FlexBug = isIE ? {\n\n props: {\n selMinHeight: String\n },\n\n data: {\n selMinHeight: false,\n forceHeight: false\n },\n\n computed: {\n\n elements: function(ref, $el) {\n var selMinHeight = ref.selMinHeight;\n\n return selMinHeight ? $$(selMinHeight, $el) : [$el];\n }\n\n },\n\n update: [\n\n {\n\n read: function() {\n css(this.elements, 'height', '');\n },\n\n order: -5,\n\n events: ['resize']\n\n },\n\n {\n\n write: function() {\n var this$1 = this;\n\n this.elements.forEach(function (el) {\n var height = toFloat(css(el, 'minHeight'));\n if (height && (this$1.forceHeight || Math.round(height + boxModelAdjust('height', el, 'content-box')) >= el.offsetHeight)) {\n css(el, 'height', height);\n }\n });\n },\n\n order: 5,\n\n events: ['resize']\n\n }\n\n ]\n\n } : {};\n\n var HeightMatch = {\n\n mixins: [FlexBug],\n\n args: 'target',\n\n props: {\n target: String,\n row: Boolean\n },\n\n data: {\n target: '> *',\n row: true,\n forceHeight: true\n },\n\n computed: {\n\n elements: function(ref, $el) {\n var target = ref.target;\n\n return $$(target, $el);\n }\n\n },\n\n update: {\n\n read: function() {\n return {\n rows: (this.row ? getRows(this.elements) : [this.elements]).map(match)\n };\n },\n\n write: function(ref) {\n var rows = ref.rows;\n\n rows.forEach(function (ref) {\n var heights = ref.heights;\n var elements = ref.elements;\n\n return elements.forEach(function (el, i) { return css(el, 'minHeight', heights[i]); }\n );\n }\n );\n },\n\n events: ['resize']\n\n }\n\n };\n\n function match(elements) {\n var assign;\n\n\n if (elements.length < 2) {\n return {heights: [''], elements: elements};\n }\n\n var ref = getHeights(elements);\n var heights = ref.heights;\n var max = ref.max;\n var hasMinHeight = elements.some(function (el) { return el.style.minHeight; });\n var hasShrunk = elements.some(function (el, i) { return !el.style.minHeight && heights[i] < max; });\n\n if (hasMinHeight && hasShrunk) {\n css(elements, 'minHeight', '');\n ((assign = getHeights(elements), heights = assign.heights, max = assign.max));\n }\n\n heights = elements.map(function (el, i) { return heights[i] === max && toFloat(el.style.minHeight).toFixed(2) !== max.toFixed(2) ? '' : max; }\n );\n\n return {heights: heights, elements: elements};\n }\n\n function getHeights(elements) {\n var heights = elements.map(function (el) { return offset(el).height - boxModelAdjust('height', el, 'content-box'); });\n var max = Math.max.apply(null, heights);\n\n return {heights: heights, max: max};\n }\n\n var HeightViewport = {\n\n mixins: [FlexBug],\n\n props: {\n expand: Boolean,\n offsetTop: Boolean,\n offsetBottom: Boolean,\n minHeight: Number\n },\n\n data: {\n expand: false,\n offsetTop: false,\n offsetBottom: false,\n minHeight: 0\n },\n\n update: {\n\n read: function(ref) {\n var prev = ref.minHeight;\n\n\n if (!isVisible(this.$el)) {\n return false;\n }\n\n var minHeight = '';\n var box = boxModelAdjust('height', this.$el, 'content-box');\n\n if (this.expand) {\n\n this.$el.dataset.heightExpand = '';\n\n if ($('[data-height-expand]') !== this.$el) {\n return false;\n }\n\n minHeight = height(window) - (offsetHeight(document.documentElement) - offsetHeight(this.$el)) - box || '';\n\n } else {\n\n // on mobile devices (iOS and Android) window.innerHeight !== 100vh\n minHeight = 'calc(100vh';\n\n if (this.offsetTop) {\n\n var ref$1 = offset(this.$el);\n var top = ref$1.top;\n minHeight += top > 0 && top < height(window) / 2 ? (\" - \" + top + \"px\") : '';\n\n }\n\n if (this.offsetBottom === true) {\n\n minHeight += \" - \" + (offsetHeight(this.$el.nextElementSibling)) + \"px\";\n\n } else if (isNumeric(this.offsetBottom)) {\n\n minHeight += \" - \" + (this.offsetBottom) + \"vh\";\n\n } else if (this.offsetBottom && endsWith(this.offsetBottom, 'px')) {\n\n minHeight += \" - \" + (toFloat(this.offsetBottom)) + \"px\";\n\n } else if (isString(this.offsetBottom)) {\n\n minHeight += \" - \" + (offsetHeight(query(this.offsetBottom, this.$el))) + \"px\";\n\n }\n\n minHeight += (box ? (\" - \" + box + \"px\") : '') + \")\";\n\n }\n\n return {minHeight: minHeight, prev: prev};\n },\n\n write: function(ref) {\n var minHeight = ref.minHeight;\n var prev = ref.prev;\n\n\n css(this.$el, {minHeight: minHeight});\n\n if (minHeight !== prev) {\n this.$update(this.$el, 'resize');\n }\n\n if (this.minHeight && toFloat(css(this.$el, 'minHeight')) < this.minHeight) {\n css(this.$el, 'minHeight', this.minHeight);\n }\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n function offsetHeight(el) {\n return el && offset(el).height || 0;\n }\n\n var Svg = {\n\n args: 'src',\n\n props: {\n id: Boolean,\n icon: String,\n src: String,\n style: String,\n width: Number,\n height: Number,\n ratio: Number,\n class: String,\n strokeAnimation: Boolean,\n focusable: Boolean, // IE 11\n attributes: 'list'\n },\n\n data: {\n ratio: 1,\n include: ['style', 'class', 'focusable'],\n class: '',\n strokeAnimation: false\n },\n\n beforeConnect: function() {\n var this$1 = this;\n var assign;\n\n\n this.class += ' uk-svg';\n\n if (!this.icon && includes(this.src, '#')) {\n\n var parts = this.src.split('#');\n\n if (parts.length > 1) {\n (assign = parts, this.src = assign[0], this.icon = assign[1]);\n }\n }\n\n this.svg = this.getSvg().then(function (el) {\n this$1.applyAttributes(el);\n return this$1.svgEl = insertSVG(el, this$1.$el);\n }, noop);\n\n },\n\n disconnected: function() {\n var this$1 = this;\n\n\n if (isVoidElement(this.$el)) {\n attr(this.$el, 'hidden', null);\n }\n\n if (this.svg) {\n this.svg.then(function (svg) { return (!this$1._connected || svg !== this$1.svgEl) && remove(svg); }, noop);\n }\n\n this.svg = this.svgEl = null;\n\n },\n\n update: {\n\n read: function() {\n return !!(this.strokeAnimation && this.svgEl && isVisible(this.svgEl));\n },\n\n write: function() {\n applyAnimation(this.svgEl);\n },\n\n type: ['resize']\n\n },\n\n methods: {\n\n getSvg: function() {\n var this$1 = this;\n\n return loadSVG(this.src).then(function (svg) { return parseSVG(svg, this$1.icon) || Promise.reject('SVG not found.'); }\n );\n },\n\n applyAttributes: function(el) {\n var this$1 = this;\n\n\n for (var prop in this.$options.props) {\n if (this[prop] && includes(this.include, prop)) {\n attr(el, prop, this[prop]);\n }\n }\n\n for (var attribute in this.attributes) {\n var ref = this.attributes[attribute].split(':', 2);\n var prop$1 = ref[0];\n var value = ref[1];\n attr(el, prop$1, value);\n }\n\n if (!this.id) {\n removeAttr(el, 'id');\n }\n\n var props = ['width', 'height'];\n var dimensions = [this.width, this.height];\n\n if (!dimensions.some(function (val) { return val; })) {\n dimensions = props.map(function (prop) { return attr(el, prop); });\n }\n\n var viewBox = attr(el, 'viewBox');\n if (viewBox && !dimensions.some(function (val) { return val; })) {\n dimensions = viewBox.split(' ').slice(2);\n }\n\n dimensions.forEach(function (val, i) {\n val = (val | 0) * this$1.ratio;\n val && attr(el, props[i], val);\n\n if (val && !dimensions[i ^ 1]) {\n removeAttr(el, props[i ^ 1]);\n }\n });\n\n attr(el, 'data-svg', this.icon || this.src);\n\n }\n\n }\n\n };\n\n var svgs = {};\n\n function loadSVG(src) {\n\n if (svgs[src]) {\n return svgs[src];\n }\n\n return svgs[src] = new Promise(function (resolve, reject) {\n\n if (!src) {\n reject();\n return;\n }\n\n if (startsWith(src, 'data:')) {\n resolve(decodeURIComponent(src.split(',')[1]));\n } else {\n\n ajax(src).then(\n function (xhr) { return resolve(xhr.response); },\n function () { return reject('SVG not found.'); }\n );\n\n }\n\n });\n }\n\n function parseSVG(svg, icon) {\n\n if (icon && includes(svg, '<symbol')) {\n svg = parseSymbols(svg, icon) || svg;\n }\n\n svg = $(svg.substr(svg.indexOf('<svg')));\n return svg && svg.hasChildNodes() && svg;\n }\n\n var symbolRe = /<symbol(.*?id=(['\"])(.*?)\\2[^]*?<\\/)symbol>/g;\n var symbols = {};\n\n function parseSymbols(svg, icon) {\n\n if (!symbols[svg]) {\n\n symbols[svg] = {};\n\n var match;\n while ((match = symbolRe.exec(svg))) {\n symbols[svg][match[3]] = \"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\"\" + (match[1]) + \"svg>\";\n }\n\n symbolRe.lastIndex = 0;\n\n }\n\n return symbols[svg][icon];\n }\n\n function applyAnimation(el) {\n\n var length = getMaxPathLength(el);\n\n if (length) {\n el.style.setProperty('--uk-animation-stroke', length);\n }\n\n }\n\n function getMaxPathLength(el) {\n return Math.ceil(Math.max.apply(Math, $$('[stroke]', el).map(function (stroke) { return stroke.getTotalLength && stroke.getTotalLength() || 0; }\n ).concat([0])));\n }\n\n function insertSVG(el, root) {\n if (isVoidElement(root) || root.tagName === 'CANVAS') {\n\n attr(root, 'hidden', true);\n\n var next = root.nextElementSibling;\n return equals(el, next)\n ? next\n : after(root, el);\n\n } else {\n\n var last = root.lastElementChild;\n return equals(el, last)\n ? last\n : append(root, el);\n\n }\n }\n\n function equals(el, other) {\n return attr(el, 'data-svg') === attr(other, 'data-svg');\n }\n\n var closeIcon = \"<svg width=\\\"14\\\" height=\\\"14\\\" viewBox=\\\"0 0 14 14\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"13\\\" y2=\\\"13\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"13\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"13\\\"/></svg>\";\n\n var closeLarge = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" x1=\\\"1\\\" y1=\\\"1\\\" x2=\\\"19\\\" y2=\\\"19\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" x1=\\\"19\\\" y1=\\\"1\\\" x2=\\\"1\\\" y2=\\\"19\\\"/></svg>\";\n\n var marker = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect x=\\\"9\\\" y=\\\"4\\\" width=\\\"1\\\" height=\\\"11\\\"/><rect x=\\\"4\\\" y=\\\"9\\\" width=\\\"11\\\" height=\\\"1\\\"/></svg>\";\n\n var navbarToggleIcon = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect y=\\\"9\\\" width=\\\"20\\\" height=\\\"2\\\"/><rect y=\\\"3\\\" width=\\\"20\\\" height=\\\"2\\\"/><rect y=\\\"15\\\" width=\\\"20\\\" height=\\\"2\\\"/></svg>\";\n\n var overlayIcon = \"<svg width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><rect x=\\\"19\\\" y=\\\"0\\\" width=\\\"1\\\" height=\\\"40\\\"/><rect x=\\\"0\\\" y=\\\"19\\\" width=\\\"40\\\" height=\\\"1\\\"/></svg>\";\n\n var paginationNext = \"<svg width=\\\"7\\\" height=\\\"12\\\" viewBox=\\\"0 0 7 12\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"1 1 6 6 1 11\\\"/></svg>\";\n\n var paginationPrevious = \"<svg width=\\\"7\\\" height=\\\"12\\\" viewBox=\\\"0 0 7 12\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"6 1 1 6 6 11\\\"/></svg>\";\n\n var searchIcon = \"<svg width=\\\"20\\\" height=\\\"20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" cx=\\\"9\\\" cy=\\\"9\\\" r=\\\"7\\\"/><path fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" d=\\\"M14,14 L18,18 L14,14 Z\\\"/></svg>\";\n\n var searchLarge = \"<svg width=\\\"40\\\" height=\\\"40\\\" viewBox=\\\"0 0 40 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.8\\\" cx=\\\"17.5\\\" cy=\\\"17.5\\\" r=\\\"16.5\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.8\\\" x1=\\\"38\\\" y1=\\\"39\\\" x2=\\\"29\\\" y2=\\\"30\\\"/></svg>\";\n\n var searchNavbar = \"<svg width=\\\"24\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" cx=\\\"10.5\\\" cy=\\\"10.5\\\" r=\\\"9.5\\\"/><line fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.1\\\" x1=\\\"23\\\" y1=\\\"23\\\" x2=\\\"17\\\" y2=\\\"17\\\"/></svg>\";\n\n var slidenavNext = \"<svg width=\\\"14px\\\" height=\\\"24px\\\" viewBox=\\\"0 0 14 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" points=\\\"1.225,23 12.775,12 1.225,1 \\\"/></svg>\";\n\n var slidenavNextLarge = \"<svg width=\\\"25px\\\" height=\\\"40px\\\" viewBox=\\\"0 0 25 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"2\\\" points=\\\"4.002,38.547 22.527,20.024 4,1.5 \\\"/></svg>\";\n\n var slidenavPrevious = \"<svg width=\\\"14px\\\" height=\\\"24px\\\" viewBox=\\\"0 0 14 24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.4\\\" points=\\\"12.775,1 1.225,12 12.775,23 \\\"/></svg>\";\n\n var slidenavPreviousLarge = \"<svg width=\\\"25px\\\" height=\\\"40px\\\" viewBox=\\\"0 0 25 40\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"2\\\" points=\\\"20.527,1.5 2,20.024 20.525,38.547 \\\"/></svg>\";\n\n var spinner = \"<svg width=\\\"30\\\" height=\\\"30\\\" viewBox=\\\"0 0 30 30\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><circle fill=\\\"none\\\" stroke=\\\"#000\\\" cx=\\\"15\\\" cy=\\\"15\\\" r=\\\"14\\\"/></svg>\";\n\n var totop = \"<svg width=\\\"18\\\" height=\\\"10\\\" viewBox=\\\"0 0 18 10\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><polyline fill=\\\"none\\\" stroke=\\\"#000\\\" stroke-width=\\\"1.2\\\" points=\\\"1 9 9 1 17 9 \\\"/></svg>\";\n\n var parsed = {};\n var icons = {\n spinner: spinner,\n totop: totop,\n marker: marker,\n 'close-icon': closeIcon,\n 'close-large': closeLarge,\n 'navbar-toggle-icon': navbarToggleIcon,\n 'overlay-icon': overlayIcon,\n 'pagination-next': paginationNext,\n 'pagination-previous': paginationPrevious,\n 'search-icon': searchIcon,\n 'search-large': searchLarge,\n 'search-navbar': searchNavbar,\n 'slidenav-next': slidenavNext,\n 'slidenav-next-large': slidenavNextLarge,\n 'slidenav-previous': slidenavPrevious,\n 'slidenav-previous-large': slidenavPreviousLarge\n };\n\n var Icon = {\n\n install: install,\n\n extends: Svg,\n\n args: 'icon',\n\n props: ['icon'],\n\n data: {\n include: ['focusable']\n },\n\n isIcon: true,\n\n beforeConnect: function() {\n addClass(this.$el, 'uk-icon');\n },\n\n methods: {\n\n getSvg: function() {\n\n var icon = getIcon(applyRtl(this.icon));\n\n if (!icon) {\n return Promise.reject('Icon not found.');\n }\n\n return Promise.resolve(icon);\n }\n\n }\n\n };\n\n var IconComponent = {\n\n args: false,\n\n extends: Icon,\n\n data: function (vm) { return ({\n icon: hyphenate(vm.constructor.options.name)\n }); },\n\n beforeConnect: function() {\n addClass(this.$el, this.$name);\n }\n\n };\n\n var Slidenav = {\n\n extends: IconComponent,\n\n beforeConnect: function() {\n addClass(this.$el, 'uk-slidenav');\n },\n\n computed: {\n\n icon: function(ref, $el) {\n var icon = ref.icon;\n\n return hasClass($el, 'uk-slidenav-large')\n ? (icon + \"-large\")\n : icon;\n }\n\n }\n\n };\n\n var Search = {\n\n extends: IconComponent,\n\n computed: {\n\n icon: function(ref, $el) {\n var icon = ref.icon;\n\n return hasClass($el, 'uk-search-icon') && parents($el, '.uk-search-large').length\n ? 'search-large'\n : parents($el, '.uk-search-navbar').length\n ? 'search-navbar'\n : icon;\n }\n\n }\n\n };\n\n var Close = {\n\n extends: IconComponent,\n\n computed: {\n\n icon: function() {\n return (\"close-\" + (hasClass(this.$el, 'uk-close-large') ? 'large' : 'icon'));\n }\n\n }\n\n };\n\n var Spinner = {\n\n extends: IconComponent,\n\n connected: function() {\n var this$1 = this;\n\n this.svg.then(function (svg) { return this$1.ratio !== 1 && css($('circle', svg), 'strokeWidth', 1 / this$1.ratio); }, noop);\n }\n\n };\n\n function install(UIkit) {\n UIkit.icon.add = function (name, svg) {\n var obj;\n\n\n var added = isString(name) ? (( obj = {}, obj[name] = svg, obj )) : name;\n each(added, function (svg, name) {\n icons[name] = svg;\n delete parsed[name];\n });\n\n if (UIkit._initialized) {\n apply(document.body, function (el) { return each(UIkit.getComponents(el), function (cmp) {\n cmp.$options.isIcon && cmp.icon in added && cmp.$reset();\n }); }\n );\n }\n };\n }\n\n function getIcon(icon) {\n\n if (!icons[icon]) {\n return null;\n }\n\n if (!parsed[icon]) {\n parsed[icon] = $(icons[icon].trim());\n }\n\n return parsed[icon].cloneNode(true);\n }\n\n function applyRtl(icon) {\n return isRtl ? swap(swap(icon, 'left', 'right'), 'previous', 'next') : icon;\n }\n\n var Img = {\n\n args: 'dataSrc',\n\n props: {\n dataSrc: String,\n dataSrcset: Boolean,\n sizes: String,\n width: Number,\n height: Number,\n offsetTop: String,\n offsetLeft: String,\n target: String\n },\n\n data: {\n dataSrc: '',\n dataSrcset: false,\n sizes: false,\n width: false,\n height: false,\n offsetTop: '50vh',\n offsetLeft: 0,\n target: false\n },\n\n computed: {\n\n cacheKey: function(ref) {\n var dataSrc = ref.dataSrc;\n\n return ((this.$name) + \".\" + dataSrc);\n },\n\n width: function(ref) {\n var width = ref.width;\n var dataWidth = ref.dataWidth;\n\n return width || dataWidth;\n },\n\n height: function(ref) {\n var height = ref.height;\n var dataHeight = ref.dataHeight;\n\n return height || dataHeight;\n },\n\n sizes: function(ref) {\n var sizes = ref.sizes;\n var dataSizes = ref.dataSizes;\n\n return sizes || dataSizes;\n },\n\n isImg: function(_, $el) {\n return isImg($el);\n },\n\n target: {\n\n get: function(ref) {\n var target = ref.target;\n\n return [this.$el].concat(queryAll(target, this.$el));\n },\n\n watch: function() {\n this.observe();\n }\n\n },\n\n offsetTop: function(ref) {\n var offsetTop = ref.offsetTop;\n\n return toPx(offsetTop, 'height');\n },\n\n offsetLeft: function(ref) {\n var offsetLeft = ref.offsetLeft;\n\n return toPx(offsetLeft, 'width');\n }\n\n },\n\n connected: function() {\n\n if (storage[this.cacheKey]) {\n setSrcAttrs(this.$el, storage[this.cacheKey] || this.dataSrc, this.dataSrcset, this.sizes);\n } else if (this.isImg && this.width && this.height) {\n setSrcAttrs(this.$el, getPlaceholderImage(this.width, this.height, this.sizes));\n }\n\n this.observer = new IntersectionObserver(this.load, {\n rootMargin: ((this.offsetTop) + \"px \" + (this.offsetLeft) + \"px\")\n });\n\n requestAnimationFrame(this.observe);\n\n },\n\n disconnected: function() {\n this.observer.disconnect();\n },\n\n update: {\n\n read: function(ref) {\n var this$1 = this;\n var image = ref.image;\n\n\n if (!image && document.readyState === 'complete') {\n this.load(this.observer.takeRecords());\n }\n\n if (this.isImg) {\n return false;\n }\n\n image && image.then(function (img) { return img && img.currentSrc !== '' && setSrcAttrs(this$1.$el, currentSrc(img)); });\n\n },\n\n write: function(data) {\n\n if (this.dataSrcset && window.devicePixelRatio !== 1) {\n\n var bgSize = css(this.$el, 'backgroundSize');\n if (bgSize.match(/^(auto\\s?)+$/) || toFloat(bgSize) === data.bgSize) {\n data.bgSize = getSourceSize(this.dataSrcset, this.sizes);\n css(this.$el, 'backgroundSize', ((data.bgSize) + \"px\"));\n }\n\n }\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n load: function(entries) {\n var this$1 = this;\n\n\n // Old chromium based browsers (UC Browser) did not implement `isIntersecting`\n if (!entries.some(function (entry) { return isUndefined(entry.isIntersecting) || entry.isIntersecting; })) {\n return;\n }\n\n this._data.image = getImage(this.dataSrc, this.dataSrcset, this.sizes).then(function (img) {\n\n setSrcAttrs(this$1.$el, currentSrc(img), img.srcset, img.sizes);\n storage[this$1.cacheKey] = currentSrc(img);\n return img;\n\n }, noop);\n\n this.observer.disconnect();\n },\n\n observe: function() {\n var this$1 = this;\n\n if (!this._data.image && this._connected) {\n this.target.forEach(function (el) { return this$1.observer.observe(el); });\n }\n }\n\n }\n\n };\n\n function setSrcAttrs(el, src, srcset, sizes) {\n\n if (isImg(el)) {\n sizes && (el.sizes = sizes);\n srcset && (el.srcset = srcset);\n src && (el.src = src);\n } else if (src) {\n\n var change = !includes(el.style.backgroundImage, src);\n if (change) {\n css(el, 'backgroundImage', (\"url(\" + (escape(src)) + \")\"));\n trigger(el, createEvent('load', false));\n }\n\n }\n\n }\n\n function getPlaceholderImage(width, height, sizes) {\n var assign;\n\n\n if (sizes) {\n ((assign = Dimensions.ratio({width: width, height: height}, 'width', toPx(sizesToPixel(sizes))), width = assign.width, height = assign.height));\n }\n\n return (\"data:image/svg+xml;utf8,<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"\" + width + \"\\\" height=\\\"\" + height + \"\\\"></svg>\");\n }\n\n var sizesRe = /\\s*(.*?)\\s*(\\w+|calc\\(.*?\\))\\s*(?:,|$)/g;\n function sizesToPixel(sizes) {\n var matches;\n\n sizesRe.lastIndex = 0;\n\n while ((matches = sizesRe.exec(sizes))) {\n if (!matches[1] || window.matchMedia(matches[1]).matches) {\n matches = evaluateSize(matches[2]);\n break;\n }\n }\n\n return matches || '100vw';\n }\n\n var sizeRe = /\\d+(?:\\w+|%)/g;\n var additionRe = /[+-]?(\\d+)/g;\n function evaluateSize(size) {\n return startsWith(size, 'calc')\n ? size\n .substring(5, size.length - 1)\n .replace(sizeRe, function (size) { return toPx(size); })\n .replace(/ /g, '')\n .match(additionRe)\n .reduce(function (a, b) { return a + +b; }, 0)\n : size;\n }\n\n var srcSetRe = /\\s+\\d+w\\s*(?:,|$)/g;\n function getSourceSize(srcset, sizes) {\n var srcSize = toPx(sizesToPixel(sizes));\n var descriptors = (srcset.match(srcSetRe) || []).map(toFloat).sort(function (a, b) { return a - b; });\n\n return descriptors.filter(function (size) { return size >= srcSize; })[0] || descriptors.pop() || '';\n }\n\n function isImg(el) {\n return el.tagName === 'IMG';\n }\n\n function currentSrc(el) {\n return el.currentSrc || el.src;\n }\n\n var key = '__test__';\n var storage;\n\n // workaround for Safari's private browsing mode and accessing sessionStorage in Blink\n try {\n storage = window.sessionStorage || {};\n storage[key] = 1;\n delete storage[key];\n } catch (e) {\n storage = {};\n }\n\n var Media = {\n\n props: {\n media: Boolean\n },\n\n data: {\n media: false\n },\n\n computed: {\n\n matchMedia: function() {\n var media = toMedia(this.media);\n return !media || window.matchMedia(media).matches;\n }\n\n }\n\n };\n\n function toMedia(value) {\n\n if (isString(value)) {\n if (value[0] === '@') {\n var name = \"breakpoint-\" + (value.substr(1));\n value = toFloat(getCssVar(name));\n } else if (isNaN(value)) {\n return value;\n }\n }\n\n return value && !isNaN(value) ? (\"(min-width: \" + value + \"px)\") : false;\n }\n\n var Leader = {\n\n mixins: [Class, Media],\n\n props: {\n fill: String\n },\n\n data: {\n fill: '',\n clsWrapper: 'uk-leader-fill',\n clsHide: 'uk-leader-hide',\n attrFill: 'data-fill'\n },\n\n computed: {\n\n fill: function(ref) {\n var fill = ref.fill;\n\n return fill || getCssVar('leader-fill-content');\n }\n\n },\n\n connected: function() {\n var assign;\n\n (assign = wrapInner(this.$el, (\"<span class=\\\"\" + (this.clsWrapper) + \"\\\">\")), this.wrapper = assign[0]);\n },\n\n disconnected: function() {\n unwrap(this.wrapper.childNodes);\n },\n\n update: {\n\n read: function(ref) {\n var changed = ref.changed;\n var width = ref.width;\n\n\n var prev = width;\n\n width = Math.floor(this.$el.offsetWidth / 2);\n\n return {\n width: width,\n fill: this.fill,\n changed: changed || prev !== width,\n hide: !this.matchMedia\n };\n },\n\n write: function(data) {\n\n toggleClass(this.wrapper, this.clsHide, data.hide);\n\n if (data.changed) {\n data.changed = false;\n attr(this.wrapper, this.attrFill, new Array(data.width).join(data.fill));\n }\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Container = {\n\n props: {\n container: Boolean\n },\n\n data: {\n container: true\n },\n\n computed: {\n\n container: function(ref) {\n var container = ref.container;\n\n return container === true && this.$container || container && $(container);\n }\n\n }\n\n };\n\n var active$1 = [];\n\n var Modal = {\n\n mixins: [Class, Container, Togglable],\n\n props: {\n selPanel: String,\n selClose: String,\n escClose: Boolean,\n bgClose: Boolean,\n stack: Boolean\n },\n\n data: {\n cls: 'uk-open',\n escClose: true,\n bgClose: true,\n overlay: true,\n stack: false\n },\n\n computed: {\n\n panel: function(ref, $el) {\n var selPanel = ref.selPanel;\n\n return $(selPanel, $el);\n },\n\n transitionElement: function() {\n return this.panel;\n },\n\n bgClose: function(ref) {\n var bgClose = ref.bgClose;\n\n return bgClose && this.panel;\n }\n\n },\n\n beforeDisconnect: function() {\n if (this.isToggled()) {\n this.toggleNow(this.$el, false);\n }\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.selClose;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.hide();\n }\n\n },\n\n {\n\n name: 'toggle',\n\n self: true,\n\n handler: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n this.toggle();\n }\n\n },\n\n {\n name: 'beforeshow',\n\n self: true,\n\n handler: function(e) {\n\n if (includes(active$1, this)) {\n return false;\n }\n\n if (!this.stack && active$1.length) {\n Promise.all(active$1.map(function (modal) { return modal.hide(); })).then(this.show);\n e.preventDefault();\n } else {\n active$1.push(this);\n }\n }\n\n },\n\n {\n\n name: 'show',\n\n self: true,\n\n handler: function() {\n var this$1 = this;\n\n\n if (width(window) - width(document) && this.overlay) {\n css(document.body, 'overflowY', 'scroll');\n }\n\n addClass(document.documentElement, this.clsPage);\n\n if (this.bgClose) {\n once(this.$el, 'hide', delayOn(document, 'click', function (ref) {\n var defaultPrevented = ref.defaultPrevented;\n var target = ref.target;\n\n var current = last(active$1);\n if (!defaultPrevented\n && current === this$1\n && (!current.overlay || within(target, current.$el))\n && !within(target, current.panel)\n ) {\n current.hide();\n }\n }), {self: true});\n }\n\n if (this.escClose) {\n once(this.$el, 'hide', on(document, 'keydown', function (e) {\n var current = last(active$1);\n if (e.keyCode === 27 && current === this$1) {\n e.preventDefault();\n current.hide();\n }\n }), {self: true});\n }\n }\n\n },\n\n {\n\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n var this$1 = this;\n\n\n active$1.splice(active$1.indexOf(this), 1);\n\n if (!active$1.length) {\n css(document.body, 'overflowY', '');\n }\n\n if (!active$1.some(function (modal) { return modal.clsPage === this$1.clsPage; })) {\n removeClass(document.documentElement, this.clsPage);\n }\n\n }\n\n }\n\n ],\n\n methods: {\n\n toggle: function() {\n return this.isToggled() ? this.hide() : this.show();\n },\n\n show: function() {\n var this$1 = this;\n\n\n if (this.container && this.$el.parentNode !== this.container) {\n append(this.container, this.$el);\n return new Promise(function (resolve) { return requestAnimationFrame(function () { return this$1.show().then(resolve); }\n ); }\n );\n }\n\n return this.toggleElement(this.$el, true, animate$1(this));\n },\n\n hide: function() {\n return this.toggleElement(this.$el, false, animate$1(this));\n }\n\n }\n\n };\n\n function animate$1(ref) {\n var transitionElement = ref.transitionElement;\n var _toggle = ref._toggle;\n\n return function (el, show) { return new Promise(function (resolve, reject) { return once(el, 'show hide', function () {\n el._reject && el._reject();\n el._reject = reject;\n\n _toggle(el, show);\n\n var off = once(transitionElement, 'transitionstart', function () {\n once(transitionElement, 'transitionend transitioncancel', resolve, {self: true});\n clearTimeout(timer);\n }, {self: true});\n\n var timer = setTimeout(function () {\n off();\n resolve();\n }, toMs(css(transitionElement, 'transitionDuration')));\n\n }); }\n ); };\n }\n\n var Modal$1 = {\n\n install: install$1,\n\n mixins: [Modal],\n\n data: {\n clsPage: 'uk-modal-page',\n selPanel: '.uk-modal-dialog',\n selClose: '.uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full'\n },\n\n events: [\n\n {\n name: 'show',\n\n self: true,\n\n handler: function() {\n\n if (hasClass(this.panel, 'uk-margin-auto-vertical')) {\n addClass(this.$el, 'uk-flex');\n } else {\n css(this.$el, 'display', 'block');\n }\n\n height(this.$el); // force reflow\n }\n },\n\n {\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n\n css(this.$el, 'display', '');\n removeClass(this.$el, 'uk-flex');\n\n }\n }\n\n ]\n\n };\n\n function install$1(UIkit) {\n\n UIkit.modal.dialog = function (content, options) {\n\n var dialog = UIkit.modal((\" <div class=\\\"uk-modal\\\"> <div class=\\\"uk-modal-dialog\\\">\" + content + \"</div> </div> \"), options);\n\n dialog.show();\n\n on(dialog.$el, 'hidden', function () { return Promise.resolve(function () { return dialog.$destroy(true); }); }, {self: true});\n\n return dialog;\n };\n\n UIkit.modal.alert = function (message, options) {\n\n options = assign({bgClose: false, escClose: false, labels: UIkit.modal.labels}, options);\n\n return new Promise(\n function (resolve) { return on(UIkit.modal.dialog((\" <div class=\\\"uk-modal-body\\\">\" + (isString(message) ? message : html(message)) + \"</div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-primary uk-modal-close\\\" autofocus>\" + (options.labels.ok) + \"</button> </div> \"), options).$el, 'hide', resolve); }\n );\n };\n\n UIkit.modal.confirm = function (message, options) {\n\n options = assign({bgClose: false, escClose: true, labels: UIkit.modal.labels}, options);\n\n return new Promise(function (resolve, reject) {\n\n var confirm = UIkit.modal.dialog((\" <form> <div class=\\\"uk-modal-body\\\">\" + (isString(message) ? message : html(message)) + \"</div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-default uk-modal-close\\\" type=\\\"button\\\">\" + (options.labels.cancel) + \"</button> <button class=\\\"uk-button uk-button-primary\\\" autofocus>\" + (options.labels.ok) + \"</button> </div> </form> \"), options);\n\n var resolved = false;\n\n on(confirm.$el, 'submit', 'form', function (e) {\n e.preventDefault();\n resolve();\n resolved = true;\n confirm.hide();\n });\n on(confirm.$el, 'hide', function () {\n if (!resolved) {\n reject();\n }\n });\n\n });\n };\n\n UIkit.modal.prompt = function (message, value, options) {\n\n options = assign({bgClose: false, escClose: true, labels: UIkit.modal.labels}, options);\n\n return new Promise(function (resolve) {\n\n var prompt = UIkit.modal.dialog((\" <form class=\\\"uk-form-stacked\\\"> <div class=\\\"uk-modal-body\\\"> <label>\" + (isString(message) ? message : html(message)) + \"</label> <input class=\\\"uk-input\\\" autofocus> </div> <div class=\\\"uk-modal-footer uk-text-right\\\"> <button class=\\\"uk-button uk-button-default uk-modal-close\\\" type=\\\"button\\\">\" + (options.labels.cancel) + \"</button> <button class=\\\"uk-button uk-button-primary\\\">\" + (options.labels.ok) + \"</button> </div> </form> \"), options),\n input = $('input', prompt.$el);\n\n input.value = value;\n\n var resolved = false;\n\n on(prompt.$el, 'submit', 'form', function (e) {\n e.preventDefault();\n resolve(input.value);\n resolved = true;\n prompt.hide();\n });\n on(prompt.$el, 'hide', function () {\n if (!resolved) {\n resolve(null);\n }\n });\n\n });\n };\n\n UIkit.modal.labels = {\n ok: 'Ok',\n cancel: 'Cancel'\n };\n\n }\n\n var Nav = {\n\n extends: Accordion,\n\n data: {\n targets: '> .uk-parent',\n toggle: '> a',\n content: '> ul'\n }\n\n };\n\n var Navbar = {\n\n mixins: [Class, FlexBug],\n\n props: {\n dropdown: String,\n mode: 'list',\n align: String,\n offset: Number,\n boundary: Boolean,\n boundaryAlign: Boolean,\n clsDrop: String,\n delayShow: Number,\n delayHide: Number,\n dropbar: Boolean,\n dropbarMode: String,\n dropbarAnchor: Boolean,\n duration: Number\n },\n\n data: {\n dropdown: '.uk-navbar-nav > li',\n align: !isRtl ? 'left' : 'right',\n clsDrop: 'uk-navbar-dropdown',\n mode: undefined,\n offset: undefined,\n delayShow: undefined,\n delayHide: undefined,\n boundaryAlign: undefined,\n flip: 'x',\n boundary: true,\n dropbar: false,\n dropbarMode: 'slide',\n dropbarAnchor: false,\n duration: 200,\n forceHeight: true,\n selMinHeight: '.uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle'\n },\n\n computed: {\n\n boundary: function(ref, $el) {\n var boundary = ref.boundary;\n var boundaryAlign = ref.boundaryAlign;\n\n return (boundary === true || boundaryAlign) ? $el : boundary;\n },\n\n dropbarAnchor: function(ref, $el) {\n var dropbarAnchor = ref.dropbarAnchor;\n\n return query(dropbarAnchor, $el);\n },\n\n pos: function(ref) {\n var align = ref.align;\n\n return (\"bottom-\" + align);\n },\n\n dropdowns: function(ref, $el) {\n var dropdown = ref.dropdown;\n var clsDrop = ref.clsDrop;\n\n return $$((dropdown + \" .\" + clsDrop), $el);\n }\n\n },\n\n beforeConnect: function() {\n\n var ref = this.$props;\n var dropbar = ref.dropbar;\n\n this.dropbar = dropbar && (query(dropbar, this.$el) || $('+ .uk-navbar-dropbar', this.$el) || $('<div></div>'));\n\n if (this.dropbar) {\n\n addClass(this.dropbar, 'uk-navbar-dropbar');\n\n if (this.dropbarMode === 'slide') {\n addClass(this.dropbar, 'uk-navbar-dropbar-slide');\n }\n }\n\n },\n\n disconnected: function() {\n this.dropbar && remove(this.dropbar);\n },\n\n update: function() {\n var this$1 = this;\n\n\n this.$create(\n 'drop',\n this.dropdowns.filter(function (el) { return !this$1.getDropdown(el); }),\n assign({}, this.$props, {boundary: this.boundary, pos: this.pos, offset: this.dropbar || this.offset})\n );\n\n },\n\n events: [\n\n {\n name: 'mouseover',\n\n delegate: function() {\n return this.dropdown;\n },\n\n handler: function(ref) {\n var current = ref.current;\n\n var active = this.getActive();\n if (active && active.toggle && !within(active.toggle.$el, current) && !active.tracker.movesTo(active.$el)) {\n active.hide(false);\n }\n }\n\n },\n\n {\n name: 'mouseleave',\n\n el: function() {\n return this.dropbar;\n },\n\n handler: function() {\n var active = this.getActive();\n\n if (active && !this.dropdowns.some(function (el) { return matches(el, ':hover'); })) {\n active.hide();\n }\n }\n },\n\n {\n name: 'beforeshow',\n\n capture: true,\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function() {\n\n if (!this.dropbar.parentNode) {\n after(this.dropbarAnchor || this.$el, this.dropbar);\n }\n\n }\n },\n\n {\n name: 'show',\n\n capture: true,\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(_, drop) {\n\n var $el = drop.$el;\n var dir = drop.dir;\n\n this.clsDrop && addClass($el, ((this.clsDrop) + \"-dropbar\"));\n\n if (dir === 'bottom') {\n this.transitionTo($el.offsetHeight + toFloat(css($el, 'marginTop')) + toFloat(css($el, 'marginBottom')), $el);\n }\n }\n },\n\n {\n name: 'beforehide',\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(e, ref) {\n var $el = ref.$el;\n\n\n var active = this.getActive();\n\n if (matches(this.dropbar, ':hover') && active && active.$el === $el) {\n e.preventDefault();\n }\n }\n },\n\n {\n name: 'hide',\n\n filter: function() {\n return this.dropbar;\n },\n\n handler: function(_, ref) {\n var $el = ref.$el;\n\n\n var active = this.getActive();\n\n if (!active || active && active.$el === $el) {\n this.transitionTo(0);\n }\n }\n }\n\n ],\n\n methods: {\n\n getActive: function() {\n var ref = this.dropdowns.map(this.getDropdown).filter(function (drop) { return drop && drop.isActive(); });\n var active = ref[0];\n return active && includes(active.mode, 'hover') && within(active.toggle.$el, this.$el) && active;\n },\n\n transitionTo: function(newHeight, el) {\n var this$1 = this;\n\n\n var ref = this;\n var dropbar = ref.dropbar;\n var oldHeight = isVisible(dropbar) ? height(dropbar) : 0;\n\n el = oldHeight < newHeight && el;\n\n css(el, 'clip', (\"rect(0,\" + (el.offsetWidth) + \"px,\" + oldHeight + \"px,0)\"));\n\n height(dropbar, oldHeight);\n\n Transition.cancel([el, dropbar]);\n return Promise.all([\n Transition.start(dropbar, {height: newHeight}, this.duration),\n Transition.start(el, {clip: (\"rect(0,\" + (el.offsetWidth) + \"px,\" + newHeight + \"px,0)\")}, this.duration)\n ])\n .catch(noop)\n .then(function () {\n css(el, {clip: ''});\n this$1.$update(dropbar);\n });\n },\n\n getDropdown: function(el) {\n return this.$getComponent(el, 'drop') || this.$getComponent(el, 'dropdown');\n }\n\n }\n\n };\n\n var Offcanvas = {\n\n mixins: [Modal],\n\n args: 'mode',\n\n props: {\n mode: String,\n flip: Boolean,\n overlay: Boolean\n },\n\n data: {\n mode: 'slide',\n flip: false,\n overlay: false,\n clsPage: 'uk-offcanvas-page',\n clsContainer: 'uk-offcanvas-container',\n selPanel: '.uk-offcanvas-bar',\n clsFlip: 'uk-offcanvas-flip',\n clsContainerAnimation: 'uk-offcanvas-container-animation',\n clsSidebarAnimation: 'uk-offcanvas-bar-animation',\n clsMode: 'uk-offcanvas',\n clsOverlay: 'uk-offcanvas-overlay',\n selClose: '.uk-offcanvas-close',\n container: false\n },\n\n computed: {\n\n clsFlip: function(ref) {\n var flip = ref.flip;\n var clsFlip = ref.clsFlip;\n\n return flip ? clsFlip : '';\n },\n\n clsOverlay: function(ref) {\n var overlay = ref.overlay;\n var clsOverlay = ref.clsOverlay;\n\n return overlay ? clsOverlay : '';\n },\n\n clsMode: function(ref) {\n var mode = ref.mode;\n var clsMode = ref.clsMode;\n\n return (clsMode + \"-\" + mode);\n },\n\n clsSidebarAnimation: function(ref) {\n var mode = ref.mode;\n var clsSidebarAnimation = ref.clsSidebarAnimation;\n\n return mode === 'none' || mode === 'reveal' ? '' : clsSidebarAnimation;\n },\n\n clsContainerAnimation: function(ref) {\n var mode = ref.mode;\n var clsContainerAnimation = ref.clsContainerAnimation;\n\n return mode !== 'push' && mode !== 'reveal' ? '' : clsContainerAnimation;\n },\n\n transitionElement: function(ref) {\n var mode = ref.mode;\n\n return mode === 'reveal' ? this.panel.parentNode : this.panel;\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return 'a[href^=\"#\"]';\n },\n\n handler: function(ref) {\n var hash = ref.current.hash;\n var defaultPrevented = ref.defaultPrevented;\n\n if (!defaultPrevented && hash && $(hash, document.body)) {\n this.hide();\n }\n }\n\n },\n\n {\n name: 'touchstart',\n\n passive: true,\n\n el: function() {\n return this.panel;\n },\n\n handler: function(ref) {\n var targetTouches = ref.targetTouches;\n\n\n if (targetTouches.length === 1) {\n this.clientY = targetTouches[0].clientY;\n }\n\n }\n\n },\n\n {\n name: 'touchmove',\n\n self: true,\n passive: false,\n\n filter: function() {\n return this.overlay;\n },\n\n handler: function(e) {\n e.cancelable && e.preventDefault();\n }\n\n },\n\n {\n name: 'touchmove',\n\n passive: false,\n\n el: function() {\n return this.panel;\n },\n\n handler: function(e) {\n\n if (e.targetTouches.length !== 1) {\n return;\n }\n\n var clientY = event.targetTouches[0].clientY - this.clientY;\n var ref = this.panel;\n var scrollTop = ref.scrollTop;\n var scrollHeight = ref.scrollHeight;\n var clientHeight = ref.clientHeight;\n\n if (clientHeight >= scrollHeight\n || scrollTop === 0 && clientY > 0\n || scrollHeight - scrollTop <= clientHeight && clientY < 0\n ) {\n e.cancelable && e.preventDefault();\n }\n\n }\n\n },\n\n {\n name: 'show',\n\n self: true,\n\n handler: function() {\n\n if (this.mode === 'reveal' && !hasClass(this.panel.parentNode, this.clsMode)) {\n wrapAll(this.panel, '<div>');\n addClass(this.panel.parentNode, this.clsMode);\n }\n\n css(document.documentElement, 'overflowY', this.overlay ? 'hidden' : '');\n addClass(document.body, this.clsContainer, this.clsFlip);\n css(document.body, 'touch-action', 'pan-y pinch-zoom');\n css(this.$el, 'display', 'block');\n addClass(this.$el, this.clsOverlay);\n addClass(this.panel, this.clsSidebarAnimation, this.mode !== 'reveal' ? this.clsMode : '');\n\n height(document.body); // force reflow\n addClass(document.body, this.clsContainerAnimation);\n\n this.clsContainerAnimation && suppressUserScale();\n\n\n }\n },\n\n {\n name: 'hide',\n\n self: true,\n\n handler: function() {\n removeClass(document.body, this.clsContainerAnimation);\n css(document.body, 'touch-action', '');\n }\n },\n\n {\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n\n this.clsContainerAnimation && resumeUserScale();\n\n if (this.mode === 'reveal') {\n unwrap(this.panel);\n }\n\n removeClass(this.panel, this.clsSidebarAnimation, this.clsMode);\n removeClass(this.$el, this.clsOverlay);\n css(this.$el, 'display', '');\n removeClass(document.body, this.clsContainer, this.clsFlip);\n\n css(document.documentElement, 'overflowY', '');\n\n }\n },\n\n {\n name: 'swipeLeft swipeRight',\n\n handler: function(e) {\n\n if (this.isToggled() && endsWith(e.type, 'Left') ^ this.flip) {\n this.hide();\n }\n\n }\n }\n\n ]\n\n };\n\n // Chrome in responsive mode zooms page upon opening offcanvas\n function suppressUserScale() {\n getViewport().content += ',user-scalable=0';\n }\n\n function resumeUserScale() {\n var viewport = getViewport();\n viewport.content = viewport.content.replace(/,user-scalable=0$/, '');\n }\n\n function getViewport() {\n return $('meta[name=\"viewport\"]', document.head) || append(document.head, '<meta name=\"viewport\">');\n }\n\n var OverflowAuto = {\n\n mixins: [Class],\n\n props: {\n selContainer: String,\n selContent: String\n },\n\n data: {\n selContainer: '.uk-modal',\n selContent: '.uk-modal-dialog'\n },\n\n computed: {\n\n container: function(ref, $el) {\n var selContainer = ref.selContainer;\n\n return closest($el, selContainer);\n },\n\n content: function(ref, $el) {\n var selContent = ref.selContent;\n\n return closest($el, selContent);\n }\n\n },\n\n connected: function() {\n css(this.$el, 'minHeight', 150);\n },\n\n update: {\n\n read: function() {\n\n if (!this.content || !this.container) {\n return false;\n }\n\n return {\n current: toFloat(css(this.$el, 'maxHeight')),\n max: Math.max(150, height(this.container) - (offset(this.content).height - height(this.$el)))\n };\n },\n\n write: function(ref) {\n var current = ref.current;\n var max = ref.max;\n\n css(this.$el, 'maxHeight', max);\n if (Math.round(current) !== Math.round(max)) {\n trigger(this.$el, 'resize');\n }\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Responsive = {\n\n props: ['width', 'height'],\n\n connected: function() {\n addClass(this.$el, 'uk-responsive-width');\n },\n\n update: {\n\n read: function() {\n return isVisible(this.$el) && this.width && this.height\n ? {width: width(this.$el.parentNode), height: this.height}\n : false;\n },\n\n write: function(dim) {\n height(this.$el, Dimensions.contain({\n height: this.height,\n width: this.width\n }, dim).height);\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Scroll = {\n\n props: {\n duration: Number,\n offset: Number\n },\n\n data: {\n duration: 1000,\n offset: 0\n },\n\n methods: {\n\n scrollTo: function(el) {\n var this$1 = this;\n\n\n el = el && $(el) || document.body;\n\n var docHeight = height(document);\n var winHeight = height(window);\n\n var target = offset(el).top - this.offset;\n if (target + winHeight > docHeight) {\n target = docHeight - winHeight;\n }\n\n if (!trigger(this.$el, 'beforescroll', [this, el])) {\n return;\n }\n\n var start = Date.now();\n var startY = window.pageYOffset;\n var step = function () {\n\n var currentY = startY + (target - startY) * ease(clamp((Date.now() - start) / this$1.duration));\n\n scrollTop(window, currentY);\n\n // scroll more if we have not reached our destination\n if (currentY !== target) {\n requestAnimationFrame(step);\n } else {\n trigger(this$1.$el, 'scrolled', [this$1, el]);\n }\n\n };\n\n step();\n\n }\n\n },\n\n events: {\n\n click: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n e.preventDefault();\n this.scrollTo(escape(decodeURIComponent(this.$el.hash)).substr(1));\n }\n\n }\n\n };\n\n function ease(k) {\n return 0.5 * (1 - Math.cos(Math.PI * k));\n }\n\n var Scrollspy = {\n\n args: 'cls',\n\n props: {\n cls: String,\n target: String,\n hidden: Boolean,\n offsetTop: Number,\n offsetLeft: Number,\n repeat: Boolean,\n delay: Number\n },\n\n data: function () { return ({\n cls: false,\n target: false,\n hidden: true,\n offsetTop: 0,\n offsetLeft: 0,\n repeat: false,\n delay: 0,\n inViewClass: 'uk-scrollspy-inview'\n }); },\n\n computed: {\n\n elements: function(ref, $el) {\n var target = ref.target;\n\n return target ? $$(target, $el) : [$el];\n }\n\n },\n\n update: [\n\n {\n\n write: function() {\n if (this.hidden) {\n css(filter(this.elements, (\":not(.\" + (this.inViewClass) + \")\")), 'visibility', 'hidden');\n }\n }\n\n },\n\n {\n\n read: function(ref) {\n var this$1 = this;\n var update = ref.update;\n\n\n if (!update) {\n return;\n }\n\n this.elements.forEach(function (el) {\n\n var state = el._ukScrollspyState;\n\n if (!state) {\n state = {cls: data(el, 'uk-scrollspy-class') || this$1.cls};\n }\n\n state.show = isInView(el, this$1.offsetTop, this$1.offsetLeft);\n el._ukScrollspyState = state;\n\n });\n\n },\n\n write: function(data) {\n var this$1 = this;\n\n\n // Let child components be applied at least once first\n if (!data.update) {\n this.$emit();\n return data.update = true;\n }\n\n this.elements.forEach(function (el) {\n\n var state = el._ukScrollspyState;\n var cls = state.cls;\n\n if (state.show && !state.inview && !state.queued) {\n\n var show = function () {\n\n css(el, 'visibility', '');\n addClass(el, this$1.inViewClass);\n toggleClass(el, cls);\n\n trigger(el, 'inview');\n\n this$1.$update(el);\n\n state.inview = true;\n state.abort && state.abort();\n };\n\n if (this$1.delay) {\n\n state.queued = true;\n data.promise = (data.promise || Promise.resolve()).then(function () {\n return !state.inview && new Promise(function (resolve) {\n\n var timer = setTimeout(function () {\n\n show();\n resolve();\n\n }, data.promise || this$1.elements.length === 1 ? this$1.delay : 0);\n\n state.abort = function () {\n clearTimeout(timer);\n resolve();\n state.queued = false;\n };\n\n });\n\n });\n\n } else {\n show();\n }\n\n } else if (!state.show && (state.inview || state.queued) && this$1.repeat) {\n\n state.abort && state.abort();\n\n if (!state.inview) {\n return;\n }\n\n css(el, 'visibility', this$1.hidden ? 'hidden' : '');\n removeClass(el, this$1.inViewClass);\n toggleClass(el, cls);\n\n trigger(el, 'outview');\n\n this$1.$update(el);\n\n state.inview = false;\n\n }\n\n\n });\n\n },\n\n events: ['scroll', 'resize']\n\n }\n\n ]\n\n };\n\n var ScrollspyNav = {\n\n props: {\n cls: String,\n closest: String,\n scroll: Boolean,\n overflow: Boolean,\n offset: Number\n },\n\n data: {\n cls: 'uk-active',\n closest: false,\n scroll: false,\n overflow: true,\n offset: 0\n },\n\n computed: {\n\n links: function(_, $el) {\n return $$('a[href^=\"#\"]', $el).filter(function (el) { return el.hash; });\n },\n\n elements: function(ref) {\n var selector = ref.closest;\n\n return closest(this.links, selector || '*');\n },\n\n targets: function() {\n return $$(this.links.map(function (el) { return escape(el.hash).substr(1); }).join(','));\n }\n\n },\n\n update: [\n\n {\n\n read: function() {\n if (this.scroll) {\n this.$create('scroll', this.links, {offset: this.offset || 0});\n }\n }\n\n },\n\n {\n\n read: function(data) {\n var this$1 = this;\n\n\n var scroll = window.pageYOffset + this.offset + 1;\n var max = height(document) - height(window) + this.offset;\n\n data.active = false;\n\n this.targets.every(function (el, i) {\n\n var ref = offset(el);\n var top = ref.top;\n var last = i + 1 === this$1.targets.length;\n\n if (!this$1.overflow && (i === 0 && top > scroll || last && top + el.offsetTop < scroll)) {\n return false;\n }\n\n if (!last && offset(this$1.targets[i + 1]).top <= scroll) {\n return true;\n }\n\n if (scroll >= max) {\n for (var j = this$1.targets.length - 1; j > i; j--) {\n if (isInView(this$1.targets[j])) {\n el = this$1.targets[j];\n break;\n }\n }\n }\n\n return !(data.active = $(filter(this$1.links, (\"[href=\\\"#\" + (el.id) + \"\\\"]\"))));\n\n });\n\n },\n\n write: function(ref) {\n var active = ref.active;\n\n\n this.links.forEach(function (el) { return el.blur(); });\n removeClass(this.elements, this.cls);\n\n if (active) {\n trigger(this.$el, 'active', [active, addClass(this.closest ? closest(active, this.closest) : active, this.cls)]);\n }\n\n },\n\n events: ['scroll', 'resize']\n\n }\n\n ]\n\n };\n\n var Sticky = {\n\n mixins: [Class, Media],\n\n props: {\n top: null,\n bottom: Boolean,\n offset: String,\n animation: String,\n clsActive: String,\n clsInactive: String,\n clsFixed: String,\n clsBelow: String,\n selTarget: String,\n widthElement: Boolean,\n showOnUp: Boolean,\n targetOffset: Number\n },\n\n data: {\n top: 0,\n bottom: false,\n offset: 0,\n animation: '',\n clsActive: 'uk-active',\n clsInactive: '',\n clsFixed: 'uk-sticky-fixed',\n clsBelow: 'uk-sticky-below',\n selTarget: '',\n widthElement: false,\n showOnUp: false,\n targetOffset: false\n },\n\n computed: {\n\n offset: function(ref) {\n var offset = ref.offset;\n\n return toPx(offset);\n },\n\n selTarget: function(ref, $el) {\n var selTarget = ref.selTarget;\n\n return selTarget && $(selTarget, $el) || $el;\n },\n\n widthElement: function(ref, $el) {\n var widthElement = ref.widthElement;\n\n return query(widthElement, $el) || this.placeholder;\n },\n\n isActive: {\n\n get: function() {\n return hasClass(this.selTarget, this.clsActive);\n },\n\n set: function(value) {\n if (value && !this.isActive) {\n replaceClass(this.selTarget, this.clsInactive, this.clsActive);\n trigger(this.$el, 'active');\n } else if (!value && !hasClass(this.selTarget, this.clsInactive)) {\n replaceClass(this.selTarget, this.clsActive, this.clsInactive);\n trigger(this.$el, 'inactive');\n }\n }\n\n }\n\n },\n\n connected: function() {\n this.placeholder = $('+ .uk-sticky-placeholder', this.$el) || $('<div class=\"uk-sticky-placeholder\"></div>');\n this.isFixed = false;\n this.isActive = false;\n },\n\n disconnected: function() {\n\n if (this.isFixed) {\n this.hide();\n removeClass(this.selTarget, this.clsInactive);\n }\n\n remove(this.placeholder);\n this.placeholder = null;\n this.widthElement = null;\n },\n\n events: [\n\n {\n\n name: 'load hashchange popstate',\n\n el: window,\n\n handler: function() {\n var this$1 = this;\n\n\n if (!(this.targetOffset !== false && location.hash && window.pageYOffset > 0)) {\n return;\n }\n\n var target = $(location.hash);\n\n if (target) {\n fastdom.read(function () {\n\n var ref = offset(target);\n var top = ref.top;\n var elTop = offset(this$1.$el).top;\n var elHeight = this$1.$el.offsetHeight;\n\n if (this$1.isFixed && elTop + elHeight >= top && elTop <= top + target.offsetHeight) {\n scrollTop(window, top - elHeight - (isNumeric(this$1.targetOffset) ? this$1.targetOffset : 0) - this$1.offset);\n }\n\n });\n }\n\n }\n\n }\n\n ],\n\n update: [\n\n {\n\n read: function(ref, type) {\n var height = ref.height;\n\n\n if (this.isActive && type !== 'update') {\n\n this.hide();\n height = this.$el.offsetHeight;\n this.show();\n\n }\n\n height = !this.isActive ? this.$el.offsetHeight : height;\n\n this.topOffset = offset(this.isFixed ? this.placeholder : this.$el).top;\n this.bottomOffset = this.topOffset + height;\n\n var bottom = parseProp('bottom', this);\n\n this.top = Math.max(toFloat(parseProp('top', this)), this.topOffset) - this.offset;\n this.bottom = bottom && bottom - height;\n this.inactive = !this.matchMedia;\n\n return {\n lastScroll: false,\n height: height,\n margins: css(this.$el, ['marginTop', 'marginBottom', 'marginLeft', 'marginRight'])\n };\n },\n\n write: function(ref) {\n var height = ref.height;\n var margins = ref.margins;\n\n\n var ref$1 = this;\n var placeholder = ref$1.placeholder;\n\n css(placeholder, assign({height: height}, margins));\n\n if (!within(placeholder, document)) {\n after(this.$el, placeholder);\n attr(placeholder, 'hidden', '');\n }\n\n // ensure active/inactive classes are applied\n this.isActive = this.isActive;\n\n },\n\n events: ['resize']\n\n },\n\n {\n\n read: function(ref) {\n var scroll = ref.scroll; if ( scroll === void 0 ) scroll = 0;\n\n\n this.width = (isVisible(this.widthElement) ? this.widthElement : this.$el).offsetWidth;\n\n this.scroll = window.pageYOffset;\n\n return {\n dir: scroll <= this.scroll ? 'down' : 'up',\n scroll: this.scroll,\n visible: isVisible(this.$el),\n top: offsetPosition(this.placeholder)[0]\n };\n },\n\n write: function(data, type) {\n var this$1 = this;\n\n\n var initTimestamp = data.initTimestamp; if ( initTimestamp === void 0 ) initTimestamp = 0;\n var dir = data.dir;\n var lastDir = data.lastDir;\n var lastScroll = data.lastScroll;\n var scroll = data.scroll;\n var top = data.top;\n var visible = data.visible;\n var now = performance.now();\n\n data.lastScroll = scroll;\n\n if (scroll < 0 || scroll === lastScroll || !visible || this.disabled || this.showOnUp && type !== 'scroll') {\n return;\n }\n\n if (now - initTimestamp > 300 || dir !== lastDir) {\n data.initScroll = scroll;\n data.initTimestamp = now;\n }\n\n data.lastDir = dir;\n\n if (this.showOnUp && Math.abs(data.initScroll - scroll) <= 30 && Math.abs(lastScroll - scroll) <= 10) {\n return;\n }\n\n if (this.inactive\n || scroll < this.top\n || this.showOnUp && (scroll <= this.top || dir === 'down' || dir === 'up' && !this.isFixed && scroll <= this.bottomOffset)\n ) {\n\n if (!this.isFixed) {\n\n if (Animation.inProgress(this.$el) && top > scroll) {\n Animation.cancel(this.$el);\n this.hide();\n }\n\n return;\n }\n\n this.isFixed = false;\n\n if (this.animation && scroll > this.topOffset) {\n Animation.cancel(this.$el);\n Animation.out(this.$el, this.animation).then(function () { return this$1.hide(); }, noop);\n } else {\n this.hide();\n }\n\n } else if (this.isFixed) {\n\n this.update();\n\n } else if (this.animation) {\n\n Animation.cancel(this.$el);\n this.show();\n Animation.in(this.$el, this.animation).catch(noop);\n\n } else {\n this.show();\n }\n\n },\n\n events: ['resize', 'scroll']\n\n }\n\n ],\n\n methods: {\n\n show: function() {\n\n this.isFixed = true;\n this.update();\n attr(this.placeholder, 'hidden', null);\n\n },\n\n hide: function() {\n\n this.isActive = false;\n removeClass(this.$el, this.clsFixed, this.clsBelow);\n css(this.$el, {position: '', top: '', width: ''});\n attr(this.placeholder, 'hidden', '');\n\n },\n\n update: function() {\n\n var active = this.top !== 0 || this.scroll > this.top;\n var top = Math.max(0, this.offset);\n\n if (this.bottom && this.scroll > this.bottom - this.offset) {\n top = this.bottom - this.scroll;\n }\n\n css(this.$el, {\n position: 'fixed',\n top: (top + \"px\"),\n width: this.width\n });\n\n this.isActive = active;\n toggleClass(this.$el, this.clsBelow, this.scroll > this.bottomOffset);\n addClass(this.$el, this.clsFixed);\n\n }\n\n }\n\n };\n\n function parseProp(prop, ref) {\n var $props = ref.$props;\n var $el = ref.$el;\n var propOffset = ref[(prop + \"Offset\")];\n\n\n var value = $props[prop];\n\n if (!value) {\n return;\n }\n\n if (isNumeric(value) && isString(value) && value.match(/^-?\\d/)) {\n\n return propOffset + toPx(value);\n\n } else {\n\n return offset(value === true ? $el.parentNode : query(value, $el)).bottom;\n\n }\n }\n\n var Switcher = {\n\n mixins: [Togglable],\n\n args: 'connect',\n\n props: {\n connect: String,\n toggle: String,\n active: Number,\n swiping: Boolean\n },\n\n data: {\n connect: '~.uk-switcher',\n toggle: '> * > :first-child',\n active: 0,\n swiping: true,\n cls: 'uk-active',\n clsContainer: 'uk-switcher',\n attrItem: 'uk-switcher-item',\n queued: true\n },\n\n computed: {\n\n connects: function(ref, $el) {\n var connect = ref.connect;\n\n return queryAll(connect, $el);\n },\n\n toggles: function(ref, $el) {\n var toggle = ref.toggle;\n\n return $$(toggle, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.toggle) + \":not(.uk-disabled)\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.show(toNodes(this.$el.children).filter(function (el) { return within(e.current, el); })[0]);\n }\n\n },\n\n {\n name: 'click',\n\n el: function() {\n return this.connects;\n },\n\n delegate: function() {\n return (\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\");\n },\n\n handler: function(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n },\n\n {\n name: 'swipeRight swipeLeft',\n\n filter: function() {\n return this.swiping;\n },\n\n el: function() {\n return this.connects;\n },\n\n handler: function(ref) {\n var type = ref.type;\n\n this.show(endsWith(type, 'Left') ? 'next' : 'previous');\n }\n }\n\n ],\n\n update: function() {\n var this$1 = this;\n\n\n this.connects.forEach(function (list) { return this$1.updateAria(list.children); });\n var ref = this.$el;\n var children = ref.children;\n this.show(filter(children, (\".\" + (this.cls)))[0] || children[this.active] || children[0]);\n\n this.swiping && css(this.connects, 'touch-action', 'pan-y pinch-zoom');\n\n },\n\n methods: {\n\n index: function() {\n return !isEmpty(this.connects) && index(filter(this.connects[0].children, (\".\" + (this.cls)))[0]);\n },\n\n show: function(item) {\n var this$1 = this;\n\n\n var ref = this.$el;\n var children = ref.children;\n var length = children.length;\n var prev = this.index();\n var hasPrev = prev >= 0;\n var dir = item === 'previous' ? -1 : 1;\n\n var toggle, active, next = getIndex(item, children, prev);\n\n for (var i = 0; i < length; i++, next = (next + dir + length) % length) {\n if (!matches(this.toggles[next], '.uk-disabled *, .uk-disabled, [disabled]')) {\n toggle = this.toggles[next];\n active = children[next];\n break;\n }\n }\n\n if (!active || prev >= 0 && hasClass(active, this.cls) || prev === next) {\n return;\n }\n\n removeClass(children, this.cls);\n addClass(active, this.cls);\n attr(this.toggles, 'aria-expanded', false);\n attr(toggle, 'aria-expanded', true);\n\n this.connects.forEach(function (list) {\n if (!hasPrev) {\n this$1.toggleNow(list.children[next]);\n } else {\n this$1.toggleElement([list.children[prev], list.children[next]]);\n }\n });\n\n }\n\n }\n\n };\n\n var Tab = {\n\n mixins: [Class],\n\n extends: Switcher,\n\n props: {\n media: Boolean\n },\n\n data: {\n media: 960,\n attrItem: 'uk-tab-item'\n },\n\n connected: function() {\n\n var cls = hasClass(this.$el, 'uk-tab-left')\n ? 'uk-tab-left'\n : hasClass(this.$el, 'uk-tab-right')\n ? 'uk-tab-right'\n : false;\n\n if (cls) {\n this.$create('toggle', this.$el, {cls: cls, mode: 'media', media: this.media});\n }\n }\n\n };\n\n var Toggle = {\n\n mixins: [Media, Togglable],\n\n args: 'target',\n\n props: {\n href: String,\n target: null,\n mode: 'list'\n },\n\n data: {\n href: false,\n target: false,\n mode: 'click',\n queued: true\n },\n\n computed: {\n\n target: function(ref, $el) {\n var href = ref.href;\n var target = ref.target;\n\n target = queryAll(target || href, $el);\n return target.length && target || [$el];\n }\n\n },\n\n connected: function() {\n trigger(this.target, 'updatearia', [this]);\n },\n\n events: [\n\n {\n\n name: (pointerEnter + \" \" + pointerLeave),\n\n filter: function() {\n return includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n if (!isTouch(e)) {\n this.toggle((\"toggle\" + (e.type === pointerEnter ? 'show' : 'hide')));\n }\n }\n\n },\n\n {\n\n name: 'click',\n\n filter: function() {\n return includes(this.mode, 'click') || hasTouch && includes(this.mode, 'hover');\n },\n\n handler: function(e) {\n\n // TODO better isToggled handling\n var link;\n if (closest(e.target, 'a[href=\"#\"], a[href=\"\"]')\n || (link = closest(e.target, 'a[href]')) && (\n this.cls\n || !isVisible(this.target)\n || link.hash && matches(this.target, link.hash)\n )\n ) {\n e.preventDefault();\n }\n\n this.toggle();\n }\n\n }\n\n ],\n\n update: {\n\n read: function() {\n return includes(this.mode, 'media') && this.media\n ? {match: this.matchMedia}\n : false;\n },\n\n write: function(ref) {\n var match = ref.match;\n\n\n var toggled = this.isToggled(this.target);\n if (match ? !toggled : toggled) {\n this.toggle();\n }\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n toggle: function(type) {\n if (trigger(this.target, type || 'toggle', [this])) {\n this.toggleElement(this.target);\n }\n }\n\n }\n\n };\n\n function core (UIkit) {\n\n // core components\n UIkit.component('accordion', Accordion);\n UIkit.component('alert', Alert);\n UIkit.component('cover', Cover);\n UIkit.component('drop', Drop);\n UIkit.component('dropdown', Dropdown);\n UIkit.component('formCustom', FormCustom);\n UIkit.component('gif', Gif);\n UIkit.component('grid', Grid);\n UIkit.component('heightMatch', HeightMatch);\n UIkit.component('heightViewport', HeightViewport);\n UIkit.component('icon', Icon);\n UIkit.component('img', Img);\n UIkit.component('leader', Leader);\n UIkit.component('margin', Margin);\n UIkit.component('modal', Modal$1);\n UIkit.component('nav', Nav);\n UIkit.component('navbar', Navbar);\n UIkit.component('offcanvas', Offcanvas);\n UIkit.component('overflowAuto', OverflowAuto);\n UIkit.component('responsive', Responsive);\n UIkit.component('scroll', Scroll);\n UIkit.component('scrollspy', Scrollspy);\n UIkit.component('scrollspyNav', ScrollspyNav);\n UIkit.component('sticky', Sticky);\n UIkit.component('svg', Svg);\n UIkit.component('switcher', Switcher);\n UIkit.component('tab', Tab);\n UIkit.component('toggle', Toggle);\n UIkit.component('video', Video);\n\n // Icon components\n UIkit.component('close', Close);\n UIkit.component('marker', IconComponent);\n UIkit.component('navbarToggleIcon', IconComponent);\n UIkit.component('overlayIcon', IconComponent);\n UIkit.component('paginationNext', IconComponent);\n UIkit.component('paginationPrevious', IconComponent);\n UIkit.component('searchIcon', Search);\n UIkit.component('slidenavNext', Slidenav);\n UIkit.component('slidenavPrevious', Slidenav);\n UIkit.component('spinner', Spinner);\n UIkit.component('totop', IconComponent);\n\n // core functionality\n UIkit.use(Core);\n\n }\n\n UIkit.version = '3.2.0';\n\n core(UIkit);\n\n var Countdown = {\n\n mixins: [Class],\n\n props: {\n date: String,\n clsWrapper: String\n },\n\n data: {\n date: '',\n clsWrapper: '.uk-countdown-%unit%'\n },\n\n computed: {\n\n date: function(ref) {\n var date = ref.date;\n\n return Date.parse(date);\n },\n\n days: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'days'), $el);\n },\n\n hours: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'hours'), $el);\n },\n\n minutes: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'minutes'), $el);\n },\n\n seconds: function(ref, $el) {\n var clsWrapper = ref.clsWrapper;\n\n return $(clsWrapper.replace('%unit%', 'seconds'), $el);\n },\n\n units: function() {\n var this$1 = this;\n\n return ['days', 'hours', 'minutes', 'seconds'].filter(function (unit) { return this$1[unit]; });\n }\n\n },\n\n connected: function() {\n this.start();\n },\n\n disconnected: function() {\n var this$1 = this;\n\n this.stop();\n this.units.forEach(function (unit) { return empty(this$1[unit]); });\n },\n\n events: [\n\n {\n\n name: 'visibilitychange',\n\n el: document,\n\n handler: function() {\n if (document.hidden) {\n this.stop();\n } else {\n this.start();\n }\n }\n\n }\n\n ],\n\n update: {\n\n write: function() {\n var this$1 = this;\n\n\n var timespan = getTimeSpan(this.date);\n\n if (timespan.total <= 0) {\n\n this.stop();\n\n timespan.days\n = timespan.hours\n = timespan.minutes\n = timespan.seconds\n = 0;\n }\n\n this.units.forEach(function (unit) {\n\n var digits = String(Math.floor(timespan[unit]));\n\n digits = digits.length < 2 ? (\"0\" + digits) : digits;\n\n var el = this$1[unit];\n if (el.textContent !== digits) {\n digits = digits.split('');\n\n if (digits.length !== el.children.length) {\n html(el, digits.map(function () { return '<span></span>'; }).join(''));\n }\n\n digits.forEach(function (digit, i) { return el.children[i].textContent = digit; });\n }\n\n });\n\n }\n\n },\n\n methods: {\n\n start: function() {\n var this$1 = this;\n\n\n this.stop();\n\n if (this.date && this.units.length) {\n this.$emit();\n this.timer = setInterval(function () { return this$1.$emit(); }, 1000);\n }\n\n },\n\n stop: function() {\n\n if (this.timer) {\n clearInterval(this.timer);\n this.timer = null;\n }\n\n }\n\n }\n\n };\n\n function getTimeSpan(date) {\n\n var total = date - Date.now();\n\n return {\n total: total,\n seconds: total / 1000 % 60,\n minutes: total / 1000 / 60 % 60,\n hours: total / 1000 / 60 / 60 % 24,\n days: total / 1000 / 60 / 60 / 24\n };\n }\n\n var targetClass = 'uk-animation-target';\n\n var Animate = {\n\n props: {\n animation: Number\n },\n\n data: {\n animation: 150\n },\n\n computed: {\n\n target: function() {\n return this.$el;\n }\n\n },\n\n methods: {\n\n animate: function(action) {\n var this$1 = this;\n\n\n addStyle();\n\n var children = toNodes(this.target.children);\n var propsFrom = children.map(function (el) { return getProps(el, true); });\n\n var oldHeight = height(this.target);\n var oldScrollY = window.pageYOffset;\n\n action();\n\n Transition.cancel(this.target);\n children.forEach(Transition.cancel);\n\n reset(this.target);\n this.$update(this.target);\n fastdom.flush();\n\n var newHeight = height(this.target);\n\n children = children.concat(toNodes(this.target.children).filter(function (el) { return !includes(children, el); }));\n\n var propsTo = children.map(function (el, i) { return el.parentNode && i in propsFrom\n ? propsFrom[i]\n ? isVisible(el)\n ? getPositionWithMargin(el)\n : {opacity: 0}\n : {opacity: isVisible(el) ? 1 : 0}\n : false; }\n );\n\n propsFrom = propsTo.map(function (props, i) {\n var from = children[i].parentNode === this$1.target\n ? propsFrom[i] || getProps(children[i])\n : false;\n\n if (from) {\n if (!props) {\n delete from.opacity;\n } else if (!('opacity' in props)) {\n var opacity = from.opacity;\n\n if (opacity % 1) {\n props.opacity = 1;\n } else {\n delete from.opacity;\n }\n }\n }\n\n return from;\n });\n\n addClass(this.target, targetClass);\n children.forEach(function (el, i) { return propsFrom[i] && css(el, propsFrom[i]); });\n css(this.target, 'height', oldHeight);\n scrollTop(window, oldScrollY);\n\n return Promise.all(children.map(function (el, i) { return propsFrom[i] && propsTo[i]\n ? Transition.start(el, propsTo[i], this$1.animation, 'ease')\n : Promise.resolve(); }\n ).concat(Transition.start(this.target, {height: newHeight}, this.animation, 'ease'))).then(function () {\n children.forEach(function (el, i) { return css(el, {display: propsTo[i].opacity === 0 ? 'none' : '', zIndex: ''}); });\n reset(this$1.target);\n this$1.$update(this$1.target);\n fastdom.flush(); // needed for IE11\n }, noop);\n\n }\n }\n };\n\n function getProps(el, opacity) {\n\n var zIndex = css(el, 'zIndex');\n\n return isVisible(el)\n ? assign({\n display: '',\n opacity: opacity ? css(el, 'opacity') : '0',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: zIndex === 'auto' ? index(el) : zIndex\n }, getPositionWithMargin(el))\n : false;\n }\n\n function reset(el) {\n css(el.children, {\n height: '',\n left: '',\n opacity: '',\n pointerEvents: '',\n position: '',\n top: '',\n width: ''\n });\n removeClass(el, targetClass);\n css(el, 'height', '');\n }\n\n function getPositionWithMargin(el) {\n var ref = el.getBoundingClientRect();\n var height = ref.height;\n var width = ref.width;\n var ref$1 = position(el);\n var top = ref$1.top;\n var left = ref$1.left;\n top += toFloat(css(el, 'marginTop'));\n\n return {top: top, left: left, height: height, width: width};\n }\n\n var style;\n\n function addStyle() {\n if (style) {\n return;\n }\n style = append(document.head, '<style>').sheet;\n style.insertRule(\n (\".\" + targetClass + \" > * {\\n margin-top: 0 !important;\\n transform: none !important;\\n }\"), 0\n );\n }\n\n var Filter = {\n\n mixins: [Animate],\n\n args: 'target',\n\n props: {\n target: Boolean,\n selActive: Boolean\n },\n\n data: {\n target: null,\n selActive: false,\n attrItem: 'uk-filter-control',\n cls: 'uk-active',\n animation: 250\n },\n\n computed: {\n\n toggles: {\n\n get: function(ref, $el) {\n var attrItem = ref.attrItem;\n\n return $$((\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\"), $el);\n },\n\n watch: function() {\n this.updateState();\n }\n\n },\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return $(target, $el);\n },\n\n children: {\n\n get: function() {\n return toNodes(this.target && this.target.children);\n },\n\n watch: function(list, old) {\n if (!isEqualList(list, old)) {\n this.updateState();\n }\n }\n }\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return (\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\");\n },\n\n handler: function(e) {\n\n e.preventDefault();\n this.apply(e.current);\n\n }\n\n }\n\n ],\n\n connected: function() {\n var this$1 = this;\n\n\n this.updateState();\n\n if (this.selActive !== false) {\n var actives = $$(this.selActive, this.$el);\n this.toggles.forEach(function (el) { return toggleClass(el, this$1.cls, includes(actives, el)); });\n }\n\n },\n\n methods: {\n\n apply: function(el) {\n this.setState(mergeState(el, this.attrItem, this.getState()));\n },\n\n getState: function() {\n var this$1 = this;\n\n return this.toggles\n .filter(function (item) { return hasClass(item, this$1.cls); })\n .reduce(function (state, el) { return mergeState(el, this$1.attrItem, state); }, {filter: {'': ''}, sort: []});\n },\n\n setState: function(state, animate) {\n var this$1 = this;\n if ( animate === void 0 ) animate = true;\n\n\n state = assign({filter: {'': ''}, sort: []}, state);\n\n trigger(this.$el, 'beforeFilter', [this, state]);\n\n var ref = this;\n var children = ref.children;\n\n this.toggles.forEach(function (el) { return toggleClass(el, this$1.cls, !!matchFilter(el, this$1.attrItem, state)); });\n\n var apply = function () {\n\n var selector = getSelector(state);\n\n children.forEach(function (el) { return css(el, 'display', selector && !matches(el, selector) ? 'none' : ''); });\n\n var ref = state.sort;\n var sort = ref[0];\n var order = ref[1];\n\n if (sort) {\n var sorted = sortItems(children, sort, order);\n if (!isEqual(sorted, children)) {\n sorted.forEach(function (el) { return append(this$1.target, el); });\n }\n }\n\n };\n\n if (animate) {\n this.animate(apply).then(function () { return trigger(this$1.$el, 'afterFilter', [this$1]); });\n } else {\n apply();\n trigger(this.$el, 'afterFilter', [this]);\n }\n\n },\n\n updateState: function() {\n var this$1 = this;\n\n fastdom.write(function () { return this$1.setState(this$1.getState(), false); });\n }\n\n }\n\n };\n\n function getFilter(el, attr) {\n return parseOptions(data(el, attr), ['filter']);\n }\n\n function mergeState(el, attr, state) {\n\n var filterBy = getFilter(el, attr);\n var filter = filterBy.filter;\n var group = filterBy.group;\n var sort = filterBy.sort;\n var order = filterBy.order; if ( order === void 0 ) order = 'asc';\n\n if (filter || isUndefined(sort)) {\n\n if (group) {\n\n if (filter) {\n delete state.filter[''];\n state.filter[group] = filter;\n } else {\n delete state.filter[group];\n\n if (isEmpty(state.filter) || '' in state.filter) {\n state.filter = {'': filter || ''};\n }\n\n }\n\n } else {\n state.filter = {'': filter || ''};\n }\n\n }\n\n if (!isUndefined(sort)) {\n state.sort = [sort, order];\n }\n\n return state;\n }\n\n function matchFilter(el, attr, ref) {\n var stateFilter = ref.filter; if ( stateFilter === void 0 ) stateFilter = {'': ''};\n var ref_sort = ref.sort;\n var stateSort = ref_sort[0];\n var stateOrder = ref_sort[1];\n\n\n var ref$1 = getFilter(el, attr);\n var filter = ref$1.filter; if ( filter === void 0 ) filter = '';\n var group = ref$1.group; if ( group === void 0 ) group = '';\n var sort = ref$1.sort;\n var order = ref$1.order; if ( order === void 0 ) order = 'asc';\n\n return isUndefined(sort)\n ? group in stateFilter && filter === stateFilter[group]\n || !filter && group && !(group in stateFilter) && !stateFilter['']\n : stateSort === sort && stateOrder === order;\n }\n\n function isEqualList(listA, listB) {\n return listA.length === listB.length\n && listA.every(function (el) { return ~listB.indexOf(el); });\n }\n\n function getSelector(ref) {\n var filter = ref.filter;\n\n var selector = '';\n each(filter, function (value) { return selector += value || ''; });\n return selector;\n }\n\n function sortItems(nodes, sort, order) {\n return assign([], nodes).sort(function (a, b) { return data(a, sort).localeCompare(data(b, sort), undefined, {numeric: true}) * (order === 'asc' || -1); });\n }\n\n var Animations = {\n\n slide: {\n\n show: function(dir) {\n return [\n {transform: translate(dir * -100)},\n {transform: translate()}\n ];\n },\n\n percent: function(current) {\n return translated(current);\n },\n\n translate: function(percent, dir) {\n return [\n {transform: translate(dir * -100 * percent)},\n {transform: translate(dir * 100 * (1 - percent))}\n ];\n }\n\n }\n\n };\n\n function translated(el) {\n return Math.abs(css(el, 'transform').split(',')[4] / el.offsetWidth) || 0;\n }\n\n function translate(value, unit) {\n if ( value === void 0 ) value = 0;\n if ( unit === void 0 ) unit = '%';\n\n value += value ? unit : '';\n return isIE ? (\"translateX(\" + value + \")\") : (\"translate3d(\" + value + \", 0, 0)\"); // currently not translate3d in IE, translate3d within translate3d does not work while transitioning\n }\n\n function scale3d(value) {\n return (\"scale3d(\" + value + \", \" + value + \", 1)\");\n }\n\n var Animations$1 = assign({}, Animations, {\n\n fade: {\n\n show: function() {\n return [\n {opacity: 0},\n {opacity: 1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent},\n {opacity: percent}\n ];\n }\n\n },\n\n scale: {\n\n show: function() {\n return [\n {opacity: 0, transform: scale3d(1 - .2)},\n {opacity: 1, transform: scale3d(1)}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, transform: scale3d(1 - .2 * percent)},\n {opacity: percent, transform: scale3d(1 - .2 + .2 * percent)}\n ];\n }\n\n }\n\n });\n\n function Transitioner(prev, next, dir, ref) {\n var animation = ref.animation;\n var easing = ref.easing;\n\n\n var percent = animation.percent;\n var translate = animation.translate;\n var show = animation.show; if ( show === void 0 ) show = noop;\n var props = show(dir);\n var deferred = new Deferred();\n\n return {\n\n dir: dir,\n\n show: function(duration, percent, linear) {\n var this$1 = this;\n if ( percent === void 0 ) percent = 0;\n\n\n var timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n\n this.translate(percent);\n\n triggerUpdate(next, 'itemin', {percent: percent, duration: duration, timing: timing, dir: dir});\n triggerUpdate(prev, 'itemout', {percent: 1 - percent, duration: duration, timing: timing, dir: dir});\n\n Promise.all([\n Transition.start(next, props[1], duration, timing),\n Transition.start(prev, props[0], duration, timing)\n ]).then(function () {\n this$1.reset();\n deferred.resolve();\n }, noop);\n\n return deferred.promise;\n },\n\n stop: function() {\n return Transition.stop([next, prev]);\n },\n\n cancel: function() {\n Transition.cancel([next, prev]);\n },\n\n reset: function() {\n for (var prop in props[0]) {\n css([next, prev], prop, '');\n }\n },\n\n forward: function(duration, percent) {\n if ( percent === void 0 ) percent = this.percent();\n\n Transition.cancel([next, prev]);\n return this.show(duration, percent, true);\n\n },\n\n translate: function(percent) {\n\n this.reset();\n\n var props = translate(percent, dir);\n css(next, props[1]);\n css(prev, props[0]);\n triggerUpdate(next, 'itemtranslatein', {percent: percent, dir: dir});\n triggerUpdate(prev, 'itemtranslateout', {percent: 1 - percent, dir: dir});\n\n },\n\n percent: function() {\n return percent(prev || next, next, dir);\n },\n\n getDistance: function() {\n return prev && prev.offsetWidth;\n }\n\n };\n\n }\n\n function triggerUpdate(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n }\n\n var SliderAutoplay = {\n\n props: {\n autoplay: Boolean,\n autoplayInterval: Number,\n pauseOnHover: Boolean\n },\n\n data: {\n autoplay: false,\n autoplayInterval: 7000,\n pauseOnHover: true\n },\n\n connected: function() {\n this.autoplay && this.startAutoplay();\n },\n\n disconnected: function() {\n this.stopAutoplay();\n },\n\n update: function() {\n attr(this.slides, 'tabindex', '-1');\n },\n\n events: [\n\n {\n\n name: 'visibilitychange',\n\n el: document,\n\n filter: function() {\n return this.autoplay;\n },\n\n handler: function() {\n if (document.hidden) {\n this.stopAutoplay();\n } else {\n this.startAutoplay();\n }\n }\n\n }\n\n ],\n\n methods: {\n\n startAutoplay: function() {\n var this$1 = this;\n\n\n this.stopAutoplay();\n\n this.interval = setInterval(\n function () { return (!this$1.draggable || !$(':focus', this$1.$el))\n && (!this$1.pauseOnHover || !matches(this$1.$el, ':hover'))\n && !this$1.stack.length\n && this$1.show('next'); },\n this.autoplayInterval\n );\n\n },\n\n stopAutoplay: function() {\n this.interval && clearInterval(this.interval);\n }\n\n }\n\n };\n\n var SliderDrag = {\n\n props: {\n draggable: Boolean\n },\n\n data: {\n draggable: true,\n threshold: 10\n },\n\n created: function() {\n var this$1 = this;\n\n\n ['start', 'move', 'end'].forEach(function (key) {\n\n var fn = this$1[key];\n this$1[key] = function (e) {\n\n var pos = getEventPos(e).x * (isRtl ? -1 : 1);\n\n this$1.prevPos = pos !== this$1.pos ? this$1.pos : this$1.prevPos;\n this$1.pos = pos;\n\n fn(e);\n };\n\n });\n\n },\n\n events: [\n\n {\n\n name: pointerDown,\n\n delegate: function() {\n return this.selSlides;\n },\n\n handler: function(e) {\n\n if (!this.draggable\n || !isTouch(e) && hasTextNodesOnly(e.target)\n || e.button > 0\n || this.length < 2\n ) {\n return;\n }\n\n this.start(e);\n }\n\n },\n\n {\n\n // Workaround for iOS 11 bug: https://bugs.webkit.org/show_bug.cgi?id=184250\n\n name: 'touchmove',\n passive: false,\n handler: 'move',\n delegate: function() {\n return this.selSlides;\n }\n\n },\n\n {\n name: 'dragstart',\n\n handler: function(e) {\n e.preventDefault();\n }\n }\n\n ],\n\n methods: {\n\n start: function() {\n var this$1 = this;\n\n\n this.drag = this.pos;\n\n if (this._transitioner) {\n\n this.percent = this._transitioner.percent();\n this.drag += this._transitioner.getDistance() * this.percent * this.dir;\n\n this._transitioner.cancel();\n this._transitioner.translate(this.percent);\n\n this.dragging = true;\n\n this.stack = [];\n\n } else {\n this.prevIndex = this.index;\n }\n\n // See above workaround notice\n var off = pointerMove !== 'touchmove'\n ? on(document, pointerMove, this.move, {passive: false})\n : noop;\n this.unbindMove = function () {\n off();\n this$1.unbindMove = null;\n };\n on(window, 'scroll', this.unbindMove);\n on(document, pointerUp, this.end, true);\n\n css(this.list, 'userSelect', 'none');\n\n },\n\n move: function(e) {\n var this$1 = this;\n\n\n // See above workaround notice\n if (!this.unbindMove) {\n return;\n }\n\n var distance = this.pos - this.drag;\n\n if (distance === 0 || this.prevPos === this.pos || !this.dragging && Math.abs(distance) < this.threshold) {\n return;\n }\n\n css(this.list, 'pointerEvents', 'none');\n\n e.cancelable && e.preventDefault();\n\n this.dragging = true;\n this.dir = (distance < 0 ? 1 : -1);\n\n var ref = this;\n var slides = ref.slides;\n var ref$1 = this;\n var prevIndex = ref$1.prevIndex;\n var dis = Math.abs(distance);\n var nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n var width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n\n while (nextIndex !== prevIndex && dis > width) {\n\n this.drag -= width * this.dir;\n\n prevIndex = nextIndex;\n dis -= width;\n nextIndex = this.getIndex(prevIndex + this.dir, prevIndex);\n width = this._getDistance(prevIndex, nextIndex) || slides[prevIndex].offsetWidth;\n\n }\n\n this.percent = dis / width;\n\n var prev = slides[prevIndex];\n var next = slides[nextIndex];\n var changed = this.index !== nextIndex;\n var edge = prevIndex === nextIndex;\n\n var itemShown;\n\n [this.index, this.prevIndex].filter(function (i) { return !includes([nextIndex, prevIndex], i); }).forEach(function (i) {\n trigger(slides[i], 'itemhidden', [this$1]);\n\n if (edge) {\n itemShown = true;\n this$1.prevIndex = prevIndex;\n }\n\n });\n\n if (this.index === prevIndex && this.prevIndex !== prevIndex || itemShown) {\n trigger(slides[this.index], 'itemshown', [this]);\n }\n\n if (changed) {\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n\n !edge && trigger(prev, 'beforeitemhide', [this]);\n trigger(next, 'beforeitemshow', [this]);\n }\n\n this._transitioner = this._translate(Math.abs(this.percent), prev, !edge && next);\n\n if (changed) {\n !edge && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n }\n\n },\n\n end: function() {\n\n off(window, 'scroll', this.unbindMove);\n this.unbindMove && this.unbindMove();\n off(document, pointerUp, this.end, true);\n\n if (this.dragging) {\n\n this.dragging = null;\n\n if (this.index === this.prevIndex) {\n this.percent = 1 - this.percent;\n this.dir *= -1;\n this._show(false, this.index, true);\n this._transitioner = null;\n } else {\n\n var dirChange = (isRtl ? this.dir * (isRtl ? 1 : -1) : this.dir) < 0 === this.prevPos > this.pos;\n this.index = dirChange ? this.index : this.prevIndex;\n\n if (dirChange) {\n this.percent = 1 - this.percent;\n }\n\n this.show(this.dir > 0 && !dirChange || this.dir < 0 && dirChange ? 'next' : 'previous', true);\n }\n\n }\n\n css(this.list, {userSelect: '', pointerEvents: ''});\n\n this.drag\n = this.percent\n = null;\n\n }\n\n }\n\n };\n\n function hasTextNodesOnly(el) {\n return !el.children.length && el.childNodes.length;\n }\n\n var SliderNav = {\n\n data: {\n selNav: false\n },\n\n computed: {\n\n nav: function(ref, $el) {\n var selNav = ref.selNav;\n\n return $(selNav, $el);\n },\n\n selNavItem: function(ref) {\n var attrItem = ref.attrItem;\n\n return (\"[\" + attrItem + \"],[data-\" + attrItem + \"]\");\n },\n\n navItems: function(_, $el) {\n return $$(this.selNavItem, $el);\n }\n\n },\n\n update: {\n\n write: function() {\n var this$1 = this;\n\n\n if (this.nav && this.length !== this.nav.children.length) {\n html(this.nav, this.slides.map(function (_, i) { return (\"<li \" + (this$1.attrItem) + \"=\\\"\" + i + \"\\\"><a href=\\\"#\\\"></a></li>\"); }).join(''));\n }\n\n toggleClass($$(this.selNavItem, this.$el).concat(this.nav), 'uk-hidden', !this.maxIndex);\n\n this.updateNav();\n\n },\n\n events: ['resize']\n\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return this.selNavItem;\n },\n\n handler: function(e) {\n e.preventDefault();\n this.show(data(e.current, this.attrItem));\n }\n\n },\n\n {\n\n name: 'itemshow',\n handler: 'updateNav'\n\n }\n\n ],\n\n methods: {\n\n updateNav: function() {\n var this$1 = this;\n\n\n var i = this.getValidIndex();\n this.navItems.forEach(function (el) {\n\n var cmd = data(el, this$1.attrItem);\n\n toggleClass(el, this$1.clsActive, toNumber(cmd) === i);\n toggleClass(el, 'uk-invisible', this$1.finite && (cmd === 'previous' && i === 0 || cmd === 'next' && i >= this$1.maxIndex));\n });\n\n }\n\n }\n\n };\n\n var Slider = {\n\n mixins: [SliderAutoplay, SliderDrag, SliderNav],\n\n props: {\n clsActivated: Boolean,\n easing: String,\n index: Number,\n finite: Boolean,\n velocity: Number\n },\n\n data: function () { return ({\n easing: 'ease',\n finite: false,\n velocity: 1,\n index: 0,\n prevIndex: -1,\n stack: [],\n percent: 0,\n clsActive: 'uk-active',\n clsActivated: false,\n Transitioner: false,\n transitionOptions: {}\n }); },\n\n connected: function() {\n this.prevIndex = -1;\n this.index = this.getValidIndex(this.index);\n this.stack = [];\n },\n\n disconnected: function() {\n removeClass(this.slides, this.clsActive);\n },\n\n computed: {\n\n duration: function(ref, $el) {\n var velocity = ref.velocity;\n\n return speedUp($el.offsetWidth / velocity);\n },\n\n list: function(ref, $el) {\n var selList = ref.selList;\n\n return $(selList, $el);\n },\n\n maxIndex: function() {\n return this.length - 1;\n },\n\n selSlides: function(ref) {\n var selList = ref.selList;\n\n return (selList + \" > *\");\n },\n\n slides: {\n\n get: function() {\n return toNodes(this.list.children);\n },\n\n watch: function() {\n this.$reset();\n }\n\n },\n\n length: function() {\n return this.slides.length;\n }\n\n },\n\n events: {\n\n itemshown: function() {\n this.$update(this.list);\n }\n\n },\n\n methods: {\n\n show: function(index, force) {\n var this$1 = this;\n if ( force === void 0 ) force = false;\n\n\n if (this.dragging || !this.length) {\n return;\n }\n\n var ref = this;\n var stack = ref.stack;\n var queueIndex = force ? 0 : stack.length;\n var reset = function () {\n stack.splice(queueIndex, 1);\n\n if (stack.length) {\n this$1.show(stack.shift(), true);\n }\n };\n\n stack[force ? 'unshift' : 'push'](index);\n\n if (!force && stack.length > 1) {\n\n if (stack.length === 2) {\n this._transitioner.forward(Math.min(this.duration, 200));\n }\n\n return;\n }\n\n var prevIndex = this.index;\n var prev = hasClass(this.slides, this.clsActive) && this.slides[prevIndex];\n var nextIndex = this.getIndex(index, this.index);\n var next = this.slides[nextIndex];\n\n if (prev === next) {\n reset();\n return;\n }\n\n this.dir = getDirection(index, prevIndex);\n this.prevIndex = prevIndex;\n this.index = nextIndex;\n\n prev && trigger(prev, 'beforeitemhide', [this]);\n if (!trigger(next, 'beforeitemshow', [this, prev])) {\n this.index = this.prevIndex;\n reset();\n return;\n }\n\n var promise = this._show(prev, next, force).then(function () {\n\n prev && trigger(prev, 'itemhidden', [this$1]);\n trigger(next, 'itemshown', [this$1]);\n\n return new Promise(function (resolve) {\n fastdom.write(function () {\n stack.shift();\n if (stack.length) {\n this$1.show(stack.shift(), true);\n } else {\n this$1._transitioner = null;\n }\n resolve();\n });\n });\n\n });\n\n prev && trigger(prev, 'itemhide', [this]);\n trigger(next, 'itemshow', [this]);\n\n return promise;\n\n },\n\n getIndex: function(index, prev) {\n if ( index === void 0 ) index = this.index;\n if ( prev === void 0 ) prev = this.index;\n\n return clamp(getIndex(index, this.slides, prev, this.finite), 0, this.maxIndex);\n },\n\n getValidIndex: function(index, prevIndex) {\n if ( index === void 0 ) index = this.index;\n if ( prevIndex === void 0 ) prevIndex = this.prevIndex;\n\n return this.getIndex(index, prevIndex);\n },\n\n _show: function(prev, next, force) {\n\n this._transitioner = this._getTransitioner(\n prev,\n next,\n this.dir,\n assign({\n easing: force\n ? next.offsetWidth < 600\n ? 'cubic-bezier(0.25, 0.46, 0.45, 0.94)' /* easeOutQuad */\n : 'cubic-bezier(0.165, 0.84, 0.44, 1)' /* easeOutQuart */\n : this.easing\n }, this.transitionOptions)\n );\n\n if (!force && !prev) {\n this._transitioner.translate(1);\n return Promise.resolve();\n }\n\n var ref = this.stack;\n var length = ref.length;\n return this._transitioner[length > 1 ? 'forward' : 'show'](length > 1 ? Math.min(this.duration, 75 + 75 / (length - 1)) : this.duration, this.percent);\n\n },\n\n _getDistance: function(prev, next) {\n return this._getTransitioner(prev, prev !== next && next).getDistance();\n },\n\n _translate: function(percent, prev, next) {\n if ( prev === void 0 ) prev = this.prevIndex;\n if ( next === void 0 ) next = this.index;\n\n var transitioner = this._getTransitioner(prev !== next ? prev : false, next);\n transitioner.translate(percent);\n return transitioner;\n },\n\n _getTransitioner: function(prev, next, dir, options) {\n if ( prev === void 0 ) prev = this.prevIndex;\n if ( next === void 0 ) next = this.index;\n if ( dir === void 0 ) dir = this.dir || 1;\n if ( options === void 0 ) options = this.transitionOptions;\n\n return new this.Transitioner(\n isNumber(prev) ? this.slides[prev] : prev,\n isNumber(next) ? this.slides[next] : next,\n dir * (isRtl ? -1 : 1),\n options\n );\n }\n\n }\n\n };\n\n function getDirection(index, prevIndex) {\n return index === 'next'\n ? 1\n : index === 'previous'\n ? -1\n : index < prevIndex\n ? -1\n : 1;\n }\n\n function speedUp(x) {\n return .5 * x + 300; // parabola through (400,500; 600,600; 1800,1200)\n }\n\n var Slideshow = {\n\n mixins: [Slider],\n\n props: {\n animation: String\n },\n\n data: {\n animation: 'slide',\n clsActivated: 'uk-transition-active',\n Animations: Animations,\n Transitioner: Transitioner\n },\n\n computed: {\n\n animation: function(ref) {\n var animation = ref.animation;\n var Animations = ref.Animations;\n\n return assign(animation in Animations ? Animations[animation] : Animations.slide, {name: animation});\n },\n\n transitionOptions: function() {\n return {animation: this.animation};\n }\n\n },\n\n events: {\n\n 'itemshow itemhide itemshown itemhidden': function(ref) {\n var target = ref.target;\n\n this.$update(target);\n },\n\n beforeitemshow: function(ref) {\n var target = ref.target;\n\n addClass(target, this.clsActive);\n },\n\n itemshown: function(ref) {\n var target = ref.target;\n\n addClass(target, this.clsActivated);\n },\n\n itemhidden: function(ref) {\n var target = ref.target;\n\n removeClass(target, this.clsActive, this.clsActivated);\n }\n\n }\n\n };\n\n var lightboxPanel = {\n\n mixins: [Container, Modal, Togglable, Slideshow],\n\n functional: true,\n\n props: {\n delayControls: Number,\n preload: Number,\n videoAutoplay: Boolean,\n template: String\n },\n\n data: function () { return ({\n preload: 1,\n videoAutoplay: false,\n delayControls: 3000,\n items: [],\n cls: 'uk-open',\n clsPage: 'uk-lightbox-page',\n selList: '.uk-lightbox-items',\n attrItem: 'uk-lightbox-item',\n selClose: '.uk-close-large',\n selCaption: '.uk-lightbox-caption',\n pauseOnHover: false,\n velocity: 2,\n Animations: Animations$1,\n template: \"<div class=\\\"uk-lightbox uk-overflow-hidden\\\"> <ul class=\\\"uk-lightbox-items\\\"></ul> <div class=\\\"uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque\\\"> <button class=\\\"uk-lightbox-toolbar-icon uk-close-large\\\" type=\\\"button\\\" uk-close></button> </div> <a class=\\\"uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade\\\" href=\\\"#\\\" uk-slidenav-previous uk-lightbox-item=\\\"previous\\\"></a> <a class=\\\"uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade\\\" href=\\\"#\\\" uk-slidenav-next uk-lightbox-item=\\\"next\\\"></a> <div class=\\\"uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque\\\"></div> </div>\"\n }); },\n\n created: function() {\n\n var $el = $(this.template);\n var list = $(this.selList, $el);\n this.items.forEach(function () { return append(list, '<li></li>'); });\n\n this.$mount(append(this.container, $el));\n\n },\n\n computed: {\n\n caption: function(ref, $el) {\n var selCaption = ref.selCaption;\n\n return $('.uk-lightbox-caption', $el);\n }\n\n },\n\n events: [\n\n {\n\n name: (pointerMove + \" \" + pointerDown + \" keydown\"),\n\n handler: 'showControls'\n\n },\n\n {\n\n name: 'click',\n\n self: true,\n\n delegate: function() {\n return this.selSlides;\n },\n\n handler: function(e) {\n\n if (e.defaultPrevented) {\n return;\n }\n\n this.hide();\n }\n\n },\n\n {\n\n name: 'shown',\n\n self: true,\n\n handler: function() {\n this.showControls();\n }\n\n },\n\n {\n\n name: 'hide',\n\n self: true,\n\n handler: function() {\n\n this.hideControls();\n\n removeClass(this.slides, this.clsActive);\n Transition.stop(this.slides);\n\n }\n },\n\n {\n\n name: 'hidden',\n\n self: true,\n\n handler: function() {\n this.$destroy(true);\n }\n\n },\n\n {\n\n name: 'keyup',\n\n el: document,\n\n handler: function(e) {\n\n if (!this.isToggled(this.$el)) {\n return;\n }\n\n switch (e.keyCode) {\n case 37:\n this.show('previous');\n break;\n case 39:\n this.show('next');\n break;\n }\n }\n },\n\n {\n\n name: 'beforeitemshow',\n\n handler: function(e) {\n\n if (this.isToggled()) {\n return;\n }\n\n this.draggable = false;\n\n e.preventDefault();\n\n this.toggleNow(this.$el, true);\n\n this.animation = Animations$1['scale'];\n removeClass(e.target, this.clsActive);\n this.stack.splice(1, 0, this.index);\n\n }\n\n },\n\n {\n\n name: 'itemshow',\n\n handler: function(ref) {\n var target = ref.target;\n\n\n var i = index(target);\n var ref$1 = this.getItem(i);\n var caption = ref$1.caption;\n\n css(this.caption, 'display', caption ? '' : 'none');\n html(this.caption, caption);\n\n for (var j = 0; j <= this.preload; j++) {\n this.loadItem(this.getIndex(i + j));\n this.loadItem(this.getIndex(i - j));\n }\n\n }\n\n },\n\n {\n\n name: 'itemshown',\n\n handler: function() {\n this.draggable = this.$props.draggable;\n }\n\n },\n\n {\n\n name: 'itemload',\n\n handler: function(_, item) {\n var this$1 = this;\n\n\n var source = item.source;\n var type = item.type;\n var alt = item.alt;\n\n this.setItem(item, '<span uk-spinner></span>');\n\n if (!source) {\n return;\n }\n\n var matches;\n\n // Image\n if (type === 'image' || source.match(/\\.(jp(e)?g|png|gif|svg|webp)($|\\?)/i)) {\n\n getImage(source).then(\n function (img) { return this$1.setItem(item, (\"<img width=\\\"\" + (img.width) + \"\\\" height=\\\"\" + (img.height) + \"\\\" src=\\\"\" + source + \"\\\" alt=\\\"\" + (alt ? alt : '') + \"\\\">\")); },\n function () { return this$1.setError(item); }\n );\n\n // Video\n } else if (type === 'video' || source.match(/\\.(mp4|webm|ogv)($|\\?)/i)) {\n\n var video = $((\"<video controls playsinline\" + (item.poster ? (\" poster=\\\"\" + (item.poster) + \"\\\"\") : '') + \" uk-video=\\\"\" + (this.videoAutoplay) + \"\\\"></video>\"));\n attr(video, 'src', source);\n\n once(video, 'error loadedmetadata', function (type) {\n if (type === 'error') {\n this$1.setError(item);\n } else {\n attr(video, {width: video.videoWidth, height: video.videoHeight});\n this$1.setItem(item, video);\n }\n });\n\n // Iframe\n } else if (type === 'iframe' || source.match(/\\.(html|php)($|\\?)/i)) {\n\n this.setItem(item, (\"<iframe class=\\\"uk-lightbox-iframe\\\" src=\\\"\" + source + \"\\\" frameborder=\\\"0\\\" allowfullscreen></iframe>\"));\n\n // YouTube\n } else if ((matches = source.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/watch\\?v=([^&\\s]+)/) || source.match(/()youtu\\.be\\/(.*)/))) {\n\n var id = matches[2];\n var setIframe = function (width, height) {\n if ( width === void 0 ) width = 640;\n if ( height === void 0 ) height = 450;\n\n return this$1.setItem(item, getIframe((\"https://www.youtube\" + (matches[1] || '') + \".com/embed/\" + id), width, height, this$1.videoAutoplay));\n };\n\n getImage((\"https://img.youtube.com/vi/\" + id + \"/maxresdefault.jpg\")).then(\n function (ref) {\n var width = ref.width;\n var height = ref.height;\n\n // YouTube default 404 thumb, fall back to low resolution\n if (width === 120 && height === 90) {\n getImage((\"https://img.youtube.com/vi/\" + id + \"/0.jpg\")).then(\n function (ref) {\n var width = ref.width;\n var height = ref.height;\n\n return setIframe(width, height);\n },\n setIframe\n );\n } else {\n setIframe(width, height);\n }\n },\n setIframe\n );\n\n // Vimeo\n } else if ((matches = source.match(/(\\/\\/.*?)vimeo\\.[a-z]+\\/([0-9]+).*?/))) {\n\n ajax((\"https://vimeo.com/api/oembed.json?maxwidth=1920&url=\" + (encodeURI(source))), {responseType: 'json', withCredentials: false})\n .then(\n function (ref) {\n var ref_response = ref.response;\n var height = ref_response.height;\n var width = ref_response.width;\n\n return this$1.setItem(item, getIframe((\"https://player.vimeo.com/video/\" + (matches[2])), width, height, this$1.videoAutoplay));\n },\n function () { return this$1.setError(item); }\n );\n\n }\n\n }\n\n }\n\n ],\n\n methods: {\n\n loadItem: function(index) {\n if ( index === void 0 ) index = this.index;\n\n\n var item = this.getItem(index);\n\n if (item.content) {\n return;\n }\n\n trigger(this.$el, 'itemload', [item]);\n },\n\n getItem: function(index) {\n if ( index === void 0 ) index = this.index;\n\n return this.items[index] || {};\n },\n\n setItem: function(item, content) {\n assign(item, {content: content});\n var el = html(this.slides[this.items.indexOf(item)], content);\n trigger(this.$el, 'itemloaded', [this, el]);\n this.$update(el);\n },\n\n setError: function(item) {\n this.setItem(item, '<span uk-icon=\"icon: bolt; ratio: 2\"></span>');\n },\n\n showControls: function() {\n\n clearTimeout(this.controlsTimer);\n this.controlsTimer = setTimeout(this.hideControls, this.delayControls);\n\n addClass(this.$el, 'uk-active', 'uk-transition-active');\n\n },\n\n hideControls: function() {\n removeClass(this.$el, 'uk-active', 'uk-transition-active');\n }\n\n }\n\n };\n\n function getIframe(src, width, height, autoplay) {\n return (\"<iframe src=\\\"\" + src + \"\\\" width=\\\"\" + width + \"\\\" height=\\\"\" + height + \"\\\" style=\\\"max-width: 100%; box-sizing: border-box;\\\" frameborder=\\\"0\\\" allowfullscreen uk-video=\\\"autoplay: \" + autoplay + \"\\\" uk-responsive></iframe>\");\n }\n\n var Lightbox = {\n\n install: install$2,\n\n props: {toggle: String},\n\n data: {toggle: 'a'},\n\n computed: {\n\n toggles: {\n\n get: function(ref, $el) {\n var toggle = ref.toggle;\n\n return $$(toggle, $el);\n },\n\n watch: function() {\n this.hide();\n }\n\n },\n\n items: function() {\n return uniqueBy(this.toggles.map(toItem), 'source');\n }\n\n },\n\n disconnected: function() {\n this.hide();\n },\n\n events: [\n\n {\n\n name: 'click',\n\n delegate: function() {\n return ((this.toggle) + \":not(.uk-disabled)\");\n },\n\n handler: function(e) {\n e.preventDefault();\n var src = data(e.current, 'href');\n this.show(findIndex(this.items, function (ref) {\n var source = ref.source;\n\n return source === src;\n }));\n }\n\n }\n\n ],\n\n methods: {\n\n show: function(index) {\n var this$1 = this;\n\n\n this.panel = this.panel || this.$create('lightboxPanel', assign({}, this.$props, {items: this.items}));\n\n on(this.panel.$el, 'hidden', function () { return this$1.panel = false; });\n\n return this.panel.show(index);\n\n },\n\n hide: function() {\n\n return this.panel && this.panel.hide();\n\n }\n\n }\n\n };\n\n function install$2(UIkit, Lightbox) {\n\n if (!UIkit.lightboxPanel) {\n UIkit.component('lightboxPanel', lightboxPanel);\n }\n\n assign(\n Lightbox.props,\n UIkit.component('lightboxPanel').options.props\n );\n\n }\n\n function toItem(el) {\n return ['href', 'caption', 'type', 'poster', 'alt'].reduce(function (obj, attr) {\n obj[attr === 'href' ? 'source' : attr] = data(el, attr);\n return obj;\n }, {});\n }\n\n var obj;\n\n var containers = {};\n\n var Notification = {\n\n functional: true,\n\n args: ['message', 'status'],\n\n data: {\n message: '',\n status: '',\n timeout: 5000,\n group: null,\n pos: 'top-center',\n clsClose: 'uk-notification-close',\n clsMsg: 'uk-notification-message'\n },\n\n install: install$3,\n\n computed: {\n\n marginProp: function(ref) {\n var pos = ref.pos;\n\n return (\"margin\" + (startsWith(pos, 'top') ? 'Top' : 'Bottom'));\n },\n\n startProps: function() {\n var obj;\n\n return ( obj = {opacity: 0}, obj[this.marginProp] = -this.$el.offsetHeight, obj );\n }\n\n },\n\n created: function() {\n\n if (!containers[this.pos]) {\n containers[this.pos] = append(this.$container, (\"<div class=\\\"uk-notification uk-notification-\" + (this.pos) + \"\\\"></div>\"));\n }\n\n var container = css(containers[this.pos], 'display', 'block');\n\n this.$mount(append(container,\n (\"<div class=\\\"\" + (this.clsMsg) + (this.status ? (\" \" + (this.clsMsg) + \"-\" + (this.status)) : '') + \"\\\"> <a href=\\\"#\\\" class=\\\"\" + (this.clsClose) + \"\\\" data-uk-close></a> <div>\" + (this.message) + \"</div> </div>\")\n ));\n\n },\n\n connected: function() {\n var this$1 = this;\n var obj;\n\n\n var margin = toFloat(css(this.$el, this.marginProp));\n Transition.start(\n css(this.$el, this.startProps),\n ( obj = {opacity: 1}, obj[this.marginProp] = margin, obj )\n ).then(function () {\n if (this$1.timeout) {\n this$1.timer = setTimeout(this$1.close, this$1.timeout);\n }\n });\n\n },\n\n events: ( obj = {\n\n click: function(e) {\n if (closest(e.target, 'a[href=\"#\"],a[href=\"\"]')) {\n e.preventDefault();\n }\n this.close();\n }\n\n }, obj[pointerEnter] = function () {\n if (this.timer) {\n clearTimeout(this.timer);\n }\n }, obj[pointerLeave] = function () {\n if (this.timeout) {\n this.timer = setTimeout(this.close, this.timeout);\n }\n }, obj ),\n\n methods: {\n\n close: function(immediate) {\n var this$1 = this;\n\n\n var removeFn = function () {\n\n trigger(this$1.$el, 'close', [this$1]);\n remove(this$1.$el);\n\n if (!containers[this$1.pos].children.length) {\n css(containers[this$1.pos], 'display', 'none');\n }\n\n };\n\n if (this.timer) {\n clearTimeout(this.timer);\n }\n\n if (immediate) {\n removeFn();\n } else {\n Transition.start(this.$el, this.startProps).then(removeFn);\n }\n }\n\n }\n\n };\n\n function install$3(UIkit) {\n UIkit.notification.closeAll = function (group, immediate) {\n apply(document.body, function (el) {\n var notification = UIkit.getComponent(el, 'notification');\n if (notification && (!group || group === notification.group)) {\n notification.close(immediate);\n }\n });\n };\n }\n\n var props = ['x', 'y', 'bgx', 'bgy', 'rotate', 'scale', 'color', 'backgroundColor', 'borderColor', 'opacity', 'blur', 'hue', 'grayscale', 'invert', 'saturate', 'sepia', 'fopacity', 'stroke'];\n\n var Parallax = {\n\n mixins: [Media],\n\n props: props.reduce(function (props, prop) {\n props[prop] = 'list';\n return props;\n }, {}),\n\n data: props.reduce(function (data, prop) {\n data[prop] = undefined;\n return data;\n }, {}),\n\n computed: {\n\n props: function(properties, $el) {\n var this$1 = this;\n\n\n return props.reduce(function (props, prop) {\n\n if (isUndefined(properties[prop])) {\n return props;\n }\n\n var isColor = prop.match(/color/i);\n var isCssProp = isColor || prop === 'opacity';\n\n var pos, bgPos, diff;\n var steps = properties[prop].slice(0);\n\n if (isCssProp) {\n css($el, prop, '');\n }\n\n if (steps.length < 2) {\n steps.unshift((prop === 'scale'\n ? 1\n : isCssProp\n ? css($el, prop)\n : 0) || 0);\n }\n\n var unit = getUnit(steps);\n\n if (isColor) {\n\n var ref = $el.style;\n var color = ref.color;\n steps = steps.map(function (step) { return parseColor($el, step); });\n $el.style.color = color;\n\n } else if (startsWith(prop, 'bg')) {\n\n var attr = prop === 'bgy' ? 'height' : 'width';\n steps = steps.map(function (step) { return toPx(step, attr, this$1.$el); });\n\n css($el, (\"background-position-\" + (prop[2])), '');\n bgPos = css($el, 'backgroundPosition').split(' ')[prop[2] === 'x' ? 0 : 1]; // IE 11 can't read background-position-[x|y]\n\n if (this$1.covers) {\n\n var min = Math.min.apply(Math, steps);\n var max = Math.max.apply(Math, steps);\n var down = steps.indexOf(min) < steps.indexOf(max);\n\n diff = max - min;\n\n steps = steps.map(function (step) { return step - (down ? min : max); });\n pos = (down ? -diff : 0) + \"px\";\n\n } else {\n\n pos = bgPos;\n\n }\n\n } else {\n\n steps = steps.map(toFloat);\n\n }\n\n if (prop === 'stroke') {\n\n if (!steps.some(function (step) { return step; })) {\n return props;\n }\n\n var length = getMaxPathLength(this$1.$el);\n css($el, 'strokeDasharray', length);\n\n if (unit === '%') {\n steps = steps.map(function (step) { return step * length / 100; });\n }\n\n steps = steps.reverse();\n\n prop = 'strokeDashoffset';\n }\n\n props[prop] = {steps: steps, unit: unit, pos: pos, bgPos: bgPos, diff: diff};\n\n return props;\n\n }, {});\n\n },\n\n bgProps: function() {\n var this$1 = this;\n\n return ['bgx', 'bgy'].filter(function (bg) { return bg in this$1.props; });\n },\n\n covers: function(_, $el) {\n return covers($el);\n }\n\n },\n\n disconnected: function() {\n delete this._image;\n },\n\n update: {\n\n read: function(data) {\n var this$1 = this;\n\n\n data.active = this.matchMedia;\n\n if (!data.active) {\n return;\n }\n\n if (!data.image && this.covers && this.bgProps.length) {\n var src = css(this.$el, 'backgroundImage').replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/, '$1');\n\n if (src) {\n var img = new Image();\n img.src = src;\n data.image = img;\n\n if (!img.naturalWidth) {\n img.onload = function () { return this$1.$emit(); };\n }\n }\n\n }\n\n var image = data.image;\n\n if (!image || !image.naturalWidth) {\n return;\n }\n\n var dimEl = {\n width: this.$el.offsetWidth,\n height: this.$el.offsetHeight\n };\n var dimImage = {\n width: image.naturalWidth,\n height: image.naturalHeight\n };\n\n var dim = Dimensions.cover(dimImage, dimEl);\n\n this.bgProps.forEach(function (prop) {\n\n var ref = this$1.props[prop];\n var diff = ref.diff;\n var bgPos = ref.bgPos;\n var steps = ref.steps;\n var attr = prop === 'bgy' ? 'height' : 'width';\n var span = dim[attr] - dimEl[attr];\n\n if (span < diff) {\n dimEl[attr] = dim[attr] + diff - span;\n } else if (span > diff) {\n\n var posPercentage = dimEl[attr] / toPx(bgPos, attr, this$1.$el);\n\n if (posPercentage) {\n this$1.props[prop].steps = steps.map(function (step) { return step - (span - diff) / posPercentage; });\n }\n }\n\n dim = Dimensions.cover(dimImage, dimEl);\n });\n\n data.dim = dim;\n },\n\n write: function(ref) {\n var dim = ref.dim;\n var active = ref.active;\n\n\n if (!active) {\n css(this.$el, {backgroundSize: '', backgroundRepeat: ''});\n return;\n }\n\n dim && css(this.$el, {\n backgroundSize: ((dim.width) + \"px \" + (dim.height) + \"px\"),\n backgroundRepeat: 'no-repeat'\n });\n\n },\n\n events: ['resize']\n\n },\n\n methods: {\n\n reset: function() {\n var this$1 = this;\n\n each(this.getCss(0), function (_, prop) { return css(this$1.$el, prop, ''); });\n },\n\n getCss: function(percent) {\n\n var ref = this;\n var props = ref.props;\n return Object.keys(props).reduce(function (css, prop) {\n\n var ref = props[prop];\n var steps = ref.steps;\n var unit = ref.unit;\n var pos = ref.pos;\n var value = getValue(steps, percent);\n\n switch (prop) {\n\n // transforms\n case 'x':\n case 'y': {\n unit = unit || 'px';\n css.transform += \" translate\" + (ucfirst(prop)) + \"(\" + (toFloat(value).toFixed(unit === 'px' ? 0 : 2)) + unit + \")\";\n break;\n }\n case 'rotate':\n unit = unit || 'deg';\n css.transform += \" rotate(\" + (value + unit) + \")\";\n break;\n case 'scale':\n css.transform += \" scale(\" + value + \")\";\n break;\n\n // bg image\n case 'bgy':\n case 'bgx':\n css[(\"background-position-\" + (prop[2]))] = \"calc(\" + pos + \" + \" + value + \"px)\";\n break;\n\n // color\n case 'color':\n case 'backgroundColor':\n case 'borderColor': {\n\n var ref$1 = getStep(steps, percent);\n var start = ref$1[0];\n var end = ref$1[1];\n var p = ref$1[2];\n\n css[prop] = \"rgba(\" + (start.map(function (value, i) {\n value = value + p * (end[i] - value);\n return i === 3 ? toFloat(value) : parseInt(value, 10);\n }).join(',')) + \")\";\n break;\n }\n // CSS Filter\n case 'blur':\n unit = unit || 'px';\n css.filter += \" blur(\" + (value + unit) + \")\";\n break;\n case 'hue':\n unit = unit || 'deg';\n css.filter += \" hue-rotate(\" + (value + unit) + \")\";\n break;\n case 'fopacity':\n unit = unit || '%';\n css.filter += \" opacity(\" + (value + unit) + \")\";\n break;\n case 'grayscale':\n case 'invert':\n case 'saturate':\n case 'sepia':\n unit = unit || '%';\n css.filter += \" \" + prop + \"(\" + (value + unit) + \")\";\n break;\n default:\n css[prop] = value;\n }\n\n return css;\n\n }, {transform: '', filter: ''});\n\n }\n\n }\n\n };\n\n function parseColor(el, color) {\n return css(css(el, 'color', color), 'color')\n .split(/[(),]/g)\n .slice(1, -1)\n .concat(1)\n .slice(0, 4)\n .map(toFloat);\n }\n\n function getStep(steps, percent) {\n var count = steps.length - 1;\n var index = Math.min(Math.floor(count * percent), count - 1);\n var step = steps.slice(index, index + 2);\n\n step.push(percent === 1 ? 1 : percent % (1 / count) * count);\n\n return step;\n }\n\n function getValue(steps, percent, digits) {\n if ( digits === void 0 ) digits = 2;\n\n var ref = getStep(steps, percent);\n var start = ref[0];\n var end = ref[1];\n var p = ref[2];\n return (isNumber(start)\n ? start + Math.abs(start - end) * p * (start < end ? 1 : -1)\n : +end\n ).toFixed(digits);\n }\n\n function getUnit(steps) {\n return steps.reduce(function (unit, step) { return isString(step) && step.replace(/-|\\d/g, '').trim() || unit; }, '');\n }\n\n function covers(el) {\n var ref = el.style;\n var backgroundSize = ref.backgroundSize;\n var covers = css(css(el, 'backgroundSize', ''), 'backgroundSize') === 'cover';\n el.style.backgroundSize = backgroundSize;\n return covers;\n }\n\n var Parallax$1 = {\n\n mixins: [Parallax],\n\n props: {\n target: String,\n viewport: Number,\n easing: Number\n },\n\n data: {\n target: false,\n viewport: 1,\n easing: 1\n },\n\n computed: {\n\n target: function(ref, $el) {\n var target = ref.target;\n\n return getOffsetElement(target && query(target, $el) || $el);\n }\n\n },\n\n update: {\n\n read: function(ref, type) {\n var percent = ref.percent;\n var active = ref.active;\n\n\n if (type !== 'scroll') {\n percent = false;\n }\n\n if (!active) {\n return;\n }\n\n var prev = percent;\n percent = ease$1(scrolledOver(this.target) / (this.viewport || 1), this.easing);\n\n return {\n percent: percent,\n style: prev !== percent ? this.getCss(percent) : false\n };\n },\n\n write: function(ref) {\n var style = ref.style;\n var active = ref.active;\n\n\n if (!active) {\n this.reset();\n return;\n }\n\n style && css(this.$el, style);\n\n },\n\n events: ['scroll', 'resize']\n }\n\n };\n\n function ease$1(percent, easing) {\n return clamp(percent * (1 - (easing - easing * percent)));\n }\n\n // SVG elements do not inherit from HTMLElement\n function getOffsetElement(el) {\n return el\n ? 'offsetTop' in el\n ? el\n : getOffsetElement(el.parentNode)\n : document.body;\n }\n\n var SliderReactive = {\n\n update: {\n\n write: function() {\n\n if (this.stack.length || this.dragging) {\n return;\n }\n\n var index = this.getValidIndex(this.index);\n\n if (!~this.prevIndex || this.index !== index) {\n this.show(index);\n }\n\n },\n\n events: ['resize']\n\n }\n\n };\n\n function Transitioner$1 (prev, next, dir, ref) {\n var center = ref.center;\n var easing = ref.easing;\n var list = ref.list;\n\n\n var deferred = new Deferred();\n\n var from = prev\n ? getLeft(prev, list, center)\n : getLeft(next, list, center) + bounds(next).width * dir;\n var to = next\n ? getLeft(next, list, center)\n : from + bounds(prev).width * dir * (isRtl ? -1 : 1);\n\n return {\n\n dir: dir,\n\n show: function(duration, percent, linear) {\n if ( percent === void 0 ) percent = 0;\n\n\n var timing = linear ? 'linear' : easing;\n duration -= Math.round(duration * clamp(percent, -1, 1));\n\n this.translate(percent);\n\n prev && this.updateTranslates();\n percent = prev ? percent : clamp(percent, 0, 1);\n triggerUpdate$1(this.getItemIn(), 'itemin', {percent: percent, duration: duration, timing: timing, dir: dir});\n prev && triggerUpdate$1(this.getItemIn(true), 'itemout', {percent: 1 - percent, duration: duration, timing: timing, dir: dir});\n\n Transition\n .start(list, {transform: translate(-to * (isRtl ? -1 : 1), 'px')}, duration, timing)\n .then(deferred.resolve, noop);\n\n return deferred.promise;\n\n },\n\n stop: function() {\n return Transition.stop(list);\n },\n\n cancel: function() {\n Transition.cancel(list);\n },\n\n reset: function() {\n css(list, 'transform', '');\n },\n\n forward: function(duration, percent) {\n if ( percent === void 0 ) percent = this.percent();\n\n Transition.cancel(list);\n return this.show(duration, percent, true);\n },\n\n translate: function(percent) {\n\n var distance = this.getDistance() * dir * (isRtl ? -1 : 1);\n\n css(list, 'transform', translate(clamp(\n -to + (distance - distance * percent),\n -getWidth(list),\n bounds(list).width\n ) * (isRtl ? -1 : 1), 'px'));\n\n this.updateTranslates();\n\n if (prev) {\n percent = clamp(percent, -1, 1);\n triggerUpdate$1(this.getItemIn(), 'itemtranslatein', {percent: percent, dir: dir});\n triggerUpdate$1(this.getItemIn(true), 'itemtranslateout', {percent: 1 - percent, dir: dir});\n }\n\n },\n\n percent: function() {\n return Math.abs((css(list, 'transform').split(',')[4] * (isRtl ? -1 : 1) + from) / (to - from));\n },\n\n getDistance: function() {\n return Math.abs(to - from);\n },\n\n getItemIn: function(out) {\n if ( out === void 0 ) out = false;\n\n\n var actives = this.getActives();\n var all = sortBy(slides(list), 'offsetLeft');\n var i = index(all, actives[dir * (out ? -1 : 1) > 0 ? actives.length - 1 : 0]);\n\n return ~i && all[i + (prev && !out ? dir : 0)];\n\n },\n\n getActives: function() {\n\n var left = getLeft(prev || next, list, center);\n\n return sortBy(slides(list).filter(function (slide) {\n var slideLeft = getElLeft(slide, list);\n return slideLeft >= left && slideLeft + bounds(slide).width <= bounds(list).width + left;\n }), 'offsetLeft');\n\n },\n\n updateTranslates: function() {\n\n var actives = this.getActives();\n\n slides(list).forEach(function (slide) {\n var isActive = includes(actives, slide);\n\n triggerUpdate$1(slide, (\"itemtranslate\" + (isActive ? 'in' : 'out')), {\n percent: isActive ? 1 : 0,\n dir: slide.offsetLeft <= next.offsetLeft ? 1 : -1\n });\n });\n }\n\n };\n\n }\n\n function getLeft(el, list, center) {\n\n var left = getElLeft(el, list);\n\n return center\n ? left - centerEl(el, list)\n : Math.min(left, getMax(list));\n\n }\n\n function getMax(list) {\n return Math.max(0, getWidth(list) - bounds(list).width);\n }\n\n function getWidth(list) {\n return slides(list).reduce(function (right, el) { return bounds(el).width + right; }, 0);\n }\n\n function getMaxWidth(list) {\n return slides(list).reduce(function (right, el) { return Math.max(right, bounds(el).width); }, 0);\n }\n\n function centerEl(el, list) {\n return bounds(list).width / 2 - bounds(el).width / 2;\n }\n\n function getElLeft(el, list) {\n return (position(el).left + (isRtl ? bounds(el).width - bounds(list).width : 0)) * (isRtl ? -1 : 1);\n }\n\n function bounds(el) {\n return el.getBoundingClientRect();\n }\n\n function triggerUpdate$1(el, type, data) {\n trigger(el, createEvent(type, false, false, data));\n }\n\n function slides(list) {\n return toNodes(list.children);\n }\n\n var Slider$1 = {\n\n mixins: [Class, Slider, SliderReactive],\n\n props: {\n center: Boolean,\n sets: Boolean\n },\n\n data: {\n center: false,\n sets: false,\n attrItem: 'uk-slider-item',\n selList: '.uk-slider-items',\n selNav: '.uk-slider-nav',\n clsContainer: 'uk-slider-container',\n Transitioner: Transitioner$1\n },\n\n computed: {\n\n avgWidth: function() {\n return getWidth(this.list) / this.length;\n },\n\n finite: function(ref) {\n var finite = ref.finite;\n\n return finite || getWidth(this.list) < bounds(this.list).width + getMaxWidth(this.list) + this.center;\n },\n\n maxIndex: function() {\n\n if (!this.finite || this.center && !this.sets) {\n return this.length - 1;\n }\n\n if (this.center) {\n return last(this.sets);\n }\n\n css(this.slides, 'order', '');\n\n var max = getMax(this.list);\n var i = this.length;\n\n while (i--) {\n if (getElLeft(this.list.children[i], this.list) < max) {\n return Math.min(i + 1, this.length - 1);\n }\n }\n\n return 0;\n },\n\n sets: function(ref) {\n var this$1 = this;\n var sets = ref.sets;\n\n\n var width = bounds(this.list).width / (this.center ? 2 : 1);\n\n var left = 0;\n var leftCenter = width;\n var slideLeft = 0;\n\n sets = sets && this.slides.reduce(function (sets, slide, i) {\n\n var ref = bounds(slide);\n var slideWidth = ref.width;\n var slideRight = slideLeft + slideWidth;\n\n if (slideRight > left) {\n\n if (!this$1.center && i > this$1.maxIndex) {\n i = this$1.maxIndex;\n }\n\n if (!includes(sets, i)) {\n\n var cmp = this$1.slides[i + 1];\n if (this$1.center && cmp && slideWidth < leftCenter - bounds(cmp).width / 2) {\n leftCenter -= slideWidth;\n } else {\n leftCenter = width;\n sets.push(i);\n left = slideLeft + width + (this$1.center ? slideWidth / 2 : 0);\n }\n\n }\n }\n\n slideLeft += slideWidth;\n\n return sets;\n\n }, []);\n\n return !isEmpty(sets) && sets;\n\n },\n\n transitionOptions: function() {\n return {\n center: this.center,\n list: this.list\n };\n }\n\n },\n\n connected: function() {\n toggleClass(this.$el, this.clsContainer, !$((\".\" + (this.clsContainer)), this.$el));\n },\n\n update: {\n\n write: function() {\n var this$1 = this;\n\n\n $$((\"[\" + (this.attrItem) + \"],[data-\" + (this.attrItem) + \"]\"), this.$el).forEach(function (el) {\n var index = data(el, this$1.attrItem);\n this$1.maxIndex && toggleClass(el, 'uk-hidden', isNumeric(index) && (this$1.sets && !includes(this$1.sets, toFloat(index)) || index > this$1.maxIndex));\n });\n\n if (!this.dragging && !this.stack.length) {\n this._getTransitioner().translate(1);\n }\n\n },\n\n events: ['resize']\n\n },\n\n events: {\n\n beforeitemshow: function(e) {\n\n if (!this.dragging && this.sets && this.stack.length < 2 && !includes(this.sets, this.index)) {\n this.index = this.getValidIndex();\n }\n\n var diff = Math.abs(\n this.index\n - this.prevIndex\n + (this.dir > 0 && this.index < this.prevIndex || this.dir < 0 && this.index > this.prevIndex ? (this.maxIndex + 1) * this.dir : 0)\n );\n\n if (!this.dragging && diff > 1) {\n\n for (var i = 0; i < diff; i++) {\n this.stack.splice(1, 0, this.dir > 0 ? 'next' : 'previous');\n }\n\n e.preventDefault();\n return;\n }\n\n this.duration = speedUp(this.avgWidth / this.velocity)\n * (bounds(\n this.dir < 0 || !this.slides[this.prevIndex]\n ? this.slides[this.index]\n : this.slides[this.prevIndex]\n ).width / this.avgWidth);\n\n this.reorder();\n\n },\n\n itemshow: function() {\n !isUndefined(this.prevIndex) && addClass(this._getTransitioner().getItemIn(), this.clsActive);\n },\n\n itemshown: function() {\n var this$1 = this;\n\n var actives = this._getTransitioner(this.index).getActives();\n this.slides.forEach(function (slide) { return toggleClass(slide, this$1.clsActive, includes(actives, slide)); });\n (!this.sets || includes(this.sets, toFloat(this.index))) && this.slides.forEach(function (slide) { return toggleClass(slide, this$1.clsActivated, includes(actives, slide)); });\n }\n\n },\n\n methods: {\n\n reorder: function() {\n var this$1 = this;\n\n\n css(this.slides, 'order', '');\n\n if (this.finite) {\n return;\n }\n\n var index = this.dir > 0 && this.slides[this.prevIndex] ? this.prevIndex : this.index;\n\n this.slides.forEach(function (slide, i) { return css(slide, 'order', this$1.dir > 0 && i < index\n ? 1\n : this$1.dir < 0 && i >= this$1.index\n ? -1\n : ''\n ); }\n );\n\n if (!this.center) {\n return;\n }\n\n var next = this.slides[index];\n var width = bounds(this.list).width / 2 - bounds(next).width / 2;\n var j = 0;\n\n while (width > 0) {\n var slideIndex = this.getIndex(--j + index, index);\n var slide = this.slides[slideIndex];\n\n css(slide, 'order', slideIndex > index ? -2 : -1);\n width -= bounds(slide).width;\n }\n\n },\n\n getValidIndex: function(index, prevIndex) {\n if ( index === void 0 ) index = this.index;\n if ( prevIndex === void 0 ) prevIndex = this.prevIndex;\n\n\n index = this.getIndex(index, prevIndex);\n\n if (!this.sets) {\n return index;\n }\n\n var prev;\n\n do {\n\n if (includes(this.sets, index)) {\n return index;\n }\n\n prev = index;\n index = this.getIndex(index + this.dir, prevIndex);\n\n } while (index !== prev);\n\n return index;\n }\n\n }\n\n };\n\n var SlideshowParallax = {\n\n mixins: [Parallax],\n\n data: {\n selItem: '!li'\n },\n\n computed: {\n\n item: function(ref, $el) {\n var selItem = ref.selItem;\n\n return query(selItem, $el);\n }\n\n },\n\n events: [\n\n {\n\n name: 'itemshown',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function() {\n css(this.$el, this.getCss(.5));\n }\n\n },\n\n {\n name: 'itemin itemout',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function(ref) {\n var type = ref.type;\n var ref_detail = ref.detail;\n var percent = ref_detail.percent;\n var duration = ref_detail.duration;\n var timing = ref_detail.timing;\n var dir = ref_detail.dir;\n\n\n Transition.cancel(this.$el);\n css(this.$el, this.getCss(getCurrent(type, dir, percent)));\n\n Transition.start(this.$el, this.getCss(isIn(type)\n ? .5\n : dir > 0\n ? 1\n : 0\n ), duration, timing).catch(noop);\n\n }\n },\n\n {\n name: 'transitioncanceled transitionend',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function() {\n Transition.cancel(this.$el);\n }\n\n },\n\n {\n name: 'itemtranslatein itemtranslateout',\n\n self: true,\n\n el: function() {\n return this.item;\n },\n\n handler: function(ref) {\n var type = ref.type;\n var ref_detail = ref.detail;\n var percent = ref_detail.percent;\n var dir = ref_detail.dir;\n\n Transition.cancel(this.$el);\n css(this.$el, this.getCss(getCurrent(type, dir, percent)));\n }\n }\n\n ]\n\n };\n\n function isIn(type) {\n return endsWith(type, 'in');\n }\n\n function getCurrent(type, dir, percent) {\n\n percent /= 2;\n\n return !isIn(type)\n ? dir < 0\n ? percent\n : 1 - percent\n : dir < 0\n ? 1 - percent\n : percent;\n }\n\n var Animations$2 = assign({}, Animations, {\n\n fade: {\n\n show: function() {\n return [\n {opacity: 0, zIndex: 0},\n {zIndex: -1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, zIndex: 0},\n {zIndex: -1}\n ];\n }\n\n },\n\n scale: {\n\n show: function() {\n return [\n {opacity: 0, transform: scale3d(1 + .5), zIndex: 0},\n {zIndex: -1}\n ];\n },\n\n percent: function(current) {\n return 1 - css(current, 'opacity');\n },\n\n translate: function(percent) {\n return [\n {opacity: 1 - percent, transform: scale3d(1 + .5 * percent), zIndex: 0},\n {zIndex: -1}\n ];\n }\n\n },\n\n pull: {\n\n show: function(dir) {\n return dir < 0\n ? [\n {transform: translate(30), zIndex: -1},\n {transform: translate(), zIndex: 0}\n ]\n : [\n {transform: translate(-100), zIndex: 0},\n {transform: translate(), zIndex: -1}\n ];\n },\n\n percent: function(current, next, dir) {\n return dir < 0\n ? 1 - translated(next)\n : translated(current);\n },\n\n translate: function(percent, dir) {\n return dir < 0\n ? [\n {transform: translate(30 * percent), zIndex: -1},\n {transform: translate(-100 * (1 - percent)), zIndex: 0}\n ]\n : [\n {transform: translate(-percent * 100), zIndex: 0},\n {transform: translate(30 * (1 - percent)), zIndex: -1}\n ];\n }\n\n },\n\n push: {\n\n show: function(dir) {\n return dir < 0\n ? [\n {transform: translate(100), zIndex: 0},\n {transform: translate(), zIndex: -1}\n ]\n : [\n {transform: translate(-30), zIndex: -1},\n {transform: translate(), zIndex: 0}\n ];\n },\n\n percent: function(current, next, dir) {\n return dir > 0\n ? 1 - translated(next)\n : translated(current);\n },\n\n translate: function(percent, dir) {\n return dir < 0\n ? [\n {transform: translate(percent * 100), zIndex: 0},\n {transform: translate(-30 * (1 - percent)), zIndex: -1}\n ]\n : [\n {transform: translate(-30 * percent), zIndex: -1},\n {transform: translate(100 * (1 - percent)), zIndex: 0}\n ];\n }\n\n }\n\n });\n\n var Slideshow$1 = {\n\n mixins: [Class, Slideshow, SliderReactive],\n\n props: {\n ratio: String,\n minHeight: Number,\n maxHeight: Number\n },\n\n data: {\n ratio: '16:9',\n minHeight: false,\n maxHeight: false,\n selList: '.uk-slideshow-items',\n attrItem: 'uk-slideshow-item',\n selNav: '.uk-slideshow-nav',\n Animations: Animations$2\n },\n\n update: {\n\n read: function() {\n\n var ref = this.ratio.split(':').map(Number);\n var width = ref[0];\n var height = ref[1];\n\n height = height * this.list.offsetWidth / width || 0;\n\n if (this.minHeight) {\n height = Math.max(this.minHeight, height);\n }\n\n if (this.maxHeight) {\n height = Math.min(this.maxHeight, height);\n }\n\n return {height: height - boxModelAdjust(this.list, 'content-box')};\n },\n\n write: function(ref) {\n var height = ref.height;\n\n height > 0 && css(this.list, 'minHeight', height);\n },\n\n events: ['resize']\n\n }\n\n };\n\n var Sortable = {\n\n mixins: [Class, Animate],\n\n props: {\n group: String,\n threshold: Number,\n clsItem: String,\n clsPlaceholder: String,\n clsDrag: String,\n clsDragState: String,\n clsBase: String,\n clsNoDrag: String,\n clsEmpty: String,\n clsCustom: String,\n handle: String\n },\n\n data: {\n group: false,\n threshold: 5,\n clsItem: 'uk-sortable-item',\n clsPlaceholder: 'uk-sortable-placeholder',\n clsDrag: 'uk-sortable-drag',\n clsDragState: 'uk-drag',\n clsBase: 'uk-sortable',\n clsNoDrag: 'uk-sortable-nodrag',\n clsEmpty: 'uk-sortable-empty',\n clsCustom: '',\n handle: false\n },\n\n created: function() {\n var this$1 = this;\n\n ['init', 'start', 'move', 'end'].forEach(function (key) {\n var fn = this$1[key];\n this$1[key] = function (e) {\n this$1.scrollY = window.pageYOffset;\n var ref = getEventPos(e, 'page');\n var x = ref.x;\n var y = ref.y;\n this$1.pos = {x: x, y: y};\n\n fn(e);\n };\n });\n },\n\n events: {\n\n name: pointerDown,\n passive: false,\n handler: 'init'\n\n },\n\n update: {\n\n write: function() {\n\n if (this.clsEmpty) {\n toggleClass(this.$el, this.clsEmpty, isEmpty(this.$el.children));\n }\n\n css(this.handle ? $$(this.handle, this.$el) : this.$el.children, {touchAction: 'none', userSelect: 'none'});\n\n if (this.drag) {\n\n // clamp to viewport\n var ref = offset(window);\n var right = ref.right;\n var bottom = ref.bottom;\n offset(this.drag, {\n top: clamp(this.pos.y + this.origin.top, 0, bottom - this.drag.offsetHeight),\n left: clamp(this.pos.x + this.origin.left, 0, right - this.drag.offsetWidth)\n });\n\n trackScroll(this.pos);\n\n }\n\n }\n\n },\n\n methods: {\n\n init: function(e) {\n\n var target = e.target;\n var button = e.button;\n var defaultPrevented = e.defaultPrevented;\n var ref = toNodes(this.$el.children).filter(function (el) { return within(target, el); });\n var placeholder = ref[0];\n\n if (!placeholder\n || defaultPrevented\n || button > 0\n || isInput(target)\n || within(target, (\".\" + (this.clsNoDrag)))\n || this.handle && !within(target, this.handle)\n ) {\n return;\n }\n\n e.preventDefault();\n\n this.touched = [this];\n this.placeholder = placeholder;\n this.origin = assign({target: target, index: index(placeholder)}, this.pos);\n\n on(document, pointerMove, this.move);\n on(document, pointerUp, this.end);\n on(window, 'scroll', this.scroll);\n\n if (!this.threshold) {\n this.start(e);\n }\n\n },\n\n start: function(e) {\n\n this.drag = append(this.$container, this.placeholder.outerHTML.replace(/^<li/i, '<div').replace(/li>$/i, 'div>'));\n\n css(this.drag, assign({\n boxSizing: 'border-box',\n width: this.placeholder.offsetWidth,\n height: this.placeholder.offsetHeight,\n overflow: 'hidden'\n }, css(this.placeholder, ['paddingLeft', 'paddingRight', 'paddingTop', 'paddingBottom'])));\n attr(this.drag, 'uk-no-boot', '');\n addClass(this.drag, this.clsDrag, this.clsCustom);\n\n height(this.drag.firstElementChild, height(this.placeholder.firstElementChild));\n\n var ref = offset(this.placeholder);\n var left = ref.left;\n var top = ref.top;\n assign(this.origin, {left: left - this.pos.x, top: top - this.pos.y});\n\n addClass(this.placeholder, this.clsPlaceholder);\n addClass(this.$el.children, this.clsItem);\n addClass(document.documentElement, this.clsDragState);\n\n trigger(this.$el, 'start', [this, this.placeholder]);\n\n this.move(e);\n },\n\n move: function(e) {\n\n if (!this.drag) {\n\n if (Math.abs(this.pos.x - this.origin.x) > this.threshold || Math.abs(this.pos.y - this.origin.y) > this.threshold) {\n this.start(e);\n }\n\n return;\n }\n\n this.$emit();\n\n var target = e.type === 'mousemove' ? e.target : document.elementFromPoint(this.pos.x - window.pageXOffset, this.pos.y - window.pageYOffset);\n\n var sortable = this.getSortable(target);\n var previous = this.getSortable(this.placeholder);\n var move = sortable !== previous;\n\n if (!sortable || within(target, this.placeholder) || move && (!sortable.group || sortable.group !== previous.group)) {\n return;\n }\n\n target = sortable.$el === target.parentNode && target || toNodes(sortable.$el.children).filter(function (element) { return within(target, element); })[0];\n\n if (move) {\n previous.remove(this.placeholder);\n } else if (!target) {\n return;\n }\n\n sortable.insert(this.placeholder, target);\n\n if (!includes(this.touched, sortable)) {\n this.touched.push(sortable);\n }\n\n },\n\n end: function(e) {\n\n off(document, pointerMove, this.move);\n off(document, pointerUp, this.end);\n off(window, 'scroll', this.scroll);\n\n if (!this.drag) {\n if (e.type === 'touchend') {\n e.target.click();\n }\n\n return;\n }\n\n untrackScroll();\n\n var sortable = this.getSortable(this.placeholder);\n\n if (this === sortable) {\n if (this.origin.index !== index(this.placeholder)) {\n trigger(this.$el, 'moved', [this, this.placeholder]);\n }\n } else {\n trigger(sortable.$el, 'added', [sortable, this.placeholder]);\n trigger(this.$el, 'removed', [this, this.placeholder]);\n }\n\n trigger(this.$el, 'stop', [this, this.placeholder]);\n\n remove(this.drag);\n this.drag = null;\n\n var classes = this.touched.map(function (sortable) { return ((sortable.clsPlaceholder) + \" \" + (sortable.clsItem)); }).join(' ');\n this.touched.forEach(function (sortable) { return removeClass(sortable.$el.children, classes); });\n\n removeClass(document.documentElement, this.clsDragState);\n\n },\n\n scroll: function() {\n var scroll = window.pageYOffset;\n if (scroll !== this.scrollY) {\n this.pos.y += scroll - this.scrollY;\n this.scrollY = scroll;\n this.$emit();\n }\n },\n\n insert: function(element, target) {\n var this$1 = this;\n\n\n addClass(this.$el.children, this.clsItem);\n\n var insert = function () {\n\n if (target) {\n\n if (!within(element, this$1.$el) || isPredecessor(element, target)) {\n before(target, element);\n } else {\n after(target, element);\n }\n\n } else {\n append(this$1.$el, element);\n }\n\n };\n\n if (this.animation) {\n this.animate(insert);\n } else {\n insert();\n }\n\n },\n\n remove: function(element) {\n\n if (!within(element, this.$el)) {\n return;\n }\n\n css(this.handle ? $$(this.handle, element) : element, {touchAction: '', userSelect: ''});\n\n if (this.animation) {\n this.animate(function () { return remove(element); });\n } else {\n remove(element);\n }\n\n },\n\n getSortable: function(element) {\n return element && (this.$getComponent(element, 'sortable') || this.getSortable(element.parentNode));\n }\n\n }\n\n };\n\n function isPredecessor(element, target) {\n return element.parentNode === target.parentNode && index(element) > index(target);\n }\n\n var trackTimer;\n function trackScroll(ref) {\n var x = ref.x;\n var y = ref.y;\n\n\n clearTimeout(trackTimer);\n\n scrollParents(document.elementFromPoint(x - window.pageXOffset, y - window.pageYOffset)).some(function (scrollEl) {\n\n var scroll = scrollEl.scrollTop;\n var scrollHeight = scrollEl.scrollHeight;\n\n if (getScrollingElement() === scrollEl) {\n scrollEl = window;\n scrollHeight -= window.innerHeight;\n }\n\n var ref = offset(scrollEl);\n var top = ref.top;\n var bottom = ref.bottom;\n\n if (top < y && top + 30 > y) {\n scroll -= 5;\n } else if (bottom > y && bottom - 20 < y) {\n scroll += 5;\n }\n\n if (scroll > 0 && scroll < scrollHeight) {\n return trackTimer = setTimeout(function () {\n scrollTop(scrollEl, scroll);\n trackScroll({x: x, y: y});\n }, 10);\n }\n\n });\n\n }\n\n function untrackScroll() {\n clearTimeout(trackTimer);\n }\n\n var overflowRe = /auto|scroll/;\n\n function scrollParents(element) {\n var scrollEl = getScrollingElement();\n return parents$1(element, function (parent) { return parent === scrollEl || overflowRe.test(css(parent, 'overflow')); });\n }\n\n function parents$1(element, fn) {\n var parents = [];\n do {\n if (fn(element)) {\n parents.unshift(element);\n }\n } while (element && (element = element.parentElement));\n return parents;\n }\n\n function getScrollingElement() {\n return document.scrollingElement || document.documentElement;\n }\n\n var obj$1;\n\n var actives = [];\n\n var Tooltip = {\n\n mixins: [Container, Togglable, Position],\n\n args: 'title',\n\n props: {\n delay: Number,\n title: String\n },\n\n data: {\n pos: 'top',\n title: '',\n delay: 0,\n animation: ['uk-animation-scale-up'],\n duration: 100,\n cls: 'uk-active',\n clsPos: 'uk-tooltip'\n },\n\n beforeConnect: function() {\n this._hasTitle = hasAttr(this.$el, 'title');\n attr(this.$el, {title: '', 'aria-expanded': false});\n },\n\n disconnected: function() {\n this.hide();\n attr(this.$el, {title: this._hasTitle ? this.title : null, 'aria-expanded': null});\n },\n\n methods: {\n\n show: function() {\n var this$1 = this;\n\n\n if (this.isActive() || !this.title) {\n return;\n }\n\n actives.forEach(function (active) { return active.hide(); });\n actives.push(this);\n\n this._unbind = on(document, pointerUp, function (e) { return !within(e.target, this$1.$el) && this$1.hide(); });\n\n clearTimeout(this.showTimer);\n this.showTimer = setTimeout(function () {\n this$1._show();\n this$1.hideTimer = setInterval(function () {\n\n if (!isVisible(this$1.$el)) {\n this$1.hide();\n }\n\n }, 150);\n }, this.delay);\n },\n\n hide: function() {\n\n if (!this.isActive() || matches(this.$el, 'input:focus')) {\n return;\n }\n\n actives.splice(actives.indexOf(this), 1);\n\n clearTimeout(this.showTimer);\n clearInterval(this.hideTimer);\n attr(this.$el, 'aria-expanded', false);\n this.toggleElement(this.tooltip, false);\n this.tooltip && remove(this.tooltip);\n this.tooltip = false;\n this._unbind();\n\n },\n\n _show: function() {\n\n this.tooltip = append(this.container,\n (\"<div class=\\\"\" + (this.clsPos) + \"\\\" aria-expanded=\\\"true\\\" aria-hidden> <div class=\\\"\" + (this.clsPos) + \"-inner\\\">\" + (this.title) + \"</div> </div>\")\n );\n\n this.positionAt(this.tooltip, this.$el);\n\n this.origin = this.getAxis() === 'y'\n ? ((flipPosition(this.dir)) + \"-\" + (this.align))\n : ((this.align) + \"-\" + (flipPosition(this.dir)));\n\n this.toggleElement(this.tooltip, true);\n\n },\n\n isActive: function() {\n return includes(actives, this);\n }\n\n },\n\n events: ( obj$1 = {\n\n focus: 'show',\n blur: 'hide'\n\n }, obj$1[(pointerEnter + \" \" + pointerLeave)] = function (e) {\n if (isTouch(e)) {\n return;\n }\n e.type === pointerEnter\n ? this.show()\n : this.hide();\n }, obj$1[pointerDown] = function (e) {\n if (!isTouch(e)) {\n return;\n }\n this.isActive()\n ? this.hide()\n : this.show();\n }, obj$1 )\n\n };\n\n var Upload = {\n\n props: {\n allow: String,\n clsDragover: String,\n concurrent: Number,\n maxSize: Number,\n method: String,\n mime: String,\n msgInvalidMime: String,\n msgInvalidName: String,\n msgInvalidSize: String,\n multiple: Boolean,\n name: String,\n params: Object,\n type: String,\n url: String\n },\n\n data: {\n allow: false,\n clsDragover: 'uk-dragover',\n concurrent: 1,\n maxSize: 0,\n method: 'POST',\n mime: false,\n msgInvalidMime: 'Invalid File Type: %s',\n msgInvalidName: 'Invalid File Name: %s',\n msgInvalidSize: 'Invalid File Size: %s Kilobytes Max',\n multiple: false,\n name: 'files[]',\n params: {},\n type: '',\n url: '',\n abort: noop,\n beforeAll: noop,\n beforeSend: noop,\n complete: noop,\n completeAll: noop,\n error: noop,\n fail: noop,\n load: noop,\n loadEnd: noop,\n loadStart: noop,\n progress: noop\n },\n\n events: {\n\n change: function(e) {\n\n if (!matches(e.target, 'input[type=\"file\"]')) {\n return;\n }\n\n e.preventDefault();\n\n if (e.target.files) {\n this.upload(e.target.files);\n }\n\n e.target.value = '';\n },\n\n drop: function(e) {\n stop(e);\n\n var transfer = e.dataTransfer;\n\n if (!transfer || !transfer.files) {\n return;\n }\n\n removeClass(this.$el, this.clsDragover);\n\n this.upload(transfer.files);\n },\n\n dragenter: function(e) {\n stop(e);\n },\n\n dragover: function(e) {\n stop(e);\n addClass(this.$el, this.clsDragover);\n },\n\n dragleave: function(e) {\n stop(e);\n removeClass(this.$el, this.clsDragover);\n }\n\n },\n\n methods: {\n\n upload: function(files) {\n var this$1 = this;\n\n\n if (!files.length) {\n return;\n }\n\n trigger(this.$el, 'upload', [files]);\n\n for (var i = 0; i < files.length; i++) {\n\n if (this.maxSize && this.maxSize * 1000 < files[i].size) {\n this.fail(this.msgInvalidSize.replace('%s', this.maxSize));\n return;\n }\n\n if (this.allow && !match$1(this.allow, files[i].name)) {\n this.fail(this.msgInvalidName.replace('%s', this.allow));\n return;\n }\n\n if (this.mime && !match$1(this.mime, files[i].type)) {\n this.fail(this.msgInvalidMime.replace('%s', this.mime));\n return;\n }\n\n }\n\n if (!this.multiple) {\n files = [files[0]];\n }\n\n this.beforeAll(this, files);\n\n var chunks = chunk(files, this.concurrent);\n var upload = function (files) {\n\n var data = new FormData();\n\n files.forEach(function (file) { return data.append(this$1.name, file); });\n\n for (var key in this$1.params) {\n data.append(key, this$1.params[key]);\n }\n\n ajax(this$1.url, {\n data: data,\n method: this$1.method,\n responseType: this$1.type,\n beforeSend: function (env) {\n\n var xhr = env.xhr;\n xhr.upload && on(xhr.upload, 'progress', this$1.progress);\n ['loadStart', 'load', 'loadEnd', 'abort'].forEach(function (type) { return on(xhr, type.toLowerCase(), this$1[type]); }\n );\n\n this$1.beforeSend(env);\n\n }\n }).then(\n function (xhr) {\n\n this$1.complete(xhr);\n\n if (chunks.length) {\n upload(chunks.shift());\n } else {\n this$1.completeAll(xhr);\n }\n\n },\n function (e) { return this$1.error(e); }\n );\n\n };\n\n upload(chunks.shift());\n\n }\n\n }\n\n };\n\n function match$1(pattern, path) {\n return path.match(new RegExp((\"^\" + (pattern.replace(/\\//g, '\\\\/').replace(/\\*\\*/g, '(\\\\/[^\\\\/]+)*').replace(/\\*/g, '[^\\\\/]+').replace(/((?!\\\\))\\?/g, '$1.')) + \"$\"), 'i'));\n }\n\n function chunk(files, size) {\n var chunks = [];\n for (var i = 0; i < files.length; i += size) {\n var chunk = [];\n for (var j = 0; j < size; j++) {\n chunk.push(files[i + j]);\n }\n chunks.push(chunk);\n }\n return chunks;\n }\n\n function stop(e) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n UIkit.component('countdown', Countdown);\n UIkit.component('filter', Filter);\n UIkit.component('lightbox', Lightbox);\n UIkit.component('lightboxPanel', lightboxPanel);\n UIkit.component('notification', Notification);\n UIkit.component('parallax', Parallax$1);\n UIkit.component('slider', Slider$1);\n UIkit.component('sliderParallax', SlideshowParallax);\n UIkit.component('slideshow', Slideshow$1);\n UIkit.component('slideshowParallax', SlideshowParallax);\n UIkit.component('sortable', Sortable);\n UIkit.component('tooltip', Tooltip);\n UIkit.component('upload', Upload);\n\n {\n boot(UIkit);\n }\n\n return UIkit;\n\n}));\n","<script>\nimport {\n last\n} from \"lodash/fp\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport ComponentSelector from \"./ComponentSelector.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport UIkit from \"uikit\";\nimport {\n getComponentInfo\n} from \"./pagesParsing/createProps\";\nimport { store } from \"../builderStore\";\n\nconst emptyProps = () => ({_component:\"\"})\n\nexport let props = emptyProps();\nexport let onValueChanged = () => {};\nexport let onComponentChosen = () => {};\nexport let onEdit = () => {};\nexport let disabled = false;\n\nconst CHOOSE_COMPONENT = \"choose_component\";\nconst CLEAR_COMPONENT = \"clear_component\";\n\nlet allComponents;\nlet modalElement;\nlet modalAction;\n\nstore.subscribe(s => {\n allComponents = s.allComponents;\n});\n\n$: componentSelected = props._component.length > 0;\n$: shortName = last(props._component.split(\"/\"));\n\nconst chooseComponent = () => {\n modalAction = CHOOSE_COMPONENT;\n showDialog();\n}\n\nconst clearComponent = () => {\n modalAction = CLEAR_COMPONENT;\n showDialog();\n}\n\nconst componentChosen = (component) => {\n const componentInfo = getComponentInfo(allComponents, component.name);\n props = componentInfo.fullProps;\n onValueChanged(props);\n onComponentChosen();\n hideDialog();\n}\n\nconst hideDialog = () => {\n UIkit.modal(modalElement).hide();\n}\n\nconst showDialog = () => {\n UIkit.modal(modalElement).show();\n}\n\nconst confirmClearComponent = () => {\n props = emptyProps();\n onValueChanged(emptyProps());\n hideDialog();\n}\n\n</script>\n\n\n<div class=\"root uk-form-controls\">\n <div class:selectedname={componentSelected}>\n {componentSelected ? shortName : \"(none)\"}\n </div>\n <div>\n {#if !disabled && componentSelected}\n <IconButton icon=\"edit\" \n on:click={() => onEdit()}/>\n\n <IconButton icon=\"trash\" \n on:click={() => clearComponent()} />\n {:else if !disabled && !componentSelected}\n <IconButton icon=\"plus\" \n on:click={() => chooseComponent()} />\n {/if}\n \n </div>\n</div>\n\n<div bind:this={modalElement} uk-modal>\n <div class=\"uk-modal-dialog\" uk-overflow-auto>\n\n {#if modalAction === CHOOSE_COMPONENT}\n <div class=\"uk-modal-body\">\n <ComponentSelector onComponentChosen={componentChosen}\n allowGenerators={false} />\n </div>\n {:else if modalAction === CLEAR_COMPONENT}\n <div class=\"uk-modal-body\">\n Clear this component ?\n </div>\n <div class=\"uk-modal-footer\">\n <ButtonGroup>\n <Button grouped \n on:click={hideDialog} \n color=\"secondary\" >Cancel</Button>\n <Button grouped \n on:click={confirmClearComponent}>OK</Button>\n </ButtonGroup>\n </div>\n {/if}\n\n </div>\n\n</div>\n\n<style>\n\n.root {\n display: grid;\n grid-template-columns: [name] 1fr [actions] auto;\n}\n\n.root > div:nth-child(1) {\n grid-column-start: name;\n color: var(--secondary50);\n}\n\n.root > div:nth-child(2) {\n grid-column-start: actions;\n}\n\n.selectedname {\n font-weight: bold;\n color: var(--secondary);\n}\n\n</style>","<script>\nimport IconButton from \"../common/IconButton.svelte\";\nimport {\n createArrayElementProps\n} from \"./pagesParsing/createProps\";\nimport PropControl from \"./PropControl.svelte\";\nimport {\n some,\n cloneDeep,\n} from \"lodash/fp\";\nimport { validateProps } from \"./pagesParsing/validateProps\";\n\nexport let parentProps;\nexport let propDef;\nexport let onValueChanged;\nexport let onValidate = () => {};\nexport let onEditComponentProp = () => {};\n\nlet value = [];\nlet elementDefinitionArray;\nlet elementErrors = {};\n\n$: {\n const elArray = [];\n for(let elProp in propDef.elementDefinition) {\n if(elProp === \"_component\") continue;\n elArray.push({\n ...propDef.elementDefinition[elProp],\n ____name: elProp\n });\n }\n elementDefinitionArray = elArray;\n value = parentProps[propDef.____name];\n}\n\nconst addElement = () => {\n const newElement = createArrayElementProps(\n propDef.____name, \n propDef.elementDefinition).props;\n\n value = [...value, newElement];\n onValueChanged(value);\n}\n\nconst validate = (index, elementProps) => {\n elementErrors[index] = validateProps(\n propDef.elementDefinition, elementProps, [], true);\n onValidate(elementErrors[index]);\n return elementErrors[index].length === 0;\n}\n\nconst setProp = (index) => (name, propValue) => {\n const newValue = cloneDeep(value);\n const newProps = cloneDeep(newValue[index]);\n newProps[name] = propValue;\n newValue[index] = newProps;\n value = newValue;\n\n if(validate(index, newProps))\n onValueChanged(newValue);\n \n}\n\nlet fieldHasError = index => propName => \n some(e => e.propName === propName)(elementErrors[index]);\n\nconst onEditComponent = (index, propName) => () => {\n onEditComponentProp(index, propName);\n}\n\n</script>\n\n<div class=\"root\">\n\n\n <div class=\"item-container\">\n {#each value as item, index}\n \n <div class=\"item-inner-container\">\n {#each elementDefinitionArray as propDef}\n <PropControl setProp={setProp(index)}\n fieldHasError={fieldHasError(index)}\n {propDef}\n props={item}\n {index}\n onEditComponent={onEditComponent(index, propDef.____name)}\n disabled={false} />\n {/each}\n </div>\n \n {/each}\n\n <div class=\"addelement-container\"\n on:click={addElement}>\n <IconButton icon=\"plus\" \n size=\"12\"/>\n </div>\n </div>\n</div>\n\n\n<style>\n\n.addelement-container {\n cursor: pointer;\n padding: 3px 0px;\n text-align: center;\n}\n\n.addelement-container:hover {\n background-color: var(--primary25);\n}\n\n\n.item-container {\n padding-left: 3px;\n background: var(--secondary10);\n}\n\n</style>","<script>\nimport {\n isString\n} from \"lodash/fp\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport {\n isBinding, getBinding, setBinding\n} from \"../common/binding\";\n\nexport let value=\"\";\nexport let onChanged= () => {};\nexport let type=\"\";\nexport let options=[];\n\nlet isBound=false;\nlet bindingPath=\"\";\nlet bindingFallbackValue=\"\";\nlet bindingSource=\"store\";\nlet isExpanded = false;\nlet forceIsBound = false;\nlet canOnlyBind = false;\n\n$: {\n canOnlyBind = type === \"state\";\n if(!forceIsBound && canOnlyBind)\n forceIsBound = true;\n\n isBound= forceIsBound || isBinding(value);\n\n if(isBound) {\n const binding = getBinding(value);\n bindingPath= binding.path;\n bindingFallbackValue= binding.fallback;\n bindingSource = binding.source || \"store\";\n } else {\n bindingPath=\"\";\n bindingFallbackValue=\"\";\n bindingSource=\"store\";\n }\n}\n\nconst clearBinding = () => {\n forceIsBound = false;\n onChanged(\"\");\n}\n\nconst bind = (path, fallback, source) => {\n if(!path) {\n clearBinding(\"\");\n return;\n }\n const binding = setBinding({path, fallback, source});\n onChanged(binding);\n}\n\nconst setBindingPath = ev => {\n forceIsBound = canOnlyBind;\n bind(ev.target.value, bindingFallbackValue, bindingSource)\n}\n\nconst setBindingFallback = ev => {\n bind(bindingPath, ev.target.value, bindingSource);\n}\n\nconst setBindingSource = ev => {\n bind(bindingPath, bindingFallbackValue, ev.target.value);\n}\n\nconst makeBinding = () => {\n forceIsBound=true;\n isExpanded=true;\n}\n\n</script>\n\n{#if isBound}\n<div>\n <div class=\"bound-header\">\n <div>{isExpanded ? \"\" : bindingPath}</div>\n <IconButton icon={isExpanded ? \"chevron-up\" : \"chevron-down\"} \n size=\"12\"\n on:click={() => isExpanded=!isExpanded}/>\n {#if !canOnlyBind}\n <IconButton icon=\"trash\" \n size=\"12\"\n on:click={clearBinding}/>\n {/if}\n </div>\n {#if isExpanded}\n <div>\n <div class=\"binding-prop-label\">Binding Path</div>\n <input class=\"uk-input uk-form-small\"\n value={bindingPath}\n on:change={setBindingPath} >\n <div class=\"binding-prop-label\">Fallback Value</div>\n <input class=\"uk-input uk-form-small\"\n value={bindingFallbackValue}\n on:change={setBindingFallback} >\n <div class=\"binding-prop-label\">Binding Source</div>\n <select class=\"uk-select uk-form-small\" \n value={bindingSource} \n on:change={setBindingSource}>\n\n <option>store</option>\n <option>context</option>\n\n </select>\n </div>\n {/if}\n\n</div>\n{:else}\n<div class=\"unbound-container\">\n\n {#if type === \"bool\"}\n\n <div>\n <IconButton icon={value == true ? \"check-square\" : \"square\"}\n size=\"19\"\n on:click={() => onChanged(!value)}/>\n </div>\n\n {:else if type === \"options\"}\n\n <select class=\"uk-select uk-form-small\" \n value={value} \n on:change={ev => onChanged(ev.target.value)}>\n {#each options as option}\n <option value={option}>{option}</option>\n {/each}\n </select>\n\n {:else}\n\n <input class=\"uk-input uk-form-small\"\n on:change={ev => onChanged(ev.target.value)}\n bind:value={value}\n style=\"flex: 1 0 auto;\" > \n\n\n {/if}\n <IconButton icon=\"link\" \n size=\"12\"\n on:click={makeBinding} />\n</div>\n{/if}\n\n\n<style>\n\n.unbound-container {\n display:flex;\n margin: .5rem 0rem .5rem 0rem;\n}\n\n.unbound-container > *:nth-child(1) {\n width:auto;\n flex: 1 0 auto;\n font-size: 0.8rem;\n color: var(--secondary100);\n border-radius: .2rem;\n}\n\n.bound-header {\n display: flex;\n}\n\n.bound-header > div:nth-child(1) {\n flex: 1 0 auto;\n width: 30px;\n color: var(--secondary50);\n padding-left: 5px;\n}\n\n.binding-prop-label {\n color: var(--secondary50);\n}\n\n\n</style>","<script>\r\nimport IconButton from \"../common/IconButton.svelte\";\r\nimport StateBindingControl from \"./StateBindingControl.svelte\";\r\nimport {\r\n find, map, keys, reduce, keyBy\r\n} from \"lodash/fp\";\r\nimport { pipe, userWithFullAccess } from \"../common/core\";\r\nimport { EVENT_TYPE_MEMBER_NAME, allHandlers } from \"../common/eventHandlers\";\r\nimport { store } from \"../builderStore\";\r\n\r\nexport let event;\r\nexport let onChanged;\r\nexport let onRemoved;\r\n\r\nlet events;\r\nlet eventType;\r\nlet parameters = [];\r\n\r\nstore.subscribe(s => {\r\n events = allHandlers(\r\n {hierarchy: s.hierarchy},\r\n userWithFullAccess({\r\n hierarchy: s.hierarchy,\r\n actions: keyBy(\"name\")(s.actions)\r\n })\r\n );\r\n});\r\n\r\n$: {\r\n if(event) {\r\n eventType = event[EVENT_TYPE_MEMBER_NAME];\r\n parameters = pipe(event.parameters, [\r\n keys,\r\n map(k => ({name:k, value:event.parameters[k]}))\r\n ]);\r\n } else {\r\n eventType = \"\";\r\n parameters = [];\r\n }\r\n}\r\n\r\nconst eventChanged = (type, parameters) => {\r\n const paramsAsObject = reduce(\r\n (obj, p) => {\r\n obj[p.name] = p.value;\r\n return obj;\r\n }\r\n , {}\r\n )(parameters)\r\n\r\n const ev = {};\r\n ev[EVENT_TYPE_MEMBER_NAME]=type;\r\n ev.parameters = paramsAsObject;\r\n\r\n onChanged(ev);\r\n}\r\n\r\nconst eventTypeChanged = (ev) => {\r\n const eType = find(e => e.name === ev.target.value)(events);\r\n const emptyParameters = map(p => ({name:p, value:\"\"}))(eType.parameters);\r\n eventChanged(eType.name, emptyParameters);\r\n}\r\n\r\nconst onParameterChanged = index => val => {\r\n const newparameters = [...parameters];\r\n newparameters[index].value = val;\r\n eventChanged(eventType, newparameters);\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"type-selector-container\">\r\n <select class=\"type-selector uk-select uk-form-small \" value={eventType} on:change={eventTypeChanged}>\r\n <option></option>\r\n {#each events as ev}\r\n <option value={ev.name}>{ev.name}</option>\r\n {/each}\r\n </select>\r\n\r\n <IconButton icon=\"trash\" \r\n size=\"12\" \r\n on:click={onRemoved}/>\r\n\r\n</div>\r\n\r\n{#if parameters}\r\n{#each parameters as p, index}\r\n\r\n<div>\r\n {p.name} \r\n</div>\r\n<StateBindingControl onChanged={onParameterChanged(index)}\r\n value={p.value} />\r\n\r\n{/each}\r\n{/if}\r\n\r\n<style>\r\n\r\n.type-selector-container {\r\n display: flex;\r\n}\r\n\r\n.type-selector {\r\n border-color: var(--primary50);\r\n border-radius: 2px;\r\n width: 50px;\r\n flex: 1 0 auto;\r\n}\r\n\r\n</style>","<script>\r\nimport IconButton from \"../common/IconButton.svelte\";\r\nimport EventSelector from \"./EventSelector.svelte\";\r\nimport {\r\n filter\r\n} from \"lodash/fp\";\r\nimport {EVENT_TYPE_MEMBER_NAME} from \"../common/eventHandlers\";\r\nexport let parentProps;\r\nexport let propDef;\r\nexport let onValueChanged;\r\nexport let onValidate = () => {};\r\n\r\nlet events = [];\r\nlet elementErrors = {};\r\n\r\n$: {\r\n events = parentProps[propDef.____name];\r\n}\r\n\r\nconst addHandler = () => {\r\n const newHandler = {parameters:{}};\r\n newHandler[EVENT_TYPE_MEMBER_NAME] = \"\";\r\n events = [...events, newHandler];\r\n onValueChanged(events);\r\n}\r\n\r\nconst onEventHandlerChanged = (oldEvent) => (newEvent) => {\r\n const indexOfOldEvent = events.indexOf(oldEvent);\r\n const newEvents = [...events];\r\n newEvents.splice(\r\n events.indexOf(oldEvent),\r\n 1,\r\n newEvent);\r\n events = newEvents;\r\n onValueChanged(events);\r\n}\r\n\r\nconst removeHandler = (index) => () => {\r\n events = filter(e => e !== events[index])(events);\r\n onValueChanged(events);\r\n}\r\n\r\n</script>\r\n\r\n<div class=\"root\">\r\n <div class=\"control-container\">\r\n {#each events as ev, index}\r\n\r\n <div class=\"handler-container\">\r\n <EventSelector onChanged={onEventHandlerChanged(ev)}\r\n onRemoved={removeHandler(index)}\r\n event={ev} />\r\n\r\n </div>\r\n\r\n <div class=\"separator\"></div>\r\n {/each}\r\n\r\n <div class=\"addelement-container\"\r\n on:click={addHandler}>\r\n <IconButton icon=\"plus\" \r\n size=\"12\"/>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<style>\r\n\r\n.addelement-container {\r\n cursor: pointer;\r\n padding: 3px 0px;\r\n text-align: center;\r\n}\r\n\r\n\r\n\r\n.addelement-container:hover {\r\n background-color: var(--primary25);\r\n margin-top: 5px;\r\n}\r\n\r\n\r\n.control-container {\r\n padding-left: 3px;\r\n background: var(--secondary10);\r\n}\r\n\r\n.separator {\r\n width: 60%;\r\n margin: 10px auto;\r\n border-style:solid;\r\n border-width: 1px 0 0 0;\r\n border-color: var(--primary25);\r\n}\r\n\r\n</style>\r\n","<script>\n\nimport Checkbox from \"../common/Checkbox.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport ComponentPropSelector from \"./ComponentPropSelector.svelte\";\nimport PropArraySelector from \"./PropArraySelector.svelte\";\nimport EventListSelector from \"./EventListSelector.svelte\";\nimport StateBindingControl from \"./StateBindingControl.svelte\";\n\nexport let errors = [];\nexport let setProp = () => {};\nexport let fieldHasError =() => {};\nexport let propDef = {};\nexport let props = {};\nexport let disabled;\nexport let index;\nexport let onEditComponent = () => {};\n\n$: isOdd = (index % 2 !== 0);\n\nconst setComponentProp = (props) => {\n setProp(propDef.____name, props);\n}\n\n</script>\n\n\n<div class=\"root\" >\n\n {#if propDef.type === \"component\"}\n\n <div class=\"prop-label\">{propDef.____name}</div>\n <ComponentPropSelector label={propDef.____name}\n props={props[propDef.____name]}\n {disabled}\n onEdit={onEditComponent}\n onComponentChosen={onEditComponent}\n onValueChanged={setComponentProp}/>\n\n {:else if propDef.type === \"array\"}\n\n <div class=\"prop-label\">{propDef.____name}</div>\n <PropArraySelector parentProps={props}\n {propDef}\n onValueChanged={setComponentProp}\n onEditComponentProp={onEditComponent} />\n\n {:else if propDef.type === \"event\"}\n\n <div class=\"prop-label\">{propDef.____name}</div>\n <EventListSelector parentProps={props}\n {propDef}\n onValueChanged={setComponentProp} />\n\n {:else}\n\n <div class=\"prop-label\">{propDef.____name}</div>\n <StateBindingControl value={props[propDef.____name]}\n type={propDef.type}\n options={propDef.options}\n onChanged={v => setProp(propDef.____name, v)}/>\n\n {/if} \n\n</div>\n\n<style>\n\n.root {\n padding: 1rem 1rem 0rem 1rem;\n}\n\n.prop-label {\n font-size: 0.8rem;\n color: var(--secondary100);\n font-weight: bold;\n}\n\n</style>","<script>\n\nimport {\n keys,\n map,\n some,\n includes,\n cloneDeep,\n isEqual,\n sortBy,\n filter,\n difference\n} from \"lodash/fp\";\nimport { pipe } from \"../common/core\";\nimport { \n getComponentInfo ,\n getInstanceProps\n} from \"./pagesParsing/createProps\";\nimport { getExactComponent } from \"./pagesParsing/searchComponents\";\nimport Checkbox from \"../common/Checkbox.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport { validateProps } from \"./pagesParsing/validateProps\";\nimport ComponentPropSelector from \"./ComponentPropSelector.svelte\";\nimport PropControl from \"./PropControl.svelte\";\nimport IconButton from \"../common/IconButton.svelte\";\n\nexport let shouldValidate = true;\nexport let onValidate = () => {};\nexport let componentInfo;\nexport let instanceProps = null;\nexport let onPropsChanged = () => {};\nexport let onEditComponentProp = () => {};\n\nlet errors = [];\nlet props = {};\nlet propsDefinitions = [];\nlet inheritedPropsDefinitions = [];\nlet inheritedExpanded = false;\nlet isInstance = false;\n\nconst isPropInherited = name => \n includes(name)(componentInfo.inheritedProps);\n\n$: {\n if(componentInfo)\n {\n isInstance = !!instanceProps;\n props = isInstance \n ? getInstanceProps(componentInfo, instanceProps)\n : cloneDeep(componentInfo.fullProps);\n\n propsDefinitions = pipe(componentInfo.propsDefinition, [\n keys,\n filter(k => !isPropInherited(k)),\n map(k => ({...componentInfo.propsDefinition[k], ____name:k})),\n sortBy(\"____name\")\n ]);\n\n inheritedPropsDefinitions = pipe(componentInfo.propsDefinition, [\n keys,\n filter(k => isPropInherited(k)),\n map(k => ({...componentInfo.propsDefinition[k], ____name:k})),\n sortBy(\"____name\")\n ]);\n }\n}\n\n\nlet setProp = (name, value) => {\n const newProps = cloneDeep(props);\n\n let finalProps = isInstance ? newProps : cloneDeep(componentInfo.component.props);\n\n if(!isInstance) {\n const nowSet = [];\n for(let p of componentInfo.unsetProps) {\n if(!isEqual(newProps[p])(componentInfo.rootDefaultProps[p])) {\n finalProps[p] = newProps[p];\n nowSet.push(p);\n }\n }\n componentInfo.unsetProps = difference(nowSet)(componentInfo.unsetProps);\n }\n\n newProps[name] = value;\n finalProps[name] = value;\n props = newProps;\n if(validate(finalProps))\n onPropsChanged(finalProps);\n \n}\n \nconst validate = (finalProps) => {\n errors = validateProps(componentInfo.propsDefinition, finalProps, [], false);\n onValidate(errors);\n return errors.length === 0;\n}\n\nconst fieldHasError = (propName) => \n some(e => e.propName === propName)(errors);\n\nconst onEditComponent = (propName) => (arrayIndex, arrayPropName) => {\n onEditComponentProp(propName, arrayIndex, arrayPropName);\n}\n\n</script>\n\n<div class=\"root\">\n\n <form class=\"uk-form-stacked\">\n {#each propsDefinitions as propDef, index}\n \n <PropControl {setProp}\n {fieldHasError}\n {propDef}\n {props}\n {index}\n onEditComponent={onEditComponent(propDef.____name)}\n disabled={false} />\n \n {/each}\n\n {#if inheritedPropsDefinitions.length > 0}\n <div class=\"inherited-title padding\">\n <div>Inherited</div>\n <div>\n <IconButton icon={inheritedExpanded ? \"chevron-down\" : \"chevron-right\"}\n on:click={() => inheritedExpanded = !inheritedExpanded}/>\n </div>\n </div>\n {/if}\n\n {#if inheritedExpanded}\n {#each inheritedPropsDefinitions as propDef, index}\n \n <PropControl {setProp}\n {fieldHasError}\n {propDef}\n {props}\n {index}\n disabled={true} />\n \n {/each}\n {/if}\n </form>\n\n\n \n\n</div>\n\n\n<style>\n\n.root {\n font-size:10pt;\n}\n\n.padding {\n padding: 0 10px;\n}\n\n.inherited-title {\n padding: 1rem 1rem 1rem 1rem;\n display: grid;\n grid-template-columns: [name] 1fr [actions] auto;\n color: var(--secondary100);\n font-size: .9rem;\n font-weight: bold;\n}\n\n.inherited-title > div:nth-child(1) {\n grid-column-start: name;\n color: var(--secondary50);\n}\n\n.inherited-title > div:nth-child(2) {\n grid-column-start: actions;\n color: var(--secondary100);\n}\n\n</style>","export { identity as linear } from '../internal';\n\n/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nfunction backInOut(t) {\n const s = 1.70158 * 1.525;\n if ((t *= 2) < 1)\n return 0.5 * (t * t * ((s + 1) * t - s));\n return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\nfunction backIn(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n}\nfunction backOut(t) {\n const s = 1.70158;\n return --t * t * ((s + 1) * t + s) + 1;\n}\nfunction bounceOut(t) {\n const a = 4.0 / 11.0;\n const b = 8.0 / 11.0;\n const c = 9.0 / 10.0;\n const ca = 4356.0 / 361.0;\n const cb = 35442.0 / 1805.0;\n const cc = 16061.0 / 1805.0;\n const t2 = t * t;\n return t < a\n ? 7.5625 * t2\n : t < b\n ? 9.075 * t2 - 9.9 * t + 3.4\n : t < c\n ? ca * t2 - cb * t + cc\n : 10.8 * t * t - 20.52 * t + 10.72;\n}\nfunction bounceInOut(t) {\n return t < 0.5\n ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0))\n : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\nfunction bounceIn(t) {\n return 1.0 - bounceOut(1.0 - t);\n}\nfunction circInOut(t) {\n if ((t *= 2) < 1)\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\nfunction circIn(t) {\n return 1.0 - Math.sqrt(1.0 - t * t);\n}\nfunction circOut(t) {\n return Math.sqrt(1 - --t * t);\n}\nfunction cubicInOut(t) {\n return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\nfunction cubicIn(t) {\n return t * t * t;\n}\nfunction cubicOut(t) {\n const f = t - 1.0;\n return f * f * f + 1.0;\n}\nfunction elasticInOut(t) {\n return t < 0.5\n ? 0.5 *\n Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) *\n Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n : 0.5 *\n Math.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n 1.0;\n}\nfunction elasticIn(t) {\n return Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction elasticOut(t) {\n return (Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0);\n}\nfunction expoInOut(t) {\n return t === 0.0 || t === 1.0\n ? t\n : t < 0.5\n ? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n : -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\nfunction expoIn(t) {\n return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction expoOut(t) {\n return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\nfunction quadInOut(t) {\n t /= 0.5;\n if (t < 1)\n return 0.5 * t * t;\n t--;\n return -0.5 * (t * (t - 2) - 1);\n}\nfunction quadIn(t) {\n return t * t;\n}\nfunction quadOut(t) {\n return -t * (t - 2.0);\n}\nfunction quartInOut(t) {\n return t < 0.5\n ? +8.0 * Math.pow(t, 4.0)\n : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\nfunction quartIn(t) {\n return Math.pow(t, 4.0);\n}\nfunction quartOut(t) {\n return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\nfunction quintInOut(t) {\n if ((t *= 2) < 1)\n return 0.5 * t * t * t * t * t;\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\nfunction quintIn(t) {\n return t * t * t * t * t;\n}\nfunction quintOut(t) {\n return --t * t * t * t * t + 1;\n}\nfunction sineInOut(t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n}\nfunction sineIn(t) {\n const v = Math.cos(t * Math.PI * 0.5);\n if (Math.abs(v) < 1e-14)\n return 1;\n else\n return 1 - v;\n}\nfunction sineOut(t) {\n return Math.sin((t * Math.PI) / 2);\n}\n\nexport { backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, cubicIn, cubicInOut, cubicOut, elasticIn, elasticInOut, elasticOut, expoIn, expoInOut, expoOut, quadIn, quadInOut, quadOut, quartIn, quartInOut, quartOut, quintIn, quintInOut, quintOut, sineIn, sineInOut, sineOut };\n","import { cubicInOut, cubicOut } from '../easing';\nimport { is_function, assign } from '../internal';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nfunction blur(node, { delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 }) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const f = style.filter === 'none' ? '' : style.filter;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `opacity: ${target_opacity - (od * u)}; filter: ${f} blur(${u * amount}px);`\n };\n}\nfunction fade(node, { delay = 0, duration = 400 }) {\n const o = +getComputedStyle(node).opacity;\n return {\n delay,\n duration,\n css: t => `opacity: ${t * o}`\n };\n}\nfunction fly(node, { delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 }) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * x}px, ${(1 - t) * y}px);\n\t\t\topacity: ${target_opacity - (od * u)}`\n };\n}\nfunction slide(node, { delay = 0, duration = 400, easing = cubicOut }) {\n const style = getComputedStyle(node);\n const opacity = +style.opacity;\n const height = parseFloat(style.height);\n const padding_top = parseFloat(style.paddingTop);\n const padding_bottom = parseFloat(style.paddingBottom);\n const margin_top = parseFloat(style.marginTop);\n const margin_bottom = parseFloat(style.marginBottom);\n const border_top_width = parseFloat(style.borderTopWidth);\n const border_bottom_width = parseFloat(style.borderBottomWidth);\n return {\n delay,\n duration,\n easing,\n css: t => `overflow: hidden;` +\n `opacity: ${Math.min(t * 20, 1) * opacity};` +\n `height: ${t * height}px;` +\n `padding-top: ${t * padding_top}px;` +\n `padding-bottom: ${t * padding_bottom}px;` +\n `margin-top: ${t * margin_top}px;` +\n `margin-bottom: ${t * margin_bottom}px;` +\n `border-top-width: ${t * border_top_width}px;` +\n `border-bottom-width: ${t * border_bottom_width}px;`\n };\n}\nfunction scale(node, { delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 }) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const sd = 1 - start;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - (sd * u)});\n\t\t\topacity: ${target_opacity - (od * u)}\n\t\t`\n };\n}\nfunction draw(node, { delay = 0, speed, duration, easing = cubicInOut }) {\n const len = node.getTotalLength();\n if (duration === undefined) {\n if (speed === undefined) {\n duration = 800;\n }\n else {\n duration = len / speed;\n }\n }\n else if (typeof duration === 'function') {\n duration = duration(len);\n }\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `stroke-dasharray: ${t * len} ${u * len}`\n };\n}\nfunction crossfade(_a) {\n var { fallback } = _a, defaults = __rest(_a, [\"fallback\"]);\n const to_receive = new Map();\n const to_send = new Map();\n function crossfade(from, node, params) {\n const { delay = 0, duration = d => Math.sqrt(d) * 30, easing = cubicOut } = assign(assign({}, defaults), params);\n const to = node.getBoundingClientRect();\n const dx = from.left - to.left;\n const dy = from.top - to.top;\n const dw = from.width / to.width;\n const dh = from.height / to.height;\n const d = Math.sqrt(dx * dx + dy * dy);\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n const opacity = +style.opacity;\n return {\n delay,\n duration: is_function(duration) ? duration(d) : duration,\n easing,\n css: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${t + (1 - t) * dh});\n\t\t\t`\n };\n }\n function transition(items, counterparts, intro) {\n return (node, params) => {\n items.set(params.key, {\n rect: node.getBoundingClientRect()\n });\n return () => {\n if (counterparts.has(params.key)) {\n const { rect } = counterparts.get(params.key);\n counterparts.delete(params.key);\n return crossfade(rect, node, params);\n }\n // if the node is disappearing altogether\n // (i.e. wasn't claimed by the other list)\n // then we need to supply an outro\n items.delete(params.key);\n return fallback && fallback(node, params, intro);\n };\n };\n }\n return [\n transition(to_send, to_receive, false),\n transition(to_receive, to_send, true)\n ];\n}\n\nexport { blur, crossfade, draw, fade, fly, scale, slide };\n","<script>\n\nimport PropsView from \"./PropsView.svelte\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport { getComponentInfo } from \"./pagesParsing/createProps\";\nimport { store } from \"../builderStore\";\nimport { \n cloneDeep,\n isUndefined\n} from \"lodash/fp\";\nimport { fade, slide } from 'svelte/transition';\n\nexport let title = \"\";\nexport let onGoBack = () => {};\nexport let instanceProps = {};\nexport let onPropsChanged = () => {};\n\n\nlet editingSubComponentName;\nlet editingSubComponentProps;\nlet editingSubComponentArrayIndex;\nlet editingSubComponentArrayPropName;\nlet editingSubComponentTitle;\nlet allComponents;\n\nstore.subscribe(s => {\n allComponents = s.allComponents;\n})\n\n$: componentInfo = getComponentInfo(\n allComponents, instanceProps._component);\n\nconst onSubComponentGoBack = () => {\n editingSubComponentName = null;\n editingSubComponentProps = null;\n}\n\nconst onEditComponentProp = (propName, arrayIndex, arrayPropName) => {\n editingSubComponentName = propName;\n editingSubComponentTitle = isUndefined(arrayIndex)\n ? propName\n : `${propName}[${arrayIndex}].${arrayPropName}`;\n editingSubComponentProps = isUndefined(arrayIndex)\n ? instanceProps[propName]\n : instanceProps[propName][arrayIndex][arrayPropName];\n editingSubComponentArrayIndex = arrayIndex;\n editingSubComponentArrayPropName = arrayPropName;\n};\n\n\nconst onSubComponentPropsChanged = (subProps) => {\n const newProps = cloneDeep(instanceProps);\n if(isUndefined(editingSubComponentArrayIndex)) {\n newProps[editingSubComponentName] = subProps;\n } else {\n newProps[editingSubComponentName]\n [editingSubComponentArrayIndex]\n [editingSubComponentArrayPropName] = subProps;\n }\n \n instanceProps = newProps;\n onPropsChanged(newProps);\n}\n\n\nconst propsChanged = newProps => {\n instanceProps = newProps;\n onPropsChanged(newProps);\n}\n\n</script>\n\n<div>\n\n <div class=\"title\">\n <IconButton icon=\"chevron-left\"\n on:click={onGoBack}/>\n <span>{title}</span>\n </div>\n\n {#if editingSubComponentName}\n <div in:slide={{delay: 250, duration: 300}}\n out:fade>\n <svelte:self onPropsChanged={onSubComponentPropsChanged}\n onGoBack={onSubComponentGoBack}\n instanceProps={editingSubComponentProps}\n title={editingSubComponentTitle} />\n </div>\n {:else}\n <PropsView {instanceProps}\n {componentInfo}\n onPropsChanged={propsChanged}\n {onEditComponentProp} />\n {/if}\n \n\n \n\n</div>\n\n<style>\n.title {\n padding:3px;\n background-color: white;\n color: var(--secondary100);\n border-style:solid;\n border-width: 1px 0 0 0;\n border-color: var(--lightslate);\n}\n\n.title > span {\n margin-left: 10px;\n }\n</style>","<script>\n\nimport PropsView from \"./PropsView.svelte\";\nimport { store } from \"../builderStore\";\nimport { isRootComponent } from \"./pagesParsing/searchComponents\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport UIkit from \"uikit\";\nimport { pipe } from \"../common/core\";\nimport {\n getComponentInfo\n} from \"./pagesParsing/createProps\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport ComponentInstanceEditor from \"./ComponentInstanceEditor.svelte\";\n\nimport { \n cloneDeep, \n join,\n split,\n map,\n keys,\n isUndefined,\n last\n} from \"lodash/fp\";\nimport { assign } from \"lodash\";\n\nlet component;\nlet name = \"\";\nlet description = \"\";\nlet tagsString = \"\";\nlet nameInvalid = \"\";\nlet componentDetailsExpanded = false;\nlet componentInfo;\nlet modalElement\nlet propsValidationErrors = [];\nlet editingComponentInstance;\nlet editingComponentInstancePropName=\"\";\nlet editingComponentArrayIndex;\nlet editingComponentArrayPropName;\nlet editingComponentInstanceTitle;\nlet originalName=\"\";\nlet allComponents;\nlet ignoreStore = false;\n\n$: shortName = last(name.split(\"/\"));\n\nstore.subscribe(s => {\n if(ignoreStore) return;\n component = s.currentFrontEndItem;\n if(!component) return;\n originalName = component.name;\n name = component.name;\n description = component.description;\n tagsString = join(\", \")(component.tags);\n componentInfo = s.currentComponentInfo;\n componentDetailsExpanded = s.currentComponentIsNew;\n allComponents = s.allComponents;\n});\n\nconst save = () => {\n\n ignoreStore = true;\n if(!validate()) {\n ignoreStore = false;\n return;\n }\n\n component.name = originalName || name;\n component.description = description;\n component.tags = pipe(tagsString, [\n split(\",\"),\n map(s => s.trim())\n ]);\n\n store.saveDerivedComponent(component);\n\n ignoreStore = false;\n // now do the rename\n if(name !== originalName) {\n store.renameDerivedComponent(originalName, name);\n }\n}\n\nconst deleteComponent = () => {\n showDialog();\n}\n\nconst confirmDeleteComponent = () => {\n store.deleteDerivedComponent(component.name);\n hideDialog();\n}\n\nconst onPropsValidate = result => {\n propsValidationErrors = result;\n}\n\nconst updateComponent = doChange => {\n const newComponent = cloneDeep(component);\n doChange(newComponent);\n component = newComponent;\n componentInfo = getComponentInfo(allComponents, newComponent);\n}\n\nconst onPropsChanged = newProps => {\n updateComponent(newComponent => \n assign(newComponent.props, newProps));\n \n}\n\nconst validate = () => {\n const fieldInvalid = (field, err) => \n errors[field] = err;\n const fieldValid = field => \n errors[field] && delete errors[field];\n\n if(!name) nameInvalid = \"component name i not supplied\";\n else nameInvalid = \"\";\n\n return (!nameInvalid && propsValidationErrors.length === 0);\n}\n\nconst hideDialog = () => {\n UIkit.modal(modalElement).hide();\n}\n\nconst showDialog = () => {\n UIkit.modal(modalElement).show();\n}\n\nconst onEditComponentProp = (propName, arrayIndex, arrayPropName) => {\n\n editingComponentInstance = isUndefined(arrayIndex) \n ? component.props[propName]\n : component.props[propName][arrayIndex][arrayPropName];\n editingComponentInstancePropName = propName;\n editingComponentInstanceTitle = isUndefined(arrayIndex)\n ? propName\n : `${propName}[${arrayIndex}].${arrayPropName}`;\n \n editingComponentArrayIndex = arrayIndex;\n editingComponentArrayPropName = arrayPropName;\n}\n\nconst componentInstanceCancelEdit = () => {\n editingComponentInstance = null;\n editingComponentInstancePropName = \"\";\n}\n\nconst componentInstancePropsChanged = (instanceProps) => {\n updateComponent(newComponent => {\n if(isUndefined(editingComponentArrayIndex)) {\n newComponent.props[editingComponentInstancePropName] = instanceProps;\n } else {\n newComponent.props[editingComponentInstancePropName]\n [editingComponentArrayIndex]\n [editingComponentArrayPropName] = instanceProps;\n }\n });\n}\n\n</script>\n\n<div class=\"root\">\n\n <div class=\"title\">\n <div>{shortName}</div>\n <div>\n <IconButton icon=\"save\" \n on:click={save} \n color=\"var(--secondary100)\"\n hoverColor=\"var(--primary100)\"/>\n <IconButton icon=\"trash\" \n on:click={deleteComponent} \n color=\"var(--secondary100)\"\n hoverColor=\"var(--primary100)\"/>\n </div>\n </div>\n\n {#if editingComponentInstance}\n <div class=\"component-props-container\">\n <ComponentInstanceEditor onGoBack={componentInstanceCancelEdit}\n title={editingComponentInstanceTitle}\n instanceProps={editingComponentInstance}\n onPropsChanged={componentInstancePropsChanged}/>\n </div>\n {:else}\n <div class=\"component-props-container\">\n\n <div class=\"section-header padding\" on:click={() => componentDetailsExpanded = !componentDetailsExpanded}>\n <span style=\"margin-right: 7px\">Component Details</span>\n <IconButton icon={componentDetailsExpanded ? \"chevron-down\" : \"chevron-right\"}/>\n </div>\n\n {#if componentDetailsExpanded}\n <div class=\"padding\">\n <div class=\"info-text\">\n <Textbox label=\"Name\" \n infoText=\"use forward slash to store in subfolders\"\n text={name}\n on:change={ev => name = ev.target.value}\n hasError={!!nameInvalid}/>\n <Textbox label=\"Description\"\n on:change={ev => description = ev.target.value}\n text={description}/>\n <Textbox label=\"Tags\" \n infoText=\"comma separated\"\n on:change={ev => tagsString = ev.target.value}\n text={tagsString}/>\n </div> \n </div>\n {/if}\n\n <div class=\"section-header padding\">\n <span>Properties</span>\n </div>\n\n \n <PropsView onValidate={onPropsValidate}\n {componentInfo}\n {onPropsChanged}\n {onEditComponentProp}/>\n \n\n </div>\n {/if}\n\n</div>\n\n\n<div bind:this={modalElement} uk-modal>\n <div class=\"uk-modal-dialog\">\n\n <div class=\"uk-modal-header\">\n Delete {name} ? \n </div>\n\n <div class=\"uk-modal-body\">\n Are you sure you want to delete this component ?\n </div>\n\n <div class=\"uk-modal-footer\">\n <ButtonGroup>\n <Button grouped \n on:click={confirmDeleteComponent}>\n OK\n </Button>\n <Button grouped \n on:click={hideDialog} \n color=\"secondary\" >\n Cancel\n </Button>\n </ButtonGroup>\n </div>\n\n </div>\n\n</div>\n\n<style>\n\n.root {\n height: 100%;\n display: flex;\n flex-direction: column;\n}\n\n.padding {\n padding: 1rem 1rem 0rem 1rem;\n}\n\n.info-text {\n color: var(--secondary100);\n font-size: .8rem !important;\n font-weight: bold;\n}\n\n.title {\n padding: 2rem 1rem 1rem 1rem;\n display: grid;\n grid-template-columns: [name] 1fr [actions] auto;\n color: var(--secondary100);\n font-size: .9rem;\n font-weight: bold;\n}\n\n.title > div:nth-child(1) {\n grid-column-start: name;\n color: var(--secondary100);\n}\n\n.title > div:nth-child(2) {\n grid-column-start: actions;\n}\n\n.section-header {\n display: grid;\n grid-template-columns: [name] 1fr [actions] auto;\n color: var(--secondary50);\n font-size: .9rem;\n font-weight: bold;\n vertical-align: middle;\n}\n\n.component-props-container {\n flex: 1 1 auto;\n overflow-y: auto;\n}\n</style>","<script>\nimport UIkit from \"uikit\";\n\nexport let isOpen = false;\nexport let onClosed = () => {};\nexport let id = \"\";\n\nlet ukModal;\nlet listenerAdded = false;\n\n$: {\n if(ukModal && !listenerAdded) {\n listenerAdded = true;\n ukModal.addEventListener(\"hide\", onClosed);\n }\n\n if(ukModal) {\n if(isOpen) {\n UIkit.modal(ukModal).show();\n } else {\n UIkit.modal(ukModal).hide();\n }\n }\n}\n\n</script>\n\n<div bind:this={ukModal} uk-modal {id}>\n <div class=\"uk-modal-dialog uk-modal-body\" uk-overflow-auto>\n <slot />\n </div>\n</div>\n\n\n<style>\n\n.uk-modal-dialog {\n border-radius: .3rem;\n}\n\n</style>","import { splitName } from \"./splitRootComponentName\";\nimport {\n find, filter, cloneDeep, isPlainObject,\n isArray\n} from \"lodash/fp\";\nimport { isRootComponent } from \"./searchComponents\";\n\nexport const libraryDependencies = (allComponents, lib) => {\n\n const componentDependsOnLibrary = comp => {\n if(isRootComponent(comp)) {\n const {libName} = splitName(component.name);\n return (libName === lib);\n }\n return componentDependsOnLibrary(\n find(c => c.name === comp.inherits)(allComponents)\n );\n }\n\n return filter(c => !isRootComponent(c) \n && componentDependsOnLibrary(c))(\n allComponents\n );\n}\n\nexport const componentDependencies = (pages, allComponents, dependsOn) => {\n\n \n pages = cloneDeep(pages);\n allComponents = cloneDeep(allComponents);\n const dependantComponents = [];\n const dependantPages = [];\n\n const traverseProps = (props) => {\n \n if(props._component && props._component === dependsOn.name) {\n return true;\n } \n\n for(let propName in props) {\n const prop = props[propName];\n if(isPlainObject(prop) && prop._component) {\n if(traverseProps(prop)) return true;\n }\n if(isArray(prop)) {\n for(let element of prop) {\n if(traverseProps(element)) return true;\n }\n }\n }\n\n return false;\n }\n\n\n for(let component of allComponents) {\n \n if(isRootComponent(component)) {\n continue;\n }\n\n if(component.name === dependsOn.name) {\n continue;\n }\n\n if(component.inherits === dependsOn.name) {\n dependantComponents.push(component);\n continue;\n }\n \n if(traverseProps(component.props)) {\n dependantComponents.push(component);\n }\n\n }\n\n for(let pageName in pages) {\n const page = pages[pageName];\n if(page.appBody === dependsOn.name) {\n dependantPages.push(pageName);\n }\n }\n\n return {dependantComponents, dependantPages};\n\n}","<script>\r\nimport { store } from \"../builderStore\";\r\nimport { splitName } from \"./pagesParsing/splitRootComponentName\";\r\nimport {\r\n getIndexNodes, getRecordNodes, getIndexSchema, pipe\r\n} from \"../common/core\";\r\nimport {\r\n map, some, filter\r\n} from \"lodash/fp\";\r\nimport Button from \"../common/Button.svelte\";\r\nimport { componentDependencies } from \"./pagesParsing/findDependencies\";\r\nimport { rename } from \"./pagesParsing/renameComponent\";\r\nimport { getExactComponent } from \"./pagesParsing/searchComponents\";\r\nexport let generator;\r\nexport let onConfirmGenerate;\r\n\r\nlet libName;\r\nlet componentName;\r\nlet libs;\r\nlet existingComponents;\r\nlet _generator;\r\nlet components;\r\nlet generateParameter;\r\nlet allGeneratedComponents;\r\nlet selectedComponents = [];\r\n\r\nstore.subscribe(s => {\r\n libs = s.generatorLibraries;\r\n generateParameter = {\r\n indexes: getIndexNodes(s.hierarchy),\r\n records: getRecordNodes(s.hierarchy),\r\n helpers: {\r\n indexSchema: getIndexSchema(s.hierarchy)\r\n }\r\n }\r\n existingComponents = s.allComponents;\r\n});\r\n\r\nconst componentExists = name => \r\n getExactComponent(existingComponents, name);\r\n\r\nconst componentsWithDependencies = () => {\r\n \r\n const cmp = map(c => {\r\n const dependants = componentDependencies(\r\n {}, [...selectedComponents, ...existingComponents], c);\r\n const exists = componentExists(c.name);\r\n return {\r\n dependants: dependants.dependantComponents, \r\n component:c,\r\n error: exists ? \"a component by this name already exists\" : \"\"\r\n };\r\n })(allGeneratedComponents); \r\n components = cmp;\r\n} \r\n\r\n$ : {\r\n if(generator && generator !== _generator) {\r\n _generator = generator;\r\n\r\n const sp = splitName(generator.name);\r\n libName = sp.libName;\r\n componentName = sp.componentName;\r\n\r\n allGeneratedComponents = libs[libName][componentName](generateParameter);\r\n selectedComponents = \r\n filter(c => !componentExists(c.name))(allGeneratedComponents);\r\n componentsWithDependencies();\r\n }\r\n}\r\n\r\n\r\nconst onSelectedChanged = component => ev => {\r\n const newselectedComponents = filter(c => c.name !== component.component.name)(\r\n selectedComponents);\r\n if(ev.target.checked) {\r\n newselectedComponents.push(component.component); \r\n }\r\n\r\n selectedComponents = newselectedComponents;\r\n componentsWithDependencies();\r\n}\r\n\r\nconst onNameChanged = component => ev => {\r\n const newname = ev.target.value;\r\n const oldname = component.component.name;\r\n const result = rename({}, allGeneratedComponents, oldname, newname);\r\n component.error = result.error || \"\";\r\n allGeneratedComponents = [...result.allComponents];\r\n selectedComponents = map(s => {\r\n if(s.name === oldname) s.name = newname;\r\n return s;\r\n })(selectedComponents);\r\n componentsWithDependencies();\r\n}\r\n\r\nconst isComponentSelected = component => \r\n some(c => c.name === component.component.name)(selectedComponents);\r\n\r\n</script>\r\n\r\n{#each components as c}\r\n\r\n<div class=\"component\">\r\n\r\n <div class=\"uk-inline\">\r\n <input type=\"checkbox\" \r\n disabled={c.dependants.length > 0} \r\n class=\"uk-checkbox\" \r\n checked={isComponentSelected(c)}\r\n on:change={onSelectedChanged(c)}>\r\n <input type=\"text\" \r\n value={c.component.name} \r\n on:change={onNameChanged(c)}\r\n class=\"uk-input title {c.error ? 'uk-form-danger' : ''}\">\r\n {#if isComponentSelected(c)}\r\n <span class=\"error\">{c.error}</span>\r\n {/if}\r\n </div>\r\n\r\n <div class=\"description\">\r\n {c.component.description}\r\n </div>\r\n\r\n</div>\r\n\r\n{/each}\r\n\r\n<div class=\"button-container\">\r\n <Button on:click={() => onConfirmGenerate(selectedComponents)}>Add Components</Button>\r\n</div>\r\n\r\n\r\n\r\n\r\n<style>\r\n\r\n.component {\r\n padding: 5px 0;\r\n}\r\n\r\n.component .title {\r\n width: 300px\r\n}\r\n\r\n.component > .description {\r\n font-size: 0.8em;\r\n color: var(--secondary75);\r\n}\r\n\r\n.button-container {\r\n text-align: right;\r\n margin-top: 20px;\r\n}\r\n\r\n.error {\r\n font-size: 10pt;\r\n color: red;\r\n}\r\n\r\n</style>\r\n","<script>\n\nimport ComponentSelector from \"./ComponentSelector.svelte\";\nimport { store } from \"../builderStore\";\nimport PropsView from \"./PropsView.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport { pipe } from \"../common/core\";\nimport UIkit from \"uikit\";\nimport {\n getNewComponentInfo\n} from \"./pagesParsing/createProps\";\nimport { isRootComponent } from \"./pagesParsing/searchComponents\";\nimport GeneratedComponents from \"./GeneratedComponents.svelte\";\n\nimport { \n cloneDeep, \n join,\n split,\n map,\n keys,\n isUndefined\n} from \"lodash/fp\";\nimport { assign } from \"lodash\";\n\n\n\nlet componentSelectorModal;\nlet generatorOptionsModal;\nlet allComponents;\nlet generator;\n\nstore.subscribe(s => {\n allComponents = s.allComponents;\n})\n\nexport const close = () => {\n UIkit.modal(componentSelectorModal).hide();\n if(generatorOptionsModal) UIkit.modal(generatorOptionsModal).hide();\n generator = null;\n}\n\nexport const show = () => {\n UIkit.modal(componentSelectorModal).show();\n}\n\nconst onComponentChosen = (c) => {\n store.createDerivedComponent(c.name);\n close();\n}\n\nconst onGeneratorChosen = (g) => {\n generator = g;\n UIkit.modal(componentSelectorModal).hide();\n UIkit.modal(generatorOptionsModal).show();\n}\n\nconst onConfirmGenerate = (components) => {\n store.createGeneratedComponents(components);\n UIkit.modal(generatorOptionsModal).hide();\n generator = null;\n}\n\n</script>\n\n<div bind:this={componentSelectorModal} id=\"new-component-modal\" uk-modal>\n <div class=\"uk-modal-dialog\" uk-overflow-auto>\n\n <div class=\"uk-modal-header\">\n <h1>New Component</h1>\n </div>\n\n <div class=\"uk-modal-body\">\n <ComponentSelector onComponentChosen={onComponentChosen}\n onGeneratorChosen={onGeneratorChosen}\n allowGenerators={true} />\n </div>\n </div>\n</div>\n\n\n<div bind:this={generatorOptionsModal} uk-modal>\n <div class=\"uk-modal-dialog\" uk-overflow-auto>\n\n {#if generator}\n \n <div class=\"uk-modal-header\">\n <h1>Generator - {generator ? generator.name : \"\"}</h1>\n </div>\n\n <div class=\"uk-modal-body\">\n <GeneratedComponents generator={generator}\n onConfirmGenerate={onConfirmGenerate} />\n </div>\n\n {/if}\n </div>\n</div>\n\n\n<style>\nh1 {\n font-size:1.2em;\n}\n\n</style>","<script>\nimport { store } from \"../builderStore\";\nimport { makeLibraryUrl } from \"../builderStore/loadComponentLibraries\";\nimport {\n last, split, map, join\n} from \"lodash/fp\";\nimport { pipe } from \"../common/core\";\nimport { splitName } from \"./pagesParsing/splitRootComponentName\"\nimport { afterUpdate } from 'svelte';\nimport { getRootComponent } from \"./pagesParsing/getRootComponent\";\nimport { buildPropsHierarchy } from \"./pagesParsing/buildPropsHierarchy\";\n\n\nlet hasComponent=false;\nlet stylesheetLinks = \"\";\nlet appDefinition = {};\n\nstore.subscribe(s => {\n hasComponent = !!s.currentFrontEndItem;\n \n stylesheetLinks = pipe(s.pages.stylesheets, [\n map(s => `<link rel=\"stylesheet\" href=\"${s}\"/>`),\n join(\"\\n\")\n ]);\n appDefinition = {\n componentLibraries: s.loadLibraryUrls(),\n props: buildPropsHierarchy(s.allComponents, s.currentFrontEndItem),\n hierarchy: s.hierarchy,\n appRootPath: \"\"\n };\n\n});\n\n\n\n</script>\n\n\n<div class=\"component-container\">\n {#if hasComponent}\n <iframe style=\"height: 100%; width: 100%\"\n title=\"componentPreview\"\n srcdoc={\n`<html>\n \n<head>\n ${stylesheetLinks}\n <script>\n window[\"##BUDIBASE_APPDEFINITION##\"] = ${JSON.stringify(appDefinition)};\n import('/_builder/budibase-client.esm.mjs')\n .then(module => {\n module.loadBudibase();\n }) \n </script>\n <style>\n\n body {\n box-sizing: border-box;\n padding: 20px;\n }\n </style>\n</head>\n<body>\n</body>\n</html>`}>\n </iframe>\n {/if}\n</div>\n\n\n<style>\n\n.component-container {\n grid-row-start: middle;\n grid-column-start: middle;\n position: relative;\n overflow: hidden;\n padding-top: 56.25%;\n margin: auto;\n}\n\n.component-container iframe {\n border: 0;\n height: 100%;\n left: 0;\n position: absolute;\n top: 0;\n width: 100%;\n}\n\n</style>","<script>\n\nimport { store } from \"../builderStore\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport { libraryDependencies } from \"./pagesParsing/findDependencies\";\nimport UIkit from \"uikit\";\n\nlet addNewLib = \"\";\nlet addNewStylesheet = \"\";\nlet addComponentError = \"\";\nlet modalElement;\nlet allComponents;\n\nstore.subscribe(s => {\n allComponents = s.allComponents;\n})\n\nconst removeLibrary = lib => {\n const dependencies = libraryDependencies(allComponents, lib);\n if(dependencies.length > 0) return;\n store.removeComponentLibrary(lib);\n}\n\nconst addLib = () => {\n store.addComponentLibrary(addNewLib)\n .then(() => {\n addNewLib = \"\";\n }); \n}\n\nconst removeStylesheet = stylesheet => {\n store.removeStylesheet(stylesheet);\n}\n\nconst addStylesheet = () => {\n if(addNewStylesheet)\n store.addStylesheet(addNewStylesheet);\n}\n\nexport const close = () => {\n UIkit.modal(modalElement).hide();\n}\n\nexport const show = () => {\n UIkit.modal(modalElement).show();\n}\n\n</script>\n\n<div bind:this={modalElement} id=\"new-component-modal\" uk-modal>\n <div class=\"uk-modal-dialog\">\n\n <div class=\"uk-modal-header header\">\n <div>Settings</div>\n <div>\n <IconButton icon=\"x\"\n on:click={close}/>\n </div>\n </div>\n\n <div class=\"uk-modal-body uk-form-horizontal\">\n\n <div class=\"section-container\">\n <p>Component Libraries\n <span>\n <input bind:value={addNewLib} /> \n <Button color=\"primary-outline\"\n on:click={addLib}>Add</Button>\n </span>\n </p>\n {#each $store.pages.componentLibraries as lib}\n <div>\n <span class=\"row-text\">{lib}</span>\n <IconButton icon=\"x\" \n on:click={() => removeLibrary(lib)}/>\n </div>\n {/each}\n </div>\n \n\n <div class=\"section-container\">\n <p>Stylesheets\n <span>\n <input bind:value={addNewStylesheet} /> \n <Button color=\"primary-outline\"\n on:click={addStylesheet} >Add</Button>\n </span>\n </p>\n {#each $store.pages.stylesheets as stylesheet}\n <div>\n <span class=\"row-text\">{stylesheet}</span>\n <IconButton icon=\"x\" \n on:click={() => removeStylesheet(stylesheet)}/>\n </div>\n {/each}\n </div>\n\n \n </div>\n </div>\n</div>\n\n<style>\n\n.section-container {\n padding: 15px;\n border-style: dotted;\n border-width: 1px;\n border-color: var(--lightslate);\n border-radius: 2px;\n}\n\n.section-container:nth-child(1) {\n margin-bottom: 15px;\n}\n\n.row-text {\n margin-right: 15px;\n color: var(--primary100);\n}\n\ninput {\n margin-right: 15px;\n}\n\np > span {\n margin-left: 30px;\n}\n\n.header {\n display: grid;\n grid-template-columns: [title] 1fr [icon] auto;\n}\n\n.header > div:nth-child(1) {\n grid-column-start: title;\n}\n\n.header > div:nth-child(2) {\n grid-column-start: icon;\n}\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport { store } from \"../builderStore\";\nimport { isRootComponent } from \"./pagesParsing/searchComponents\";\nimport { pipe } from \"../common/core\";\nimport {\n filter, find, concat\n} from \"lodash/fp\";\n\nlet entryComponent;\nlet title = \"\";\nlet components = [];\nlet page={};\nconst notSeletedComponent = {name:\"(none selected)\"};\n\nstore.subscribe(s => {\n page = s.pages[s.currentPageName];\n if(!page) return;\n title = page.index.title;\n components = pipe(s.allComponents, [\n filter(s => !isRootComponent(s)),\n concat([notSeletedComponent])\n ]);\n entryComponent = find(c => c.name === page.appBody)(components);\n if(!entryComponent) entryComponent = notSeletedComponent;\n});\n\nconst save = () => {\n if(!title || !entryComponent || entryComponent === notSeletedComponent) return;\n const page = {\n index: {\n title\n },\n appBody: entryComponent.name,\n }\n store.savePage(page);\n}\n\n</script>\n\n<div class=\"root\">\n\n <h3>{$store.currentPageName}</h3>\n\n <form class=\"uk-form-horizontal\">\n <Textbox bind:text={title} label=\"Title\" hasError={!title}/>\n <div class=\"help-text\">The title of your page, displayed in the bowser tab</div>\n <Dropdown label=\"App Entry Component\"\n options={components}\n bind:selected={entryComponent}\n textMember={(v) => v.name} />\n\n <div class=\"help-text\">The component that will be loaded into the body of the page</div>\n <div style=\"margin-top: 20px\"></div>\n <Button on:click={save}>Save</Button>\n </form>\n\n</div>\n\n<style>\n.root {\n padding: 15px;\n}\n.help-text {\n color: var(--slate);\n font-size: 10pt;\n}\n</style>","<script>\n\nimport ComponentsHierarchy from \"./ComponentsHierarchy.svelte\";\nimport PagesList from \"./PagesList.svelte\"\nimport EditComponent from \"./EditComponent.svelte\";\nimport { store } from \"../builderStore\";\nimport getIcon from \"../common/icon\";\nimport { isComponent } from \"./pagesParsing/searchComponents\";\nimport IconButton from \"../common/IconButton.svelte\";\nimport Modal from \"../common/Modal.svelte\";\nimport NewComponent from \"./NewComponent.svelte\";\nimport CurrentItemPreview from \"./CurrentItemPreview.svelte\";\nimport SettingsView from \"./SettingsView.svelte\";\nimport PageView from \"./PageView.svelte\";\n\nlet newComponentPicker; \nconst newComponent = () => {\n newComponentPicker.show();\n}\n\nlet settingsView;\nconst settings = () => {\n settingsView.show();\n}\n\n</script>\n\n<div class=\"root\">\n \n <div class=\"ui-nav\">\n\n <div class=\"components-list-container\">\n <div class=\"nav-group-header\">\n <div>{@html getIcon(\"sidebar\",\"18\")}</div>\n <span class=\"components-nav-header\">Components</span>\n <div>\n <IconButton icon=\"settings\" \n size=\"14px\"\n on:click={settings}/>\n <IconButton icon=\"plus\" \n on:click={newComponent}/>\n </div>\n </div>\n <div class=\"nav-items-container\">\n <ComponentsHierarchy components={$store.derivedComponents}/>\n </div>\n </div>\n\n <div class=\"pages-list-container\">\n <div class=\"nav-group-header\">\n <div>{@html getIcon(\"grid\",\"18\")}</div>\n <span>Pages</span>\n </div>\n <div class=\"nav-items-container\">\n <PagesList />\n </div>\n </div>\n\n </div>\n\n <div>\n {#if $store.currentFrontEndType === \"component\"}\n <CurrentItemPreview />\n {:else if $store.currentFrontEndType === \"page\"}\n <PageView />\n {/if} \n </div>\n\n {#if $store.currentFrontEndType === \"component\"}\n <div class=\"properties-pane\">\n <EditComponent />\n </div>\n {/if}\n\n</div>\n\n\n<NewComponent bind:this={newComponentPicker}/>\n<SettingsView bind:this={settingsView} />\n\n\n<style>\n\n.root {\n display: grid;\n grid-template-columns: [uiNav] 250px [preview] auto [properties] 300px;\n height: 100%;\n width: 100%;\n overflow-y: auto;\n}\n\n.ui-nav {\n grid-column-start: uiNav;\n background-color: var(--secondary5);\n height: 100%;\n}\n\n.properties-pane {\n grid-column-start: properties;\n background-color: var(--secondary5);\n height: 100%;\n overflow-y: hidden;\n}\n\n.pages-list-container {\n padding-top: 2rem;\n}\n\n.components-nav-header {\n font-size: .9rem;\n}\n\n.nav-group-header {\n font-size: .9rem;\n padding-left: 1rem;\n}\n\n.nav-items-container {\n padding: 1rem 1rem 0rem 1rem;\n}\n\n.nav-group-header {\n display:grid;\n grid-template-columns: [icon] auto [title] 1fr [button] auto;\n padding: 2rem 1rem 0rem 1rem;\n font-size: .9rem;\n font-weight: bold;\n}\n\n.nav-group-header>div:nth-child(1) {\n padding: 0rem .5rem 0rem 0rem;\n vertical-align: bottom;\n grid-column-start: icon;\n margin-right: 5px;\n}\n\n.nav-group-header>span:nth-child(2) {\n margin-left:5px;\n vertical-align: bottom;\n grid-column-start: title;\n margin-top:auto;\n}\n\n.nav-group-header>div:nth-child(3) {\n vertical-align: bottom;\n grid-column-start: button;\n cursor: pointer;\n color: var(--primary75);\n}\n\n.nav-group-header>div:nth-child(3):hover {\n color: var(--primary75); \n}\n\n</style>","<script>\n\nimport {store} from \"../builderStore\";\nimport {cloneDeep} from \"lodash/fp\";\nimport getIcon from \"../common/icon\";\nexport let level = 0;\nexport let node;\nexport let type;\n\nlet navActive = \"\";\n$:icon = type===\"index\" ? \"list\" : \"file\";\n\nstore.subscribe(s => {\n if(s.currentNode)\n navActive = (s.activeNav === \"database\" && node.nodeId === s.currentNode.nodeId \n ? \"active\" : \"\")\n});\n\n</script>\n\n<div class=\"root\">\n <div class=\"title {navActive}\" on:click={() => store.selectExistingNode(node.nodeId)} style=\"padding-left: {20 + (level * 20)}px\">\n {@html getIcon(icon, 12)} <span style=\"margin-left: 1rem\">{node.name}</span>\n </div>\n {#if node.children}\n {#each node.children as child}\n <svelte:self node={child} \n level={level+1}\n type=\"record\"/>\n {/each}\n {/if}\n {#if node.indexes}\n {#each node.indexes as index}\n <svelte:self node={index} \n level={level+1}\n type=\"index\"/>\n {/each}\n {/if}\n</div>\n\n\n<style>\n\n.root { \n display: block;\n font-size: .9rem;\n width: 100%;\n cursor: pointer;\n color: var(--secondary50);\n font-weight: 500;\n}\n\n.title {\n padding-top: .5rem;\n padding-right: .5rem;\n}\n\n.title:hover {\n background-color: var(--secondary10);\n}\n\n.active {\n background-color: var(--primary10);\n}\n\n</style>","<script>\n\nimport getIcon from \"./icon\";\nexport let iconName;\nexport let actions = []; // [ {label: \"Action Name\", onclick: () => {...} } ]\nlet isDroppedDown = false;\n\n</script>\n\n\n<div class=\"root\" on:click={() => isDroppedDown = !isDroppedDown}>\n {@html getIcon(iconName)}\n \n <div class=\"dropdown-background\" on:click|stopPropagation={() => isDroppedDown = false} style=\"display: {isDroppedDown ? 'block' : 'none'}\"></div>\n\n <div class=\"dropdown-content\" style=\"display: {isDroppedDown ? 'inline-block' : 'none'}\">\n {#each actions as action}\n <div class=\"action-row\" on:click={action.onclick}>\n {action.label}\n </div>\n {/each}\n </div>\n \n</div>\n\n\n<style>\n\n.dropdown-background {\n position: fixed;\n top:0;\n left:0;\n width:100vw;\n height:100vh;\n}\n\n.root {\n cursor: pointer;\n z-index: 1;\n}\n\n.dropdown-content {\n position: absolute;\n background-color: var(--white);\n min-width: 160px;\n box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);\n z-index: 1;\n font-weight: normal;\n border-style: solid;\n border-width: 1px;\n border-color: var(--secondary10);\n}\n\n.dropdown-content:not(:focus) {\n display: none;\n}\n\n.action-row {\n padding: 7px 10px;\n cursor:pointer;\n}\n\n.action-row:hover {\n background-color: var(--primary100);\n color:var(--white);\n}\n\n</style>","<script>\n\nimport {store} from \"../builderStore\";\nimport getIcon from \"../common/icon\";\n\nexport let name = \"\";\nexport let label = \"\";\n\nlet navActive = \"\";\n\nstore.subscribe(db => {\n navActive = (db.activeNav === name ? \"active\" : \"\")\n});\n\nconst setActive = () => \n store.setActiveNav(name);\n\n</script>\n\n<div class=\"nav-item {navActive}\" on:click={setActive}>\n {label}\n</div>\n\n\n<style>\n\n.nav-item {\n padding: 1.5rem 1rem 0rem 1rem;\n font-size: .9rem;\n font-weight: bold;\n cursor: pointer;\n flex: 0 0 auto;\n}\n\n.nav-item:hover {\n background-color: var(--primary10);\n}\n\n.active {\n background-color: var(--primary10);\n}\n\n</style>","<script>\n\nimport { store } from \"../builderStore\";\nimport HierarchyRow from \"./HierarchyRow.svelte\";\nimport DropdownButton from \"../common/DropdownButton.svelte\";\nimport {hierarchy as hierarchyFunctions} from \"../../../core/src\";\nimport NavItem from \"./NavItem.svelte\";\nimport getIcon from \"../common/icon\";\n\n\nconst newRootRecord = () => {\n store.newRootRecord();\n}\n\nconst newRootIndex = () => {\n store.newRootIndex();\n}\n\nconst newChildRecord = () => {\n store.newChildRecord();\n}\n\nconst newChildIndex = () => {\n store.newChildIndex();\n}\n\nconst defaultNewChildActions = [\n {\n label:\"New Root Record\", \n onclick: newRootRecord\n },\n {\n label:\"New Root Index\", \n onclick: newRootIndex\n }\n];\n\nlet newChildActions = defaultNewChildActions;\n\nconst setActiveNav = (name) => () => {\n store.setActiveNav(name);\n}\n\nstore.subscribe(db => {\n if(!db.currentNode || hierarchyFunctions.isIndex(db.currentNode)) {\n newChildActions = defaultNewChildActions;\n } else {\n newChildActions = [\n {\n label:\"New Root Record\", \n onclick: newRootRecord\n },\n {\n label:\"New Root Index\", \n onclick: newRootIndex\n },\n {\n label: `New Child Record of ${db.currentNode.name}`, \n onclick: newChildRecord\n },\n {\n label: `New Index on ${db.currentNode.name}`, \n onclick: newChildIndex\n }\n ];\n }\n});\n\n</script>\n\n\n<div class=\"items-root\">\n <div class=\"hierarchy\">\n <div class=\"components-list-container\">\n <div class=\"nav-group-header\">\n <div>{@html getIcon(\"database\",\"18\")}</div>\n <div class=\"hierarchy-title\">Database</div>\n <DropdownButton iconName=\"plus\" actions={newChildActions} />\n </div>\n </div>\n\n <div class=\"hierarchy-items-container\">\n {#each $store.hierarchy.children as record}\n <HierarchyRow node={record}\n type=\"record\" />\n {/each}\n\n {#each $store.hierarchy.indexes as index}\n <HierarchyRow node={index}\n type=\"index\" />\n {/each}\n </div>\n </div>\n\n <NavItem name=\"actions\" label=\"Actions & Triggers\"/>\n <NavItem name=\"access levels\" label=\"User Levels\"/>\n\n</div>\n\n\n<style>\n\n\n.items-root {\n display: flex;\n flex-direction: column;\n max-height: 100%;\n height: 100%;\n background-color: var(--secondary5);\n}\n\n.nav-group-header {\n display:grid;\n grid-template-columns: [icon] auto [title] 1fr [button] auto;\n padding: 2rem 1rem 0rem 1rem;\n font-size: .9rem;\n font-weight: bold;\n}\n\n.nav-group-header>div:nth-child(1) {\n padding: 0rem .7rem 0rem 0rem;\n vertical-align: bottom;\n grid-column-start: icon;\n margin-right: 5px;\n}\n\n.nav-group-header>div:nth-child(2) {\n margin-left:5px;\n vertical-align: bottom;\n grid-column-start: title;\n margin-top:auto;\n}\n\n.nav-group-header>div:nth-child(3) {\n vertical-align: bottom;\n grid-column-start: button;\n cursor: pointer;\n color: var(--primary75);\n}\n\n.nav-group-header>div:nth-child(3):hover {\n color: var(--primary75); \n}\n\n.hierarchy-title {\n flex: auto 1 1;\n}\n\n\n.hierarchy {\n display:flex;\n flex-direction: column;\n flex: 1 0 auto;\n height: 100px;\n}\n\n.hierarchy-items-container {\n flex: 1 1 auto;\n overflow-y:auto;\n}\n\n\n</style>","<script>\n\nexport let value;\nexport let label;\n\nconst inputChanged = ev => {\n try {\n value = Number(ev.target.value);\n } catch(_) {\n value = null;\n }\n}\n\nlet numberText = value === null || value === undefined\n ? \"\" : value.toString();\n\n\n</script>\n\n<div class=\"uk-margin\">\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n <input class=\"uk-input\" value={value} on:change={inputChanged} >\n </div>\n</div>\n\n","<script>\nimport {join} from \"lodash/fp\";\n\nexport let values;\nexport let label;\n\nconst inputChanged = ev => {\n try {\n values = ev.target.value.split(\"\\n\");\n } catch(_) {\n values = [];\n }\n}\n\n$: valuesText = join(\"\\n\")(values);\n\n\n</script>\n\n\n<div class=\"uk-margin\">\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n <textarea value={valuesText} on:change={inputChanged} ></textarea>\n </div>\n</div>\n\n<style>\n\ntextarea {\n width:300px;\n height:200px;\n}\n\n</style>","<script>\nexport let errors = [];\n\n$:hasErrors = errors.length > 0;\n</script>\n\n{#if hasErrors}\n<div class=\"error-container\">\n {#each errors as error}\n <div class=\"error-row\">{error.field ? `${error.field}: ` : \"\"}{error.error}</div>\n {/each}\n</div>\n{/if}\n\n<style>\n\n.error-container {\n padding:10px;\n border-style: solid;\n border-color: var(--deletion100);\n border-radius: var(--borderradiusall);\n background: var(--deletion75);\n}\n\n.error-row {\n padding: 5px 0px;\n}\n\n</style>","/* flatpickr v4.6.2, @license MIT */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.flatpickr = factory());\n}(this, function () { 'use strict';\n\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation. All rights reserved.\r\n Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\n this file except in compliance with the License. You may obtain a copy of the\r\n License at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\n KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\n WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\n MERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\n See the Apache Version 2.0 License for specific language governing permissions\r\n and limitations under the License.\r\n ***************************************************************************** */\r\n\r\n var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n };\n\n var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n ];\n var defaults = {\n _disable: [],\n _enable: [],\n allowInput: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enable: [],\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n // Thursday in current week decides the year.\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n // January 4 is always in week 1.\n var week1 = new Date(date.getFullYear(), 0, 4);\n // Adjust to Thursday in week 1 and count number of weeks from date to week1.\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false\n };\n\n var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ]\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ]\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false\n };\n\n var pad = function (number) { return (\"0\" + number).slice(-2); };\n var int = function (bool) { return (bool === true ? 1 : 0); };\n /* istanbul ignore next */\n function debounce(func, wait, immediate) {\n if (immediate === void 0) { immediate = false; }\n var timeout;\n return function () {\n var context = this, args = arguments;\n timeout !== null && clearTimeout(timeout);\n timeout = window.setTimeout(function () {\n timeout = null;\n if (!immediate)\n func.apply(context, args);\n }, wait);\n if (immediate && !timeout)\n func.apply(context, args);\n };\n }\n var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n };\n\n function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n }\n function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n }\n function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n }\n function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined; // nothing found\n }\n function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n }\n function getEventTarget(event) {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n\n var doNothing = function () { return undefined; };\n var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\n var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n }\n };\n var tokenRegex = {\n D: \"(\\\\w+)\",\n F: \"(\\\\w+)\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"(\\\\w+)\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"(\\\\w+)\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\"\n };\n var formats = {\n // get the date in UTC\n Z: function (date) { return date.toISOString(); },\n // weekday name, short, e.g. Thu\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n // full month name e.g. January\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n // padded hour 1-12\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n // hours with leading zero e.g. 03\n H: function (date) { return pad(date.getHours()); },\n // day (1-30) with ordinal suffix e.g. 1st, 2nd\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n // AM/PM\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n // shorthand month e.g. Jan, Sep, Oct, etc\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n // seconds 00-59\n S: function (date) { return pad(date.getSeconds()); },\n // unix timestamp\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n // full year e.g. 2016\n Y: function (date) { return date.getFullYear(); },\n // day in month, padded (01-30)\n d: function (date) { return pad(date.getDate()); },\n // hour from 1-12 (am/pm)\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n // minutes, padded with leading zero e.g. 09\n i: function (date) { return pad(date.getMinutes()); },\n // day in month (1-30)\n j: function (date) { return date.getDate(); },\n // weekday name, full, e.g. Thursday\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n // padded month number (01-12)\n m: function (date) { return pad(date.getMonth() + 1); },\n // the month number (1-12)\n n: function (date) { return date.getMonth() + 1; },\n // seconds 0-59\n s: function (date) { return date.getSeconds(); },\n // Unix Milliseconds\n u: function (date) { return date.getTime(); },\n // number of the day of the week\n w: function (date) { return date.getDay(); },\n // last two digits of year e.g. 16 for 2016\n y: function (date) { return String(date.getFullYear()).substring(2); }\n };\n\n var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n };\n var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined // timestamp\n )\n // create a copy\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n // date string\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr) // datestrings w/ timezone\n )\n parsedDate = new Date(date);\n else if (config && config.parseDate)\n parsedDate = config.parseDate(date, format);\n else {\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token_1 = format[i];\n var isBackSlash = token_1 === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token_1] && !escaped) {\n regexStr += tokenRegex[token_1];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token_1 !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token_1],\n val: match[++matchIndex]\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\"; // don't really care\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n }\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n /* istanbul ignore next */\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n };\n /**\n * Compute the difference in dates, measured in ms\n */\n function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n }\n var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n };\n var duration = {\n DAY: 86400000\n };\n\n if (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n }\n\n var DEBOUNCED_CHANGE_MS = 300;\n function FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign({}, defaults, flatpickr.defaultConfig),\n l10n: english\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self._createElement = createElement;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n }\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar\n ? self.latestSelectedDateObj || self.config.minDate\n : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n self.showTimeInput =\n self.selectedDates.length > 0 || self.config.noCalendar;\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n /* TODO: investigate this further\n \n Currently, there is weird positioning behavior in safari causing pages\n to scroll up. https://github.com/chmln/flatpickr/issues/563\n \n However, most browsers are not Safari and positioning is expensive when used\n in scale. https://github.com/chmln/flatpickr/issues/1096\n */\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1)\n return;\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n /**\n * The handler for all events targeting the time inputs\n */\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n /**\n * Syncs the selected date object time with user's time input\n */\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours())\n minutes = Math.max(minutes, minTime.getMinutes());\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Syncs time input values with a date\n */\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date)\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n function setDefaultHours() {\n var hours = self.config.defaultHour;\n var minutes = self.config.defaultMinute;\n var seconds = self.config.defaultSeconds;\n if (self.config.minDate !== undefined) {\n var minHr = self.config.minDate.getHours();\n var minMinutes = self.config.minDate.getMinutes();\n hours = Math.max(hours, minHr);\n if (hours === minHr)\n minutes = Math.max(minMinutes, minutes);\n if (hours === minHr && minutes === minMinutes)\n seconds = self.config.minDate.getSeconds();\n }\n if (self.config.maxDate !== undefined) {\n var maxHr = self.config.maxDate.getHours();\n var maxMinutes = self.config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = self.config.maxDate.getSeconds();\n }\n setHours(hours, minutes, seconds);\n }\n /**\n * Sets the hours, minutes, and optionally seconds\n * of the latest selected date object and the\n * corresponding time inputs\n * @param {Number} hours the hour. whether its military\n * or am-pm gets inferred from config\n * @param {Number} minutes the minutes\n * @param {Number} seconds the seconds (optional)\n */\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n /**\n * Handles the year input and incrementing events\n * @param {Event} event the keyup or increment event\n */\n function onYearInput(event) {\n var year = parseInt(event.target.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n /**\n * Essentially addEventListener + tracking\n * @param {Element} element the element to addEventListener to\n * @param {String} event the event name\n * @param {Function} handler the event handler\n */\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n element: element,\n event: event,\n handler: handler,\n options: options\n });\n }\n /**\n * A mousedown handler which mimics click.\n * Minimizes latency, since we don't need to wait for mouseup in most cases.\n * Also, avoids handling right clicks.\n *\n * @param {Function} handler the event handler\n */\n function onClick(handler) {\n return function (evt) {\n evt.which === 1 && handler(evt);\n };\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n /**\n * Adds all the necessary event listeners\n */\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(e.target);\n });\n bind(window.document.body, \"keydown\", onKeyDown);\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", onClick(documentClick));\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"mousedown\", onClick(self.open));\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"mousedown\", onClick(onMonthNavClick));\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"mousedown\", onClick(selectDate));\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return e.target.select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"mousedown\", onClick(timeIncrement));\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"mousedown\", onClick(function (e) {\n updateTime(e);\n triggerChange();\n }));\n }\n }\n }\n /**\n * Set the calendar view to a particular date.\n * @param {Date} jumpDate the date to set the view to\n * @param {boolean} triggerChange if change events should be triggered\n */\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n /* istanbul ignore next */\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n /**\n * The up/down arrow handler for time inputs\n * @param {Event} e the click event\n */\n function timeIncrement(e) {\n if (~e.target.className.indexOf(\"arrow\"))\n incrementNumInput(e, e.target.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n /**\n * Increments/decrements the value of input associ-\n * ated with the up/down arrow by dispatching an\n * \"increment\" event on the input.\n *\n * @param {Event} e the click event\n * @param {Number} delta the diff (usually 1 or -1)\n * @param {Element} inputElem the input element\n */\n function incrementNumInput(e, delta, inputElem) {\n var target = e && e.target;\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", \"flatpickr-day \" + className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n dayNumber % 7 === 1) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var dayFocused = isInView(document.activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? document.activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined)\n return self._input.focus();\n if (!dayFocused)\n return focusOnDayElem(startElem);\n getNextAvailableDay(startElem, offset);\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);\n var daysInMonth = self.utils.getDaysInMonth(month), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n // prepend days from the ending of previous month\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n // Start at 1 since there is no 0th day\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n // append days from the next month\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n //updateNavigationCurrentMonth();\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n // TODO: week numbers for each month\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = e.target;\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n }\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n }\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? self.config.defaultHour\n : military2ampm(self.config.defaultHour));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : self.config.defaultMinute);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : self.config.defaultSeconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n // add self.amPM if appropriate\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = self.l10n.weekdays.shorthand.slice();\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n <span class='flatpickr-weekday'>\\n \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n </span>\\n \";\n }\n }\n /* istanbul ignore next */\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n self.showTimeInput = false;\n if (self.config.enableTime === true) {\n setDefaultHours();\n }\n self.redraw();\n if (triggerChangeEvent)\n // triggerChangeEvent is true (default) or an Event\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n var h = self._handlers[i];\n h.element.removeEventListener(h.event, h.handler, h.options);\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n self.input.value = \"\";\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n if (self.config.appendTo && self.config.appendTo.contains(elem))\n return true;\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n // web components\n // e.path is not present in all browsers. circumventing typechecks\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = e.type === \"blur\"\n ? isInput &&\n e.relatedTarget &&\n !isCalendarElem(e.relatedTarget)\n : !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n self.close();\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n self.clear(false);\n self.redraw();\n }\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless); // timeless\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (self.config.enable.length === 0 && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck) // disabled by function\n )\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n // disabled by date\n return bool;\n else if (typeof d === \"string\" && dateToCheck !== undefined) {\n // disabled by date string\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (\n // disabled by range\n typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onKeyDown(e) {\n // e.key e.keyCode\n // \"Backspace\" 8\n // \"Tab\" 9\n // \"Enter\" 13\n // \"Escape\" (IE \"Esc\") 27\n // \"ArrowLeft\" (IE \"Left\") 37\n // \"ArrowUp\" (IE \"Up\") 38\n // \"ArrowRight\" (IE \"Right\") 39\n // \"ArrowDown\" (IE \"Down\") 40\n // \"Delete\" (IE \"Del\") 46\n var isInput = e.target === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n return e.target.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(e.target) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(e.target);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27: // escape\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (document.activeElement && isInView(document.activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer && e.target.$i !== undefined) ||\n e.target === self.input) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (e.target === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(e.target);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(e.target) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && e.target === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(e.target)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem) {\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(\"flatpickr-day\") ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n for (var m = 0; m < self.config.showMonths; m++) {\n var month = self.daysContainer.children[m];\n var _loop_1 = function (i, l) {\n var dayElem = month.children[i], date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return \"continue\";\n }\n else if (containsDisabled && !outOfRange)\n return \"continue\";\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n };\n for (var i = 0, l = month.children.length; i < l; i++) {\n _loop_1(i, l);\n }\n }\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function setDefaultTime() {\n self.setDate(self.config.minDate !== undefined\n ? new Date(self.config.minDate.getTime())\n : new Date(), true);\n setDefaultHours();\n updateValue();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n e.target && e.target.blur();\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n if (self._input.disabled || self.config.inline)\n return;\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.selectedDates.length === 0) {\n setDefaultTime();\n }\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n }\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n }\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n self.input.className + \" \" + self.config.altInputClass;\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\")\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\")\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\")\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable.length &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n triggerEvent(\"onParseConfig\");\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign({}, flatpickr.l10ns[\"default\"], (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset +\n inputBounds.left -\n (configPosHorizontal != null && configPosHorizontal === \"center\"\n ? (calendarWidth - inputBounds.width) / 2\n : 0);\n var right = window.document.body.offsetWidth - inputBounds.right;\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = document.styleSheets[0];\n // some testing environments don't have css support\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n // hack - bugs in the way IE handles focus keeps the calendar open\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(e.target, isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n // unless selecting same date twice, sort ascendingly\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (self.config.enableTime)\n setTimeout(function () { return (self.showTimeInput = true); }, 50);\n // maintain focus\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate]\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(false);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.showTimeInput = self.selectedDates.length > 0;\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate();\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined)\n };\n return rule;\n })\n .filter(function (x) { return x; }); // remove falsy values\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n // Workaround IE11 setting placeholder as the input's value\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n Object.defineProperty(self, \"showTimeInput\", {\n get: function () { return self._showTimeInput; },\n set: function (bool) {\n self._showTimeInput = bool;\n if (self.calendarContainer)\n toggleClass(self.calendarContainer, \"showTimeInput\", bool);\n self.isOpen && positionCalendar();\n }\n });\n }\n function setupInputs() {\n self.input = self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n /* istanbul ignore next */\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n // hack: store previous type to restore it after destroy()\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n // replicate self.element\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.step = self.input.getAttribute(\"step\") || \"any\";\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(e.target.value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n // If the instance has been destroyed already, all hooks have been removed\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n // many front-end frameworks bind to the input event\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n if (compareDates(self.selectedDates[i], date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(format) {\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n /**\n * Updates the values of inputs associated with the calendar\n */\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var isPrevMonth = self.prevMonthNav.contains(e.target);\n var isNextMonth = self.nextMonthNav.contains(e.target);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(e.target) >= 0) {\n e.target.select();\n }\n else if (e.target.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (e.target.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", input = e.target;\n if (self.amPM !== undefined && e.target === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n }\n /* istanbul ignore next */\n function _flatpickr(nodeList, config) {\n // static list\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n }\n /* istanbul ignore next */\n if (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n // browser env\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n }\n /* istanbul ignore next */\n var flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n };\n /* istanbul ignore next */\n flatpickr.defaultConfig = {};\n flatpickr.l10ns = {\n en: __assign({}, english),\n \"default\": __assign({}, english)\n };\n flatpickr.localize = function (l10n) {\n flatpickr.l10ns[\"default\"] = __assign({}, flatpickr.l10ns[\"default\"], l10n);\n };\n flatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);\n };\n flatpickr.parseDate = createDateParser({});\n flatpickr.formatDate = createDateFormatter({});\n flatpickr.compareDates = compareDates;\n /* istanbul ignore next */\n if (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n }\n // eslint-disable-next-line @typescript-eslint/camelcase\n Date.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n };\n if (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n }\n\n return flatpickr;\n\n}));\n","<script>\n\nimport flatpickr from \"flatpickr\";\nimport \"flatpickr/dist/flatpickr.css\";\nimport { onMount } from 'svelte';\n\nexport let value;\nexport let label;\nexport let width = \"medium\";\nexport let size = \"small\";\n\nlet input;\nlet fpInstance;\n\n$: if (fpInstance) fpInstance.setDate(value);\n\nonMount(() => {\n fpInstance = flatpickr(input, {});\n\n fpInstance.config.onChange.push(selectedDates => {\n if(selectedDates.length > 0)\n value = new Date(selectedDates[0]);\n });\n\n return fpInstance;\n})\n\n</script>\n\n<div class=\"uk-margin\">\n <label class=\"uk-form-label\">{label}</label>\n <div class=\"uk-form-controls\">\n <input class=\"uk-input uk-form-width-{width} uk-form-{size}\" bind:this={input} >\n </div>\n</div>\n\n","<script>\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport NumberBox from \"../common/NumberBox.svelte\";\nimport ValuesList from \"../common/ValuesList.svelte\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\nimport Checkbox from \"../common/Checkbox.svelte\";\nimport DatePicker from \"../common/DatePicker.svelte\";\nimport {cloneDeep, assign, keys, \n isNumber, includes, map, isBoolean} from \"lodash/fp\";\nimport {allTypes, validate, getPotentialReferenceIndexes,\n getDefaultTypeOptions, getNode,\n getPotentialReverseReferenceIndexes} from \"../common/core\";\n\nexport let field;\nexport let allFields;\nexport let onFinished = () => {};\nexport let store;\n\nlet errors = [];\nlet clonedField = cloneDeep(field);\n\n$: isNew = !!field && field.name.length === 0;\n\n$: possibleReferenceIndexes = getPotentialReferenceIndexes(\n store.hierarchy, store.currentNode\n);\n\n$: selectedReverseRefIndex = \n !clonedField.typeOptions.indexNodeKey \n ? \"\"\n : getNode(store.hierarchy, clonedField.typeOptions.indexNodeKey);\n\n$: possibleReverseReferenceIndexes = \n !selectedReverseRefIndex \n ? []\n : getPotentialReverseReferenceIndexes(\n store.hierarchy, selectedReverseRefIndex);\n\nconst typeChanged = (ev) => \n clonedField.typeOptions = getDefaultTypeOptions(ev.detail);\n\n\nconst save = () => {\n\n errors = validate.field(allFields)(clonedField);\n if(errors.length > 0) return;\n field.typeOptions = cloneDeep(clonedField.typeOptions);\n onFinished(\n assign(field)(clonedField)\n );\n}\n\n</script>\n\n<div class=\"root\">\n\n <ErrorsBox errors={errors} />\n\n <form class=\"uk-form-horizontal\">\n\n <Dropdown label=\"Type\" bind:selected={clonedField.type} options={keys(allTypes)} on:change={typeChanged} />\n\n {#if isNew}\n <Textbox label=\"Field Name\" bind:text={clonedField.name} />\n {:else}\n <div style=\"font-weight: bold\">{clonedField.name}</div>\n {/if}\n\n <Textbox label=\"Label\" bind:text={clonedField.label} />\n \n {#if clonedField.type === \"string\"}\n <NumberBox label=\"Max Length\" bind:value={clonedField.typeOptions.maxLength} />\n <ValuesList label=\"Values (options)\" bind:values={clonedField.typeOptions.values} />\n <Checkbox label=\"Declared Values Only\" bind:checked={clonedField.typeOptions.allowDeclaredValuesOnly} />\n {:else if clonedField.type === \"bool\"}\n <Checkbox label=\"Allow Null\" bind:checked={clonedField.typeOptions.allowNulls} />\n {:else if clonedField.type === \"datetime\"}\n <DatePicker label=\"Min Value\" bind:value={clonedField.typeOptions.minValue} />\n <DatePicker label=\"Max Value\" bind:value={clonedField.typeOptions.maxValue} />\n {:else if clonedField.type === \"number\"}\n <NumberBox label=\"Min Value\" bind:value={clonedField.typeOptions.minValue} />\n <NumberBox label=\"Max Value\" bind:value={clonedField.typeOptions.maxValue} />\n <NumberBox label=\"Decimal Places\" bind:value={clonedField.typeOptions.decimalPlaces} />\n {:else if clonedField.type === \"reference\"}\n <Dropdown label=\"Lookup Index\" \n options={possibleReferenceIndexes} \n valueMember={n => n.nodeKey()}\n textMember={n => n.name}\n bind:selected={clonedField.typeOptions.indexNodeKey} />\n\n <Dropdown label=\"Reverse Reference Index\" \n options={possibleReverseReferenceIndexes} \n multiple=true\n valueMember={n => n.nodeKey()}\n textMember={n => n.name}\n bind:selected={clonedField.typeOptions.reverseIndexNodeKeys} />\n\n <Textbox label=\"Display Value\" bind:text={clonedField.typeOptions.displayValue} />\n\n {:else if clonedField.type.startsWith(\"array\")}\n <NumberBox label=\"Min Length\" bind:value={clonedField.typeOptions.minLength} />\n <NumberBox label=\"Max Length\" bind:value={clonedField.typeOptions.maxLength} />\n {/if}\n\n </form>\n\n <ButtonGroup style=\"float: right;\">\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\n <Button color=\"tertiary\" grouped on:click={() => onFinished(false)}>Cancel</Button>\n </ButtonGroup>\n\n</div>\n\n<style>\n\n\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport getIcon from \"../common/icon\";\nimport FieldView from \"./FieldView.svelte\";\nimport Modal from \"../common/Modal.svelte\";\nimport {map, join, filter, some, \n find, keys, isDate} from \"lodash/fp\";\nimport { store } from \"../builderStore\";\nimport {common, hierarchy as h} from \"../../../core/src\";\nimport {templateApi, pipe, validate} from \"../common/core\";\n\nlet record;\nlet getIndexAllowedRecords;\nlet editingField = false;\nlet fieldToEdit;\nlet isNewField = false;\nlet newField;\nlet editField;\nlet deleteField;\nlet onFinishedFieldEdit;\nlet editIndex;\n\nstore.subscribe($store => {\n record = $store.currentNode;\n const flattened = h.getFlattenedHierarchy($store.hierarchy);\n getIndexAllowedRecords = index => \n pipe(index.allowedRecordNodeIds, [\n filter(id => some(n => n.nodeId === id)(flattened)),\n map(id => find(n => n.nodeId === id)\n (flattened).name),\n join(\", \")\n ]);\n\n newField = () => {\n isNewField = true;\n fieldToEdit = templateApi($store.hierarchy).getNewField(\"string\");\n editingField = true;\n }\n\n onFinishedFieldEdit = (field) => {\n if(field) {\n store.saveField(field);\n }\n editingField = false;\n }\n\n editField = (field) => {\n isNewField = false;\n fieldToEdit = field;\n editingField = true;\n }\n\n deleteField = (field) => {\n store.deleteField(field);\n }\n\n editIndex = index => {\n store.selectExistingNode(index.nodeId);\n }\n\n})\n\nlet getTypeOptionsValueText = value => {\n if(value === Number.MAX_SAFE_INTEGER\n || value === Number.MIN_SAFE_INTEGER\n || new Date(value).getTime() === new Date(8640000000000000).getTime()\n || new Date(value).getTime() === new Date(-8640000000000000).getTime()) return \"(any)\";\n \n if(value === null) return \"(not set)\";\n return value;\n}\n\nlet getTypeOptions = typeOptions => \n pipe(typeOptions, [\n keys,\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${getTypeOptionsValueText(typeOptions[k])}`),\n join(\"<br>\")\n ]);\n\nconst nameChanged = ev => {\n const pluralName = n => `${n}s`;\n if(record.collectionName === \"\") {\n record.collectionName = pluralName(ev.target.value);\n }\n}\n\n</script>\n\n<div class=\"root\">\n\n <form class=\"uk-form-horizontal\">\n <h3 class=\"settings-title\">\n Settings \n </h3>\n \n <Textbox label=\"Name:\" bind:text={record.name} on:change={nameChanged}/>\n {#if !record.isSingle}\n <Textbox label=\"Collection Name:\" bind:text={record.collectionName} />\n <Textbox label=\"Shard Factor:\" bind:text={record.allidsShardFactor} />\n {/if}\n <div class=\"recordkey\">{record.nodeKey()}</div>\n\n </form>\n <h3 class=\"title\">\n Fields <span class=\"add-field-button\" on:click={newField}>{@html getIcon(\"plus\")}</span>\n </h3>\n\n {#if record.fields.length > 0}\n <table class=\"fields-table uk-table\">\n <thead>\n <tr>\n <th>Name</th>\n <th>Type</th>\n <th>Options</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {#each record.fields as field}\n <tr>\n <td >\n <div class=\"field-label\">{field.label}</div>\n <div style=\"font-size: 0.8em; color: var(--slate)\">{field.name}</div>\n </td>\n <td >{field.type}</td>\n <td >{@html getTypeOptions(field.typeOptions)}</td>\n <td>\n <span class=\"edit-button\" on:click={() => editField(field)}>{@html getIcon(\"edit\")}</span>\n <span class=\"edit-button\" on:click={() => deleteField(field)}>{@html getIcon(\"trash\")}</span>\n </td>\n </tr>\n {/each}\n </tbody>\n </table>\n {:else}\n (no fields added)\n {/if}\n\n {#if editingField}\n <Modal bind:isOpen={editingField}>\n <FieldView field={fieldToEdit} \n onFinished={onFinishedFieldEdit}\n allFields={record.fields} \n store={$store}/>\n </Modal>\n {/if}\n\n <h3 class=\"title\">\n Indexes \n </h3>\n\n {#each record.indexes as index}\n <div class=\"index-container\">\n <div class=\"index-name\">\n {index.name}\n <span style=\"margin-left: 7px\" on:click={() => editIndex(index)}>{@html getIcon(\"edit\")}</span>\n </div>\n <div class=\"index-field-row\">\n <span class=\"index-label\">records indexed: </span> \n <span>{getIndexAllowedRecords(index)}</span>\n <span class=\"index-label\" style=\"margin-left: 15px\">type:</span> \n <span>{index.indexType}</span>\n </div>\n <div class=\"index-field-row\">\n <span class=\"index-label\">map:</span>\n <code class=\"index-mapfilter\">{index.map}</code>\n </div>\n {#if index.filter}\n <div class=\"index-field-row\">\n <span class=\"index-label\">filter:</span>\n <code class=\"index-mapfilter\">{index.filter}</code>\n </div>\n {/if}\n </div>\n {:else}\n <div class=\"no-indexes\">\n No indexes added.\n </div>\n {/each}\n\n</div>\n\n\n<style>\n\n.root {\n height: 100%;\n padding: 2rem;\n}\n\n.settings-title {\n font-weight: 700;\n}\n\n.title {\n margin: 3rem 0rem 0rem 0rem;\n font-weight: 700;\n}\n\n.recordkey {\n font-size: 14px;\n font-weight: 600;\n color: var(--primary100);\n}\n\n.fields-table {\n margin: 1rem 1rem 0rem 0rem;\n border-collapse:collapse;\n}\n\n.add-field-button {\n cursor:pointer;\n}\n\n.edit-button {\n cursor:pointer;\n color: var(--secondary25);\n}\n\n.edit-button:hover {\n cursor:pointer;\n color: var(--secondary75);\n}\n\nth {\n text-align: left; \n}\n\ntd {\n padding: 1rem 5rem 1rem 0rem;\n margin:0;\n font-size: 14px;\n font-weight: 500;\n\n}\n\n.field-label {\n font-size: 14px;\n font-weight: 500;\n}\n\nthead > tr {\n border-width: 0px 0px 1px 0px;\n border-style: solid;\n border-color: var(--secondary75);\n margin-bottom: 20px;\n}\n\ntbody > tr {\n border-width: 0px 0px 1px 0px;\n border-style: solid;\n border-color: var(--primary10);\n}\n\ntbody > tr:hover {\n background-color: var(--primary10);\n}\n\ntbody > tr:hover .edit-button {\n color: var(--secondary75);\n}\n\n.index-container {\n border-style: solid;\n border-width: 0 0 1px 0;\n border-color: var(--secondary25);\n padding: 10px;\n margin-bottom: 5px;\n}\n\n.index-label {\n color: var(--slate);\n}\n\n.index-name {\n font-weight: bold;\n color: var(--primary100);\n}\n\n.index-container code {\n margin: 0;\n display: inline;\n background-color: var(--primary10);\n color: var(--secondary100);\n padding:3px;\n}\n\n.index-field-row {\n margin: 1rem 0rem 0rem 0rem;\n}\n\n.no-indexes {\n margin: 1rem 0rem 0rem 0rem;\n font-family: var(--fontnormal);\n font-size: 14px;\n}\n</style>","<script>\n// todo: use https://ace.c9.io\nexport let text = \"\";\nexport let label = \"\";\n</script>\n\n<div>{label}</div>\n<textarea class=\"uk-textarea\" bind:value={text}></textarea>\n\n<style>\n\ntextarea {\n padding:3px;\n margin-top:5px;\n margin-bottom:10px;\n background: var(--lightslate);\n color: var(--white);\n font-family: 'Courier New', Courier, monospace;\n width:95%;\n height:100px;\n border-radius: 5px;\n}\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport CodeArea from \"../common/CodeArea.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport {store} from \"../builderStore\";\nimport {filter, some, map} from \"lodash/fp\";\nimport {hierarchy as hierarchyFunctions, common} from \"../../../core/src\";\n\nconst pipe = common.$;\n\nlet index;\nlet indexableRecords = [];\n\nstore.subscribe($store => {\n index = $store.currentNode;\n indexableRecords = pipe($store.hierarchy,[\n hierarchyFunctions.getFlattenedHierarchy,\n filter(hierarchyFunctions.isDecendant(index.parent())),\n filter(hierarchyFunctions.isRecord),\n map(n => ({\n node:n,\n isallowed: some(id => n.nodeId === id)(index.allowedRecordNodeIds)\n }))\n ]);\n});\n\nconst toggleAllowedRecord = record => {\n if(record.isallowed) {\n index.allowedRecordNodeIds = filter(id => id !== record.node.nodeId)\n (index.allowedRecordNodeIds);\n } else {\n index.allowedRecordNodeIds.push(record.node.nodeId);\n }\n};\n\n</script>\n\n<form class=\"uk-form-horizontal root\">\n <Textbox bind:text={index.name} label=\"Name\"/>\n \n <div class=\"allowed-records\">\n <div>Records to Index</div>\n {#each indexableRecords as rec}\n <input type=\"checkbox\" checked={rec.isallowed} on:change={() => toggleAllowedRecord(rec)}/>\n <span>{rec.node.name}</span>\n {/each}\n </div>\n\n\n <Dropdown label=\"Index Type\" bind:selected={index.indexType} options={[\"ancestor\", \"reference\"]} />\n\n <CodeArea bind:text={index.map} label=\"Map (javascript)\"/>\n <CodeArea bind:text={index.filter} label=\"Filter (javascript expression)\"/>\n <CodeArea bind:text={index.getShardName} label=\"Shard Name (javascript expression)\"/>\n\n \n</form>\n\n<style>\n\n.root {\n height: 100%;\n padding: 15px;\n}\n\n.allowed-records {\n margin: 20px 0px;\n}\n\n.allowed-records > span {\n margin-right:30px;\n}\n\n</style>","<script>\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport {store} from \"../builderStore\";\nimport Modal from \"../common/Modal.svelte\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\n\nexport let left;\nlet confirmDelete = false;\nconst openConfirmDelete = () => {\n confirmDelete = true;\n}\n\nconst deleteCurrentNode = () => {\n confirmDelete = false;\n store.deleteCurrentNode();\n}\n\n</script>\n\n<div class=\"root\" style=\"left: {left}\">\n\n <ButtonGroup>\n <Button color=\"secondary\" grouped on:click={store.saveCurrentNode}>\n {#if $store.currentNodeIsNew}\n Create\n {:else}\n Update\n {/if}\n </Button>\n\n {#if !$store.currentNodeIsNew}\n <Button color=\"tertiary\" grouped on:click={openConfirmDelete}>\n Delete\n </Button>\n {/if}\n </ButtonGroup>\n\n {#if !!$store.errors && $store.errors.length > 0}\n <div style=\"width: 500px\">\n <ErrorsBox errors={$store.errors}/>\n </div>\n {/if}\n \n <Modal bind:isOpen={confirmDelete}>\n <div style=\"margin: 10px 0px 20px 0px\">Are you sure you want to delete {$store.currentNode.name} ?</div>\n <div style=\"float:right\">\n <Button color=\"primary\" on:click={deleteCurrentNode}>Yes</Button>\n <Button color=\"secondary\" on:click={() => confirmDelete = false}>No</Button>\n </div>\n </Modal>\n</div>\n\n<style>\n\n.root {\n padding: 1.5rem;\n width: 100%;\n align-items: right;\n }\n\n</style>","<script>\n\nimport HierarchyRow from \"./HierarchyRow.svelte\";\nimport RecordView from \"./RecordView.svelte\";\nimport IndexView from \"./IndexView.svelte\";\nimport ActionsHeader from \"./ActionsHeader.svelte\";\nimport {store} from \"../builderStore\";\nimport getIcon from \"../common/icon\";\nimport DropdownButton from \"../common/DropdownButton.svelte\";\nimport {hierarchy as hierarchyFunctions} from \"../../../core/src\";\n\nconst hierarchyWidth = \"200px\";\n\nconst defaultNewIndexActions = [{\n label:\"New Root Index\", \n onclick: store.newRootIndex\n}];\n\nconst defaultNewRecordActions = [{\n label:\"New Root Record\", \n onclick: store.newRootRecord\n}];\n\nlet newIndexActions = defaultNewIndexActions;\nlet newRecordActions = defaultNewRecordActions;\n\nstore.subscribe(db => {\n if(!db.currentNode || hierarchyFunctions.isIndex(db.currentNode)) {\n newRecordActions = defaultNewRecordActions;\n newIndexActions = defaultNewIndexActions;\n } else {\n newRecordActions = [\n ...defaultNewRecordActions,\n {label: `New Child Record of ${db.currentNode.name}`, \n onclick: store.newChildRecord}\n ];\n\n newIndexActions = [\n ...defaultNewIndexActions,\n {label: `New Index on ${db.currentNode.name}`, \n onclick: store.newChildIndex}\n ];\n }\n});\n\n\n</script>\n\n<div class=\"root\">\n <div class=\"actions-header\">\n {#if $store.currentNode}\n <ActionsHeader left={hierarchyWidth}/>\n {/if}\n </div>\n <div class=\"node-view\">\n {#if !$store.currentNode}\n <h1 style=\"margin-left: 100px\">:)</h1>\n {:else if $store.currentNode.type === \"record\"}\n <RecordView />\n {:else}\n <IndexView />\n {/if}\n </div>\n</div>\n\n\n<style>\n.root {\n height: 100%;\n position: relative;\n}\n\n.actions-header {\n flex: 0 1 auto;\n}\n\n.node-view {\n overflow-y: auto;\n flex: 1 1 auto;\n}\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport {cloneDeep, filter, keys,\nmap, isUndefined} from \"lodash/fp\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\nimport {validateActions, pipe} from \"../common/core\";\nimport getIcon from \"../common/icon\";\n\nexport let action;\nexport let onFinished = (action) => {};\nexport let allActions;\nexport let isNew = true;\n\nlet optKey = \"\";\nlet optValue = \"\";\n\nlet clonedAction = cloneDeep(action); \nlet initialOptions = pipe(action.initialOptions, [\n keys,\n map(k => ({key:k, value:action.initialOptions[k]}))\n]);\nlet errors = [];\n\nconst addNewOption = () => {\n\n if(optKey && optValue && isUndefined(clonedAction.initialOptions[optKey])) {\n clonedAction.initialOptions[optKey] = optValue;\n initialOptions = [...initialOptions, {\n key:optKey, value: optValue\n }];\n optKey = \"\";\n optValue = \"\";\n }\n}\n\nconst removeOption = (opt) => {\n if(opt) {\n delete clonedAction.initialOptions[opt.key]\n initialOptions = pipe(initialOptions, [\n filter(o => o.key !== opt.key)\n ]);\n }\n}\n\nconst save = () => {\n\n const newActionsList = [\n ...pipe(allActions ,[filter(a => a !== action)]),\n clonedAction]\n\n errors = pipe(newActionsList ,[\n validateActions,\n map(e => e.error)\n ]);\n\n if(errors.length === 0)\n onFinished(clonedAction);\n}\n\nconst cancel = () => {\n onFinished();\n}\n\n</script>\n\n<div class=\"root\">\n\n <ErrorsBox {errors} />\n\n <form class=\"uk-form-horizontal\">\n\n <Textbox label=\"Name\" bind:text={clonedAction.name} />\n <Textbox label=\"Behaviour Source\" bind:text={clonedAction.behaviourSource} />\n <Textbox label=\"Behaviour\" bind:text={clonedAction.behaviourName} />\n\n </form>\n\n <div class=\" uk-form-stacked\" style=\"margin-bottom: 20px\">\n <label class=\"uk-form-label\">Default Options</label>\n <div class=\"uk-grid-small\" uk-grid>\n <input class=\"uk-input uk-width-1-4 uk-margin-right\" placeholder=\"key\" bind:value={optKey} > \n <input class=\"uk-input uk-width-1-4 uk-margin-right\" placeholder=\"value\" bind:value={optValue} > \n <Button color=\"primary-outline uk-width-1-4\" on:click={addNewOption}>Add</Button>\n </div>\n <div style=\"margin-top: 10px\">\n {#each initialOptions as option}\n <span class=\"option-container\">{option.key} : {option.value} <span style=\"font-size:10pt; cursor: pointer\" on:click={() => removeOption(option)}>{@html getIcon(\"trash-2\")}</span></span>\n {/each}\n </div>\n </div>\n\n <ButtonGroup>\n <Button color=\"secondary\" grouped on:click={save}>Save</Button>\n <Button color=\"tertiary\" grouped on:click={cancel}>Cancel</Button>\n </ButtonGroup>\n\n \n</div>\n\n\n<style>\n\n.root {\n padding: 2rem;\n border-radius: 2rem;\n}\n\n.uk-grid-small {\n padding: 1rem;\n}\n\n.option-container {\n border-style: dotted;\n border-width: 1px;\n border-color: var(--primary75);\n padding: 3px;\n margin-right: 5px;\n}\n\n</style>","<script>\n\nimport getIcon from \"../common/icon\";\nimport {store} from \"../builderStore\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport ActionView from \"./ActionView.svelte\";\nimport Modal from \"../common/Modal.svelte\";\nimport {pipe} from \"../common/core\";\nimport {keys, map, join} from \"lodash/fp\";\n\nexport let editingActionIsNew = false;\nexport let editingAction = null;\nexport let onActionEdit = (action) => {};\nexport let onActionDelete = (action) => {};\nexport let onActionSave = (action) => {};\nexport let onActionCancel = () => {};\n\n$: isEditing = (editingAction !== null); \n\nlet actionsArray = [];\nstore.subscribe(s => {\n actionsArray = pipe(s.actions, [\n keys,\n map(k => s.actions[k])\n ]);\n});\n\nlet getDefaultOptionsHtml = defaultOptions => \n pipe(defaultOptions, [\n keys,\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${JSON.stringify(defaultOptions[k])}`),\n join(\"<br>\")\n ]);\n\n\nlet actionEditingFinished = (action) => {\n \n if(action) {\n onActionSave(action)\n } else {\n onActionCancel();\n }\n}\n\n</script>\n\n<h3 class=\"title\">Actions</h3>\n\n{#if actionsArray}\n<table class=\"fields-table uk-table uk-table-small uk-table-striped\">\n <thead>\n <tr>\n <th >Description</th>\n <th>Behaviour Source</th>\n <th>Behaviour Name</th>\n <th>Default Options</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {#each actionsArray as action}\n <tr>\n <td class=\"table-content\">{action.name}</td>\n <td class=\"table-content\">{action.behaviourSource}</td>\n <td class=\"table-content\">{action.behaviourName}</td>\n <td class=\"table-content\">{@html getDefaultOptionsHtml(action.initialOptions)}</td>\n <td class=\"edit-button\">\n <span on:click={() => onActionEdit(action)}>{@html getIcon(\"edit\")}</span>\n <span on:click={() => onActionDelete(action)}>{@html getIcon(\"trash\")}</span>\n </td>\n </tr>\n {/each}\n </tbody>\n</table>\n{:else}\n(no actions added)\n{/if}\n\n\n<Modal bind:isOpen={isEditing}>\n {#if isEditing}\n <ActionView action={editingAction}\n allActions={$store.actions}\n onFinished={actionEditingFinished}\n isNew={editingActionIsNew}/>\n {/if} \n</Modal>\n\n\n<style>\n\n.edit-button {\n cursor:pointer;\n color: var(--secondary25);\n}\n\ntr:hover .edit-button {\n color: var(--secondary75);\n}\n\n.title {\n margin: 3rem 0rem 0rem 0rem;\n font-weight: 700;\n}\n\n.table-content {\n font-weight: 500;\n font-size: .9rem;\n}\n\n</style>","<script>\n\nimport Textbox from \"../common/Textbox.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport Dropdown from \"../common/Dropdown.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport CodeArea from \"../common/CodeArea.svelte\";\nimport {cloneDeep, filter, keys, some,\nmap, isUndefined} from \"lodash/fp\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\nimport {validateTriggers, pipe, events} from \"../common/core\";\nimport getIcon from \"../common/icon\";\n\nexport let trigger;\nexport let onFinished = (action) => {};\nexport let allTriggers;\nexport let allActions;\nexport let isNew = true;\n\nlet clonedTrigger = cloneDeep(trigger); \nlet errors = [];\n$: actionNames = map(a => a.name)(allActions);\n\nlet cancel = () => onFinished();\nlet save = () => {\n const newTriggersList = [\n ...pipe(allTriggers ,[filter(t => t !== trigger)]),\n clonedTrigger]\n\n errors = validateTriggers(newTriggersList, allActions);\n\n const test = map(t =>(!t.actionName || some(a => a.name === t.actionName)(allActions)))(newTriggersList)\n\n if(errors.length === 0)\n onFinished(clonedTrigger);\n}\n\n</script>\n\n<div>\n\n <ErrorsBox {errors} style=\"margin-bottom:20px\"/>\n\n <form class=\"uk-form-horizontal\">\n \n <Dropdown label=\"Event\" \n options={[\"\",...events]}\n bind:selected={clonedTrigger.eventName} />\n <Dropdown label=\"Action\" \n options={[\"\",...actionNames]}\n bind:selected={clonedTrigger.actionName} />\n <CodeArea label=\"Condition (javascript)\"\n bind:text={clonedTrigger.condition} />\n <CodeArea label=\"Action Options Creator (javascript)\"\n bind:text={clonedTrigger.optionsCreator} />\n\n </form>\n\n <ButtonGroup>\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\n <Button color=\"tertiary\" grouped on:click={cancel}>Cancel</Button>\n </ButtonGroup>\n\n</div>\n\n<style>\n\n</style>","<script>\n\nimport {store} from \"../builderStore\";\nimport getIcon from \"../common/icon\";\nimport Button from \"../common/Button.svelte\";\nimport Modal from \"../common/Modal.svelte\";\nimport TriggerView from \"./TriggerView.svelte\";\n\n\nexport let editingTrigger = null;\nexport let editingTriggerIsNew = true;\nexport let onTriggerEdit = (trigger) => {};\nexport let onTriggerDelete = (trigger) => {};\nexport let onTriggerSave = (trigger) => {};\nexport let onTriggerCancel = () => {};\n\n$: isEditing = (editingTrigger !== null); \n\nlet triggerEditingFinished = (trigger) => {\n \n if(trigger) {\n onTriggerSave(trigger)\n } else {\n onTriggerCancel();\n }\n}\n\n</script>\n\n<h3 class=\"title\">Triggers</h3>\n\n{#if $store.triggers}\n<table class=\"fields-table uk-table uk-table-small uk-table-striped\">\n <thead>\n <tr>\n <th>Event</th>\n <th>Action</th>\n <th>Condition</th>\n <th>Create Options</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {#each $store.triggers as trigger}\n <tr>\n <td class=\"table-content\">{trigger.eventName}</td>\n <td class=\"table-content\">{trigger.actionName}</td>\n <td class=\"table-content\">{trigger.condition}</td>\n <td class=\"table-content\">{trigger.optionsCreator}</td>\n <td class=\"edit-button\">\n <span on:click={() => onTriggerEdit(trigger)}>{@html getIcon(\"edit\")}</span>\n <span on:click={() => onTriggerDelete(trigger)}>{@html getIcon(\"trash\")}</span>\n </td>\n </tr>\n {/each}\n </tbody>\n</table>\n{:else}\n(no triggers added)\n{/if}\n\n\n<Modal bind:isOpen={isEditing}>\n {#if isEditing}\n <TriggerView trigger={editingTrigger}\n allActions={$store.actions}\n allTriggers={$store.triggers}\n onFinished={triggerEditingFinished}\n isNew={editingTriggerIsNew}/>\n {/if} \n</Modal>\n\n<style>\n\n.edit-button {\n cursor:pointer;\n color: var(--secondary25);\n}\n\n.title {\n margin: 3rem 0rem 0rem 0rem;\n font-weight: 700;\n}\n\n.table-content {\n font-weight: 500;\n font-size: .9rem;\n}\n\ntr:hover .edit-button {\n color: var(--secondary75);\n}\n\n</style>","<script>\n\nimport getIcon from \"../common/icon\";\nimport {store} from \"../builderStore\";\nimport Button from \"../common/Button.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport Actions from \"./Actions.svelte\";\nimport Triggers from \"./Triggers.svelte\";\nimport {getNewAction, getNewTrigger} from \"../common/core\";\n\nlet editingAction = null;\nlet editingActionIsNew = true;\nlet editingTrigger = null;\nlet editingTriggerIsNew = true;\n\nlet getDefaultOptionsHtml = defaultOptions => \n pipe(defaultOptions, [\n keys,\n map(k => `<span style=\"color:var(--slate)\">${k}: </span>${JSON.parse(typeOptions[k])}`),\n join(\"<br>\")\n ]);\n\nlet onActionEdit = (action) => {\n editingAction = action;\n editingActionIsNew = false;\n}\n\nlet newAction = () => {\n editingAction = getNewAction();\n editingActionIsNew = true;\n}\n\nlet onActionDelete = (action) => {\n store.deleteAction(action);\n}\n\nlet deleteTrigger = () => {}\n\nlet editTrigger = (trigger) => {\n editingTrigger = trigger;\n editingTriggerIsNew = false;\n}\n\nlet newTrigger = () => {\n editingTrigger = getNewTrigger();\n editingTriggerIsNew = true;\n}\n\nlet onActionSave = action => {\n store.saveAction(\n action, \n editingActionIsNew, \n editingAction);\n\n editingAction = null;\n}\n\nlet onActionCancel = () => {\n editingAction = null;\n}\n\nlet onTriggerSave = trigger => {\n store.saveTrigger(\n trigger, \n editingTriggerIsNew, \n editingTrigger);\n\n editingTrigger = null;\n}\n\nlet onTriggerCancel = () => {\n editingTrigger = null;\n}\n\nlet onTriggerEdit = (trigger) => {\n editingTrigger = trigger;\n editingTriggerIsNew = false;\n}\n\n\nlet onTriggerDelete = (trigger) => {\n store.deleteTrigger(trigger);\n}\n\n</script>\n\n<div class=\"root\">\n <div class=\"actions-header\">\n <ButtonGroup>\n <Button color=\"secondary\" \n grouped\n on:click={newAction}>Create New Action</Button>\n <Button color=\"tertiary\" \n grouped\n on:click={newTrigger}>Create New Trigger</Button>\n </ButtonGroup>\n </div>\n\n <div class=\"node-view\">\n <Actions {editingActionIsNew} {editingAction} \n {onActionEdit} {onActionDelete} {onActionSave}\n {onActionCancel} />\n\n <Triggers {editingTriggerIsNew} {editingTrigger} \n {onTriggerEdit} {onTriggerDelete} {onTriggerSave}\n {onTriggerCancel} />\n </div>\n\n</div>\n\n<style>\n\n.root {\n height: 100%;\n position: relative;\n padding: 1.5rem;\n\n}\n\n.actions-header {\n flex: 0 1 auto;\n}\n\n.node-view {\n overflow-y: auto;\n flex: 1 1 auto;\n}\n\n</style>","<script>\n\nimport {cloneDeep, map, some, filter} from \"lodash/fp\";\nimport Textbox from \"../common/Textbox.svelte\";\nimport Checkbox from \"../common/Checkbox.svelte\";\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport {validateAccessLevels} from \"../common/core\";\nimport ErrorsBox from \"../common/ErrorsBox.svelte\";\n\nexport let level;\nexport let allPermissions;\nexport let onFinished;\nexport let isNew;\nexport let allLevels;\nexport let hierarchy;\nexport let actions;\n\nlet errors = [];\nlet clonedLevel = cloneDeep(level);\n\nconst matchPermissions = (p1, p2) => \n p1.type === p2.type\n && \n ((!p2.nodeKey && !p1.nodeKey)\n || p2.nodeKey === p1.nodeKey);\n\nconst hasPermission = hasPerm => \n some(p => matchPermissions(p, hasPerm))\n (clonedLevel.permissions);\n\n$: permissionMatrix = \n map(p => ({permission:p, hasPermission: hasPermission(p)}))\n (allPermissions)\n\nconst getPermissionName = perm => \n perm.nodeKey\n ? `${perm.type} - ${perm.nodeKey}`\n : perm.type;\n\nconst save = () => {\n\n const newLevels = \n isNew \n ? [...allLevels, clonedLevel]\n : [...filter(l => l.name !== level.name)(allLevels), clonedLevel];\n\n errors = validateAccessLevels(\n hierarchy,\n actions,\n newLevels\n );\n\n if(errors.length > 0) return;\n\n onFinished(clonedLevel);\n}\n\nconst permissionChanged = perm => ev => {\n const hasPermission = ev.target.checked;\n\n if(hasPermission) {\n clonedLevel.permissions.push(perm);\n } else {\n clonedLevel.permissions = filter(p => !matchPermissions(p, perm))(clonedLevel.permissions);\n }\n}\n\n</script>\n\n<div>\n\n <ErrorsBox {errors} />\n\n <form class=\"uk-form-horizontal\">\n\n <Textbox label=\"Name\" bind:text={clonedLevel.name} />\n\n {#each permissionMatrix as permission}\n <div>\n <Checkbox label={getPermissionName(permission.permission)} \n checked={permission.hasPermission} \n on:change={permissionChanged(permission.permission)} />\n </div>\n {/each}\n\n </form>\n\n <ButtonGroup style=\"margin-top: 10px\">\n <Button color=\"primary\" grouped on:click={save}>Save</Button>\n <Button color=\"secondary\" grouped on:click={() => onFinished()}>Cancel</Button>\n </ButtonGroup>\n\n\n</div>\n\n<style>\n\n</style>","<script>\n\nimport ButtonGroup from \"../common/ButtonGroup.svelte\";\nimport Button from \"../common/Button.svelte\";\nimport {store} from \"../builderStore\";\nimport {generateFullPermissions, getNewAccessLevel} from \"../common/core\";\nimport getIcon from \"../common/icon\";\nimport AccessLevelView from \"./AccessLevelView.svelte\";\nimport Modal from \"../common/Modal.svelte\";\n\nlet editingLevel = null;\nlet editingLevelIsNew = false;\n$: isEditing = (editingLevel !== null); \n\nlet allPermissions = [];\nstore.subscribe(db => {\n allPermissions = generateFullPermissions(db.hierarchy, db.actions);\n})\n\nlet onLevelEdit = (level) => {\n editingLevel = level;\n editingLevelIsNew = false;\n};\n\nlet onLevelCancel = () => {\n editingAction = null;\n};\n\nlet onLevelDelete = (level) => {\n store.deleteLevel(level);\n};\n\n\nlet createNewLevel = () => {\n editingLevelIsNew = true;\n editingLevel = getNewAccessLevel();\n}\n\nlet onEditingFinished = (level) => {\n if(level) {\n store.saveLevel(level, editingLevelIsNew, editingLevel);\n }\n editingLevel = null;\n}\n\nconst getPermissionsString = perms => {\n return `${perms.length} / ${allPermissions.length}`;\n}\n\n</script>\n\n<div class=\"root\">\n\n<ButtonGroup>\n <Button grouped color=\"secondary\" on:click={createNewLevel}>Create New Access Level</Button>\n</ButtonGroup>\n\n{#if $store.accessLevels}\n<table class=\"fields-table uk-table uk-table-small\">\n <thead>\n <tr>\n <th>Name</th>\n <th>Permissions</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n {#each $store.accessLevels.levels as level}\n <tr>\n <td >{level.name}</td>\n <td >{getPermissionsString(level.permissions)}</td>\n <td class=\"edit-button\">\n <span on:click={() => onLevelEdit(level)}>{@html getIcon(\"edit\")}</span>\n <span on:click={() => onLevelDelete(level)}>{@html getIcon(\"trash\")}</span>\n </td>\n </tr>\n {/each}\n </tbody>\n</table>\n{:else}\n(no actions added)\n{/if}\n\n\n<Modal bind:isOpen={isEditing}>\n {#if isEditing}\n <AccessLevelView level={editingLevel}\n allPermissions={allPermissions}\n onFinished={onEditingFinished}\n isNew={editingLevelIsNew}\n allLevels={$store.accessLevels.levels}\n hierarchy={$store.hierarchy}\n actions={$store.actions} />\n {/if} \n</Modal>\n\n\n</div>\n\n<style>\n\n.root {\n height: 100%;\n position: relative;\n padding: 1.5rem;\n\n}\n\n.actions-header {\n flex: 0 1 auto;\n}\n\n.node-view {\n overflow-y: auto;\n flex: 1 1 auto;\n}\n\n\n</style>","<script>\n\nimport BackendNav from \"./nav/BackendNav.svelte\";\nimport Database from \"./database/DatabaseRoot.svelte\" ;\nimport UserInterface from \"./userInterface/UserInterfaceRoot.svelte\" ;\nimport ActionsAndTriggers from \"./actionsAndTriggers/ActionsAndTriggersRoot.svelte\" ;\nimport AccessLevels from \"./accessLevels/AccessLevelsRoot.svelte\" ;\nimport ComingSoon from \"./common/ComingSoon.svelte\";\n\nimport {store} from \"./builderStore\";\n\nexport let navWidth = \"50px\";\n\n\n</script>\n\n<div class=\"root\">\n <div class=\"nav\">\n <BackendNav />\n </div>\n <div class=\"content\" \n style=\"width: calc(100% - {navWidth}); left: {navWidth}\"> \n {#if $store.activeNav === \"database\"}\n <Database />\n {:else if $store.activeNav === \"actions\"}\n <ActionsAndTriggers />\n {:else if $store.activeNav === \"access levels\"}\n <AccessLevels />\n {/if}\n </div>\n</div>\n\n\n\n<style>\n\n.root {\n height: 100%;\n display: flex;\n}\n\n\n.content {\n flex: 1 1 auto;\n height: 100%;\n background-color: var(--white);\n margin:0;\n}\n\n.nav {\n flex: 0 1 auto;\n width: 300px;\n height: 100%;\n}\n\n</style>","<script>\n\nimport IconButton from \"./common/IconButton.svelte\";\nimport { store } from \"./builderStore\";\nimport UserInterfaceRoot from \"./userInterface/UserInterfaceRoot.svelte\";\nimport BackendRoot from \"./BackendRoot.svelte\";\nimport { fade } from \"svelte/transition\";\n\n</script>\n\n<div class=\"root\">\n\n <div class=\"top-nav\">\n <IconButton icon=\"home\" \n color=\"var(--slate)\"\n hoverColor=\"var(--secondary75)\"/>\n <span class:active={$store.isBackend}\n class=\"topnavitem\"\n on:click={store.showBackend}>\n Backend\n </span>\n <span class:active={!$store.isBackend}\n class=\"topnavitem\"\n on:click={store.showFrontend}>\n Frontend\n </span>\n </div>\n\n <div class=\"content\">\n {#if $store.isBackend}\n <div in:fade out:fade>\n <BackendRoot />\n </div>\n {:else}\n <div in:fade out:fade>\n <UserInterfaceRoot />\n </div>\n {/if}\n </div>\n \n</div>\n\n<style>\n\n.root {\n height:100%;\n width:100%;\n display: flex;\n flex-direction: column;\n}\n\n.top-nav {\n flex: 0 0 auto;\n height: 25px;\n background: white;\n padding: 5px;\n width: 100%;\n}\n\n.content {\n flex: 1 1 auto;\n width: 100%;\n height: 100px;\n}\n\n.content > div {\n height:100%;\n width:100%;\n}\n\n.topnavitem {\n cursor: pointer;\n color: var(--secondary50);\n padding: 0px 15px;\n font-weight: 600;\n font-size: .9rem;\n}\n\n.topnavitem:hover {\n color: var(--secondary75);\n font-weight: 600;\n\n}\n\n.active {\n color: var(--primary100);\n font-weight: 900;\n}\n\n\n</style>","<script>\n\t\n\timport NoPackage from \"./NoPackage.svelte\";\n\timport PackageRoot from \"./PackageRoot.svelte\";\n\timport Settings from \"./Settings.svelte\";\n\timport {store, initialise} from \"./builderStore\";\n\timport { onMount } from 'svelte';\n\timport IconButton from \"./common/IconButton.svelte\";\n\n\tlet init = initialise();\n\n</script>\n\n<main>\n\n\t{#await init}\n\t\n\t\t<h1>loading</h1>\n\n\t{:then result}\n\n\t\t{#if $store.hasAppPackage}\n\t\t<PackageRoot />\n\n\t\t{:else}\n\n\t\t<NoPackage />\n\t\t{/if}\n\n\n\t{:catch err}\n\t\t<h1 style=\"color:red\">{err}</h1>\n\t{/await}\n\n<!--\n\t<div class=\"settings\">\n\t\t<IconButton icon=\"settings\"\n on:click={store.showSettings}/>\n\t</div>\n\n\n\t{#if $store.useAnalytics}\n\t\t<iframe src=\"https://marblekirby.github.io/bb-analytics.html\" width=\"0\" height=\"0\" style=\"visibility:hidden;display:none\"/>\n\t{/if}\n-->\n</main>\n\n<style>\n\tmain {\n\t\theight: 100%;\n\t\twidth: 100%;\n\t\tfont-family: \"Roboto\", Helvetica, Arial, sans-serif;\n\t}\n\n\t.settings {\n\t\tposition: absolute;\n\t\tbottom: 25px;\n\t\tright: 25px;\n\t}\n</style>","/*! UIkit 3.2.0 | http://www.getuikit.com | (c) 2014 - 2019 YOOtheme | MIT License */\n\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"uikit\",e):(t=t||self).UIkit=e()}(this,function(){\"use strict\";var e=Object.prototype,n=e.hasOwnProperty;function c(t,e){return n.call(t,e)}var i={},r=/([a-z\\d])([A-Z])/g;function d(t){return t in i||(i[t]=t.replace(r,\"$1-$2\").toLowerCase()),i[t]}var o=/-(\\w)/g;function f(t){return t.replace(o,s)}function s(t,e){return e?e.toUpperCase():\"\"}function p(t){return t.length?s(0,t.charAt(0))+t.slice(1):\"\"}var t=String.prototype,a=t.startsWith||function(t){return 0===this.lastIndexOf(t,0)};function w(t,e){return a.call(t,e)}var h=t.endsWith||function(t){return this.substr(-t.length)===t};function u(t,e){return h.call(t,e)}function l(t,e){return~this.indexOf(t,e)}var m=Array.prototype,g=t.includes||l,v=m.includes||l;function b(t,e){return t&&(O(t)?g:v).call(t,e)}var y=m.findIndex||function(t){for(var e=arguments,n=0;n<this.length;n++)if(t.call(e[1],this[n],n,this))return n;return-1};function x(t,e){return y.call(t,e)}var k=Array.isArray;function $(t){return\"function\"==typeof t}function I(t){return null!==t&&\"object\"==typeof t}function S(t){return I(t)&&Object.getPrototypeOf(t)===e}function T(t){return I(t)&&t===t.window}function E(t){return I(t)&&9===t.nodeType}function C(t){return I(t)&&!!t.jquery}function A(t){return t instanceof Node||I(t)&&1<=t.nodeType}var _=e.toString;function N(t){return _.call(t).match(/^\\[object (NodeList|HTMLCollection)\\]$/)}function M(t){return\"boolean\"==typeof t}function O(t){return\"string\"==typeof t}function D(t){return\"number\"==typeof t}function z(t){return D(t)||O(t)&&!isNaN(t-parseFloat(t))}function B(t){return!(k(t)?t.length:I(t)&&Object.keys(t).length)}function P(t){return void 0===t}function H(t){return M(t)?t:\"true\"===t||\"1\"===t||\"\"===t||\"false\"!==t&&\"0\"!==t&&t}function L(t){var e=Number(t);return!isNaN(e)&&e}function F(t){return parseFloat(t)||0}function j(t){return A(t)||T(t)||E(t)?t:N(t)||C(t)?t[0]:k(t)?j(t[0]):null}function W(t){return A(t)?[t]:N(t)?m.slice.call(t):k(t)?t.map(j).filter(Boolean):C(t)?t.toArray():[]}function V(t){return k(t)?t:O(t)?t.split(/,(?![^(]*\\))/).map(function(t){return z(t)?L(t):H(t.trim())}):[t]}function R(t){return t?u(t,\"ms\")?F(t):1e3*F(t):0}function Y(t,n){return t===n||I(t)&&I(n)&&Object.keys(t).length===Object.keys(n).length&&K(t,function(t,e){return t===n[e]})}function q(t,e,n){return t.replace(new RegExp(e+\"|\"+n,\"mg\"),function(t){return t===e?n:e})}var U=Object.assign||function(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];t=Object(t);for(var i=0;i<e.length;i++){var r=e[i];if(null!==r)for(var o in r)c(r,o)&&(t[o]=r[o])}return t};function X(t){return t[t.length-1]}function K(t,e){for(var n in t)if(!1===e(t[n],n))return!1;return!0}function G(t,r){return t.sort(function(t,e){var n=t[r];void 0===n&&(n=0);var i=e[r];return void 0===i&&(i=0),i<n?1:n<i?-1:0})}function J(t,n){var i=new Set;return t.filter(function(t){var e=t[n];return!i.has(e)&&(i.add(e)||!0)})}function Z(t,e,n){return void 0===e&&(e=0),void 0===n&&(n=1),Math.min(Math.max(L(t)||0,e),n)}function Q(){}function tt(t,e){return t.left<e.right&&t.right>e.left&&t.top<e.bottom&&t.bottom>e.top}function et(t,e){return t.x<=e.right&&t.x>=e.left&&t.y<=e.bottom&&t.y>=e.top}var nt={ratio:function(t,e,n){var i,r=\"width\"===e?\"height\":\"width\";return(i={})[r]=t[e]?Math.round(n*t[r]/t[e]):t[r],i[e]=n,i},contain:function(n,i){var r=this;return K(n=U({},n),function(t,e){return n=n[e]>i[e]?r.ratio(n,e,i[e]):n}),n},cover:function(n,i){var r=this;return K(n=this.contain(n,i),function(t,e){return n=n[e]<i[e]?r.ratio(n,e,i[e]):n}),n}};function it(t,e,n){if(I(e))for(var i in e)it(t,i,e[i]);else{if(P(n))return(t=j(t))&&t.getAttribute(e);W(t).forEach(function(t){$(n)&&(n=n.call(t,it(t,e))),null===n?ot(t,e):t.setAttribute(e,n)})}}function rt(t,e){return W(t).some(function(t){return t.hasAttribute(e)})}function ot(t,e){t=W(t),e.split(\" \").forEach(function(e){return t.forEach(function(t){return t.hasAttribute(e)&&t.removeAttribute(e)})})}function st(t,e){for(var n=0,i=[e,\"data-\"+e];n<i.length;n++)if(rt(t,i[n]))return it(t,i[n])}var at=/msie|trident/i.test(window.navigator.userAgent),ht=\"rtl\"===it(document.documentElement,\"dir\"),ct=\"ontouchstart\"in window,ut=window.PointerEvent,lt=ct||window.DocumentTouch&&document instanceof DocumentTouch||navigator.maxTouchPoints,dt=ut?\"pointerdown\":ct?\"touchstart\":\"mousedown\",ft=ut?\"pointermove\":ct?\"touchmove\":\"mousemove\",pt=ut?\"pointerup\":ct?\"touchend\":\"mouseup\",mt=ut?\"pointerenter\":ct?\"\":\"mouseenter\",gt=ut?\"pointerleave\":ct?\"\":\"mouseleave\",vt=ut?\"pointercancel\":\"touchcancel\";function wt(t,e){return j(t)||xt(t,yt(t,e))}function bt(t,e){var n=W(t);return n.length&&n||kt(t,yt(t,e))}function yt(t,e){return void 0===e&&(e=document),Tt(t)||E(e)?e:e.ownerDocument}function xt(t,e){return j($t(t,e,\"querySelector\"))}function kt(t,e){return W($t(t,e,\"querySelectorAll\"))}function $t(t,s,e){if(void 0===s&&(s=document),!t||!O(t))return null;var a;Tt(t=t.replace(St,\"$1 *\"))&&(a=[],t=function(t){return t.match(Et).map(function(t){return t.replace(/,$/,\"\").trim()})}(t).map(function(t,e){var n=s;if(\"!\"===t[0]){var i=t.substr(1).trim().split(\" \");n=Mt(s.parentNode,i[0]),t=i.slice(1).join(\" \").trim()}if(\"-\"===t[0]){var r=t.substr(1).trim().split(\" \"),o=(n||s).previousElementSibling;n=_t(o,t.substr(1))?o:null,t=r.slice(1).join(\" \")}return n?(n.id||(n.id=\"uk-\"+Date.now()+e,a.push(function(){return ot(n,\"id\")})),\"#\"+zt(n.id)+\" \"+t):null}).filter(Boolean).join(\",\"),s=document);try{return s[e](t)}catch(t){return null}finally{a&&a.forEach(function(t){return t()})}}var It=/(^|[^\\\\],)\\s*[!>+~-]/,St=/([!>+~-])(?=\\s+[!>+~-]|\\s*$)/g;function Tt(t){return O(t)&&t.match(It)}var Et=/.*?[^\\\\](?:,|$)/g;var Ct=Element.prototype,At=Ct.matches||Ct.webkitMatchesSelector||Ct.msMatchesSelector;function _t(t,e){return W(t).some(function(t){return At.call(t,e)})}var Nt=Ct.closest||function(t){var e=this;do{if(_t(e,t))return e;e=e.parentNode}while(e&&1===e.nodeType)};function Mt(t,e){return w(e,\">\")&&(e=e.slice(1)),A(t)?Nt.call(t,e):W(t).map(function(t){return Mt(t,e)}).filter(Boolean)}function Ot(t,e){var n=[];for(t=j(t);(t=t.parentNode)&&1===t.nodeType;)_t(t,e)&&n.push(t);return n}var Dt=window.CSS&&CSS.escape||function(t){return t.replace(/([^\\x7f-\\uFFFF\\w-])/g,function(t){return\"\\\\\"+t})};function zt(t){return O(t)?Dt.call(null,t):\"\"}var Bt={area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,menuitem:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0};function Pt(t){return W(t).some(function(t){return Bt[t.tagName.toLowerCase()]})}function Ht(t){return W(t).some(function(t){return t.offsetWidth||t.offsetHeight||t.getClientRects().length})}var Lt=\"input,select,textarea,button\";function Ft(t){return W(t).some(function(t){return _t(t,Lt)})}function jt(t,e){return W(t).filter(function(t){return _t(t,e)})}function Wt(t,e){return O(e)?_t(t,e)||Mt(t,e):t===e||(E(e)?e.documentElement:j(e)).contains(j(t))}function Vt(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=Xt(t),i=n[0],r=n[1],o=n[2],s=n[3],a=n[4];return i=Zt(i),1<s.length&&(s=function(e){return function(t){return k(t.detail)?e.apply(void 0,[t].concat(t.detail)):e(t)}}(s)),o&&(s=function(t,i,r){var o=this;return function(n){t.forEach(function(t){var e=\">\"===i[0]?kt(i,t).reverse().filter(function(t){return Wt(n.target,t)})[0]:Mt(n.target,i);e&&(n.delegate=t,n.current=e,r.call(o,n))})}}(i,o,s)),a&&a.self&&(s=function(e){return function(t){if(t.target===t.currentTarget||t.target===t.current)return e.call(null,t)}}(s)),a=Kt(a),r.split(\" \").forEach(function(e){return i.forEach(function(t){return t.addEventListener(e,s,a)})}),function(){return Rt(i,r,s,a)}}function Rt(t,e,n,i){void 0===i&&(i=!1),i=Kt(i),t=Zt(t),e.split(\" \").forEach(function(e){return t.forEach(function(t){return t.removeEventListener(e,n,i)})})}function Yt(){for(var t=[],e=arguments.length;e--;)t[e]=arguments[e];var n=Xt(t),i=n[0],r=n[1],o=n[2],s=n[3],a=n[4],h=n[5],c=Vt(i,r,o,function(t){var e=!h||h(t);e&&(c(),s(t,e))},a);return c}function qt(t,n,i){return Zt(t).reduce(function(t,e){return t&&e.dispatchEvent(Ut(n,!0,!0,i))},!0)}function Ut(t,e,n,i){if(void 0===e&&(e=!0),void 0===n&&(n=!1),O(t)){var r=document.createEvent(\"CustomEvent\");r.initCustomEvent(t,e,n,i),t=r}return t}function Xt(t){return $(t[2])&&t.splice(2,0,!1),t}function Kt(t){return t&&at&&!M(t)?!!t.capture:t}function Gt(t){return t&&\"addEventListener\"in t}function Jt(t){return Gt(t)?t:j(t)}function Zt(t){return k(t)?t.map(Jt).filter(Boolean):O(t)?kt(t):Gt(t)?[t]:W(t)}function Qt(t){return\"touch\"===t.pointerType||!!t.touches}function te(t,e){void 0===e&&(e=\"client\");var n=t.touches,i=t.changedTouches,r=n&&n[0]||i&&i[0]||t;return{x:r[e+\"X\"],y:r[e+\"Y\"]}}function ee(){var n=this;this.promise=new ne(function(t,e){n.reject=e,n.resolve=t})}var ne=\"Promise\"in window?window.Promise:oe,ie=2,re=\"setImmediate\"in window?setImmediate:setTimeout;function oe(t){this.state=ie,this.value=void 0,this.deferred=[];var e=this;try{t(function(t){e.resolve(t)},function(t){e.reject(t)})}catch(t){e.reject(t)}}oe.reject=function(n){return new oe(function(t,e){e(n)})},oe.resolve=function(n){return new oe(function(t,e){t(n)})},oe.all=function(s){return new oe(function(n,t){var i=[],r=0;function e(e){return function(t){i[e]=t,(r+=1)===s.length&&n(i)}}0===s.length&&n(i);for(var o=0;o<s.length;o+=1)oe.resolve(s[o]).then(e(o),t)})},oe.race=function(i){return new oe(function(t,e){for(var n=0;n<i.length;n+=1)oe.resolve(i[n]).then(t,e)})};var se=oe.prototype;function ae(s,a){return new ne(function(t,e){var n=U({data:null,method:\"GET\",headers:{},xhr:new XMLHttpRequest,beforeSend:Q,responseType:\"\"},a);n.beforeSend(n);var i=n.xhr;for(var r in n)if(r in i)try{i[r]=n[r]}catch(t){}for(var o in i.open(n.method.toUpperCase(),s),n.headers)i.setRequestHeader(o,n.headers[o]);Vt(i,\"load\",function(){0===i.status||200<=i.status&&i.status<300||304===i.status?t(i):e(U(Error(i.statusText),{xhr:i,status:i.status}))}),Vt(i,\"error\",function(){return e(U(Error(\"Network Error\"),{xhr:i}))}),Vt(i,\"timeout\",function(){return e(U(Error(\"Network Timeout\"),{xhr:i}))}),i.send(n.data)})}function he(i,r,o){return new ne(function(t,e){var n=new Image;n.onerror=e,n.onload=function(){return t(n)},o&&(n.sizes=o),r&&(n.srcset=r),n.src=i})}function ce(t){if(\"loading\"===document.readyState)var e=Vt(document,\"DOMContentLoaded\",function(){e(),t()});else t()}function ue(t,e){return e?W(t).indexOf(j(e)):W((t=j(t))&&t.parentNode.children).indexOf(t)}function le(t,e,n,i){void 0===n&&(n=0),void 0===i&&(i=!1);var r=(e=W(e)).length;return t=z(t)?L(t):\"next\"===t?n+1:\"previous\"===t?n-1:ue(e,t),i?Z(t,0,r-1):(t%=r)<0?t+r:t}function de(t){return(t=Te(t)).innerHTML=\"\",t}function fe(t,e){return t=Te(t),P(e)?t.innerHTML:pe(t.hasChildNodes()?de(t):t,e)}function pe(e,t){return e=Te(e),ve(t,function(t){return e.appendChild(t)})}function me(e,t){return e=Te(e),ve(t,function(t){return e.parentNode.insertBefore(t,e)})}function ge(e,t){return e=Te(e),ve(t,function(t){return e.nextSibling?me(e.nextSibling,t):pe(e.parentNode,t)})}function ve(t,e){return(t=O(t)?Ie(t):t)?\"length\"in t?W(t).map(e):e(t):null}function we(t){W(t).map(function(t){return t.parentNode&&t.parentNode.removeChild(t)})}function be(t,e){for(e=j(me(t,e));e.firstChild;)e=e.firstChild;return pe(e,t),e}function ye(t,e){return W(W(t).map(function(t){return t.hasChildNodes?be(W(t.childNodes),e):pe(t,e)}))}function xe(t){W(t).map(function(t){return t.parentNode}).filter(function(t,e,n){return n.indexOf(t)===e}).forEach(function(t){me(t,t.childNodes),we(t)})}se.resolve=function(t){var e=this;if(e.state===ie){if(t===e)throw new TypeError(\"Promise settled with itself.\");var n=!1;try{var i=t&&t.then;if(null!==t&&I(t)&&$(i))return void i.call(t,function(t){n||e.resolve(t),n=!0},function(t){n||e.reject(t),n=!0})}catch(t){return void(n||e.reject(t))}e.state=0,e.value=t,e.notify()}},se.reject=function(t){var e=this;if(e.state===ie){if(t===e)throw new TypeError(\"Promise settled with itself.\");e.state=1,e.value=t,e.notify()}},se.notify=function(){var o=this;re(function(){if(o.state!==ie)for(;o.deferred.length;){var t=o.deferred.shift(),e=t[0],n=t[1],i=t[2],r=t[3];try{0===o.state?$(e)?i(e.call(void 0,o.value)):i(o.value):1===o.state&&($(n)?i(n.call(void 0,o.value)):r(o.value))}catch(t){r(t)}}})},se.then=function(n,i){var r=this;return new oe(function(t,e){r.deferred.push([n,i,t,e]),r.notify()})},se.catch=function(t){return this.then(void 0,t)};var ke=/^\\s*<(\\w+|!)[^>]*>/,$e=/^<(\\w+)\\s*\\/?>(?:<\\/\\1>)?$/;function Ie(t){var e=$e.exec(t);if(e)return document.createElement(e[1]);var n=document.createElement(\"div\");return ke.test(t)?n.insertAdjacentHTML(\"beforeend\",t.trim()):n.textContent=t,1<n.childNodes.length?W(n.childNodes):n.firstChild}function Se(t,e){if(t&&1===t.nodeType)for(e(t),t=t.firstElementChild;t;)Se(t,e),t=t.nextElementSibling}function Te(t,e){return O(t)?Ce(t)?j(Ie(t)):xt(t,e):j(t)}function Ee(t,e){return O(t)?Ce(t)?W(Ie(t)):kt(t,e):W(t)}function Ce(t){return\"<\"===t[0]||t.match(/^\\s*</)}function Ae(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];ze(t,e,\"add\")}function _e(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];ze(t,e,\"remove\")}function Ne(t,e){it(t,\"class\",function(t){return(t||\"\").replace(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"g\"),\"\")})}function Me(t){for(var e=[],n=arguments.length-1;0<n--;)e[n]=arguments[n+1];e[0]&&_e(t,e[0]),e[1]&&Ae(t,e[1])}function Oe(t,e){return e&&W(t).some(function(t){return t.classList.contains(e.split(\" \")[0])})}function De(t){for(var i=[],e=arguments.length-1;0<e--;)i[e]=arguments[e+1];if(i.length){var r=O(X(i=Be(i)))?[]:i.pop();i=i.filter(Boolean),W(t).forEach(function(t){for(var e=t.classList,n=0;n<i.length;n++)Pe.Force?e.toggle.apply(e,[i[n]].concat(r)):e[(P(r)?!e.contains(i[n]):r)?\"add\":\"remove\"](i[n])})}}function ze(t,n,i){(n=Be(n).filter(Boolean)).length&&W(t).forEach(function(t){var e=t.classList;Pe.Multiple?e[i].apply(e,n):n.forEach(function(t){return e[i](t)})})}function Be(t){return t.reduce(function(t,e){return t.concat.call(t,O(e)&&b(e,\" \")?e.trim().split(\" \"):e)},[])}var Pe={get Multiple(){return this.get(\"_multiple\")},get Force(){return this.get(\"_force\")},get:function(t){if(!c(this,t)){var e=document.createElement(\"_\").classList;e.add(\"a\",\"b\"),e.toggle(\"c\",!1),this._multiple=e.contains(\"b\"),this._force=!e.contains(\"c\")}return this[t]}},He={\"animation-iteration-count\":!0,\"column-count\":!0,\"fill-opacity\":!0,\"flex-grow\":!0,\"flex-shrink\":!0,\"font-weight\":!0,\"line-height\":!0,opacity:!0,order:!0,orphans:!0,\"stroke-dasharray\":!0,\"stroke-dashoffset\":!0,widows:!0,\"z-index\":!0,zoom:!0};function Le(t,e,r){return W(t).map(function(n){if(O(e)){if(e=Ye(e),P(r))return je(n,e);r||D(r)?n.style[e]=z(r)&&!He[e]?r+\"px\":r:n.style.removeProperty(e)}else{if(k(e)){var i=Fe(n);return e.reduce(function(t,e){return t[e]=i[Ye(e)],t},{})}I(e)&&K(e,function(t,e){return Le(n,e,t)})}return n})[0]}function Fe(t,e){return(t=j(t)).ownerDocument.defaultView.getComputedStyle(t,e)}function je(t,e,n){return Fe(t,n)[e]}var We={};function Ve(t){var e=document.documentElement;if(!at)return Fe(e).getPropertyValue(\"--uk-\"+t);if(!(t in We)){var n=pe(e,document.createElement(\"div\"));Ae(n,\"uk-\"+t),We[t]=je(n,\"content\",\":before\").replace(/^[\"'](.*)[\"']$/,\"$1\"),we(n)}return We[t]}var Re={};function Ye(t){var e=Re[t];return e=e||(Re[t]=function(t){t=d(t);var e=document.documentElement.style;if(t in e)return t;var n,i=qe.length;for(;i--;)if((n=\"-\"+qe[i]+\"-\"+t)in e)return n}(t)||t)}var qe=[\"webkit\",\"moz\",\"ms\"];function Ue(t,s,a,h){return void 0===a&&(a=400),void 0===h&&(h=\"linear\"),ne.all(W(t).map(function(o){return new ne(function(n,i){for(var t in s){var e=Le(o,t);\"\"===e&&Le(o,t,e)}var r=setTimeout(function(){return qt(o,\"transitionend\")},a);Yt(o,\"transitionend transitioncanceled\",function(t){var e=t.type;clearTimeout(r),_e(o,\"uk-transition\"),Le(o,{\"transition-property\":\"\",\"transition-duration\":\"\",\"transition-timing-function\":\"\"}),\"transitioncanceled\"===e?i():n()},{self:!0}),Ae(o,\"uk-transition\"),Le(o,U({\"transition-property\":Object.keys(s).map(Ye).join(\",\"),\"transition-duration\":a+\"ms\",\"transition-timing-function\":h},s))})}))}var Xe={start:Ue,stop:function(t){return qt(t,\"transitionend\"),ne.resolve()},cancel:function(t){qt(t,\"transitioncanceled\")},inProgress:function(t){return Oe(t,\"uk-transition\")}},Ke=\"uk-animation-\",Ge=\"uk-cancel-animation\";function Je(t,e,n,a,h){var c=arguments;return void 0===n&&(n=200),ne.all(W(t).map(function(s){return new ne(function(i,r){if(Oe(s,Ge))requestAnimationFrame(function(){return ne.resolve().then(function(){return Je.apply(void 0,c).then(i,r)})});else{var t=e+\" \"+Ke+(h?\"leave\":\"enter\");w(e,Ke)&&(a&&(t+=\" uk-transform-origin-\"+a),h&&(t+=\" \"+Ke+\"reverse\")),o(),Yt(s,\"animationend animationcancel\",function(t){var e=t.type,n=!1;\"animationcancel\"===e?(r(),o()):(i(),ne.resolve().then(function(){n=!0,o()})),requestAnimationFrame(function(){n||(Ae(s,Ge),requestAnimationFrame(function(){return _e(s,Ge)}))})},{self:!0}),Le(s,\"animationDuration\",n+\"ms\"),Ae(s,t)}function o(){Le(s,\"animationDuration\",\"\"),Ne(s,Ke+\"\\\\S*\")}})}))}var Ze=new RegExp(Ke+\"(enter|leave)\"),Qe={in:function(t,e,n,i){return Je(t,e,n,i,!1)},out:function(t,e,n,i){return Je(t,e,n,i,!0)},inProgress:function(t){return Ze.test(it(t,\"class\"))},cancel:function(t){qt(t,\"animationcancel\")}},tn={width:[\"x\",\"left\",\"right\"],height:[\"y\",\"top\",\"bottom\"]};function en(t,e,u,l,d,n,i,r){u=ln(u),l=ln(l);var f={element:u,target:l};if(!t||!e)return f;var p=rn(t),m=rn(e),g=m;if(un(g,u,p,-1),un(g,l,m,1),d=dn(d,p.width,p.height),n=dn(n,m.width,m.height),d.x+=n.x,d.y+=n.y,g.left+=d.x,g.top+=d.y,i){var o=[rn(yn(t))];r&&o.unshift(rn(r)),K(tn,function(t,s){var a=t[0],h=t[1],c=t[2];!0!==i&&!b(i,a)||o.some(function(i){var t=u[a]===h?-p[s]:u[a]===c?p[s]:0,e=l[a]===h?m[s]:l[a]===c?-m[s]:0;if(g[h]<i[h]||g[h]+p[s]>i[c]){var n=p[s]/2,r=\"center\"===l[a]?-m[s]/2:0;return\"center\"===u[a]&&(o(n,r)||o(-n,-r))||o(t,e)}function o(e,t){var n=g[h]+e+t-2*d[a];if(n>=i[h]&&n+p[s]<=i[c])return g[h]=n,[\"element\",\"target\"].forEach(function(t){f[t][a]=e?f[t][a]===tn[s][1]?tn[s][2]:tn[s][1]:f[t][a]}),!0}})})}return nn(t,g),f}function nn(n,i){if(n=j(n),!i)return rn(n);var r=nn(n),o=Le(n,\"position\");[\"left\",\"top\"].forEach(function(t){if(t in i){var e=Le(n,t);Le(n,t,i[t]-r[t]+F(\"absolute\"===o&&\"auto\"===e?on(n)[t]:e))}})}function rn(t){if(!(t=j(t)))return{};var e,n,i=yn(t),r=i.pageYOffset,o=i.pageXOffset;if(T(t)){var s=t.innerHeight,a=t.innerWidth;return{top:r,left:o,height:s,width:a,bottom:r+s,right:o+a}}Ht(t)||\"none\"!==Le(t,\"display\")||(e=it(t,\"style\"),n=it(t,\"hidden\"),it(t,{style:(e||\"\")+\";display:block !important;\",hidden:null}));var h=t.getBoundingClientRect();return P(e)||it(t,{style:e,hidden:n}),{height:h.height,width:h.width,top:h.top+r,left:h.left+o,bottom:h.bottom+r,right:h.right+o}}function on(i){var r=(i=j(i)).offsetParent||function(t){return xn(t).documentElement}(i),o=nn(r),t=[\"top\",\"left\"].reduce(function(t,e){var n=p(e);return t[e]-=o[e]+F(Le(i,\"margin\"+n))+F(Le(r,\"border\"+n+\"Width\")),t},nn(i));return{top:t.top,left:t.left}}var sn=hn(\"height\"),an=hn(\"width\");function hn(i){var r=p(i);return function(t,e){if(t=j(t),P(e)){if(T(t))return t[\"inner\"+r];if(E(t)){var n=t.documentElement;return Math.max(n[\"offset\"+r],n[\"scroll\"+r])}return(e=\"auto\"===(e=Le(t,i))?t[\"offset\"+r]:F(e)||0)-cn(i,t)}Le(t,i,e||0===e?+e+cn(i,t)+\"px\":\"\")}}function cn(t,n,e){return void 0===e&&(e=\"border-box\"),Le(n,\"boxSizing\")===e?tn[t].slice(1).map(p).reduce(function(t,e){return t+F(Le(n,\"padding\"+e))+F(Le(n,\"border\"+e+\"Width\"))},0):0}function un(o,s,a,h){K(tn,function(t,e){var n=t[0],i=t[1],r=t[2];s[n]===r?o[i]+=a[e]*h:\"center\"===s[n]&&(o[i]+=a[e]*h/2)})}function ln(t){var e=/left|center|right/,n=/top|center|bottom/;return 1===(t=(t||\"\").split(\" \")).length&&(t=e.test(t[0])?t.concat([\"center\"]):n.test(t[0])?[\"center\"].concat(t):[\"center\",\"center\"]),{x:e.test(t[0])?t[0]:\"center\",y:n.test(t[1])?t[1]:\"center\"}}function dn(t,e,n){var i=(t||\"\").split(\" \"),r=i[0],o=i[1];return{x:r?F(r)*(u(r,\"%\")?e/100:1):0,y:o?F(o)*(u(o,\"%\")?n/100:1):0}}function fn(t){switch(t){case\"left\":return\"right\";case\"right\":return\"left\";case\"top\":return\"bottom\";case\"bottom\":return\"top\";default:return t}}function pn(t,e,n){if(void 0===e&&(e=0),void 0===n&&(n=0),!Ht(t))return!1;var i=yn(t=j(t)),r=t.getBoundingClientRect(),o={top:-e,left:-n,bottom:e+sn(i),right:n+an(i)};return tt(r,o)||et({x:r.left,y:r.top},o)}function mn(t,e){if(void 0===e&&(e=0),!Ht(t))return 0;var n=yn(t=j(t)),i=xn(t),r=t.offsetHeight+e,o=vn(t)[0],s=sn(n),a=s+Math.min(0,o-s),h=Math.max(0,s-(sn(i)+e-(o+r)));return Z((a+n.pageYOffset-o)/((a+(r-(h<s?h:0)))/100)/100)}function gn(t,e){if(T(t=j(t))||E(t)){var n=yn(t);(0,n.scrollTo)(n.pageXOffset,e)}else t.scrollTop=e}function vn(t){var e=[0,0];do{if(e[0]+=t.offsetTop,e[1]+=t.offsetLeft,\"fixed\"===Le(t,\"position\")){var n=yn(t);return e[0]+=n.pageYOffset,e[1]+=n.pageXOffset,e}}while(t=t.offsetParent);return e}function wn(t,e,n){return void 0===e&&(e=\"width\"),void 0===n&&(n=window),z(t)?+t:u(t,\"vh\")?bn(sn(yn(n)),t):u(t,\"vw\")?bn(an(yn(n)),t):u(t,\"%\")?bn(rn(n)[e],t):F(t)}function bn(t,e){return t*F(e)/100}function yn(t){return T(t)?t:xn(t).defaultView}function xn(t){return j(t).ownerDocument}var kn={reads:[],writes:[],read:function(t){return this.reads.push(t),In(),t},write:function(t){return this.writes.push(t),In(),t},clear:function(t){return Tn(this.reads,t)||Tn(this.writes,t)},flush:$n};function $n(){Sn(kn.reads),Sn(kn.writes.splice(0,kn.writes.length)),kn.scheduled=!1,(kn.reads.length||kn.writes.length)&&In(!0)}function In(t){void 0===t&&(t=!1),kn.scheduled||(kn.scheduled=!0,t?ne.resolve().then($n):requestAnimationFrame($n))}function Sn(t){for(var e;e=t.shift();)e()}function Tn(t,e){var n=t.indexOf(e);return!!~n&&!!t.splice(n,1)}function En(){}function Cn(t,e){return(e.y-t.y)/(e.x-t.x)}En.prototype={positions:[],position:null,init:function(){var i=this;this.positions=[],this.position=null;var r=!1;this.unbind=Vt(document,\"mousemove\",function(n){r||(setTimeout(function(){var t=Date.now(),e=i.positions.length;e&&100<t-i.positions[e-1].time&&i.positions.splice(0,e),i.positions.push({time:t,x:n.pageX,y:n.pageY}),5<i.positions.length&&i.positions.shift(),r=!1},5),r=!0)})},cancel:function(){this.unbind&&this.unbind()},movesTo:function(t){if(this.positions.length<2)return!1;var e=nn(t),n=X(this.positions),i=this.positions[0];if(e.left<=n.x&&n.x<=e.right&&e.top<=n.y&&n.y<=e.bottom)return!1;var r=[[{x:e.left,y:e.top},{x:e.right,y:e.bottom}],[{x:e.right,y:e.top},{x:e.left,y:e.bottom}]];return e.right<=n.x||(e.left>=n.x?(r[0].reverse(),r[1].reverse()):e.bottom<=n.y?r[0].reverse():e.top>=n.y&&r[1].reverse()),!!r.reduce(function(t,e){return t+(Cn(i,e[0])<Cn(n,e[0])&&Cn(i,e[1])>Cn(n,e[1]))},0)}};var An={};function _n(t,e,n){return An.computed($(t)?t.call(n,n):t,$(e)?e.call(n,n):e)}function Nn(t,e){return t=t&&!k(t)?[t]:t,e?t?t.concat(e):k(e)?e:[e]:t}function Mn(e,n,i){var r={};if($(n)&&(n=n.options),n.extends&&(e=Mn(e,n.extends,i)),n.mixins)for(var t=0,o=n.mixins.length;t<o;t++)e=Mn(e,n.mixins[t],i);for(var s in e)h(s);for(var a in n)c(e,a)||h(a);function h(t){r[t]=(An[t]||function(t,e){return P(e)?t:e})(e[t],n[t],i)}return r}function On(t,e){var n;void 0===e&&(e=[]);try{return t?w(t,\"{\")?JSON.parse(t):e.length&&!b(t,\":\")?((n={})[e[0]]=t,n):t.split(\";\").reduce(function(t,e){var n=e.split(/:(.*)/),i=n[0],r=n[1];return i&&!P(r)&&(t[i.trim()]=r.trim()),t},{}):{}}catch(t){return{}}}An.events=An.created=An.beforeConnect=An.connected=An.beforeDisconnect=An.disconnected=An.destroy=Nn,An.args=function(t,e){return!1!==e&&Nn(e||t)},An.update=function(t,e){return G(Nn(t,$(e)?{read:e}:e),\"order\")},An.props=function(t,e){return k(e)&&(e=e.reduce(function(t,e){return t[e]=String,t},{})),An.methods(t,e)},An.computed=An.methods=function(t,e){return e?t?U({},t,e):e:t},An.data=function(e,n,t){return t?_n(e,n,t):n?e?function(t){return _n(e,n,t)}:n:e};function Dn(t){this.id=++zn,this.el=j(t)}var zn=0;function Bn(t,e){try{t.contentWindow.postMessage(JSON.stringify(U({event:\"command\"},e)),\"*\")}catch(t){}}Dn.prototype.isVideo=function(){return this.isYoutube()||this.isVimeo()||this.isHTML5()},Dn.prototype.isHTML5=function(){return\"VIDEO\"===this.el.tagName},Dn.prototype.isIFrame=function(){return\"IFRAME\"===this.el.tagName},Dn.prototype.isYoutube=function(){return this.isIFrame()&&!!this.el.src.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/(watch\\?v=[^&\\s]+|embed)|youtu\\.be\\/.*/)},Dn.prototype.isVimeo=function(){return this.isIFrame()&&!!this.el.src.match(/vimeo\\.com\\/video\\/.*/)},Dn.prototype.enableApi=function(){var e=this;if(this.ready)return this.ready;var n,i=this.isYoutube(),r=this.isVimeo();return i||r?this.ready=new ne(function(t){Yt(e.el,\"load\",function(){if(i){var t=function(){return Bn(e.el,{event:\"listening\",id:e.id})};n=setInterval(t,100),t()}}),function(i){return new ne(function(n){Yt(window,\"message\",function(t,e){return n(e)},!1,function(t){var e=t.data;if(e&&O(e)){try{e=JSON.parse(e)}catch(t){return}return e&&i(e)}})})}(function(t){return i&&t.id===e.id&&\"onReady\"===t.event||r&&Number(t.player_id)===e.id}).then(function(){t(),n&&clearInterval(n)}),it(e.el,\"src\",e.el.src+(b(e.el.src,\"?\")?\"&\":\"?\")+(i?\"enablejsapi=1\":\"api=1&player_id=\"+e.id))}):ne.resolve()},Dn.prototype.play=function(){var t=this;if(this.isVideo())if(this.isIFrame())this.enableApi().then(function(){return Bn(t.el,{func:\"playVideo\",method:\"play\"})});else if(this.isHTML5())try{var e=this.el.play();e&&e.catch(Q)}catch(t){}},Dn.prototype.pause=function(){var t=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return Bn(t.el,{func:\"pauseVideo\",method:\"pause\"})}):this.isHTML5()&&this.el.pause())},Dn.prototype.mute=function(){var t=this;this.isVideo()&&(this.isIFrame()?this.enableApi().then(function(){return Bn(t.el,{func:\"mute\",method:\"setVolume\",value:0})}):this.isHTML5()&&(this.el.muted=!0,it(this.el,\"muted\",\"\")))};var Pn=\"IntersectionObserver\"in window?window.IntersectionObserver:function(){function t(e,t){var n=this;void 0===t&&(t={});var i=t.rootMargin;void 0===i&&(i=\"0 0\"),this.targets=[];var r,o=(i||\"0 0\").split(\" \").map(F),s=o[0],a=o[1];this.offsetTop=s,this.offsetLeft=a,this.apply=function(){r=r||requestAnimationFrame(function(){return setTimeout(function(){var t=n.takeRecords();t.length&&e(t,n),r=!1})})},this.off=Vt(window,\"scroll resize load\",this.apply,{passive:!0,capture:!0})}return t.prototype.takeRecords=function(){var n=this;return this.targets.filter(function(t){var e=pn(t.target,n.offsetTop,n.offsetLeft);if(null===t.isIntersecting||e^t.isIntersecting)return t.isIntersecting=e,!0})},t.prototype.observe=function(t){this.targets.push({target:t,isIntersecting:null}),this.apply()},t.prototype.disconnect=function(){this.targets=[],this.off()},t}();function Hn(t){return!(!w(t,\"uk-\")&&!w(t,\"data-uk-\"))&&f(t.replace(\"data-uk-\",\"\").replace(\"uk-\",\"\"))}function Ln(t){this._init(t)}var Fn,jn,Wn,Vn,Rn,Yn,qn,Un,Xn;function Kn(t,e){if(t)for(var n in t)t[n]._connected&&t[n]._callUpdate(e)}function Gn(t,e){var n={},i=t.args;void 0===i&&(i=[]);var r=t.props;void 0===r&&(r={});var o=t.el;if(!r)return n;for(var s in r){var a=d(s),h=st(o,a);if(!P(h)){if(h=r[s]===Boolean&&\"\"===h||ti(r[s],h),\"target\"===a&&(!h||w(h,\"_\")))continue;n[s]=h}}var c=On(st(o,e),i);for(var u in c){var l=f(u);void 0!==r[l]&&(n[l]=ti(r[l],c[u]))}return n}function Jn(i,r,o){Object.defineProperty(i,r,{enumerable:!0,get:function(){var t=i._computeds,e=i.$props,n=i.$el;return c(t,r)||(t[r]=(o.get||o).call(i,e,n)),t[r]},set:function(t){var e=i._computeds;e[r]=o.set?o.set.call(i,t):t,P(e[r])&&delete e[r]}})}function Zn(e,n,i){S(n)||(n={name:i,handler:n});var t=n.name,r=n.el,o=n.handler,s=n.capture,a=n.passive,h=n.delegate,c=n.filter,u=n.self;r=$(r)?r.call(e):r||e.$el,k(r)?r.forEach(function(t){return Zn(e,U({},n,{el:t}),i)}):!r||c&&!c.call(e)||e._events.push(Vt(r,t,h?O(h)?h:h.call(e):null,O(o)?e[o]:o.bind(e),{passive:a,capture:s,self:u}))}function Qn(t,e){return t.every(function(t){return!t||!c(t,e)})}function ti(t,e){return t===Boolean?H(e):t===Number?L(e):\"list\"===t?V(e):t?t(e):e}Ln.util=Object.freeze({ajax:ae,getImage:he,transition:Ue,Transition:Xe,animate:Je,Animation:Qe,attr:it,hasAttr:rt,removeAttr:ot,data:st,addClass:Ae,removeClass:_e,removeClasses:Ne,replaceClass:Me,hasClass:Oe,toggleClass:De,positionAt:en,offset:nn,position:on,height:sn,width:an,boxModelAdjust:cn,flipPosition:fn,isInView:pn,scrolledOver:mn,scrollTop:gn,offsetPosition:vn,toPx:wn,ready:ce,index:ue,getIndex:le,empty:de,html:fe,prepend:function(e,t){return(e=Te(e)).hasChildNodes()?ve(t,function(t){return e.insertBefore(t,e.firstChild)}):pe(e,t)},append:pe,before:me,after:ge,remove:we,wrapAll:be,wrapInner:ye,unwrap:xe,fragment:Ie,apply:Se,$:Te,$$:Ee,isIE:at,isRtl:ht,hasTouch:lt,pointerDown:dt,pointerMove:ft,pointerUp:pt,pointerEnter:mt,pointerLeave:gt,pointerCancel:vt,on:Vt,off:Rt,once:Yt,trigger:qt,createEvent:Ut,toEventTargets:Zt,isTouch:Qt,getEventPos:te,fastdom:kn,isVoidElement:Pt,isVisible:Ht,selInput:Lt,isInput:Ft,filter:jt,within:Wt,hasOwn:c,hyphenate:d,camelize:f,ucfirst:p,startsWith:w,endsWith:u,includes:b,findIndex:x,isArray:k,isFunction:$,isObject:I,isPlainObject:S,isWindow:T,isDocument:E,isJQuery:C,isNode:A,isNodeCollection:N,isBoolean:M,isString:O,isNumber:D,isNumeric:z,isEmpty:B,isUndefined:P,toBoolean:H,toNumber:L,toFloat:F,toNode:j,toNodes:W,toList:V,toMs:R,isEqual:Y,swap:q,assign:U,last:X,each:K,sortBy:G,uniqueBy:J,clamp:Z,noop:Q,intersectRect:tt,pointInRect:et,Dimensions:nt,MouseTracker:En,mergeOptions:Mn,parseOptions:On,Player:Dn,Promise:ne,Deferred:ee,IntersectionObserver:Pn,query:wt,queryAll:bt,find:xt,findAll:kt,matches:_t,closest:Mt,parents:Ot,escape:zt,css:Le,getStyles:Fe,getStyle:je,getCssVar:Ve,propName:Ye}),Ln.data=\"__uikit__\",Ln.prefix=\"uk-\",Ln.options={},Wn=(Fn=Ln).data,Fn.use=function(t){if(!t.installed)return t.call(null,this),t.installed=!0,this},Fn.mixin=function(t,e){(e=(O(e)?Fn.component(e):e)||this).options=Mn(e.options,t)},Fn.extend=function(t){function e(t){this._init(t)}return t=t||{},((e.prototype=Object.create(this.prototype)).constructor=e).options=Mn(this.options,t),e.super=this,e.extend=this.extend,e},Fn.update=function(t,e){(function t(e,n){e&&e!==document.body&&e.parentNode&&(t(e.parentNode,n),n(e.parentNode))})(t=t?j(t):document.body,function(t){return Kn(t[Wn],e)}),Se(t,function(t){return Kn(t[Wn],e)})},Object.defineProperty(Fn,\"container\",{get:function(){return jn||document.body},set:function(t){jn=Te(t)}}),(Vn=Ln).prototype._callHook=function(t){var e=this,n=this.$options[t];n&&n.forEach(function(t){return t.call(e)})},Vn.prototype._callConnected=function(){this._connected||(this._data={},this._computeds={},this._initProps(),this._callHook(\"beforeConnect\"),this._connected=!0,this._initEvents(),this._initObserver(),this._callHook(\"connected\"),this._callUpdate())},Vn.prototype._callDisconnected=function(){this._connected&&(this._callHook(\"beforeDisconnect\"),this._observer&&(this._observer.disconnect(),this._observer=null),this._unbindEvents(),this._callHook(\"disconnected\"),this._connected=!1)},Vn.prototype._callUpdate=function(t){var o=this;void 0===t&&(t=\"update\");var s=t.type||t;b([\"update\",\"resize\"],s)&&this._callWatches();var e=this.$options.update,n=this._frames,a=n.reads,h=n.writes;e&&e.forEach(function(t,e){var n=t.read,i=t.write,r=t.events;\"update\"!==s&&!b(r,s)||(n&&!b(kn.reads,a[e])&&(a[e]=kn.read(function(){var t=o._connected&&n.call(o,o._data,s);!1===t&&i?kn.clear(h[e]):S(t)&&U(o._data,t)})),i&&!b(kn.writes,h[e])&&(h[e]=kn.write(function(){return o._connected&&i.call(o,o._data,s)})))})},Yn=0,(Rn=Ln).prototype._init=function(t){(t=t||{}).data=function(t,e){var n=t.data,i=(t.el,e.args),r=e.props;if(void 0===r&&(r={}),n=k(n)?B(i)?void 0:n.slice(0,i.length).reduce(function(t,e,n){return S(e)?U(t,e):t[i[n]]=e,t},{}):n)for(var o in n)P(n[o])?delete n[o]:n[o]=r[o]?ti(r[o],n[o]):n[o];return n}(t,this.constructor.options),this.$options=Mn(this.constructor.options,t,this),this.$el=null,this.$props={},this._frames={reads:{},writes:{}},this._events=[],this._uid=Yn++,this._initData(),this._initMethods(),this._initComputeds(),this._callHook(\"created\"),t.el&&this.$mount(t.el)},Rn.prototype._initData=function(){var t=this.$options.data;for(var e in void 0===t&&(t={}),t)this.$props[e]=this[e]=t[e]},Rn.prototype._initMethods=function(){var t=this.$options.methods;if(t)for(var e in t)this[e]=t[e].bind(this)},Rn.prototype._initComputeds=function(){var t=this.$options.computed;if(this._computeds={},t)for(var e in t)Jn(this,e,t[e])},Rn.prototype._callWatches=function(){var t=this.$options.computed,e=this._computeds;for(var n in e){var i=e[n];delete e[n],t[n].watch&&!Y(i,this[n])&&t[n].watch.call(this,this[n],i)}},Rn.prototype._initProps=function(t){var e;for(e in t=t||Gn(this.$options,this.$name))P(t[e])||(this.$props[e]=t[e]);var n=[this.$options.computed,this.$options.methods];for(e in this.$props)e in t&&Qn(n,e)&&(this[e]=this.$props[e])},Rn.prototype._initEvents=function(){var n=this,t=this.$options.events;t&&t.forEach(function(t){if(c(t,\"handler\"))Zn(n,t);else for(var e in t)Zn(n,t[e],e)})},Rn.prototype._unbindEvents=function(){this._events.forEach(function(t){return t()}),this._events=[]},Rn.prototype._initObserver=function(){var n=this,t=this.$options,i=t.attrs,e=t.props,r=t.el;if(!this._observer&&e&&!1!==i){i=k(i)?i:Object.keys(e),this._observer=new MutationObserver(function(){var e=Gn(n.$options,n.$name);i.some(function(t){return!P(e[t])&&e[t]!==n.$props[t]})&&n.$reset()});var o=i.map(function(t){return d(t)}).concat(this.$name);this._observer.observe(r,{attributes:!0,attributeFilter:o.concat(o.map(function(t){return\"data-\"+t}))})}},Un=(qn=Ln).data,Xn={},qn.component=function(s,t){if(!t)return S(Xn[s])&&(Xn[s]=qn.extend(Xn[s])),Xn[s];qn[s]=function(t,n){for(var e=arguments.length,i=Array(e);e--;)i[e]=arguments[e];var r=qn.component(s);return S(t)?new r({data:t}):r.options.functional?new r({data:[].concat(i)}):t&&t.nodeType?o(t):Ee(t).map(o)[0];function o(t){var e=qn.getComponent(t,s);if(e){if(!n)return e;e.$destroy()}return new r({el:t,data:n})}};var e=S(t)?U({},t):t.options;if(e.name=s,e.install&&e.install(qn,e,s),qn._initialized&&!e.functional){var n=d(s);kn.read(function(){return qn[s](\"[uk-\"+n+\"],[data-uk-\"+n+\"]\")})}return Xn[s]=S(t)?e:t},qn.getComponents=function(t){return t&&t[Un]||{}},qn.getComponent=function(t,e){return qn.getComponents(t)[e]},qn.connect=function(t){if(t[Un])for(var e in t[Un])t[Un][e]._callConnected();for(var n=0;n<t.attributes.length;n++){var i=Hn(t.attributes[n].name);i&&i in Xn&&qn[i](t)}},qn.disconnect=function(t){for(var e in t[Un])t[Un][e]._callDisconnected()},function(i){var r=i.data;i.prototype.$mount=function(t){var e=this.$options.name;t[r]||(t[r]={}),t[r][e]||((t[r][e]=this).$el=this.$options.el=this.$options.el||t,Wt(t,document)&&this._callConnected())},i.prototype.$emit=function(t){this._callUpdate(t)},i.prototype.$reset=function(){this._callDisconnected(),this._callConnected()},i.prototype.$destroy=function(t){void 0===t&&(t=!1);var e=this.$options,n=e.el,i=e.name;n&&this._callDisconnected(),this._callHook(\"destroy\"),n&&n[r]&&(delete n[r][i],B(n[r])||delete n[r],t&&we(this.$el))},i.prototype.$create=function(t,e,n){return i[t](e,n)},i.prototype.$update=i.update,i.prototype.$getComponent=i.getComponent;var e={};Object.defineProperties(i.prototype,{$container:Object.getOwnPropertyDescriptor(i,\"container\"),$name:{get:function(){var t=this.$options.name;return e[t]||(e[t]=i.prefix+d(t)),e[t]}}})}(Ln);var ei={connected:function(){Oe(this.$el,this.$name)||Ae(this.$el,this.$name)}},ni={props:{cls:Boolean,animation:\"list\",duration:Number,origin:String,transition:String,queued:Boolean},data:{cls:!1,animation:[!1],duration:200,origin:!1,transition:\"linear\",queued:!1,initProps:{overflow:\"\",height:\"\",paddingTop:\"\",paddingBottom:\"\",marginTop:\"\",marginBottom:\"\"},hideProps:{overflow:\"hidden\",height:0,paddingTop:0,paddingBottom:0,marginTop:0,marginBottom:0}},computed:{hasAnimation:function(t){return!!t.animation[0]},hasTransition:function(t){var e=t.animation;return this.hasAnimation&&!0===e[0]}},methods:{toggleElement:function(c,u,l){var d=this;return new ne(function(t){c=W(c);function e(t){return ne.all(t.map(function(t){return d._toggleElement(t,u,l)}))}var n,i=c.filter(function(t){return d.isToggled(t)}),r=c.filter(function(t){return!b(i,t)});if(d.queued&&P(l)&&P(u)&&d.hasAnimation&&!(c.length<2)){var o=document.body,s=o.scrollTop,a=i[0],h=Qe.inProgress(a)&&Oe(a,\"uk-animation-leave\")||Xe.inProgress(a)&&\"0px\"===a.style.height;n=e(i),h||(n=n.then(function(){var t=e(r);return o.scrollTop=s,t}))}else n=e(r.concat(i));n.then(t,Q)})},toggleNow:function(e,n){var i=this;return new ne(function(t){return ne.all(W(e).map(function(t){return i._toggleElement(t,n,!1)})).then(t,Q)})},isToggled:function(t){var e=W(t||this.$el);return this.cls?Oe(e,this.cls.split(\" \")[0]):!rt(e,\"hidden\")},updateAria:function(t){!1===this.cls&&it(t,\"aria-hidden\",!this.isToggled(t))},_toggleElement:function(t,e,n){var i=this;if(e=M(e)?e:Qe.inProgress(t)?Oe(t,\"uk-animation-leave\"):Xe.inProgress(t)?\"0px\"===t.style.height:!this.isToggled(t),!qt(t,\"before\"+(e?\"show\":\"hide\"),[this]))return ne.reject();var r=($(n)?n:!1!==n&&this.hasAnimation?this.hasTransition?function(t){var s=t.isToggled,a=t.duration,h=t.initProps,c=t.hideProps,u=t.transition,l=t._toggle;return function(t,e){var n=Xe.inProgress(t),i=t.hasChildNodes?F(Le(t.firstElementChild,\"marginTop\"))+F(Le(t.lastElementChild,\"marginBottom\")):0,r=Ht(t)?sn(t)+(n?0:i):0;Xe.cancel(t),s(t)||l(t,!0),sn(t,\"\"),kn.flush();var o=sn(t)+(n?0:i);return sn(t,r),(e?Xe.start(t,U({},h,{overflow:\"hidden\",height:o}),Math.round(a*(1-r/o)),u):Xe.start(t,c,Math.round(a*(r/o)),u).then(function(){return l(t,!1)})).then(function(){return Le(t,h)})}}(this):function(t){var n=t.animation,i=t.duration,r=t.origin,o=t._toggle;return function(t,e){return Qe.cancel(t),e?(o(t,!0),Qe.in(t,n[0],i,r)):Qe.out(t,n[1]||n[0],i,r).then(function(){return o(t,!1)})}}(this):this._toggle)(t,e);qt(t,e?\"show\":\"hide\",[this]);function o(){qt(t,e?\"shown\":\"hidden\",[i]),i.$update(t)}return r?r.then(o):ne.resolve(o())},_toggle:function(t,e){var n;t&&(e=Boolean(e),this.cls?(n=b(this.cls,\" \")||e!==Oe(t,this.cls))&&De(t,this.cls,b(this.cls,\" \")?void 0:e):(n=e===rt(t,\"hidden\"))&&it(t,\"hidden\",e?null:\"\"),Ee(\"[autofocus]\",t).some(function(t){return Ht(t)?t.focus()||!0:t.blur()}),this.updateAria(t),n&&this.$update(t))}}};var ii={mixins:[ei,ni],props:{targets:String,active:null,collapsible:Boolean,multiple:Boolean,toggle:String,content:String,transition:String},data:{targets:\"> *\",active:!1,animation:[!0],collapsible:!0,multiple:!1,clsOpen:\"uk-open\",toggle:\"> .uk-accordion-title\",content:\"> .uk-accordion-content\",transition:\"ease\"},computed:{items:function(t,e){return Ee(t.targets,e)}},events:[{name:\"click\",delegate:function(){return this.targets+\" \"+this.$props.toggle},handler:function(t){t.preventDefault(),this.toggle(ue(Ee(this.targets+\" \"+this.$props.toggle,this.$el),t.current))}}],connected:function(){if(!1!==this.active){var t=this.items[Number(this.active)];t&&!Oe(t,this.clsOpen)&&this.toggle(t,!1)}},update:function(){var e=this;this.items.forEach(function(t){return e._toggle(Te(e.content,t),Oe(t,e.clsOpen))});var t=!this.collapsible&&!Oe(this.items,this.clsOpen)&&this.items[0];t&&this.toggle(t,!1)},methods:{toggle:function(r,o){var s=this,t=le(r,this.items),a=jt(this.items,\".\"+this.clsOpen);(r=this.items[t])&&[r].concat(!this.multiple&&!b(a,r)&&a||[]).forEach(function(t){var e=t===r,n=e&&!Oe(t,s.clsOpen);if(n||!e||s.collapsible||!(a.length<2)){De(t,s.clsOpen,n);var i=t._wrapper?t._wrapper.firstElementChild:Te(s.content,t);t._wrapper||(t._wrapper=be(i,\"<div>\"),it(t._wrapper,\"hidden\",n?\"\":null)),s._toggle(i,!0),s.toggleElement(t._wrapper,n,o).then(function(){Oe(t,s.clsOpen)===n&&(n||s._toggle(i,!1),t._wrapper=null,xe(i))})}})}}},ri={mixins:[ei,ni],args:\"animation\",props:{close:String},data:{animation:[!0],selClose:\".uk-alert-close\",duration:150,hideProps:U({opacity:0},ni.data.hideProps)},events:[{name:\"click\",delegate:function(){return this.selClose},handler:function(t){t.preventDefault(),this.close()}}],methods:{close:function(){var t=this;this.toggleElement(this.$el).then(function(){return t.$destroy(!0)})}}};function oi(r){ce(function(){var n;r.update(),Vt(window,\"load resize\",function(){return r.update(null,\"resize\")}),Vt(document,\"loadedmetadata load\",function(t){var e=t.target;return r.update(e,\"resize\")},!0),Vt(window,\"scroll\",function(t){if(!n){n=!0,kn.write(function(){return n=!1});var e=t.target;r.update(1!==e.nodeType?document.body:e,t.type)}},{passive:!0,capture:!0});var e,i=0;Vt(document,\"animationstart\",function(t){var e=t.target;(Le(e,\"animationName\")||\"\").match(/^uk-.*(left|right)/)&&(i++,Le(document.body,\"overflowX\",\"hidden\"),setTimeout(function(){--i||Le(document.body,\"overflowX\",\"\")},R(Le(e,\"animationDuration\"))+100))},!0),Vt(document,dt,function(t){if(e&&e(),Qt(t)){var r=te(t),o=\"tagName\"in t.target?t.target:t.target.parentNode;e=Yt(document,pt+\" \"+vt,function(t){var e=te(t),n=e.x,i=e.y;(o&&n&&100<Math.abs(r.x-n)||i&&100<Math.abs(r.y-i))&&setTimeout(function(){qt(o,\"swipe\"),qt(o,\"swipe\"+function(t,e,n,i){return Math.abs(t-n)>=Math.abs(e-i)?0<t-n?\"Left\":\"Right\":0<e-i?\"Up\":\"Down\"}(r.x,r.y,n,i))})}),\"touchstart\"===dt&&(Le(document.body,\"cursor\",\"pointer\"),Yt(document,pt+\" \"+vt,function(){return setTimeout(function(){return Le(document.body,\"cursor\",\"\")},50)}))}},{passive:!0})})}var si,ai={args:\"autoplay\",props:{automute:Boolean,autoplay:Boolean},data:{automute:!1,autoplay:!0},computed:{inView:function(t){return\"inview\"===t.autoplay}},connected:function(){this.inView&&!rt(this.$el,\"preload\")&&(this.$el.preload=\"none\"),this.player=new Dn(this.$el),this.automute&&this.player.mute()},update:{read:function(){return!!this.player&&{visible:Ht(this.$el)&&\"hidden\"!==Le(this.$el,\"visibility\"),inView:this.inView&&pn(this.$el)}},write:function(t){var e=t.visible,n=t.inView;!e||this.inView&&!n?this.player.pause():(!0===this.autoplay||this.inView&&n)&&this.player.play()},events:[\"resize\",\"scroll\"]}},hi={mixins:[ei,ai],props:{width:Number,height:Number},data:{automute:!0},update:{read:function(){var t=this.$el,e=t.parentNode,n=e.offsetHeight,i=e.offsetWidth,r=nt.cover({width:this.width||t.naturalWidth||t.videoWidth||t.clientWidth,height:this.height||t.naturalHeight||t.videoHeight||t.clientHeight},{width:i+(i%2?1:0),height:n+(n%2?1:0)});return!(!r.width||!r.height)&&r},write:function(t){var e=t.height,n=t.width;Le(this.$el,{height:e,width:n})},events:[\"resize\"]}},ci={props:{pos:String,offset:null,flip:Boolean,clsPos:String},data:{pos:\"bottom-\"+(ht?\"right\":\"left\"),flip:!0,offset:!1,clsPos:\"\"},computed:{pos:function(t){var e=t.pos;return(e+(b(e,\"-\")?\"\":\"-center\")).split(\"-\")},dir:function(){return this.pos[0]},align:function(){return this.pos[1]}},methods:{positionAt:function(t,e,n){var i;Ne(t,this.clsPos+\"-(top|bottom|left|right)(-[a-z]+)?\"),Le(t,{top:\"\",left:\"\"});var r=this.offset,o=this.getAxis();z(r)||(r=(i=Te(r))?nn(i)[\"x\"===o?\"left\":\"top\"]-nn(e)[\"x\"===o?\"right\":\"bottom\"]:0);var s=en(t,e,\"x\"===o?fn(this.dir)+\" \"+this.align:this.align+\" \"+fn(this.dir),\"x\"===o?this.dir+\" \"+this.align:this.align+\" \"+this.dir,\"x\"===o?\"\"+(\"left\"===this.dir?-r:r):\" \"+(\"top\"===this.dir?-r:r),null,this.flip,n).target,a=s.x,h=s.y;this.dir=\"x\"===o?a:h,this.align=\"x\"===o?h:a,De(t,this.clsPos+\"-\"+this.dir+\"-\"+this.align,!1===this.offset)},getAxis:function(){return\"top\"===this.dir||\"bottom\"===this.dir?\"y\":\"x\"}}},ui={mixins:[ci,ni],args:\"pos\",props:{mode:\"list\",toggle:Boolean,boundary:Boolean,boundaryAlign:Boolean,delayShow:Number,delayHide:Number,clsDrop:String},data:{mode:[\"click\",\"hover\"],toggle:\"- *\",boundary:window,boundaryAlign:!1,delayShow:0,delayHide:800,clsDrop:!1,hoverIdle:200,animation:[\"uk-animation-fade\"],cls:\"uk-open\"},computed:{boundary:function(t,e){return wt(t.boundary,e)},clsDrop:function(t){return t.clsDrop||\"uk-\"+this.$options.name},clsPos:function(){return this.clsDrop}},created:function(){this.tracker=new En},connected:function(){Ae(this.$el,this.clsDrop);var t=this.$props.toggle;this.toggle=t&&this.$create(\"toggle\",wt(t,this.$el),{target:this.$el,mode:this.mode}),this.toggle||qt(this.$el,\"updatearia\")},events:[{name:\"click\",delegate:function(){return\".\"+this.clsDrop+\"-close\"},handler:function(t){t.preventDefault(),this.hide(!1)}},{name:\"click\",delegate:function(){return'a[href^=\"#\"]'},handler:function(t){var e=t.defaultPrevented,n=t.current.hash;e||!n||Wt(n,this.$el)||this.hide(!1)}},{name:\"beforescroll\",handler:function(){this.hide(!1)}},{name:\"toggle\",self:!0,handler:function(t,e){t.preventDefault(),this.isToggled()?this.hide(!1):this.show(e,!1)}},{name:mt,filter:function(){return b(this.mode,\"hover\")},handler:function(t){Qt(t)||(si&&si!==this&&si.toggle&&b(si.toggle.mode,\"hover\")&&!Wt(t.target,si.toggle.$el)&&!et({x:t.pageX,y:t.pageY},nn(si.$el))&&si.hide(!1),t.preventDefault(),this.show(this.toggle))}},{name:\"toggleshow\",handler:function(t,e){e&&!b(e.target,this.$el)||(t.preventDefault(),this.show(e||this.toggle))}},{name:\"togglehide \"+gt,handler:function(t,e){Qt(t)||e&&!b(e.target,this.$el)||(t.preventDefault(),this.toggle&&b(this.toggle.mode,\"hover\")&&this.hide())}},{name:\"beforeshow\",self:!0,handler:function(){this.clearTimers(),Qe.cancel(this.$el),this.position()}},{name:\"show\",self:!0,handler:function(){var i=this;this.tracker.init(),qt(this.$el,\"updatearia\");var t=li(document,\"click\",function(t){var e=t.defaultPrevented,n=t.target;e||Wt(n,i.$el)||i.toggle&&Wt(n,i.toggle.$el)||i.hide(!1)});Yt(this.$el,\"hide\",t,{self:!0})}},{name:\"beforehide\",self:!0,handler:function(){this.clearTimers()}},{name:\"hide\",handler:function(t){var e=t.target;this.$el===e?(si=this.isActive()?null:si,qt(this.$el,\"updatearia\"),this.tracker.cancel()):si=null===si&&Wt(e,this.$el)&&this.isToggled()?this:si}},{name:\"updatearia\",self:!0,handler:function(t,e){t.preventDefault(),this.updateAria(this.$el),(e||this.toggle)&&(it((e||this.toggle).$el,\"aria-expanded\",this.isToggled()),De(this.toggle.$el,this.cls,this.isToggled()))}}],update:{write:function(){this.isToggled()&&!Qe.inProgress(this.$el)&&this.position()},events:[\"resize\"]},methods:{show:function(e,n){var i=this;void 0===n&&(n=!0);function r(){return!i.isToggled()&&i.toggleElement(i.$el,!0)}function t(){if(i.toggle=e||i.toggle,i.clearTimers(),!i.isActive())if(n&&si&&si!==i&&si.isDelaying)i.showTimer=setTimeout(i.show,10);else{if(i.isParentOf(si)){if(!si.hideTimer)return;si.hide(!1)}else if(i.isChildOf(si))si.clearTimers();else if(si&&!i.isChildOf(si)&&!i.isParentOf(si))for(var t;si&&si!==t&&!i.isChildOf(si);)(t=si).hide(!1);n&&i.delayShow?i.showTimer=setTimeout(r,i.delayShow):r(),si=i}}e&&this.toggle&&e.$el!==this.toggle.$el?(Yt(this.$el,\"hide\",t),this.hide(!1)):t()},hide:function(t){var e=this;void 0===t&&(t=!0);function n(){return e.toggleNow(e.$el,!1)}this.clearTimers(),this.isDelaying=this.tracker.movesTo(this.$el),t&&this.isDelaying?this.hideTimer=setTimeout(this.hide,this.hoverIdle):t&&this.delayHide?this.hideTimer=setTimeout(n,this.delayHide):n()},clearTimers:function(){clearTimeout(this.showTimer),clearTimeout(this.hideTimer),this.showTimer=null,this.hideTimer=null,this.isDelaying=!1},isActive:function(){return si===this},isChildOf:function(t){return t&&t!==this&&Wt(this.$el,t.$el)},isParentOf:function(t){return t&&t!==this&&Wt(t.$el,this.$el)},position:function(){Ne(this.$el,this.clsDrop+\"-(stack|boundary)\"),Le(this.$el,{top:\"\",left:\"\",display:\"block\"}),De(this.$el,this.clsDrop+\"-boundary\",this.boundaryAlign);var t=nn(this.boundary),e=this.boundaryAlign?t:nn(this.toggle.$el);if(\"justify\"===this.align){var n=\"y\"===this.getAxis()?\"width\":\"height\";Le(this.$el,n,e[n])}else this.$el.offsetWidth>Math.max(t.right-e.left,e.right-t.left)&&Ae(this.$el,this.clsDrop+\"-stack\");this.positionAt(this.$el,this.boundaryAlign?this.boundary:this.toggle.$el,this.boundary),Le(this.$el,\"display\",\"\")}}};function li(t,e,n){var i=Yt(t,e,function(){return i=Vt(t,e,n)},!0);return function(){return i()}}var di={extends:ui},fi={mixins:[ei],args:\"target\",props:{target:Boolean},data:{target:!1},computed:{input:function(t,e){return Te(Lt,e)},state:function(){return this.input.nextElementSibling},target:function(t,e){var n=t.target;return n&&(!0===n&&this.input.parentNode===e&&this.input.nextElementSibling||wt(n,e))}},update:function(){var t=this.target,e=this.input;if(t){var n,i=Ft(t)?\"value\":\"textContent\",r=t[i],o=e.files&&e.files[0]?e.files[0].name:_t(e,\"select\")&&(n=Ee(\"option\",e).filter(function(t){return t.selected})[0])?n.textContent:e.value;r!==o&&(t[i]=o)}},events:[{name:\"change\",handler:function(){this.$emit()}},{name:\"reset\",el:function(){return Mt(this.$el,\"form\")},handler:function(){this.$emit()}}]},pi={update:{read:function(t){var e=pn(this.$el);if(!e||t.isInView===e)return!1;t.isInView=e},write:function(){this.$el.src=this.$el.src},events:[\"scroll\",\"resize\"]}},mi={props:{margin:String,firstColumn:Boolean},data:{margin:\"uk-margin-small-top\",firstColumn:\"uk-first-column\"},update:{read:function(t){var e=this.$el.children;if(!e.length||!Ht(this.$el))return t.rows=[[]];t.rows=gi(e),t.stacks=!t.rows.some(function(t){return 1<t.length})},write:function(t){var i=this;t.rows.forEach(function(t,n){return t.forEach(function(t,e){De(t,i.margin,0!==n),De(t,i.firstColumn,0===e)})})},events:[\"resize\"]}};function gi(t){for(var e=[[]],n=0;n<t.length;n++){var i=t[n],r=vi(i);if(r.height)for(var o=e.length-1;0<=o;o--){var s=e[o];if(!s[0]){s.push(i);break}var a=void 0;if(a=s[0].offsetParent===i.offsetParent?vi(s[0]):(r=vi(i,!0),vi(s[0],!0)),r.top>=a.bottom-1&&r.top!==a.top){e.push([i]);break}if(r.bottom>a.top){if(r.left<a.left&&!ht){s.unshift(i);break}s.push(i);break}if(0===o){e.unshift([i]);break}}}return e}function vi(t,e){var n;void 0===e&&(e=!1);var i=t.offsetTop,r=t.offsetLeft,o=t.offsetHeight;return e&&(i=(n=vn(t))[0],r=n[1]),{top:i,left:r,height:o,bottom:i+o}}var wi={extends:mi,mixins:[ei],name:\"grid\",props:{masonry:Boolean,parallax:Number},data:{margin:\"uk-grid-margin\",clsStack:\"uk-grid-stack\",masonry:!1,parallax:0},computed:{length:function(t,e){return e.children.length},parallax:function(t){var e=t.parallax;return e&&this.length?Math.abs(e):\"\"}},connected:function(){this.masonry&&Ae(this.$el,\"uk-flex-top uk-flex-wrap-top\")},update:[{read:function(t){var r=t.rows;(this.masonry||this.parallax)&&(r=r.map(function(t){return G(t,\"offsetLeft\")}),ht&&r.map(function(t){return t.reverse()}));var e=r.some(function(t){return t.some(Xe.inProgress)}),n=!1,i=\"\";if(this.masonry&&this.length){var o=0;n=r.reduce(function(n,t,i){return n[i]=t.map(function(t,e){return 0===i?0:F(n[i-1][e])+(o-F(r[i-1][e]&&r[i-1][e].offsetHeight))}),o=t.reduce(function(t,e){return Math.max(t,e.offsetHeight)},0),n},[]),i=function(t){return Math.max.apply(Math,t.reduce(function(n,t){return t.forEach(function(t,e){return n[e]=(n[e]||0)+t.offsetHeight}),n},[]))}(r)+function(t,e){var n=W(t.children),i=n.filter(function(t){return Oe(t,e)})[0];return F(i?Le(i,\"marginTop\"):Le(n[0],\"paddingLeft\"))}(this.$el,this.margin)*(r.length-1)}return{padding:this.parallax&&function(t,e,n){for(var i=0,r=0,o=0,s=e.length-1;0<=s;s--)for(var a=i;a<e[s].length;a++){var h=e[s][a],c=h.offsetTop+sn(h)+(n&&-n[s][a]);r=Math.max(r,c),o=Math.max(o,c+(a%2?t:t/8)),i++}return o-r}(this.parallax,r,n),rows:r,translates:n,height:!e&&i}},write:function(t){var e=t.stacks,n=t.height,i=t.padding;De(this.$el,this.clsStack,e),Le(this.$el,\"paddingBottom\",i),!1!==n&&Le(this.$el,\"height\",n)},events:[\"resize\"]},{read:function(t){var e=t.height;return{scrolled:!!this.parallax&&mn(this.$el,e?e-sn(this.$el):0)*this.parallax}},write:function(t){var e=t.rows,i=t.scrolled,r=t.translates;!1===i&&!r||e.forEach(function(t,n){return t.forEach(function(t,e){return Le(t,\"transform\",i||r?\"translateY(\"+((r&&-r[n][e])+(i?e%2?i:i/8:0))+\"px)\":\"\")})})},events:[\"scroll\",\"resize\"]}]};var bi=at?{props:{selMinHeight:String},data:{selMinHeight:!1,forceHeight:!1},computed:{elements:function(t,e){var n=t.selMinHeight;return n?Ee(n,e):[e]}},update:[{read:function(){Le(this.elements,\"height\",\"\")},order:-5,events:[\"resize\"]},{write:function(){var n=this;this.elements.forEach(function(t){var e=F(Le(t,\"minHeight\"));e&&(n.forceHeight||Math.round(e+cn(\"height\",t,\"content-box\"))>=t.offsetHeight)&&Le(t,\"height\",e)})},order:5,events:[\"resize\"]}]}:{},yi={mixins:[bi],args:\"target\",props:{target:String,row:Boolean},data:{target:\"> *\",row:!0,forceHeight:!0},computed:{elements:function(t,e){return Ee(t.target,e)}},update:{read:function(){return{rows:(this.row?gi(this.elements):[this.elements]).map(xi)}},write:function(t){t.rows.forEach(function(t){var n=t.heights;return t.elements.forEach(function(t,e){return Le(t,\"minHeight\",n[e])})})},events:[\"resize\"]}};function xi(t){var e;if(t.length<2)return{heights:[\"\"],elements:t};var n=ki(t),i=n.heights,r=n.max,o=t.some(function(t){return t.style.minHeight}),s=t.some(function(t,e){return!t.style.minHeight&&i[e]<r});return o&&s&&(Le(t,\"minHeight\",\"\"),e=ki(t),i=e.heights,r=e.max),{heights:i=t.map(function(t,e){return i[e]===r&&F(t.style.minHeight).toFixed(2)!==r.toFixed(2)?\"\":r}),elements:t}}function ki(t){var e=t.map(function(t){return nn(t).height-cn(\"height\",t,\"content-box\")});return{heights:e,max:Math.max.apply(null,e)}}var $i={mixins:[bi],props:{expand:Boolean,offsetTop:Boolean,offsetBottom:Boolean,minHeight:Number},data:{expand:!1,offsetTop:!1,offsetBottom:!1,minHeight:0},update:{read:function(t){var e=t.minHeight;if(!Ht(this.$el))return!1;var n=\"\",i=cn(\"height\",this.$el,\"content-box\");if(this.expand){if(this.$el.dataset.heightExpand=\"\",Te(\"[data-height-expand]\")!==this.$el)return!1;n=sn(window)-(Ii(document.documentElement)-Ii(this.$el))-i||\"\"}else{if(n=\"calc(100vh\",this.offsetTop){var r=nn(this.$el).top;n+=0<r&&r<sn(window)/2?\" - \"+r+\"px\":\"\"}!0===this.offsetBottom?n+=\" - \"+Ii(this.$el.nextElementSibling)+\"px\":z(this.offsetBottom)?n+=\" - \"+this.offsetBottom+\"vh\":this.offsetBottom&&u(this.offsetBottom,\"px\")?n+=\" - \"+F(this.offsetBottom)+\"px\":O(this.offsetBottom)&&(n+=\" - \"+Ii(wt(this.offsetBottom,this.$el))+\"px\"),n+=(i?\" - \"+i+\"px\":\"\")+\")\"}return{minHeight:n,prev:e}},write:function(t){var e=t.minHeight,n=t.prev;Le(this.$el,{minHeight:e}),e!==n&&this.$update(this.$el,\"resize\"),this.minHeight&&F(Le(this.$el,\"minHeight\"))<this.minHeight&&Le(this.$el,\"minHeight\",this.minHeight)},events:[\"resize\"]}};function Ii(t){return t&&nn(t).height||0}var Si={args:\"src\",props:{id:Boolean,icon:String,src:String,style:String,width:Number,height:Number,ratio:Number,class:String,strokeAnimation:Boolean,focusable:Boolean,attributes:\"list\"},data:{ratio:1,include:[\"style\",\"class\",\"focusable\"],class:\"\",strokeAnimation:!1},beforeConnect:function(){var t,e=this;if(this.class+=\" uk-svg\",!this.icon&&b(this.src,\"#\")){var n=this.src.split(\"#\");1<n.length&&(t=n,this.src=t[0],this.icon=t[1])}this.svg=this.getSvg().then(function(t){return e.applyAttributes(t),e.svgEl=function(t,e){{if(Pt(e)||\"CANVAS\"===e.tagName){it(e,\"hidden\",!0);var n=e.nextElementSibling;return _i(t,n)?n:ge(e,t)}var i=e.lastElementChild;return _i(t,i)?i:pe(e,t)}}(t,e.$el)},Q)},disconnected:function(){var e=this;Pt(this.$el)&&it(this.$el,\"hidden\",null),this.svg&&this.svg.then(function(t){return(!e._connected||t!==e.svgEl)&&we(t)},Q),this.svg=this.svgEl=null},update:{read:function(){return!!(this.strokeAnimation&&this.svgEl&&Ht(this.svgEl))},write:function(){!function(t){var e=Ai(t);e&&t.style.setProperty(\"--uk-animation-stroke\",e)}(this.svgEl)},type:[\"resize\"]},methods:{getSvg:function(){var e=this;return function(n){if(Ti[n])return Ti[n];return Ti[n]=new ne(function(e,t){n?w(n,\"data:\")?e(decodeURIComponent(n.split(\",\")[1])):ae(n).then(function(t){return e(t.response)},function(){return t(\"SVG not found.\")}):t()})}(this.src).then(function(t){return function(t,e){e&&b(t,\"<symbol\")&&(t=function(t,e){if(!Ci[t]){var n;for(Ci[t]={};n=Ei.exec(t);)Ci[t][n[3]]='<svg xmlns=\"http://www.w3.org/2000/svg\"'+n[1]+\"svg>\";Ei.lastIndex=0}return Ci[t][e]}(t,e)||t);return(t=Te(t.substr(t.indexOf(\"<svg\"))))&&t.hasChildNodes()&&t}(t,e.icon)||ne.reject(\"SVG not found.\")})},applyAttributes:function(n){var i=this;for(var t in this.$options.props)this[t]&&b(this.include,t)&&it(n,t,this[t]);for(var e in this.attributes){var r=this.attributes[e].split(\":\",2),o=r[0],s=r[1];it(n,o,s)}this.id||ot(n,\"id\");var a=[\"width\",\"height\"],h=[this.width,this.height];h.some(function(t){return t})||(h=a.map(function(t){return it(n,t)}));var c=it(n,\"viewBox\");c&&!h.some(function(t){return t})&&(h=c.split(\" \").slice(2)),h.forEach(function(t,e){(t=(0|t)*i.ratio)&&it(n,a[e],t),t&&!h[1^e]&&ot(n,a[1^e])}),it(n,\"data-svg\",this.icon||this.src)}}},Ti={};var Ei=/<symbol(.*?id=(['\"])(.*?)\\2[^]*?<\\/)symbol>/g,Ci={};function Ai(t){return Math.ceil(Math.max.apply(Math,Ee(\"[stroke]\",t).map(function(t){return t.getTotalLength&&t.getTotalLength()||0}).concat([0])))}function _i(t,e){return it(t,\"data-svg\")===it(e,\"data-svg\")}var Ni={},Mi={spinner:'<svg width=\"30\" height=\"30\" viewBox=\"0 0 30 30\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" cx=\"15\" cy=\"15\" r=\"14\"/></svg>',totop:'<svg width=\"18\" height=\"10\" viewBox=\"0 0 18 10\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 9 9 1 17 9 \"/></svg>',marker:'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"9\" y=\"4\" width=\"1\" height=\"11\"/><rect x=\"4\" y=\"9\" width=\"11\" height=\"1\"/></svg>',\"close-icon\":'<svg width=\"14\" height=\"14\" viewBox=\"0 0 14 14\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"1\" y1=\"1\" x2=\"13\" y2=\"13\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"13\" y1=\"1\" x2=\"1\" y2=\"13\"/></svg>',\"close-large\":'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"1\" y1=\"1\" x2=\"19\" y2=\"19\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" x1=\"19\" y1=\"1\" x2=\"1\" y2=\"19\"/></svg>',\"navbar-toggle-icon\":'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><rect y=\"9\" width=\"20\" height=\"2\"/><rect y=\"3\" width=\"20\" height=\"2\"/><rect y=\"15\" width=\"20\" height=\"2\"/></svg>',\"overlay-icon\":'<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><rect x=\"19\" y=\"0\" width=\"1\" height=\"40\"/><rect x=\"0\" y=\"19\" width=\"40\" height=\"1\"/></svg>',\"pagination-next\":'<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"1 1 6 6 1 11\"/></svg>',\"pagination-previous\":'<svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.2\" points=\"6 1 1 6 6 11\"/></svg>',\"search-icon\":'<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"9\" cy=\"9\" r=\"7\"/><path fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" d=\"M14,14 L18,18 L14,14 Z\"/></svg>',\"search-large\":'<svg width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" cx=\"17.5\" cy=\"17.5\" r=\"16.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.8\" x1=\"38\" y1=\"39\" x2=\"29\" y2=\"30\"/></svg>',\"search-navbar\":'<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><circle fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" cx=\"10.5\" cy=\"10.5\" r=\"9.5\"/><line fill=\"none\" stroke=\"#000\" stroke-width=\"1.1\" x1=\"23\" y1=\"23\" x2=\"17\" y2=\"17\"/></svg>',\"slidenav-next\":'<svg width=\"14px\" height=\"24px\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"1.225,23 12.775,12 1.225,1 \"/></svg>',\"slidenav-next-large\":'<svg width=\"25px\" height=\"40px\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"4.002,38.547 22.527,20.024 4,1.5 \"/></svg>',\"slidenav-previous\":'<svg width=\"14px\" height=\"24px\" viewBox=\"0 0 14 24\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"1.4\" points=\"12.775,1 1.225,12 12.775,23 \"/></svg>',\"slidenav-previous-large\":'<svg width=\"25px\" height=\"40px\" viewBox=\"0 0 25 40\" xmlns=\"http://www.w3.org/2000/svg\"><polyline fill=\"none\" stroke=\"#000\" stroke-width=\"2\" points=\"20.527,1.5 2,20.024 20.525,38.547 \"/></svg>'},Oi={install:function(r){r.icon.add=function(t,e){var n,i=O(t)?((n={})[t]=e,n):t;K(i,function(t,e){Mi[e]=t,delete Ni[e]}),r._initialized&&Se(document.body,function(t){return K(r.getComponents(t),function(t){t.$options.isIcon&&t.icon in i&&t.$reset()})})}},extends:Si,args:\"icon\",props:[\"icon\"],data:{include:[\"focusable\"]},isIcon:!0,beforeConnect:function(){Ae(this.$el,\"uk-icon\")},methods:{getSvg:function(){var t=function(t){if(!Mi[t])return null;Ni[t]||(Ni[t]=Te(Mi[t].trim()));return Ni[t].cloneNode(!0)}(function(t){return ht?q(q(t,\"left\",\"right\"),\"previous\",\"next\"):t}(this.icon));return t?ne.resolve(t):ne.reject(\"Icon not found.\")}}},Di={args:!1,extends:Oi,data:function(t){return{icon:d(t.constructor.options.name)}},beforeConnect:function(){Ae(this.$el,this.$name)}},zi={extends:Di,beforeConnect:function(){Ae(this.$el,\"uk-slidenav\")},computed:{icon:function(t,e){var n=t.icon;return Oe(e,\"uk-slidenav-large\")?n+\"-large\":n}}},Bi={extends:Di,computed:{icon:function(t,e){var n=t.icon;return Oe(e,\"uk-search-icon\")&&Ot(e,\".uk-search-large\").length?\"search-large\":Ot(e,\".uk-search-navbar\").length?\"search-navbar\":n}}},Pi={extends:Di,computed:{icon:function(){return\"close-\"+(Oe(this.$el,\"uk-close-large\")?\"large\":\"icon\")}}},Hi={extends:Di,connected:function(){var e=this;this.svg.then(function(t){return 1!==e.ratio&&Le(Te(\"circle\",t),\"strokeWidth\",1/e.ratio)},Q)}};var Li={args:\"dataSrc\",props:{dataSrc:String,dataSrcset:Boolean,sizes:String,width:Number,height:Number,offsetTop:String,offsetLeft:String,target:String},data:{dataSrc:\"\",dataSrcset:!1,sizes:!1,width:!1,height:!1,offsetTop:\"50vh\",offsetLeft:0,target:!1},computed:{cacheKey:function(t){var e=t.dataSrc;return this.$name+\".\"+e},width:function(t){var e=t.width,n=t.dataWidth;return e||n},height:function(t){var e=t.height,n=t.dataHeight;return e||n},sizes:function(t){var e=t.sizes,n=t.dataSizes;return e||n},isImg:function(t,e){return qi(e)},target:{get:function(t){var e=t.target;return[this.$el].concat(bt(e,this.$el))},watch:function(){this.observe()}},offsetTop:function(t){return wn(t.offsetTop,\"height\")},offsetLeft:function(t){return wn(t.offsetLeft,\"width\")}},connected:function(){Xi[this.cacheKey]?Fi(this.$el,Xi[this.cacheKey]||this.dataSrc,this.dataSrcset,this.sizes):this.isImg&&this.width&&this.height&&Fi(this.$el,function(t,e,n){var i;n&&(i=nt.ratio({width:t,height:e},\"width\",wn(Wi(n))),t=i.width,e=i.height);return'data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"'+t+'\" height=\"'+e+'\"></svg>'}(this.width,this.height,this.sizes)),this.observer=new Pn(this.load,{rootMargin:this.offsetTop+\"px \"+this.offsetLeft+\"px\"}),requestAnimationFrame(this.observe)},disconnected:function(){this.observer.disconnect()},update:{read:function(t){var e=this,n=t.image;if(n||\"complete\"!==document.readyState||this.load(this.observer.takeRecords()),this.isImg)return!1;n&&n.then(function(t){return t&&\"\"!==t.currentSrc&&Fi(e.$el,Ui(t))})},write:function(t){if(this.dataSrcset&&1!==window.devicePixelRatio){var e=Le(this.$el,\"backgroundSize\");!e.match(/^(auto\\s?)+$/)&&F(e)!==t.bgSize||(t.bgSize=function(t,e){var n=wn(Wi(e)),i=(t.match(Yi)||[]).map(F).sort(function(t,e){return t-e});return i.filter(function(t){return n<=t})[0]||i.pop()||\"\"}(this.dataSrcset,this.sizes),Le(this.$el,\"backgroundSize\",t.bgSize+\"px\"))}},events:[\"resize\"]},methods:{load:function(t){var e=this;t.some(function(t){return P(t.isIntersecting)||t.isIntersecting})&&(this._data.image=he(this.dataSrc,this.dataSrcset,this.sizes).then(function(t){return Fi(e.$el,Ui(t),t.srcset,t.sizes),Xi[e.cacheKey]=Ui(t),t},Q),this.observer.disconnect())},observe:function(){var e=this;!this._data.image&&this._connected&&this.target.forEach(function(t){return e.observer.observe(t)})}}};function Fi(t,e,n,i){if(qi(t))i&&(t.sizes=i),n&&(t.srcset=n),e&&(t.src=e);else if(e){!b(t.style.backgroundImage,e)&&(Le(t,\"backgroundImage\",\"url(\"+zt(e)+\")\"),qt(t,Ut(\"load\",!1)))}}var ji=/\\s*(.*?)\\s*(\\w+|calc\\(.*?\\))\\s*(?:,|$)/g;function Wi(t){var e,n;for(ji.lastIndex=0;e=ji.exec(t);)if(!e[1]||window.matchMedia(e[1]).matches){e=w(n=e[2],\"calc\")?n.substring(5,n.length-1).replace(Vi,function(t){return wn(t)}).replace(/ /g,\"\").match(Ri).reduce(function(t,e){return t+ +e},0):n;break}return e||\"100vw\"}var Vi=/\\d+(?:\\w+|%)/g,Ri=/[+-]?(\\d+)/g;var Yi=/\\s+\\d+w\\s*(?:,|$)/g;function qi(t){return\"IMG\"===t.tagName}function Ui(t){return t.currentSrc||t.src}var Xi,Ki=\"__test__\";try{(Xi=window.sessionStorage||{})[Ki]=1,delete Xi[Ki]}catch(t){Xi={}}var Gi={props:{media:Boolean},data:{media:!1},computed:{matchMedia:function(){var t=function(t){if(O(t)){if(\"@\"===t[0])t=F(Ve(\"breakpoint-\"+t.substr(1)));else if(isNaN(t))return t}return!(!t||isNaN(t))&&\"(min-width: \"+t+\"px)\"}(this.media);return!t||window.matchMedia(t).matches}}};var Ji={mixins:[ei,Gi],props:{fill:String},data:{fill:\"\",clsWrapper:\"uk-leader-fill\",clsHide:\"uk-leader-hide\",attrFill:\"data-fill\"},computed:{fill:function(t){return t.fill||Ve(\"leader-fill-content\")}},connected:function(){var t;t=ye(this.$el,'<span class=\"'+this.clsWrapper+'\">'),this.wrapper=t[0]},disconnected:function(){xe(this.wrapper.childNodes)},update:{read:function(t){var e=t.changed,n=t.width,i=n;return{width:n=Math.floor(this.$el.offsetWidth/2),fill:this.fill,changed:e||i!==n,hide:!this.matchMedia}},write:function(t){De(this.wrapper,this.clsHide,t.hide),t.changed&&(t.changed=!1,it(this.wrapper,this.attrFill,new Array(t.width).join(t.fill)))},events:[\"resize\"]}},Zi={props:{container:Boolean},data:{container:!0},computed:{container:function(t){var e=t.container;return!0===e&&this.$container||e&&Te(e)}}},Qi=[],tr={mixins:[ei,Zi,ni],props:{selPanel:String,selClose:String,escClose:Boolean,bgClose:Boolean,stack:Boolean},data:{cls:\"uk-open\",escClose:!0,bgClose:!0,overlay:!0,stack:!1},computed:{panel:function(t,e){return Te(t.selPanel,e)},transitionElement:function(){return this.panel},bgClose:function(t){return t.bgClose&&this.panel}},beforeDisconnect:function(){this.isToggled()&&this.toggleNow(this.$el,!1)},events:[{name:\"click\",delegate:function(){return this.selClose},handler:function(t){t.preventDefault(),this.hide()}},{name:\"toggle\",self:!0,handler:function(t){t.defaultPrevented||(t.preventDefault(),this.toggle())}},{name:\"beforeshow\",self:!0,handler:function(t){if(b(Qi,this))return!1;!this.stack&&Qi.length?(ne.all(Qi.map(function(t){return t.hide()})).then(this.show),t.preventDefault()):Qi.push(this)}},{name:\"show\",self:!0,handler:function(){var r=this;an(window)-an(document)&&this.overlay&&Le(document.body,\"overflowY\",\"scroll\"),Ae(document.documentElement,this.clsPage),this.bgClose&&Yt(this.$el,\"hide\",li(document,\"click\",function(t){var e=t.defaultPrevented,n=t.target,i=X(Qi);e||i!==r||i.overlay&&!Wt(n,i.$el)||Wt(n,i.panel)||i.hide()}),{self:!0}),this.escClose&&Yt(this.$el,\"hide\",Vt(document,\"keydown\",function(t){var e=X(Qi);27===t.keyCode&&e===r&&(t.preventDefault(),e.hide())}),{self:!0})}},{name:\"hidden\",self:!0,handler:function(){var e=this;Qi.splice(Qi.indexOf(this),1),Qi.length||Le(document.body,\"overflowY\",\"\"),Qi.some(function(t){return t.clsPage===e.clsPage})||_e(document.documentElement,this.clsPage)}}],methods:{toggle:function(){return this.isToggled()?this.hide():this.show()},show:function(){var e=this;return this.container&&this.$el.parentNode!==this.container?(pe(this.container,this.$el),new ne(function(t){return requestAnimationFrame(function(){return e.show().then(t)})})):this.toggleElement(this.$el,!0,er(this))},hide:function(){return this.toggleElement(this.$el,!1,er(this))}}};function er(t){var s=t.transitionElement,a=t._toggle;return function(r,o){return new ne(function(n,i){return Yt(r,\"show hide\",function(){r._reject&&r._reject(),r._reject=i,a(r,o);var t=Yt(s,\"transitionstart\",function(){Yt(s,\"transitionend transitioncancel\",n,{self:!0}),clearTimeout(e)},{self:!0}),e=setTimeout(function(){t(),n()},R(Le(s,\"transitionDuration\")))})})}}var nr={install:function(a){a.modal.dialog=function(t,e){var n=a.modal(' <div class=\"uk-modal\"> <div class=\"uk-modal-dialog\">'+t+\"</div> </div> \",e);return n.show(),Vt(n.$el,\"hidden\",function(){return ne.resolve(function(){return n.$destroy(!0)})},{self:!0}),n},a.modal.alert=function(e,n){return n=U({bgClose:!1,escClose:!1,labels:a.modal.labels},n),new ne(function(t){return Vt(a.modal.dialog(' <div class=\"uk-modal-body\">'+(O(e)?e:fe(e))+'</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-primary uk-modal-close\" autofocus>'+n.labels.ok+\"</button> </div> \",n).$el,\"hide\",t)})},a.modal.confirm=function(r,o){return o=U({bgClose:!1,escClose:!0,labels:a.modal.labels},o),new ne(function(e,t){var n=a.modal.dialog(' <form> <div class=\"uk-modal-body\">'+(O(r)?r:fe(r))+'</div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">'+o.labels.cancel+'</button> <button class=\"uk-button uk-button-primary\" autofocus>'+o.labels.ok+\"</button> </div> </form> \",o),i=!1;Vt(n.$el,\"submit\",\"form\",function(t){t.preventDefault(),e(),i=!0,n.hide()}),Vt(n.$el,\"hide\",function(){i||t()})})},a.modal.prompt=function(t,o,s){return s=U({bgClose:!1,escClose:!0,labels:a.modal.labels},s),new ne(function(e){var n=a.modal.dialog(' <form class=\"uk-form-stacked\"> <div class=\"uk-modal-body\"> <label>'+(O(t)?t:fe(t))+'</label> <input class=\"uk-input\" autofocus> </div> <div class=\"uk-modal-footer uk-text-right\"> <button class=\"uk-button uk-button-default uk-modal-close\" type=\"button\">'+s.labels.cancel+'</button> <button class=\"uk-button uk-button-primary\">'+s.labels.ok+\"</button> </div> </form> \",s),i=Te(\"input\",n.$el);i.value=o;var r=!1;Vt(n.$el,\"submit\",\"form\",function(t){t.preventDefault(),e(i.value),r=!0,n.hide()}),Vt(n.$el,\"hide\",function(){r||e(null)})})},a.modal.labels={ok:\"Ok\",cancel:\"Cancel\"}},mixins:[tr],data:{clsPage:\"uk-modal-page\",selPanel:\".uk-modal-dialog\",selClose:\".uk-modal-close, .uk-modal-close-default, .uk-modal-close-outside, .uk-modal-close-full\"},events:[{name:\"show\",self:!0,handler:function(){Oe(this.panel,\"uk-margin-auto-vertical\")?Ae(this.$el,\"uk-flex\"):Le(this.$el,\"display\",\"block\"),sn(this.$el)}},{name:\"hidden\",self:!0,handler:function(){Le(this.$el,\"display\",\"\"),_e(this.$el,\"uk-flex\")}}]};var ir={extends:ii,data:{targets:\"> .uk-parent\",toggle:\"> a\",content:\"> ul\"}},rr={mixins:[ei,bi],props:{dropdown:String,mode:\"list\",align:String,offset:Number,boundary:Boolean,boundaryAlign:Boolean,clsDrop:String,delayShow:Number,delayHide:Number,dropbar:Boolean,dropbarMode:String,dropbarAnchor:Boolean,duration:Number},data:{dropdown:\".uk-navbar-nav > li\",align:ht?\"right\":\"left\",clsDrop:\"uk-navbar-dropdown\",mode:void 0,offset:void 0,delayShow:void 0,delayHide:void 0,boundaryAlign:void 0,flip:\"x\",boundary:!0,dropbar:!1,dropbarMode:\"slide\",dropbarAnchor:!1,duration:200,forceHeight:!0,selMinHeight:\".uk-navbar-nav > li > a, .uk-navbar-item, .uk-navbar-toggle\"},computed:{boundary:function(t,e){var n=t.boundary,i=t.boundaryAlign;return!0===n||i?e:n},dropbarAnchor:function(t,e){return wt(t.dropbarAnchor,e)},pos:function(t){return\"bottom-\"+t.align},dropdowns:function(t,e){return Ee(t.dropdown+\" .\"+t.clsDrop,e)}},beforeConnect:function(){var t=this.$props.dropbar;this.dropbar=t&&(wt(t,this.$el)||Te(\"+ .uk-navbar-dropbar\",this.$el)||Te(\"<div></div>\")),this.dropbar&&(Ae(this.dropbar,\"uk-navbar-dropbar\"),\"slide\"===this.dropbarMode&&Ae(this.dropbar,\"uk-navbar-dropbar-slide\"))},disconnected:function(){this.dropbar&&we(this.dropbar)},update:function(){var e=this;this.$create(\"drop\",this.dropdowns.filter(function(t){return!e.getDropdown(t)}),U({},this.$props,{boundary:this.boundary,pos:this.pos,offset:this.dropbar||this.offset}))},events:[{name:\"mouseover\",delegate:function(){return this.dropdown},handler:function(t){var e=t.current,n=this.getActive();n&&n.toggle&&!Wt(n.toggle.$el,e)&&!n.tracker.movesTo(n.$el)&&n.hide(!1)}},{name:\"mouseleave\",el:function(){return this.dropbar},handler:function(){var t=this.getActive();t&&!this.dropdowns.some(function(t){return _t(t,\":hover\")})&&t.hide()}},{name:\"beforeshow\",capture:!0,filter:function(){return this.dropbar},handler:function(){this.dropbar.parentNode||ge(this.dropbarAnchor||this.$el,this.dropbar)}},{name:\"show\",capture:!0,filter:function(){return this.dropbar},handler:function(t,e){var n=e.$el,i=e.dir;this.clsDrop&&Ae(n,this.clsDrop+\"-dropbar\"),\"bottom\"===i&&this.transitionTo(n.offsetHeight+F(Le(n,\"marginTop\"))+F(Le(n,\"marginBottom\")),n)}},{name:\"beforehide\",filter:function(){return this.dropbar},handler:function(t,e){var n=e.$el,i=this.getActive();_t(this.dropbar,\":hover\")&&i&&i.$el===n&&t.preventDefault()}},{name:\"hide\",filter:function(){return this.dropbar},handler:function(t,e){var n=e.$el,i=this.getActive();(!i||i&&i.$el===n)&&this.transitionTo(0)}}],methods:{getActive:function(){var t=this.dropdowns.map(this.getDropdown).filter(function(t){return t&&t.isActive()})[0];return t&&b(t.mode,\"hover\")&&Wt(t.toggle.$el,this.$el)&&t},transitionTo:function(t,e){var n=this,i=this.dropbar,r=Ht(i)?sn(i):0;return Le(e=r<t&&e,\"clip\",\"rect(0,\"+e.offsetWidth+\"px,\"+r+\"px,0)\"),sn(i,r),Xe.cancel([e,i]),ne.all([Xe.start(i,{height:t},this.duration),Xe.start(e,{clip:\"rect(0,\"+e.offsetWidth+\"px,\"+t+\"px,0)\"},this.duration)]).catch(Q).then(function(){Le(e,{clip:\"\"}),n.$update(i)})},getDropdown:function(t){return this.$getComponent(t,\"drop\")||this.$getComponent(t,\"dropdown\")}}},or={mixins:[tr],args:\"mode\",props:{mode:String,flip:Boolean,overlay:Boolean},data:{mode:\"slide\",flip:!1,overlay:!1,clsPage:\"uk-offcanvas-page\",clsContainer:\"uk-offcanvas-container\",selPanel:\".uk-offcanvas-bar\",clsFlip:\"uk-offcanvas-flip\",clsContainerAnimation:\"uk-offcanvas-container-animation\",clsSidebarAnimation:\"uk-offcanvas-bar-animation\",clsMode:\"uk-offcanvas\",clsOverlay:\"uk-offcanvas-overlay\",selClose:\".uk-offcanvas-close\",container:!1},computed:{clsFlip:function(t){var e=t.flip,n=t.clsFlip;return e?n:\"\"},clsOverlay:function(t){var e=t.overlay,n=t.clsOverlay;return e?n:\"\"},clsMode:function(t){var e=t.mode;return t.clsMode+\"-\"+e},clsSidebarAnimation:function(t){var e=t.mode,n=t.clsSidebarAnimation;return\"none\"===e||\"reveal\"===e?\"\":n},clsContainerAnimation:function(t){var e=t.mode,n=t.clsContainerAnimation;return\"push\"!==e&&\"reveal\"!==e?\"\":n},transitionElement:function(t){return\"reveal\"===t.mode?this.panel.parentNode:this.panel}},events:[{name:\"click\",delegate:function(){return'a[href^=\"#\"]'},handler:function(t){var e=t.current.hash;!t.defaultPrevented&&e&&Te(e,document.body)&&this.hide()}},{name:\"touchstart\",passive:!0,el:function(){return this.panel},handler:function(t){var e=t.targetTouches;1===e.length&&(this.clientY=e[0].clientY)}},{name:\"touchmove\",self:!0,passive:!1,filter:function(){return this.overlay},handler:function(t){t.cancelable&&t.preventDefault()}},{name:\"touchmove\",passive:!1,el:function(){return this.panel},handler:function(t){if(1===t.targetTouches.length){var e=event.targetTouches[0].clientY-this.clientY,n=this.panel,i=n.scrollTop,r=n.scrollHeight,o=n.clientHeight;(r<=o||0===i&&0<e||r-i<=o&&e<0)&&t.cancelable&&t.preventDefault()}}},{name:\"show\",self:!0,handler:function(){\"reveal\"!==this.mode||Oe(this.panel.parentNode,this.clsMode)||(be(this.panel,\"<div>\"),Ae(this.panel.parentNode,this.clsMode)),Le(document.documentElement,\"overflowY\",this.overlay?\"hidden\":\"\"),Ae(document.body,this.clsContainer,this.clsFlip),Le(document.body,\"touch-action\",\"pan-y pinch-zoom\"),Le(this.$el,\"display\",\"block\"),Ae(this.$el,this.clsOverlay),Ae(this.panel,this.clsSidebarAnimation,\"reveal\"!==this.mode?this.clsMode:\"\"),sn(document.body),Ae(document.body,this.clsContainerAnimation),this.clsContainerAnimation&&(sr().content+=\",user-scalable=0\")}},{name:\"hide\",self:!0,handler:function(){_e(document.body,this.clsContainerAnimation),Le(document.body,\"touch-action\",\"\")}},{name:\"hidden\",self:!0,handler:function(){this.clsContainerAnimation&&function(){var t=sr();t.content=t.content.replace(/,user-scalable=0$/,\"\")}(),\"reveal\"===this.mode&&xe(this.panel),_e(this.panel,this.clsSidebarAnimation,this.clsMode),_e(this.$el,this.clsOverlay),Le(this.$el,\"display\",\"\"),_e(document.body,this.clsContainer,this.clsFlip),Le(document.documentElement,\"overflowY\",\"\")}},{name:\"swipeLeft swipeRight\",handler:function(t){this.isToggled()&&u(t.type,\"Left\")^this.flip&&this.hide()}}]};function sr(){return Te('meta[name=\"viewport\"]',document.head)||pe(document.head,'<meta name=\"viewport\">')}var ar={mixins:[ei],props:{selContainer:String,selContent:String},data:{selContainer:\".uk-modal\",selContent:\".uk-modal-dialog\"},computed:{container:function(t,e){return Mt(e,t.selContainer)},content:function(t,e){return Mt(e,t.selContent)}},connected:function(){Le(this.$el,\"minHeight\",150)},update:{read:function(){return!(!this.content||!this.container)&&{current:F(Le(this.$el,\"maxHeight\")),max:Math.max(150,sn(this.container)-(nn(this.content).height-sn(this.$el)))}},write:function(t){var e=t.current,n=t.max;Le(this.$el,\"maxHeight\",n),Math.round(e)!==Math.round(n)&&qt(this.$el,\"resize\")},events:[\"resize\"]}},hr={props:[\"width\",\"height\"],connected:function(){Ae(this.$el,\"uk-responsive-width\")},update:{read:function(){return!!(Ht(this.$el)&&this.width&&this.height)&&{width:an(this.$el.parentNode),height:this.height}},write:function(t){sn(this.$el,nt.contain({height:this.height,width:this.width},t).height)},events:[\"resize\"]}},cr={props:{duration:Number,offset:Number},data:{duration:1e3,offset:0},methods:{scrollTo:function(e){var n=this;e=e&&Te(e)||document.body;var t=sn(document),i=sn(window),r=nn(e).top-this.offset;if(t<r+i&&(r=t-i),qt(this.$el,\"beforescroll\",[this,e])){var o=Date.now(),s=window.pageYOffset,a=function(){var t=s+(r-s)*function(t){return.5*(1-Math.cos(Math.PI*t))}(Z((Date.now()-o)/n.duration));gn(window,t),t!==r?requestAnimationFrame(a):qt(n.$el,\"scrolled\",[n,e])};a()}}},events:{click:function(t){t.defaultPrevented||(t.preventDefault(),this.scrollTo(zt(decodeURIComponent(this.$el.hash)).substr(1)))}}};var ur={args:\"cls\",props:{cls:String,target:String,hidden:Boolean,offsetTop:Number,offsetLeft:Number,repeat:Boolean,delay:Number},data:function(){return{cls:!1,target:!1,hidden:!0,offsetTop:0,offsetLeft:0,repeat:!1,delay:0,inViewClass:\"uk-scrollspy-inview\"}},computed:{elements:function(t,e){var n=t.target;return n?Ee(n,e):[e]}},update:[{write:function(){this.hidden&&Le(jt(this.elements,\":not(.\"+this.inViewClass+\")\"),\"visibility\",\"hidden\")}},{read:function(t){var n=this;t.update&&this.elements.forEach(function(t){var e=t._ukScrollspyState;(e=e||{cls:st(t,\"uk-scrollspy-class\")||n.cls}).show=pn(t,n.offsetTop,n.offsetLeft),t._ukScrollspyState=e})},write:function(r){var o=this;if(!r.update)return this.$emit(),r.update=!0;this.elements.forEach(function(t){var n=t._ukScrollspyState,e=n.cls;if(!n.show||n.inview||n.queued){if(!n.show&&(n.inview||n.queued)&&o.repeat){if(n.abort&&n.abort(),!n.inview)return;Le(t,\"visibility\",o.hidden?\"hidden\":\"\"),_e(t,o.inViewClass),De(t,e),qt(t,\"outview\"),o.$update(t),n.inview=!1}}else{var i=function(){Le(t,\"visibility\",\"\"),Ae(t,o.inViewClass),De(t,e),qt(t,\"inview\"),o.$update(t),n.inview=!0,n.abort&&n.abort()};o.delay?(n.queued=!0,r.promise=(r.promise||ne.resolve()).then(function(){return!n.inview&&new ne(function(t){var e=setTimeout(function(){i(),t()},r.promise||1===o.elements.length?o.delay:0);n.abort=function(){clearTimeout(e),t(),n.queued=!1}})})):i()}})},events:[\"scroll\",\"resize\"]}]},lr={props:{cls:String,closest:String,scroll:Boolean,overflow:Boolean,offset:Number},data:{cls:\"uk-active\",closest:!1,scroll:!1,overflow:!0,offset:0},computed:{links:function(t,e){return Ee('a[href^=\"#\"]',e).filter(function(t){return t.hash})},elements:function(t){var e=t.closest;return Mt(this.links,e||\"*\")},targets:function(){return Ee(this.links.map(function(t){return zt(t.hash).substr(1)}).join(\",\"))}},update:[{read:function(){this.scroll&&this.$create(\"scroll\",this.links,{offset:this.offset||0})}},{read:function(o){var s=this,a=window.pageYOffset+this.offset+1,h=sn(document)-sn(window)+this.offset;o.active=!1,this.targets.every(function(t,e){var n=nn(t).top,i=e+1===s.targets.length;if(!s.overflow&&(0===e&&a<n||i&&n+t.offsetTop<a))return!1;if(!i&&nn(s.targets[e+1]).top<=a)return!0;if(h<=a)for(var r=s.targets.length-1;e<r;r--)if(pn(s.targets[r])){t=s.targets[r];break}return!(o.active=Te(jt(s.links,'[href=\"#'+t.id+'\"]')))})},write:function(t){var e=t.active;this.links.forEach(function(t){return t.blur()}),_e(this.elements,this.cls),e&&qt(this.$el,\"active\",[e,Ae(this.closest?Mt(e,this.closest):e,this.cls)])},events:[\"scroll\",\"resize\"]}]},dr={mixins:[ei,Gi],props:{top:null,bottom:Boolean,offset:String,animation:String,clsActive:String,clsInactive:String,clsFixed:String,clsBelow:String,selTarget:String,widthElement:Boolean,showOnUp:Boolean,targetOffset:Number},data:{top:0,bottom:!1,offset:0,animation:\"\",clsActive:\"uk-active\",clsInactive:\"\",clsFixed:\"uk-sticky-fixed\",clsBelow:\"uk-sticky-below\",selTarget:\"\",widthElement:!1,showOnUp:!1,targetOffset:!1},computed:{offset:function(t){return wn(t.offset)},selTarget:function(t,e){var n=t.selTarget;return n&&Te(n,e)||e},widthElement:function(t,e){return wt(t.widthElement,e)||this.placeholder},isActive:{get:function(){return Oe(this.selTarget,this.clsActive)},set:function(t){t&&!this.isActive?(Me(this.selTarget,this.clsInactive,this.clsActive),qt(this.$el,\"active\")):t||Oe(this.selTarget,this.clsInactive)||(Me(this.selTarget,this.clsActive,this.clsInactive),qt(this.$el,\"inactive\"))}}},connected:function(){this.placeholder=Te(\"+ .uk-sticky-placeholder\",this.$el)||Te('<div class=\"uk-sticky-placeholder\"></div>'),this.isFixed=!1,this.isActive=!1},disconnected:function(){this.isFixed&&(this.hide(),_e(this.selTarget,this.clsInactive)),we(this.placeholder),this.placeholder=null,this.widthElement=null},events:[{name:\"load hashchange popstate\",el:window,handler:function(){var i=this;if(!1!==this.targetOffset&&location.hash&&0<window.pageYOffset){var r=Te(location.hash);r&&kn.read(function(){var t=nn(r).top,e=nn(i.$el).top,n=i.$el.offsetHeight;i.isFixed&&t<=e+n&&e<=t+r.offsetHeight&&gn(window,t-n-(z(i.targetOffset)?i.targetOffset:0)-i.offset)})}}}],update:[{read:function(t,e){var n=t.height;this.isActive&&\"update\"!==e&&(this.hide(),n=this.$el.offsetHeight,this.show()),n=this.isActive?n:this.$el.offsetHeight,this.topOffset=nn(this.isFixed?this.placeholder:this.$el).top,this.bottomOffset=this.topOffset+n;var i=fr(\"bottom\",this);return this.top=Math.max(F(fr(\"top\",this)),this.topOffset)-this.offset,this.bottom=i&&i-n,this.inactive=!this.matchMedia,{lastScroll:!1,height:n,margins:Le(this.$el,[\"marginTop\",\"marginBottom\",\"marginLeft\",\"marginRight\"])}},write:function(t){var e=t.height,n=t.margins,i=this.placeholder;Le(i,U({height:e},n)),Wt(i,document)||(ge(this.$el,i),it(i,\"hidden\",\"\")),this.isActive=this.isActive},events:[\"resize\"]},{read:function(t){var e=t.scroll;return void 0===e&&(e=0),this.width=(Ht(this.widthElement)?this.widthElement:this.$el).offsetWidth,this.scroll=window.pageYOffset,{dir:e<=this.scroll?\"down\":\"up\",scroll:this.scroll,visible:Ht(this.$el),top:vn(this.placeholder)[0]}},write:function(t,e){var n=this,i=t.initTimestamp;void 0===i&&(i=0);var r=t.dir,o=t.lastDir,s=t.lastScroll,a=t.scroll,h=t.top,c=t.visible,u=performance.now();if(!((t.lastScroll=a)<0||a===s||!c||this.disabled||this.showOnUp&&\"scroll\"!==e||((300<u-i||r!==o)&&(t.initScroll=a,t.initTimestamp=u),t.lastDir=r,this.showOnUp&&Math.abs(t.initScroll-a)<=30&&Math.abs(s-a)<=10)))if(this.inactive||a<this.top||this.showOnUp&&(a<=this.top||\"down\"===r||\"up\"===r&&!this.isFixed&&a<=this.bottomOffset)){if(!this.isFixed)return void(Qe.inProgress(this.$el)&&a<h&&(Qe.cancel(this.$el),this.hide()));this.isFixed=!1,this.animation&&a>this.topOffset?(Qe.cancel(this.$el),Qe.out(this.$el,this.animation).then(function(){return n.hide()},Q)):this.hide()}else this.isFixed?this.update():this.animation?(Qe.cancel(this.$el),this.show(),Qe.in(this.$el,this.animation).catch(Q)):this.show()},events:[\"resize\",\"scroll\"]}],methods:{show:function(){this.isFixed=!0,this.update(),it(this.placeholder,\"hidden\",null)},hide:function(){this.isActive=!1,_e(this.$el,this.clsFixed,this.clsBelow),Le(this.$el,{position:\"\",top:\"\",width:\"\"}),it(this.placeholder,\"hidden\",\"\")},update:function(){var t=0!==this.top||this.scroll>this.top,e=Math.max(0,this.offset);this.bottom&&this.scroll>this.bottom-this.offset&&(e=this.bottom-this.scroll),Le(this.$el,{position:\"fixed\",top:e+\"px\",width:this.width}),this.isActive=t,De(this.$el,this.clsBelow,this.scroll>this.bottomOffset),Ae(this.$el,this.clsFixed)}}};function fr(t,e){var n=e.$props,i=e.$el,r=e[t+\"Offset\"],o=n[t];if(o)return z(o)&&O(o)&&o.match(/^-?\\d/)?r+wn(o):nn(!0===o?i.parentNode:wt(o,i)).bottom}var pr,mr={mixins:[ni],args:\"connect\",props:{connect:String,toggle:String,active:Number,swiping:Boolean},data:{connect:\"~.uk-switcher\",toggle:\"> * > :first-child\",active:0,swiping:!0,cls:\"uk-active\",clsContainer:\"uk-switcher\",attrItem:\"uk-switcher-item\",queued:!0},computed:{connects:function(t,e){return bt(t.connect,e)},toggles:function(t,e){return Ee(t.toggle,e)}},events:[{name:\"click\",delegate:function(){return this.toggle+\":not(.uk-disabled)\"},handler:function(e){e.preventDefault(),this.show(W(this.$el.children).filter(function(t){return Wt(e.current,t)})[0])}},{name:\"click\",el:function(){return this.connects},delegate:function(){return\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\"},handler:function(t){t.preventDefault(),this.show(st(t.current,this.attrItem))}},{name:\"swipeRight swipeLeft\",filter:function(){return this.swiping},el:function(){return this.connects},handler:function(t){var e=t.type;this.show(u(e,\"Left\")?\"next\":\"previous\")}}],update:function(){var e=this;this.connects.forEach(function(t){return e.updateAria(t.children)});var t=this.$el.children;this.show(jt(t,\".\"+this.cls)[0]||t[this.active]||t[0]),this.swiping&&Le(this.connects,\"touch-action\",\"pan-y pinch-zoom\")},methods:{index:function(){return!B(this.connects)&&ue(jt(this.connects[0].children,\".\"+this.cls)[0])},show:function(t){for(var e,n,i=this,r=this.$el.children,o=r.length,s=this.index(),a=0<=s,h=\"previous\"===t?-1:1,c=le(t,r,s),u=0;u<o;u++,c=(c+h+o)%o)if(!_t(this.toggles[c],\".uk-disabled *, .uk-disabled, [disabled]\")){e=this.toggles[c],n=r[c];break}!n||0<=s&&Oe(n,this.cls)||s===c||(_e(r,this.cls),Ae(n,this.cls),it(this.toggles,\"aria-expanded\",!1),it(e,\"aria-expanded\",!0),this.connects.forEach(function(t){a?i.toggleElement([t.children[s],t.children[c]]):i.toggleNow(t.children[c])}))}}},gr={mixins:[ei],extends:mr,props:{media:Boolean},data:{media:960,attrItem:\"uk-tab-item\"},connected:function(){var t=Oe(this.$el,\"uk-tab-left\")?\"uk-tab-left\":!!Oe(this.$el,\"uk-tab-right\")&&\"uk-tab-right\";t&&this.$create(\"toggle\",this.$el,{cls:t,mode:\"media\",media:this.media})}},vr={mixins:[Gi,ni],args:\"target\",props:{href:String,target:null,mode:\"list\"},data:{href:!1,target:!1,mode:\"click\",queued:!0},computed:{target:function(t,e){var n=t.href,i=t.target;return(i=bt(i||n,e)).length&&i||[e]}},connected:function(){qt(this.target,\"updatearia\",[this])},events:[{name:mt+\" \"+gt,filter:function(){return b(this.mode,\"hover\")},handler:function(t){Qt(t)||this.toggle(\"toggle\"+(t.type===mt?\"show\":\"hide\"))}},{name:\"click\",filter:function(){return b(this.mode,\"click\")||lt&&b(this.mode,\"hover\")},handler:function(t){var e;(Mt(t.target,'a[href=\"#\"], a[href=\"\"]')||(e=Mt(t.target,\"a[href]\"))&&(this.cls||!Ht(this.target)||e.hash&&_t(this.target,e.hash)))&&t.preventDefault(),this.toggle()}}],update:{read:function(){return!(!b(this.mode,\"media\")||!this.media)&&{match:this.matchMedia}},write:function(t){var e=t.match,n=this.isToggled(this.target);(e?!n:n)&&this.toggle()},events:[\"resize\"]},methods:{toggle:function(t){qt(this.target,t||\"toggle\",[this])&&this.toggleElement(this.target)}}};Ln.version=\"3.2.0\",(pr=Ln).component(\"accordion\",ii),pr.component(\"alert\",ri),pr.component(\"cover\",hi),pr.component(\"drop\",ui),pr.component(\"dropdown\",di),pr.component(\"formCustom\",fi),pr.component(\"gif\",pi),pr.component(\"grid\",wi),pr.component(\"heightMatch\",yi),pr.component(\"heightViewport\",$i),pr.component(\"icon\",Oi),pr.component(\"img\",Li),pr.component(\"leader\",Ji),pr.component(\"margin\",mi),pr.component(\"modal\",nr),pr.component(\"nav\",ir),pr.component(\"navbar\",rr),pr.component(\"offcanvas\",or),pr.component(\"overflowAuto\",ar),pr.component(\"responsive\",hr),pr.component(\"scroll\",cr),pr.component(\"scrollspy\",ur),pr.component(\"scrollspyNav\",lr),pr.component(\"sticky\",dr),pr.component(\"svg\",Si),pr.component(\"switcher\",mr),pr.component(\"tab\",gr),pr.component(\"toggle\",vr),pr.component(\"video\",ai),pr.component(\"close\",Pi),pr.component(\"marker\",Di),pr.component(\"navbarToggleIcon\",Di),pr.component(\"overlayIcon\",Di),pr.component(\"paginationNext\",Di),pr.component(\"paginationPrevious\",Di),pr.component(\"searchIcon\",Bi),pr.component(\"slidenavNext\",zi),pr.component(\"slidenavPrevious\",zi),pr.component(\"spinner\",Hi),pr.component(\"totop\",Di),pr.use(oi);var wr={mixins:[ei],props:{date:String,clsWrapper:String},data:{date:\"\",clsWrapper:\".uk-countdown-%unit%\"},computed:{date:function(t){var e=t.date;return Date.parse(e)},days:function(t,e){return Te(t.clsWrapper.replace(\"%unit%\",\"days\"),e)},hours:function(t,e){return Te(t.clsWrapper.replace(\"%unit%\",\"hours\"),e)},minutes:function(t,e){return Te(t.clsWrapper.replace(\"%unit%\",\"minutes\"),e)},seconds:function(t,e){return Te(t.clsWrapper.replace(\"%unit%\",\"seconds\"),e)},units:function(){var e=this;return[\"days\",\"hours\",\"minutes\",\"seconds\"].filter(function(t){return e[t]})}},connected:function(){this.start()},disconnected:function(){var e=this;this.stop(),this.units.forEach(function(t){return de(e[t])})},events:[{name:\"visibilitychange\",el:document,handler:function(){document.hidden?this.stop():this.start()}}],update:{write:function(){var i=this,r=function(t){var e=t-Date.now();return{total:e,seconds:e/1e3%60,minutes:e/1e3/60%60,hours:e/1e3/60/60%24,days:e/1e3/60/60/24}}(this.date);r.total<=0&&(this.stop(),r.days=r.hours=r.minutes=r.seconds=0),this.units.forEach(function(t){var e=String(Math.floor(r[t]));e=e.length<2?\"0\"+e:e;var n=i[t];n.textContent!==e&&((e=e.split(\"\")).length!==n.children.length&&fe(n,e.map(function(){return\"<span></span>\"}).join(\"\")),e.forEach(function(t,e){return n.children[e].textContent=t}))})}},methods:{start:function(){var t=this;this.stop(),this.date&&this.units.length&&(this.$emit(),this.timer=setInterval(function(){return t.$emit()},1e3))},stop:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}}};var br,yr=\"uk-animation-target\",xr={props:{animation:Number},data:{animation:150},computed:{target:function(){return this.$el}},methods:{animate:function(t){var i=this;!function(){if(br)return;(br=pe(document.head,\"<style>\").sheet).insertRule(\".\"+yr+\" > * {\\n margin-top: 0 !important;\\n transform: none !important;\\n }\",0)}();var r=W(this.target.children),o=r.map(function(t){return kr(t,!0)}),e=sn(this.target),n=window.pageYOffset;t(),Xe.cancel(this.target),r.forEach(Xe.cancel),$r(this.target),this.$update(this.target),kn.flush();var s=sn(this.target),a=(r=r.concat(W(this.target.children).filter(function(t){return!b(r,t)}))).map(function(t,e){return!!(t.parentNode&&e in o)&&(o[e]?Ht(t)?Ir(t):{opacity:0}:{opacity:Ht(t)?1:0})});return o=a.map(function(t,e){var n=r[e].parentNode===i.target&&(o[e]||kr(r[e]));if(n)if(t){if(!(\"opacity\"in t)){n.opacity%1?t.opacity=1:delete n.opacity}}else delete n.opacity;return n}),Ae(this.target,yr),r.forEach(function(t,e){return o[e]&&Le(t,o[e])}),Le(this.target,\"height\",e),gn(window,n),ne.all(r.map(function(t,e){return o[e]&&a[e]?Xe.start(t,a[e],i.animation,\"ease\"):ne.resolve()}).concat(Xe.start(this.target,{height:s},this.animation,\"ease\"))).then(function(){r.forEach(function(t,e){return Le(t,{display:0===a[e].opacity?\"none\":\"\",zIndex:\"\"})}),$r(i.target),i.$update(i.target),kn.flush()},Q)}}};function kr(t,e){var n=Le(t,\"zIndex\");return!!Ht(t)&&U({display:\"\",opacity:e?Le(t,\"opacity\"):\"0\",pointerEvents:\"none\",position:\"absolute\",zIndex:\"auto\"===n?ue(t):n},Ir(t))}function $r(t){Le(t.children,{height:\"\",left:\"\",opacity:\"\",pointerEvents:\"\",position:\"\",top:\"\",width:\"\"}),_e(t,yr),Le(t,\"height\",\"\")}function Ir(t){var e=t.getBoundingClientRect(),n=e.height,i=e.width,r=on(t),o=r.top,s=r.left;return{top:o+=F(Le(t,\"marginTop\")),left:s,height:n,width:i}}var Sr={mixins:[xr],args:\"target\",props:{target:Boolean,selActive:Boolean},data:{target:null,selActive:!1,attrItem:\"uk-filter-control\",cls:\"uk-active\",animation:250},computed:{toggles:{get:function(t,e){t.attrItem;return Ee(\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\",e)},watch:function(){this.updateState()}},target:function(t,e){return Te(t.target,e)},children:{get:function(){return W(this.target&&this.target.children)},watch:function(t,e){!function(t,e){return t.length===e.length&&t.every(function(t){return~e.indexOf(t)})}(t,e)&&this.updateState()}}},events:[{name:\"click\",delegate:function(){return\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\"},handler:function(t){t.preventDefault(),this.apply(t.current)}}],connected:function(){var e=this;if(this.updateState(),!1!==this.selActive){var n=Ee(this.selActive,this.$el);this.toggles.forEach(function(t){return De(t,e.cls,b(n,t))})}},methods:{apply:function(t){this.setState(Er(t,this.attrItem,this.getState()))},getState:function(){var n=this;return this.toggles.filter(function(t){return Oe(t,n.cls)}).reduce(function(t,e){return Er(e,n.attrItem,t)},{filter:{\"\":\"\"},sort:[]})},setState:function(o,t){var s=this;void 0===t&&(t=!0),o=U({filter:{\"\":\"\"},sort:[]},o),qt(this.$el,\"beforeFilter\",[this,o]);var a=this.children;this.toggles.forEach(function(t){return De(t,s.cls,!!function(t,e,n){var i=n.filter;void 0===i&&(i={\"\":\"\"});var r=n.sort,o=r[0],s=r[1],a=Tr(t,e),h=a.filter;void 0===h&&(h=\"\");var c=a.group;void 0===c&&(c=\"\");var u=a.sort,l=a.order;void 0===l&&(l=\"asc\");return P(u)?c in i&&h===i[c]||!h&&c&&!(c in i)&&!i[\"\"]:o===u&&s===l}(t,s.attrItem,o))});function e(){var e=function(t){var e=t.filter,n=\"\";return K(e,function(t){return n+=t||\"\"}),n}(o);a.forEach(function(t){return Le(t,\"display\",e&&!_t(t,e)?\"none\":\"\")});var t=o.sort,n=t[0],i=t[1];if(n){var r=function(t,n,i){return U([],t).sort(function(t,e){return st(t,n).localeCompare(st(e,n),void 0,{numeric:!0})*(\"asc\"===i||-1)})}(a,n,i);Y(r,a)||r.forEach(function(t){return pe(s.target,t)})}}t?this.animate(e).then(function(){return qt(s.$el,\"afterFilter\",[s])}):(e(),qt(this.$el,\"afterFilter\",[this]))},updateState:function(){var t=this;kn.write(function(){return t.setState(t.getState(),!1)})}}};function Tr(t,e){return On(st(t,e),[\"filter\"])}function Er(t,e,n){var i=Tr(t,e),r=i.filter,o=i.group,s=i.sort,a=i.order;return void 0===a&&(a=\"asc\"),(r||P(s))&&(o?r?(delete n.filter[\"\"],n.filter[o]=r):(delete n.filter[o],(B(n.filter)||\"\"in n.filter)&&(n.filter={\"\":r||\"\"})):n.filter={\"\":r||\"\"}),P(s)||(n.sort=[s,a]),n}var Cr={slide:{show:function(t){return[{transform:_r(-100*t)},{transform:_r()}]},percent:function(t){return Ar(t)},translate:function(t,e){return[{transform:_r(-100*e*t)},{transform:_r(100*e*(1-t))}]}}};function Ar(t){return Math.abs(Le(t,\"transform\").split(\",\")[4]/t.offsetWidth)||0}function _r(t,e){return void 0===t&&(t=0),void 0===e&&(e=\"%\"),t+=t?e:\"\",at?\"translateX(\"+t+\")\":\"translate3d(\"+t+\", 0, 0)\"}function Nr(t){return\"scale3d(\"+t+\", \"+t+\", 1)\"}var Mr=U({},Cr,{fade:{show:function(){return[{opacity:0},{opacity:1}]},percent:function(t){return 1-Le(t,\"opacity\")},translate:function(t){return[{opacity:1-t},{opacity:t}]}},scale:{show:function(){return[{opacity:0,transform:Nr(.8)},{opacity:1,transform:Nr(1)}]},percent:function(t){return 1-Le(t,\"opacity\")},translate:function(t){return[{opacity:1-t,transform:Nr(1-.2*t)},{opacity:t,transform:Nr(.8+.2*t)}]}}});function Or(t,e,n){qt(t,Ut(e,!1,!1,n))}var Dr={mixins:[{props:{autoplay:Boolean,autoplayInterval:Number,pauseOnHover:Boolean},data:{autoplay:!1,autoplayInterval:7e3,pauseOnHover:!0},connected:function(){this.autoplay&&this.startAutoplay()},disconnected:function(){this.stopAutoplay()},update:function(){it(this.slides,\"tabindex\",\"-1\")},events:[{name:\"visibilitychange\",el:document,filter:function(){return this.autoplay},handler:function(){document.hidden?this.stopAutoplay():this.startAutoplay()}}],methods:{startAutoplay:function(){var t=this;this.stopAutoplay(),this.interval=setInterval(function(){return(!t.draggable||!Te(\":focus\",t.$el))&&(!t.pauseOnHover||!_t(t.$el,\":hover\"))&&!t.stack.length&&t.show(\"next\")},this.autoplayInterval)},stopAutoplay:function(){this.interval&&clearInterval(this.interval)}}},{props:{draggable:Boolean},data:{draggable:!0,threshold:10},created:function(){var i=this;[\"start\",\"move\",\"end\"].forEach(function(t){var n=i[t];i[t]=function(t){var e=te(t).x*(ht?-1:1);i.prevPos=e!==i.pos?i.pos:i.prevPos,i.pos=e,n(t)}})},events:[{name:dt,delegate:function(){return this.selSlides},handler:function(t){!this.draggable||!Qt(t)&&function(t){return!t.children.length&&t.childNodes.length}(t.target)||0<t.button||this.length<2||this.start(t)}},{name:\"touchmove\",passive:!1,handler:\"move\",delegate:function(){return this.selSlides}},{name:\"dragstart\",handler:function(t){t.preventDefault()}}],methods:{start:function(){var t=this;this.drag=this.pos,this._transitioner?(this.percent=this._transitioner.percent(),this.drag+=this._transitioner.getDistance()*this.percent*this.dir,this._transitioner.cancel(),this._transitioner.translate(this.percent),this.dragging=!0,this.stack=[]):this.prevIndex=this.index;var e=\"touchmove\"!=ft?Vt(document,ft,this.move,{passive:!1}):Q;this.unbindMove=function(){e(),t.unbindMove=null},Vt(window,\"scroll\",this.unbindMove),Vt(document,pt,this.end,!0),Le(this.list,\"userSelect\",\"none\")},move:function(t){var e=this;if(this.unbindMove){var n=this.pos-this.drag;if(!(0==n||this.prevPos===this.pos||!this.dragging&&Math.abs(n)<this.threshold)){Le(this.list,\"pointerEvents\",\"none\"),t.cancelable&&t.preventDefault(),this.dragging=!0,this.dir=n<0?1:-1;for(var i=this.slides,r=this.prevIndex,o=Math.abs(n),s=this.getIndex(r+this.dir,r),a=this._getDistance(r,s)||i[r].offsetWidth;s!==r&&a<o;)this.drag-=a*this.dir,r=s,o-=a,s=this.getIndex(r+this.dir,r),a=this._getDistance(r,s)||i[r].offsetWidth;this.percent=o/a;var h,c=i[r],u=i[s],l=this.index!==s,d=r===s;[this.index,this.prevIndex].filter(function(t){return!b([s,r],t)}).forEach(function(t){qt(i[t],\"itemhidden\",[e]),d&&(h=!0,e.prevIndex=r)}),(this.index===r&&this.prevIndex!==r||h)&&qt(i[this.index],\"itemshown\",[this]),l&&(this.prevIndex=r,this.index=s,d||qt(c,\"beforeitemhide\",[this]),qt(u,\"beforeitemshow\",[this])),this._transitioner=this._translate(Math.abs(this.percent),c,!d&&u),l&&(d||qt(c,\"itemhide\",[this]),qt(u,\"itemshow\",[this]))}}},end:function(){if(Rt(window,\"scroll\",this.unbindMove),this.unbindMove&&this.unbindMove(),Rt(document,pt,this.end,!0),this.dragging)if(this.dragging=null,this.index===this.prevIndex)this.percent=1-this.percent,this.dir*=-1,this._show(!1,this.index,!0),this._transitioner=null;else{var t=(ht?this.dir*(ht?1:-1):this.dir)<0==this.prevPos>this.pos;this.index=t?this.index:this.prevIndex,t&&(this.percent=1-this.percent),this.show(0<this.dir&&!t||this.dir<0&&t?\"next\":\"previous\",!0)}Le(this.list,{userSelect:\"\",pointerEvents:\"\"}),this.drag=this.percent=null}}},{data:{selNav:!1},computed:{nav:function(t,e){return Te(t.selNav,e)},selNavItem:function(t){var e=t.attrItem;return\"[\"+e+\"],[data-\"+e+\"]\"},navItems:function(t,e){return Ee(this.selNavItem,e)}},update:{write:function(){var n=this;this.nav&&this.length!==this.nav.children.length&&fe(this.nav,this.slides.map(function(t,e){return\"<li \"+n.attrItem+'=\"'+e+'\"><a href=\"#\"></a></li>'}).join(\"\")),De(Ee(this.selNavItem,this.$el).concat(this.nav),\"uk-hidden\",!this.maxIndex),this.updateNav()},events:[\"resize\"]},events:[{name:\"click\",delegate:function(){return this.selNavItem},handler:function(t){t.preventDefault(),this.show(st(t.current,this.attrItem))}},{name:\"itemshow\",handler:\"updateNav\"}],methods:{updateNav:function(){var n=this,i=this.getValidIndex();this.navItems.forEach(function(t){var e=st(t,n.attrItem);De(t,n.clsActive,L(e)===i),De(t,\"uk-invisible\",n.finite&&(\"previous\"===e&&0===i||\"next\"===e&&i>=n.maxIndex))})}}}],props:{clsActivated:Boolean,easing:String,index:Number,finite:Boolean,velocity:Number},data:function(){return{easing:\"ease\",finite:!1,velocity:1,index:0,prevIndex:-1,stack:[],percent:0,clsActive:\"uk-active\",clsActivated:!1,Transitioner:!1,transitionOptions:{}}},connected:function(){this.prevIndex=-1,this.index=this.getValidIndex(this.index),this.stack=[]},disconnected:function(){_e(this.slides,this.clsActive)},computed:{duration:function(t,e){var n=t.velocity;return zr(e.offsetWidth/n)},list:function(t,e){return Te(t.selList,e)},maxIndex:function(){return this.length-1},selSlides:function(t){return t.selList+\" > *\"},slides:{get:function(){return W(this.list.children)},watch:function(){this.$reset()}},length:function(){return this.slides.length}},events:{itemshown:function(){this.$update(this.list)}},methods:{show:function(t,e){var n=this;if(void 0===e&&(e=!1),!this.dragging&&this.length){var i=this.stack,r=e?0:i.length,o=function(){i.splice(r,1),i.length&&n.show(i.shift(),!0)};if(i[e?\"unshift\":\"push\"](t),!e&&1<i.length)2===i.length&&this._transitioner.forward(Math.min(this.duration,200));else{var s=this.index,a=Oe(this.slides,this.clsActive)&&this.slides[s],h=this.getIndex(t,this.index),c=this.slides[h];if(a!==c){if(this.dir=function(t,e){return\"next\"===t?1:\"previous\"===t?-1:t<e?-1:1}(t,s),this.prevIndex=s,this.index=h,a&&qt(a,\"beforeitemhide\",[this]),!qt(c,\"beforeitemshow\",[this,a]))return this.index=this.prevIndex,void o();var u=this._show(a,c,e).then(function(){return a&&qt(a,\"itemhidden\",[n]),qt(c,\"itemshown\",[n]),new ne(function(t){kn.write(function(){i.shift(),i.length?n.show(i.shift(),!0):n._transitioner=null,t()})})});return a&&qt(a,\"itemhide\",[this]),qt(c,\"itemshow\",[this]),u}o()}}},getIndex:function(t,e){return void 0===t&&(t=this.index),void 0===e&&(e=this.index),Z(le(t,this.slides,e,this.finite),0,this.maxIndex)},getValidIndex:function(t,e){return void 0===t&&(t=this.index),void 0===e&&(e=this.prevIndex),this.getIndex(t,e)},_show:function(t,e,n){if(this._transitioner=this._getTransitioner(t,e,this.dir,U({easing:n?e.offsetWidth<600?\"cubic-bezier(0.25, 0.46, 0.45, 0.94)\":\"cubic-bezier(0.165, 0.84, 0.44, 1)\":this.easing},this.transitionOptions)),!n&&!t)return this._transitioner.translate(1),ne.resolve();var i=this.stack.length;return this._transitioner[1<i?\"forward\":\"show\"](1<i?Math.min(this.duration,75+75/(i-1)):this.duration,this.percent)},_getDistance:function(t,e){return this._getTransitioner(t,t!==e&&e).getDistance()},_translate:function(t,e,n){void 0===e&&(e=this.prevIndex),void 0===n&&(n=this.index);var i=this._getTransitioner(e!==n&&e,n);return i.translate(t),i},_getTransitioner:function(t,e,n,i){return void 0===t&&(t=this.prevIndex),void 0===e&&(e=this.index),void 0===n&&(n=this.dir||1),void 0===i&&(i=this.transitionOptions),new this.Transitioner(D(t)?this.slides[t]:t,D(e)?this.slides[e]:e,n*(ht?-1:1),i)}}};function zr(t){return.5*t+300}var Br={mixins:[Dr],props:{animation:String},data:{animation:\"slide\",clsActivated:\"uk-transition-active\",Animations:Cr,Transitioner:function(o,s,a,t){var e=t.animation,h=t.easing,n=e.percent,i=e.translate,r=e.show;void 0===r&&(r=Q);var c=r(a),u=new ee;return{dir:a,show:function(t,e,n){var i=this;void 0===e&&(e=0);var r=n?\"linear\":h;return t-=Math.round(t*Z(e,-1,1)),this.translate(e),Or(s,\"itemin\",{percent:e,duration:t,timing:r,dir:a}),Or(o,\"itemout\",{percent:1-e,duration:t,timing:r,dir:a}),ne.all([Xe.start(s,c[1],t,r),Xe.start(o,c[0],t,r)]).then(function(){i.reset(),u.resolve()},Q),u.promise},stop:function(){return Xe.stop([s,o])},cancel:function(){Xe.cancel([s,o])},reset:function(){for(var t in c[0])Le([s,o],t,\"\")},forward:function(t,e){return void 0===e&&(e=this.percent()),Xe.cancel([s,o]),this.show(t,e,!0)},translate:function(t){this.reset();var e=i(t,a);Le(s,e[1]),Le(o,e[0]),Or(s,\"itemtranslatein\",{percent:t,dir:a}),Or(o,\"itemtranslateout\",{percent:1-t,dir:a})},percent:function(){return n(o||s,s,a)},getDistance:function(){return o&&o.offsetWidth}}}},computed:{animation:function(t){var e=t.animation,n=t.Animations;return U(e in n?n[e]:n.slide,{name:e})},transitionOptions:function(){return{animation:this.animation}}},events:{\"itemshow itemhide itemshown itemhidden\":function(t){var e=t.target;this.$update(e)},beforeitemshow:function(t){Ae(t.target,this.clsActive)},itemshown:function(t){Ae(t.target,this.clsActivated)},itemhidden:function(t){_e(t.target,this.clsActive,this.clsActivated)}}},Pr={mixins:[Zi,tr,ni,Br],functional:!0,props:{delayControls:Number,preload:Number,videoAutoplay:Boolean,template:String},data:function(){return{preload:1,videoAutoplay:!1,delayControls:3e3,items:[],cls:\"uk-open\",clsPage:\"uk-lightbox-page\",selList:\".uk-lightbox-items\",attrItem:\"uk-lightbox-item\",selClose:\".uk-close-large\",selCaption:\".uk-lightbox-caption\",pauseOnHover:!1,velocity:2,Animations:Mr,template:'<div class=\"uk-lightbox uk-overflow-hidden\"> <ul class=\"uk-lightbox-items\"></ul> <div class=\"uk-lightbox-toolbar uk-position-top uk-text-right uk-transition-slide-top uk-transition-opaque\"> <button class=\"uk-lightbox-toolbar-icon uk-close-large\" type=\"button\" uk-close></button> </div> <a class=\"uk-lightbox-button uk-position-center-left uk-position-medium uk-transition-fade\" href=\"#\" uk-slidenav-previous uk-lightbox-item=\"previous\"></a> <a class=\"uk-lightbox-button uk-position-center-right uk-position-medium uk-transition-fade\" href=\"#\" uk-slidenav-next uk-lightbox-item=\"next\"></a> <div class=\"uk-lightbox-toolbar uk-lightbox-caption uk-position-bottom uk-text-center uk-transition-slide-bottom uk-transition-opaque\"></div> </div>'}},created:function(){var t=Te(this.template),e=Te(this.selList,t);this.items.forEach(function(){return pe(e,\"<li></li>\")}),this.$mount(pe(this.container,t))},computed:{caption:function(t,e){t.selCaption;return Te(\".uk-lightbox-caption\",e)}},events:[{name:ft+\" \"+dt+\" keydown\",handler:\"showControls\"},{name:\"click\",self:!0,delegate:function(){return this.selSlides},handler:function(t){t.defaultPrevented||this.hide()}},{name:\"shown\",self:!0,handler:function(){this.showControls()}},{name:\"hide\",self:!0,handler:function(){this.hideControls(),_e(this.slides,this.clsActive),Xe.stop(this.slides)}},{name:\"hidden\",self:!0,handler:function(){this.$destroy(!0)}},{name:\"keyup\",el:document,handler:function(t){if(this.isToggled(this.$el))switch(t.keyCode){case 37:this.show(\"previous\");break;case 39:this.show(\"next\")}}},{name:\"beforeitemshow\",handler:function(t){this.isToggled()||(this.draggable=!1,t.preventDefault(),this.toggleNow(this.$el,!0),this.animation=Mr.scale,_e(t.target,this.clsActive),this.stack.splice(1,0,this.index))}},{name:\"itemshow\",handler:function(t){var e=ue(t.target),n=this.getItem(e).caption;Le(this.caption,\"display\",n?\"\":\"none\"),fe(this.caption,n);for(var i=0;i<=this.preload;i++)this.loadItem(this.getIndex(e+i)),this.loadItem(this.getIndex(e-i))}},{name:\"itemshown\",handler:function(){this.draggable=this.$props.draggable}},{name:\"itemload\",handler:function(t,r){var o,s=this,e=r.source,n=r.type,i=r.alt;if(this.setItem(r,\"<span uk-spinner></span>\"),e)if(\"image\"===n||e.match(/\\.(jp(e)?g|png|gif|svg|webp)($|\\?)/i))he(e).then(function(t){return s.setItem(r,'<img width=\"'+t.width+'\" height=\"'+t.height+'\" src=\"'+e+'\" alt=\"'+(i||\"\")+'\">')},function(){return s.setError(r)});else if(\"video\"===n||e.match(/\\.(mp4|webm|ogv)($|\\?)/i)){var a=Te(\"<video controls playsinline\"+(r.poster?' poster=\"'+r.poster+'\"':\"\")+' uk-video=\"'+this.videoAutoplay+'\"></video>');it(a,\"src\",e),Yt(a,\"error loadedmetadata\",function(t){\"error\"===t?s.setError(r):(it(a,{width:a.videoWidth,height:a.videoHeight}),s.setItem(r,a))})}else if(\"iframe\"===n||e.match(/\\.(html|php)($|\\?)/i))this.setItem(r,'<iframe class=\"uk-lightbox-iframe\" src=\"'+e+'\" frameborder=\"0\" allowfullscreen></iframe>');else if(o=e.match(/\\/\\/.*?youtube(-nocookie)?\\.[a-z]+\\/watch\\?v=([^&\\s]+)/)||e.match(/()youtu\\.be\\/(.*)/)){var h=o[2],c=function(t,e){return void 0===t&&(t=640),void 0===e&&(e=450),s.setItem(r,Hr(\"https://www.youtube\"+(o[1]||\"\")+\".com/embed/\"+h,t,e,s.videoAutoplay))};he(\"https://img.youtube.com/vi/\"+h+\"/maxresdefault.jpg\").then(function(t){var e=t.width,n=t.height;120===e&&90===n?he(\"https://img.youtube.com/vi/\"+h+\"/0.jpg\").then(function(t){var e=t.width,n=t.height;return c(e,n)},c):c(e,n)},c)}else(o=e.match(/(\\/\\/.*?)vimeo\\.[a-z]+\\/([0-9]+).*?/))&&ae(\"https://vimeo.com/api/oembed.json?maxwidth=1920&url=\"+encodeURI(e),{responseType:\"json\",withCredentials:!1}).then(function(t){var e=t.response,n=e.height,i=e.width;return s.setItem(r,Hr(\"https://player.vimeo.com/video/\"+o[2],i,n,s.videoAutoplay))},function(){return s.setError(r)})}}],methods:{loadItem:function(t){void 0===t&&(t=this.index);var e=this.getItem(t);e.content||qt(this.$el,\"itemload\",[e])},getItem:function(t){return void 0===t&&(t=this.index),this.items[t]||{}},setItem:function(t,e){U(t,{content:e});var n=fe(this.slides[this.items.indexOf(t)],e);qt(this.$el,\"itemloaded\",[this,n]),this.$update(n)},setError:function(t){this.setItem(t,'<span uk-icon=\"icon: bolt; ratio: 2\"></span>')},showControls:function(){clearTimeout(this.controlsTimer),this.controlsTimer=setTimeout(this.hideControls,this.delayControls),Ae(this.$el,\"uk-active\",\"uk-transition-active\")},hideControls:function(){_e(this.$el,\"uk-active\",\"uk-transition-active\")}}};function Hr(t,e,n,i){return'<iframe src=\"'+t+'\" width=\"'+e+'\" height=\"'+n+'\" style=\"max-width: 100%; box-sizing: border-box;\" frameborder=\"0\" allowfullscreen uk-video=\"autoplay: '+i+'\" uk-responsive></iframe>'}var Lr,Fr={install:function(t,e){t.lightboxPanel||t.component(\"lightboxPanel\",Pr);U(e.props,t.component(\"lightboxPanel\").options.props)},props:{toggle:String},data:{toggle:\"a\"},computed:{toggles:{get:function(t,e){return Ee(t.toggle,e)},watch:function(){this.hide()}},items:function(){return J(this.toggles.map(jr),\"source\")}},disconnected:function(){this.hide()},events:[{name:\"click\",delegate:function(){return this.toggle+\":not(.uk-disabled)\"},handler:function(t){t.preventDefault();var e=st(t.current,\"href\");this.show(x(this.items,function(t){return t.source===e}))}}],methods:{show:function(t){var e=this;return this.panel=this.panel||this.$create(\"lightboxPanel\",U({},this.$props,{items:this.items})),Vt(this.panel.$el,\"hidden\",function(){return e.panel=!1}),this.panel.show(t)},hide:function(){return this.panel&&this.panel.hide()}}};function jr(n){return[\"href\",\"caption\",\"type\",\"poster\",\"alt\"].reduce(function(t,e){return t[\"href\"===e?\"source\":e]=st(n,e),t},{})}var Wr={},Vr={functional:!0,args:[\"message\",\"status\"],data:{message:\"\",status:\"\",timeout:5e3,group:null,pos:\"top-center\",clsClose:\"uk-notification-close\",clsMsg:\"uk-notification-message\"},install:function(r){r.notification.closeAll=function(n,i){Se(document.body,function(t){var e=r.getComponent(t,\"notification\");!e||n&&n!==e.group||e.close(i)})}},computed:{marginProp:function(t){return\"margin\"+(w(t.pos,\"top\")?\"Top\":\"Bottom\")},startProps:function(){var t;return(t={opacity:0})[this.marginProp]=-this.$el.offsetHeight,t}},created:function(){Wr[this.pos]||(Wr[this.pos]=pe(this.$container,'<div class=\"uk-notification uk-notification-'+this.pos+'\"></div>'));var t=Le(Wr[this.pos],\"display\",\"block\");this.$mount(pe(t,'<div class=\"'+this.clsMsg+(this.status?\" \"+this.clsMsg+\"-\"+this.status:\"\")+'\"> <a href=\"#\" class=\"'+this.clsClose+'\" data-uk-close></a> <div>'+this.message+\"</div> </div>\"))},connected:function(){var t,e=this,n=F(Le(this.$el,this.marginProp));Xe.start(Le(this.$el,this.startProps),((t={opacity:1})[this.marginProp]=n,t)).then(function(){e.timeout&&(e.timer=setTimeout(e.close,e.timeout))})},events:(Lr={click:function(t){Mt(t.target,'a[href=\"#\"],a[href=\"\"]')&&t.preventDefault(),this.close()}},Lr[mt]=function(){this.timer&&clearTimeout(this.timer)},Lr[gt]=function(){this.timeout&&(this.timer=setTimeout(this.close,this.timeout))},Lr),methods:{close:function(t){function e(){qt(n.$el,\"close\",[n]),we(n.$el),Wr[n.pos].children.length||Le(Wr[n.pos],\"display\",\"none\")}var n=this;this.timer&&clearTimeout(this.timer),t?e():Xe.start(this.$el,this.startProps).then(e)}}};var Rr=[\"x\",\"y\",\"bgx\",\"bgy\",\"rotate\",\"scale\",\"color\",\"backgroundColor\",\"borderColor\",\"opacity\",\"blur\",\"hue\",\"grayscale\",\"invert\",\"saturate\",\"sepia\",\"fopacity\",\"stroke\"],Yr={mixins:[Gi],props:Rr.reduce(function(t,e){return t[e]=\"list\",t},{}),data:Rr.reduce(function(t,e){return t[e]=void 0,t},{}),computed:{props:function(m,g){var v=this;return Rr.reduce(function(t,e){if(P(m[e]))return t;var n,i,r,o=e.match(/color/i),s=o||\"opacity\"===e,a=m[e].slice(0);s&&Le(g,e,\"\"),a.length<2&&a.unshift((\"scale\"===e?1:s?Le(g,e):0)||0);var h=function(t){return t.reduce(function(t,e){return O(e)&&e.replace(/-|\\d/g,\"\").trim()||t},\"\")}(a);if(o){var c=g.style.color;a=a.map(function(t){return function(t,e){return Le(Le(t,\"color\",e),\"color\").split(/[(),]/g).slice(1,-1).concat(1).slice(0,4).map(F)}(g,t)}),g.style.color=c}else if(w(e,\"bg\")){var u=\"bgy\"===e?\"height\":\"width\";if(a=a.map(function(t){return wn(t,u,v.$el)}),Le(g,\"background-position-\"+e[2],\"\"),i=Le(g,\"backgroundPosition\").split(\" \")[\"x\"===e[2]?0:1],v.covers){var l=Math.min.apply(Math,a),d=Math.max.apply(Math,a),f=a.indexOf(l)<a.indexOf(d);r=d-l,a=a.map(function(t){return t-(f?l:d)}),n=(f?-r:0)+\"px\"}else n=i}else a=a.map(F);if(\"stroke\"===e){if(!a.some(function(t){return t}))return t;var p=Ai(v.$el);Le(g,\"strokeDasharray\",p),\"%\"===h&&(a=a.map(function(t){return t*p/100})),a=a.reverse(),e=\"strokeDashoffset\"}return t[e]={steps:a,unit:h,pos:n,bgPos:i,diff:r},t},{})},bgProps:function(){var e=this;return[\"bgx\",\"bgy\"].filter(function(t){return t in e.props})},covers:function(t,e){return function(t){var e=t.style.backgroundSize,n=\"cover\"===Le(Le(t,\"backgroundSize\",\"\"),\"backgroundSize\");return t.style.backgroundSize=e,n}(e)}},disconnected:function(){delete this._image},update:{read:function(t){var h=this;if(t.active=this.matchMedia,t.active){if(!t.image&&this.covers&&this.bgProps.length){var e=Le(this.$el,\"backgroundImage\").replace(/^none|url\\([\"']?(.+?)[\"']?\\)$/,\"$1\");if(e){var n=new Image;n.src=e,(t.image=n).naturalWidth||(n.onload=function(){return h.$emit()})}}var i=t.image;if(i&&i.naturalWidth){var c={width:this.$el.offsetWidth,height:this.$el.offsetHeight},u={width:i.naturalWidth,height:i.naturalHeight},l=nt.cover(u,c);this.bgProps.forEach(function(t){var e=h.props[t],n=e.diff,i=e.bgPos,r=e.steps,o=\"bgy\"===t?\"height\":\"width\",s=l[o]-c[o];if(s<n)c[o]=l[o]+n-s;else if(n<s){var a=c[o]/wn(i,o,h.$el);a&&(h.props[t].steps=r.map(function(t){return t-(s-n)/a}))}l=nt.cover(u,c)}),t.dim=l}}},write:function(t){var e=t.dim;t.active?e&&Le(this.$el,{backgroundSize:e.width+\"px \"+e.height+\"px\",backgroundRepeat:\"no-repeat\"}):Le(this.$el,{backgroundSize:\"\",backgroundRepeat:\"\"})},events:[\"resize\"]},methods:{reset:function(){var n=this;K(this.getCss(0),function(t,e){return Le(n.$el,e,\"\")})},getCss:function(l){var d=this.props;return Object.keys(d).reduce(function(t,e){var n=d[e],i=n.steps,r=n.unit,o=n.pos,s=function(t,e,n){void 0===n&&(n=2);var i=qr(t,e),r=i[0],o=i[1],s=i[2];return(D(r)?r+Math.abs(r-o)*s*(r<o?1:-1):+o).toFixed(n)}(i,l);switch(e){case\"x\":case\"y\":r=r||\"px\",t.transform+=\" translate\"+p(e)+\"(\"+F(s).toFixed(\"px\"===r?0:2)+r+\")\";break;case\"rotate\":r=r||\"deg\",t.transform+=\" rotate(\"+(s+r)+\")\";break;case\"scale\":t.transform+=\" scale(\"+s+\")\";break;case\"bgy\":case\"bgx\":t[\"background-position-\"+e[2]]=\"calc(\"+o+\" + \"+s+\"px)\";break;case\"color\":case\"backgroundColor\":case\"borderColor\":var a=qr(i,l),h=a[0],c=a[1],u=a[2];t[e]=\"rgba(\"+h.map(function(t,e){return t+=u*(c[e]-t),3===e?F(t):parseInt(t,10)}).join(\",\")+\")\";break;case\"blur\":r=r||\"px\",t.filter+=\" blur(\"+(s+r)+\")\";break;case\"hue\":r=r||\"deg\",t.filter+=\" hue-rotate(\"+(s+r)+\")\";break;case\"fopacity\":r=r||\"%\",t.filter+=\" opacity(\"+(s+r)+\")\";break;case\"grayscale\":case\"invert\":case\"saturate\":case\"sepia\":r=r||\"%\",t.filter+=\" \"+e+\"(\"+(s+r)+\")\";break;default:t[e]=s}return t},{transform:\"\",filter:\"\"})}}};function qr(t,e){var n=t.length-1,i=Math.min(Math.floor(n*e),n-1),r=t.slice(i,i+2);return r.push(1===e?1:e%(1/n)*n),r}var Ur={mixins:[Yr],props:{target:String,viewport:Number,easing:Number},data:{target:!1,viewport:1,easing:1},computed:{target:function(t,e){var n=t.target;return function t(e){return e?\"offsetTop\"in e?e:t(e.parentNode):document.body}(n&&wt(n,e)||e)}},update:{read:function(t,e){var n=t.percent;if(\"scroll\"!==e&&(n=!1),t.active){var i=n;return{percent:n=function(t,e){return Z(t*(1-(e-e*t)))}(mn(this.target)/(this.viewport||1),this.easing),style:i!==n&&this.getCss(n)}}},write:function(t){var e=t.style;t.active?e&&Le(this.$el,e):this.reset()},events:[\"scroll\",\"resize\"]}};var Xr={update:{write:function(){if(!this.stack.length&&!this.dragging){var t=this.getValidIndex(this.index);~this.prevIndex&&this.index===t||this.show(t)}},events:[\"resize\"]}};function Kr(t,e,n){var i=Zr(t,e);return n?i-function(t,e){return Qr(e).width/2-Qr(t).width/2}(t,e):Math.min(i,Gr(e))}function Gr(t){return Math.max(0,Jr(t)-Qr(t).width)}function Jr(t){return eo(t).reduce(function(t,e){return Qr(e).width+t},0)}function Zr(t,e){return(on(t).left+(ht?Qr(t).width-Qr(e).width:0))*(ht?-1:1)}function Qr(t){return t.getBoundingClientRect()}function to(t,e,n){qt(t,Ut(e,!1,!1,n))}function eo(t){return W(t.children)}var no={mixins:[ei,Dr,Xr],props:{center:Boolean,sets:Boolean},data:{center:!1,sets:!1,attrItem:\"uk-slider-item\",selList:\".uk-slider-items\",selNav:\".uk-slider-nav\",clsContainer:\"uk-slider-container\",Transitioner:function(r,i,o,t){var e=t.center,s=t.easing,a=t.list,h=new ee,n=r?Kr(r,a,e):Kr(i,a,e)+Qr(i).width*o,c=i?Kr(i,a,e):n+Qr(r).width*o*(ht?-1:1);return{dir:o,show:function(t,e,n){void 0===e&&(e=0);var i=n?\"linear\":s;return t-=Math.round(t*Z(e,-1,1)),this.translate(e),r&&this.updateTranslates(),e=r?e:Z(e,0,1),to(this.getItemIn(),\"itemin\",{percent:e,duration:t,timing:i,dir:o}),r&&to(this.getItemIn(!0),\"itemout\",{percent:1-e,duration:t,timing:i,dir:o}),Xe.start(a,{transform:_r(-c*(ht?-1:1),\"px\")},t,i).then(h.resolve,Q),h.promise},stop:function(){return Xe.stop(a)},cancel:function(){Xe.cancel(a)},reset:function(){Le(a,\"transform\",\"\")},forward:function(t,e){return void 0===e&&(e=this.percent()),Xe.cancel(a),this.show(t,e,!0)},translate:function(t){var e=this.getDistance()*o*(ht?-1:1);Le(a,\"transform\",_r(Z(e-e*t-c,-Jr(a),Qr(a).width)*(ht?-1:1),\"px\")),this.updateTranslates(),r&&(t=Z(t,-1,1),to(this.getItemIn(),\"itemtranslatein\",{percent:t,dir:o}),to(this.getItemIn(!0),\"itemtranslateout\",{percent:1-t,dir:o}))},percent:function(){return Math.abs((Le(a,\"transform\").split(\",\")[4]*(ht?-1:1)+n)/(c-n))},getDistance:function(){return Math.abs(c-n)},getItemIn:function(t){void 0===t&&(t=!1);var e=this.getActives(),n=G(eo(a),\"offsetLeft\"),i=ue(n,e[0<o*(t?-1:1)?e.length-1:0]);return~i&&n[i+(r&&!t?o:0)]},getActives:function(){var n=Kr(r||i,a,e);return G(eo(a).filter(function(t){var e=Zr(t,a);return n<=e&&e+Qr(t).width<=Qr(a).width+n}),\"offsetLeft\")},updateTranslates:function(){var n=this.getActives();eo(a).forEach(function(t){var e=b(n,t);to(t,\"itemtranslate\"+(e?\"in\":\"out\"),{percent:e?1:0,dir:t.offsetLeft<=i.offsetLeft?1:-1})})}}}},computed:{avgWidth:function(){return Jr(this.list)/this.length},finite:function(t){return t.finite||Jr(this.list)<Qr(this.list).width+function(t){return eo(t).reduce(function(t,e){return Math.max(t,Qr(e).width)},0)}(this.list)+this.center},maxIndex:function(){if(!this.finite||this.center&&!this.sets)return this.length-1;if(this.center)return X(this.sets);Le(this.slides,\"order\",\"\");for(var t=Gr(this.list),e=this.length;e--;)if(Zr(this.list.children[e],this.list)<t)return Math.min(e+1,this.length-1);return 0},sets:function(t){var o=this,e=t.sets,s=Qr(this.list).width/(this.center?2:1),a=0,h=s,c=0;return!B(e=e&&this.slides.reduce(function(t,e,n){var i=Qr(e).width;if(a<c+i&&(!o.center&&n>o.maxIndex&&(n=o.maxIndex),!b(t,n))){var r=o.slides[n+1];o.center&&r&&i<h-Qr(r).width/2?h-=i:(h=s,t.push(n),a=c+s+(o.center?i/2:0))}return c+=i,t},[]))&&e},transitionOptions:function(){return{center:this.center,list:this.list}}},connected:function(){De(this.$el,this.clsContainer,!Te(\".\"+this.clsContainer,this.$el))},update:{write:function(){var n=this;Ee(\"[\"+this.attrItem+\"],[data-\"+this.attrItem+\"]\",this.$el).forEach(function(t){var e=st(t,n.attrItem);n.maxIndex&&De(t,\"uk-hidden\",z(e)&&(n.sets&&!b(n.sets,F(e))||e>n.maxIndex))}),this.dragging||this.stack.length||this._getTransitioner().translate(1)},events:[\"resize\"]},events:{beforeitemshow:function(t){!this.dragging&&this.sets&&this.stack.length<2&&!b(this.sets,this.index)&&(this.index=this.getValidIndex());var e=Math.abs(this.index-this.prevIndex+(0<this.dir&&this.index<this.prevIndex||this.dir<0&&this.index>this.prevIndex?(this.maxIndex+1)*this.dir:0));if(!this.dragging&&1<e){for(var n=0;n<e;n++)this.stack.splice(1,0,0<this.dir?\"next\":\"previous\");t.preventDefault()}else this.duration=zr(this.avgWidth/this.velocity)*(Qr(this.dir<0||!this.slides[this.prevIndex]?this.slides[this.index]:this.slides[this.prevIndex]).width/this.avgWidth),this.reorder()},itemshow:function(){P(this.prevIndex)||Ae(this._getTransitioner().getItemIn(),this.clsActive)},itemshown:function(){var e=this,n=this._getTransitioner(this.index).getActives();this.slides.forEach(function(t){return De(t,e.clsActive,b(n,t))}),this.sets&&!b(this.sets,F(this.index))||this.slides.forEach(function(t){return De(t,e.clsActivated,b(n,t))})}},methods:{reorder:function(){var n=this;if(Le(this.slides,\"order\",\"\"),!this.finite){var i=0<this.dir&&this.slides[this.prevIndex]?this.prevIndex:this.index;if(this.slides.forEach(function(t,e){return Le(t,\"order\",0<n.dir&&e<i?1:n.dir<0&&e>=n.index?-1:\"\")}),this.center)for(var t=this.slides[i],e=Qr(this.list).width/2-Qr(t).width/2,r=0;0<e;){var o=this.getIndex(--r+i,i),s=this.slides[o];Le(s,\"order\",i<o?-2:-1),e-=Qr(s).width}}},getValidIndex:function(t,e){if(void 0===t&&(t=this.index),void 0===e&&(e=this.prevIndex),t=this.getIndex(t,e),!this.sets)return t;var n;do{if(b(this.sets,t))return t;n=t,t=this.getIndex(t+this.dir,e)}while(t!==n);return t}}},io={mixins:[Yr],data:{selItem:\"!li\"},computed:{item:function(t,e){return wt(t.selItem,e)}},events:[{name:\"itemshown\",self:!0,el:function(){return this.item},handler:function(){Le(this.$el,this.getCss(.5))}},{name:\"itemin itemout\",self:!0,el:function(){return this.item},handler:function(t){var e=t.type,n=t.detail,i=n.percent,r=n.duration,o=n.timing,s=n.dir;Xe.cancel(this.$el),Le(this.$el,this.getCss(oo(e,s,i))),Xe.start(this.$el,this.getCss(ro(e)?.5:0<s?1:0),r,o).catch(Q)}},{name:\"transitioncanceled transitionend\",self:!0,el:function(){return this.item},handler:function(){Xe.cancel(this.$el)}},{name:\"itemtranslatein itemtranslateout\",self:!0,el:function(){return this.item},handler:function(t){var e=t.type,n=t.detail,i=n.percent,r=n.dir;Xe.cancel(this.$el),Le(this.$el,this.getCss(oo(e,r,i)))}}]};function ro(t){return u(t,\"in\")}function oo(t,e,n){return n/=2,ro(t)?e<0?1-n:n:e<0?n:1-n}var so,ao=U({},Cr,{fade:{show:function(){return[{opacity:0,zIndex:0},{zIndex:-1}]},percent:function(t){return 1-Le(t,\"opacity\")},translate:function(t){return[{opacity:1-t,zIndex:0},{zIndex:-1}]}},scale:{show:function(){return[{opacity:0,transform:Nr(1.5),zIndex:0},{zIndex:-1}]},percent:function(t){return 1-Le(t,\"opacity\")},translate:function(t){return[{opacity:1-t,transform:Nr(1+.5*t),zIndex:0},{zIndex:-1}]}},pull:{show:function(t){return t<0?[{transform:_r(30),zIndex:-1},{transform:_r(),zIndex:0}]:[{transform:_r(-100),zIndex:0},{transform:_r(),zIndex:-1}]},percent:function(t,e,n){return n<0?1-Ar(e):Ar(t)},translate:function(t,e){return e<0?[{transform:_r(30*t),zIndex:-1},{transform:_r(-100*(1-t)),zIndex:0}]:[{transform:_r(100*-t),zIndex:0},{transform:_r(30*(1-t)),zIndex:-1}]}},push:{show:function(t){return t<0?[{transform:_r(100),zIndex:0},{transform:_r(),zIndex:-1}]:[{transform:_r(-30),zIndex:-1},{transform:_r(),zIndex:0}]},percent:function(t,e,n){return 0<n?1-Ar(e):Ar(t)},translate:function(t,e){return e<0?[{transform:_r(100*t),zIndex:0},{transform:_r(-30*(1-t)),zIndex:-1}]:[{transform:_r(-30*t),zIndex:-1},{transform:_r(100*(1-t)),zIndex:0}]}}}),ho={mixins:[ei,Br,Xr],props:{ratio:String,minHeight:Number,maxHeight:Number},data:{ratio:\"16:9\",minHeight:!1,maxHeight:!1,selList:\".uk-slideshow-items\",attrItem:\"uk-slideshow-item\",selNav:\".uk-slideshow-nav\",Animations:ao},update:{read:function(){var t=this.ratio.split(\":\").map(Number),e=t[0],n=t[1];return n=n*this.list.offsetWidth/e||0,this.minHeight&&(n=Math.max(this.minHeight,n)),this.maxHeight&&(n=Math.min(this.maxHeight,n)),{height:n-cn(this.list,\"content-box\")}},write:function(t){var e=t.height;0<e&&Le(this.list,\"minHeight\",e)},events:[\"resize\"]}},co={mixins:[ei,xr],props:{group:String,threshold:Number,clsItem:String,clsPlaceholder:String,clsDrag:String,clsDragState:String,clsBase:String,clsNoDrag:String,clsEmpty:String,clsCustom:String,handle:String},data:{group:!1,threshold:5,clsItem:\"uk-sortable-item\",clsPlaceholder:\"uk-sortable-placeholder\",clsDrag:\"uk-sortable-drag\",clsDragState:\"uk-drag\",clsBase:\"uk-sortable\",clsNoDrag:\"uk-sortable-nodrag\",clsEmpty:\"uk-sortable-empty\",clsCustom:\"\",handle:!1},created:function(){var o=this;[\"init\",\"start\",\"move\",\"end\"].forEach(function(t){var r=o[t];o[t]=function(t){o.scrollY=window.pageYOffset;var e=te(t,\"page\"),n=e.x,i=e.y;o.pos={x:n,y:i},r(t)}})},events:{name:dt,passive:!1,handler:\"init\"},update:{write:function(){if(this.clsEmpty&&De(this.$el,this.clsEmpty,B(this.$el.children)),Le(this.handle?Ee(this.handle,this.$el):this.$el.children,{touchAction:\"none\",userSelect:\"none\"}),this.drag){var t=nn(window),e=t.right,n=t.bottom;nn(this.drag,{top:Z(this.pos.y+this.origin.top,0,n-this.drag.offsetHeight),left:Z(this.pos.x+this.origin.left,0,e-this.drag.offsetWidth)}),function s(t){var a=t.x;var h=t.y;clearTimeout(so);(e=document.elementFromPoint(a-window.pageXOffset,h-window.pageYOffset),n=fo(),function(t,e){var n=[];for(;e(t)&&n.unshift(t),t=t&&t.parentElement;);return n}(e,function(t){return t===n||lo.test(Le(t,\"overflow\"))})).some(function(t){var e=t.scrollTop,n=t.scrollHeight;fo()===t&&(t=window,n-=window.innerHeight);var i=nn(t),r=i.top,o=i.bottom;if(r<h&&h<r+30?e-=5:h<o&&o-20<h&&(e+=5),0<e&&e<n)return so=setTimeout(function(){gn(t,e),s({x:a,y:h})},10)});var e,n}(this.pos)}}},methods:{init:function(t){var e=t.target,n=t.button,i=t.defaultPrevented,r=W(this.$el.children).filter(function(t){return Wt(e,t)})[0];!r||i||0<n||Ft(e)||Wt(e,\".\"+this.clsNoDrag)||this.handle&&!Wt(e,this.handle)||(t.preventDefault(),this.touched=[this],this.placeholder=r,this.origin=U({target:e,index:ue(r)},this.pos),Vt(document,ft,this.move),Vt(document,pt,this.end),Vt(window,\"scroll\",this.scroll),this.threshold||this.start(t))},start:function(t){this.drag=pe(this.$container,this.placeholder.outerHTML.replace(/^<li/i,\"<div\").replace(/li>$/i,\"div>\")),Le(this.drag,U({boxSizing:\"border-box\",width:this.placeholder.offsetWidth,height:this.placeholder.offsetHeight,overflow:\"hidden\"},Le(this.placeholder,[\"paddingLeft\",\"paddingRight\",\"paddingTop\",\"paddingBottom\"]))),it(this.drag,\"uk-no-boot\",\"\"),Ae(this.drag,this.clsDrag,this.clsCustom),sn(this.drag.firstElementChild,sn(this.placeholder.firstElementChild));var e=nn(this.placeholder),n=e.left,i=e.top;U(this.origin,{left:n-this.pos.x,top:i-this.pos.y}),Ae(this.placeholder,this.clsPlaceholder),Ae(this.$el.children,this.clsItem),Ae(document.documentElement,this.clsDragState),qt(this.$el,\"start\",[this,this.placeholder]),this.move(t)},move:function(t){if(this.drag){this.$emit();var e=\"mousemove\"===t.type?t.target:document.elementFromPoint(this.pos.x-window.pageXOffset,this.pos.y-window.pageYOffset),n=this.getSortable(e),i=this.getSortable(this.placeholder),r=n!==i;if(n&&!Wt(e,this.placeholder)&&(!r||n.group&&n.group===i.group)){if(e=n.$el===e.parentNode&&e||W(n.$el.children).filter(function(t){return Wt(e,t)})[0],r)i.remove(this.placeholder);else if(!e)return;n.insert(this.placeholder,e),b(this.touched,n)||this.touched.push(n)}}else(Math.abs(this.pos.x-this.origin.x)>this.threshold||Math.abs(this.pos.y-this.origin.y)>this.threshold)&&this.start(t)},end:function(t){if(Rt(document,ft,this.move),Rt(document,pt,this.end),Rt(window,\"scroll\",this.scroll),this.drag){clearTimeout(so);var e=this.getSortable(this.placeholder);this===e?this.origin.index!==ue(this.placeholder)&&qt(this.$el,\"moved\",[this,this.placeholder]):(qt(e.$el,\"added\",[e,this.placeholder]),qt(this.$el,\"removed\",[this,this.placeholder])),qt(this.$el,\"stop\",[this,this.placeholder]),we(this.drag),this.drag=null;var n=this.touched.map(function(t){return t.clsPlaceholder+\" \"+t.clsItem}).join(\" \");this.touched.forEach(function(t){return _e(t.$el.children,n)}),_e(document.documentElement,this.clsDragState)}else\"touchend\"===t.type&&t.target.click()},scroll:function(){var t=window.pageYOffset;t!==this.scrollY&&(this.pos.y+=t-this.scrollY,this.scrollY=t,this.$emit())},insert:function(t,e){var n=this;Ae(this.$el.children,this.clsItem);function i(){e?!Wt(t,n.$el)||function(t,e){return t.parentNode===e.parentNode&&ue(t)>ue(e)}(t,e)?me(e,t):ge(e,t):pe(n.$el,t)}this.animation?this.animate(i):i()},remove:function(t){Wt(t,this.$el)&&(Le(this.handle?Ee(this.handle,t):t,{touchAction:\"\",userSelect:\"\"}),this.animation?this.animate(function(){return we(t)}):we(t))},getSortable:function(t){return t&&(this.$getComponent(t,\"sortable\")||this.getSortable(t.parentNode))}}};var uo,lo=/auto|scroll/;function fo(){return document.scrollingElement||document.documentElement}var po,mo,go,vo=[],wo={mixins:[Zi,ni,ci],args:\"title\",props:{delay:Number,title:String},data:{pos:\"top\",title:\"\",delay:0,animation:[\"uk-animation-scale-up\"],duration:100,cls:\"uk-active\",clsPos:\"uk-tooltip\"},beforeConnect:function(){this._hasTitle=rt(this.$el,\"title\"),it(this.$el,{title:\"\",\"aria-expanded\":!1})},disconnected:function(){this.hide(),it(this.$el,{title:this._hasTitle?this.title:null,\"aria-expanded\":null})},methods:{show:function(){var e=this;!this.isActive()&&this.title&&(vo.forEach(function(t){return t.hide()}),vo.push(this),this._unbind=Vt(document,pt,function(t){return!Wt(t.target,e.$el)&&e.hide()}),clearTimeout(this.showTimer),this.showTimer=setTimeout(function(){e._show(),e.hideTimer=setInterval(function(){Ht(e.$el)||e.hide()},150)},this.delay))},hide:function(){this.isActive()&&!_t(this.$el,\"input:focus\")&&(vo.splice(vo.indexOf(this),1),clearTimeout(this.showTimer),clearInterval(this.hideTimer),it(this.$el,\"aria-expanded\",!1),this.toggleElement(this.tooltip,!1),this.tooltip&&we(this.tooltip),this.tooltip=!1,this._unbind())},_show:function(){this.tooltip=pe(this.container,'<div class=\"'+this.clsPos+'\" aria-expanded=\"true\" aria-hidden> <div class=\"'+this.clsPos+'-inner\">'+this.title+\"</div> </div>\"),this.positionAt(this.tooltip,this.$el),this.origin=\"y\"===this.getAxis()?fn(this.dir)+\"-\"+this.align:this.align+\"-\"+fn(this.dir),this.toggleElement(this.tooltip,!0)},isActive:function(){return b(vo,this)}},events:(uo={focus:\"show\",blur:\"hide\"},uo[mt+\" \"+gt]=function(t){Qt(t)||(t.type===mt?this.show():this.hide())},uo[dt]=function(t){Qt(t)&&(this.isActive()?this.hide():this.show())},uo)},bo={props:{allow:String,clsDragover:String,concurrent:Number,maxSize:Number,method:String,mime:String,msgInvalidMime:String,msgInvalidName:String,msgInvalidSize:String,multiple:Boolean,name:String,params:Object,type:String,url:String},data:{allow:!1,clsDragover:\"uk-dragover\",concurrent:1,maxSize:0,method:\"POST\",mime:!1,msgInvalidMime:\"Invalid File Type: %s\",msgInvalidName:\"Invalid File Name: %s\",msgInvalidSize:\"Invalid File Size: %s Kilobytes Max\",multiple:!1,name:\"files[]\",params:{},type:\"\",url:\"\",abort:Q,beforeAll:Q,beforeSend:Q,complete:Q,completeAll:Q,error:Q,fail:Q,load:Q,loadEnd:Q,loadStart:Q,progress:Q},events:{change:function(t){_t(t.target,'input[type=\"file\"]')&&(t.preventDefault(),t.target.files&&this.upload(t.target.files),t.target.value=\"\")},drop:function(t){xo(t);var e=t.dataTransfer;e&&e.files&&(_e(this.$el,this.clsDragover),this.upload(e.files))},dragenter:function(t){xo(t)},dragover:function(t){xo(t),Ae(this.$el,this.clsDragover)},dragleave:function(t){xo(t),_e(this.$el,this.clsDragover)}},methods:{upload:function(t){var i=this;if(t.length){qt(this.$el,\"upload\",[t]);for(var e=0;e<t.length;e++){if(this.maxSize&&1e3*this.maxSize<t[e].size)return void this.fail(this.msgInvalidSize.replace(\"%s\",this.maxSize));if(this.allow&&!yo(this.allow,t[e].name))return void this.fail(this.msgInvalidName.replace(\"%s\",this.allow));if(this.mime&&!yo(this.mime,t[e].type))return void this.fail(this.msgInvalidMime.replace(\"%s\",this.mime))}this.multiple||(t=[t[0]]),this.beforeAll(this,t);var r=function(t,e){for(var n=[],i=0;i<t.length;i+=e){for(var r=[],o=0;o<e;o++)r.push(t[i+o]);n.push(r)}return n}(t,this.concurrent),o=function(t){var e=new FormData;for(var n in t.forEach(function(t){return e.append(i.name,t)}),i.params)e.append(n,i.params[n]);ae(i.url,{data:e,method:i.method,responseType:i.type,beforeSend:function(t){var e=t.xhr;e.upload&&Vt(e.upload,\"progress\",i.progress),[\"loadStart\",\"load\",\"loadEnd\",\"abort\"].forEach(function(t){return Vt(e,t.toLowerCase(),i[t])}),i.beforeSend(t)}}).then(function(t){i.complete(t),r.length?o(r.shift()):i.completeAll(t)},function(t){return i.error(t)})};o(r.shift())}}}};function yo(t,e){return e.match(new RegExp(\"^\"+t.replace(/\\//g,\"\\\\/\").replace(/\\*\\*/g,\"(\\\\/[^\\\\/]+)*\").replace(/\\*/g,\"[^\\\\/]+\").replace(/((?!\\\\))\\?/g,\"$1.\")+\"$\",\"i\"))}function xo(t){t.preventDefault(),t.stopPropagation()}function ko(){Io(document.body,mo),kn.flush(),new MutationObserver(function(t){return t.forEach($o)}).observe(document,{childList:!0,subtree:!0,characterData:!0,attributes:!0}),po._initialized=!0}function $o(t){var e=t.target;(\"attributes\"!==t.type?function(t){for(var e=t.addedNodes,n=t.removedNodes,i=0;i<e.length;i++)Io(e[i],mo);for(var r=0;r<n.length;r++)Io(n[r],go);return!0}(t):function(t){var e=t.target,n=t.attributeName;if(\"href\"===n)return!0;var i=Hn(n);if(!(i&&i in po))return;if(rt(e,n))return po[i](e),!0;var r=po.getComponent(e,i);if(r)return r.$destroy(),!0}(t))&&po.update(e)}function Io(t,e){if(1===t.nodeType&&!rt(t,\"uk-no-boot\"))for(e(t),t=t.firstElementChild;t;){var n=t.nextElementSibling;Io(t,e),t=n}}return Ln.component(\"countdown\",wr),Ln.component(\"filter\",Sr),Ln.component(\"lightbox\",Fr),Ln.component(\"lightboxPanel\",Pr),Ln.component(\"notification\",Vr),Ln.component(\"parallax\",Ur),Ln.component(\"slider\",no),Ln.component(\"sliderParallax\",io),Ln.component(\"slideshow\",ho),Ln.component(\"slideshowParallax\",io),Ln.component(\"sortable\",co),Ln.component(\"tooltip\",wo),Ln.component(\"upload\",bo),mo=(po=Ln).connect,go=po.disconnect,\"MutationObserver\"in window&&(document.body?kn.read(ko):new MutationObserver(function(){document.body&&(this.disconnect(),ko())}).observe(document,{childList:!0,subtree:!0})),Ln});","import App from \"./App.svelte\";\nimport \"./global.css\";\nimport \"./fonts.css\";\nimport \"/assets/roboto-v20-latin-ext_latin-300\";\nimport \"/assets/roboto-v20-latin-ext_latin-400\";\nimport \"/assets/roboto-v20-latin-ext_latin-500\";\nimport \"/assets/roboto-v20-latin-ext_latin-700\";\nimport \"/assets/roboto-v20-latin-ext_latin-900\";\nimport \"/assets/budibase-logo.png\";\nimport \"/assets/budibase-logo-only.png\";\nimport \"uikit/dist/css/uikit.min.css\";\nimport \"uikit/dist/js/uikit.min.js\";\n\nconst app = new App({\n\ttarget: document.getElementById(\"app\")\n});\n\n\n"],"names":["noop","identity","x","assign","tar","src","k","run","fn","blank_object","Object","create","run_all","fns","forEach","is_function","thing","safe_not_equal","a","b","component_subscribe","component","store","callback","$$","on_destroy","push","unsub","subscribe","unsubscribe","create_slot","definition","ctx","slot_ctx","get_slot_context","$$scope","get_slot_changes","changed","is_client","window","now","performance","Date","raf","cb","requestAnimationFrame","tasks","Set","stylesheet","running","run_tasks","task","delete","size","loop","promise","Promise","fulfil","add","[object Object]","append","target","node","appendChild","insert","anchor","insertBefore","detach","parentNode","removeChild","destroy_each","iterations","detaching","i","length","d","element","name","document","createElement","text","data","createTextNode","space","empty","listen","event","handler","options","addEventListener","removeEventListener","stop_propagation","stopPropagation","call","this","attr","attribute","value","removeAttribute","setAttribute","set_data","set_input_value","input","set_style","key","important","style","setProperty","select_option","select","option","__value","selected","select_options","indexOf","toggle_class","toggle","classList","HtmlTag","html","e","u","n","t","innerHTML","Array","from","childNodes","m","current_component","active","current_rules","create_rule","duration","delay","ease","uid","step","keyframes","p","rule","str","hash","charCodeAt","head","sheet","insertRule","cssRules","animation","delete_rule","split","filter","anim","join","deleteRule","set_current_component","get_current_component","Error","bubble","callbacks","type","slice","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","resolve","update_scheduled","add_render_callback","add_flush_callback","flush","seen_callbacks","shift","update","pop","has","fragment","dirty","before_update","after_update","wait","then","dispatch","direction","kind","dispatchEvent","detail","createEvent","initCustomEvent","custom_event","outroing","outros","group_outros","r","c","check_outros","transition_in","block","local","transition_out","o","null_transition","create_in_transition","params","animation_name","config","cleanup","go","easing","tick","css","start_time","end_time","abort","started","create_out_transition","group","reset","bind","props","bound","mount_component","on_mount","new_on_destroy","map","destroy_component","make_dirty","init","instance","create_fragment","not_equal","prop_names","parent_component","context","Map","ready","ret","hydrate","l","intro","SvelteElement","HTMLElement","super","attachShadow","mode","slotted","_oldValue","newValue","$destroy","index","splice","SvelteComponent","color","className","borderClass","grouped","groupPosition","apply","v","f","s","h","_","g","y","F","T","j","A","S","O","I","R","z","Un","W","B","L","U","D","Rn","test","On","lastIndex","Qn","M","match","$","NaN","N","P","Z","q","V","K","G","RegExp","source","H","J","Y","Q","X","nn","tn","rn","en","un","on","cn","an","ln","sn","hn","pn","_n","vn","gn","dn","yn","bn","xn","jn","wn","mn","An","kn","Sn","In","zn","Wn","Bn","Ln","\\","'","\n","\r","
","
","Cn","parseFloat","Dn","parseInt","Mn","global","Tn","self","$n","Function","Fn","exports","nodeType","Nn","module","Pn","Zn","process","qn","types","binding","Vn","isArrayBuffer","Kn","isDate","Gn","isMap","Hn","isRegExp","Jn","isSet","Yn","isTypedArray","Xn","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","Ā","Ă","Ą","ā","ă","ą","Ć","Ĉ","Ċ","Č","ć","ĉ","ċ","č","Ď","Đ","ď","đ","Ē","Ĕ","Ė","Ę","Ě","ē","ĕ","ė","ę","ě","Ĝ","Ğ","Ġ","Ģ","ĝ","ğ","ġ","ģ","Ĥ","Ħ","ĥ","ħ","Ĩ","Ī","Ĭ","Į","İ","ĩ","ī","ĭ","į","ı","Ĵ","ĵ","Ķ","ķ","ĸ","Ĺ","Ļ","Ľ","Ŀ","Ł","ĺ","ļ","ľ","ŀ","ł","Ń","Ņ","Ň","Ŋ","ń","ņ","ň","ŋ","Ō","Ŏ","Ő","ō","ŏ","ő","Ŕ","Ŗ","Ř","ŕ","ŗ","ř","Ś","Ŝ","Ş","Š","ś","ŝ","ş","š","Ţ","Ť","Ŧ","ţ","ť","ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","ũ","ū","ŭ","ů","ű","ų","Ŵ","ŵ","Ŷ","ŷ","Ÿ","Ź","Ż","Ž","ź","ż","ž","IJ","ij","Œ","œ","ʼn","ſ","nt","&","<",">","\"","tt","&","<",">",""","'","rt","yu","ff","oi","Fe","En","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","clear","set","__data__","of","af","_f","ni","Se","ir","it","lu","st","ot","ft","ct","uo","at","Cr","Wu","Ai","configurable","enumerable","writable","ht","Ku","Ru","pt","_t","du","constructor","me","Ur","vo","Ir","Ae","_o","Mr","Bu","lt","po","Dr","Rr","buffer","byteOffset","byteLength","zr","exec","to","Qu","Ee","get","pf","sf","ve","_e","gt","dt","ti","bo","yt","bt","xt","wu","jt","wt","ke","mt","oo","At","fo","Et","_u","kt","Sr","Me","St","Ot","mi","ai","It","Rt","zt","Wt","Ci","Lt","hr","Ve","Ut","Mt","se","vi","message","he","$t","Ft","ci","hi","Te","qt","$u","Jt","Ht","Zu","Vt","ze","Li","Kt","Gt","su","xe","We","Ie","zu","Yt","Le","hu","xu","Ou","Qt","Xt","ye","sort","w","Wr","tr","lr","er","xi","ur","xr","Ii","Ti","or","fr","xo","Be","pr","_r","vr","gr","dr","yr","ro","br","so","jr","wr","func","thisArg","args","mr","Ar","Er","kr","jo","Iu","Or","gi","copy","Br","Ui","Lr","Tr","$r","Oe","Fr","Nr","Zr","charAt","qr","Mu","Du","replace","Vr","arguments","eo","prototype","Kr","de","ue","Jr","placeholder","Gr","Hr","pe","thru","reverse","ge","ho","Re","plant","Yr","Bt","Qr","Xr","ne","Oi","te","re","Au","ee","Su","yo","Ue","ie","Yu","Eu","Wi","oe","C","E","fe","co","Pr","ce","ei","ae","le","Ze","Gi","iteratee","Fu","be","je","we","gu","di","ji","$e","Ce","Di","De","ii","clone","Ne","Pe","qe","Ke","Ge","$i","He","Je","Ye","Qe","nu","tu","io","ru","eu","uu","fu","Go","lo","leading","maxWait","trailing","cancel","cu","cache","Cache","au","pu","vu","bu","li","ju","mu","wi","next","done","Uu","ku","valueOf","Lu","Cu","$f","toLowerCase","Tu","Nu","chain","Pu","rr","qu","Vu","defaults","pick","Gu","Hu","Ju","Math","Xu","String","TypeError","ri","ui","toString","hasOwnProperty","fi","keys","IE_PROTO","si","pi","Buffer","_i","Symbol","Uint8Array","getPrototypeOf","yi","bi","propertyIsEnumerable","isConcatSpreadable","iterator","toStringTag","Ei","clearTimeout","ki","Si","setTimeout","ceil","floor","Ri","getOwnPropertySymbols","zi","isBuffer","isFinite","Bi","max","min","Mi","random","Fi","Ni","Pi","Zi","qi","Vi","Ki","Hi","Ji","Yi","Qi","Xi","no","templateSettings","escape","evaluate","interpolate","variable","imports","string","ao","ArrayBuffer","wo","mo","Ao","Eo","ko","So","Oo","Io","Ro","zo","Wo","Bo","Lo","Uo","Co","Do","Mo","To","$o","Fo","No","Po","Zo","qo","Vo","Ko","Ho","Jo","Yo","Qo","Xo","nf","tf","rf","ef","uf","isArray","cf","lf","hf","vf","gf","df","yf","bf","xf","jf","wf","mf","Of","Af","Ef","kf","Sf","If","Rf","nr","zf","Wf","Bf","Lf","Uf","Cf","Df","Mf","Tf","toUpperCase","Ff","Nf","Pf","Zf","qf","Vf","Kf","Gf","Hf","Jf","Yf","Qf","Xf","nc","tc","rc","ec","uc","after","ary","assignIn","assignInWith","assignWith","before","bindAll","bindKey","castArray","chunk","compact","concat","cond","conforms","vt","constant","countBy","curry","iu","curryRight","ou","debounce","defaultsDeep","defer","difference","differenceBy","differenceWith","drop","dropRight","dropRightWhile","dropWhile","fill","flatMap","flatMapDeep","flatMapDepth","flatten","flattenDeep","flattenDepth","flip","flow","flowRight","fromPairs","functions","functionsIn","groupBy","initial","intersection","intersectionBy","intersectionWith","invert","invertBy","invokeMap","keyBy","keysIn","mapKeys","mapValues","matches","matchesProperty","memoize","merge","mergeWith","method","methodOf","mixin","negate","nthArg","omit","omitBy","once","orderBy","over","overArgs","overEvery","overSome","partial","partialRight","partition","pickBy","property","propertyOf","pull","pullAll","pullAllBy","pullAllWith","pullAt","range","rangeRight","rearg","reject","remove","rest","sampleSize","setWith","shuffle","sortBy","sortedUniq","sortedUniqBy","spread","tail","take","takeRight","takeRightWhile","takeWhile","tap","throttle","toArray","toPairs","toPairsIn","toPath","toPlainObject","transform","unary","union","unionBy","unionWith","uniq","uniqBy","uniqWith","unset","unzip","unzipWith","updateWith","values","valuesIn","without","words","wrap","xor","xorBy","xorWith","zip","zipObject","zipObjectDeep","zipWith","entries","entriesIn","extend","extendWith","attempt","camelCase","capitalize","clamp","cloneDeep","cloneDeepWith","cloneWith","conformsTo","deburr","defaultTo","divide","endsWith","eq","escapeRegExp","every","find","findIndex","findKey","findLast","findLastIndex","findLastKey","forEachRight","forIn","forInRight","forOwn","forOwnRight","gte","hasIn","includes","inRange","invoke","isArguments","isArrayLike","isArrayLikeObject","isBoolean","isElement","isEmpty","isEqual","isEqualWith","isError","isFunction","isInteger","isLength","isMatch","isMatchWith","isNaN","isNative","isNil","isNull","isNumber","isObject","isObjectLike","isPlainObject","isSafeInteger","isString","isSymbol","isUndefined","isWeakMap","isWeakSet","kebabCase","last","lastIndexOf","lowerCase","lowerFirst","lte","maxBy","mean","meanBy","minBy","stubArray","stubFalse","stubObject","stubString","stubTrue","multiply","nth","noConflict","pad","padEnd","padStart","reduce","reduceRight","repeat","result","round","runInContext","sample","snakeCase","some","sortedIndex","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","startCase","startsWith","subtract","sum","sumBy","template","sourceURL","times","toFinite","toInteger","toLength","toLower","toNumber","toSafeInteger","toUpper","trim","trimEnd","trimStart","truncate","separator","omission","search","unescape","uniqueId","upperCase","upperFirst","each","eachRight","first","VERSION","start","end","commit","toJSON","extendAll","extendAllWith","__","all","allPass","always","any","anyPass","assoc","assocPath","complement","compose","contains","dissoc","dissocPath","dropLast","dropLastWhile","equals","identical","indexBy","invertObj","juxt","omitAll","nAry","path","pathEq","pathOr","paths","pickAll","pipe","pluck","prop","propEq","propOr","symmetricDifference","symmetricDifferenceBy","symmetricDifferenceWith","takeLast","takeLastWhile","unapply","unnest","useWith","where","whereEq","zipObj","1","2","3","4","findFrom","findIndexFrom","findLastFrom","findLastIndexFrom","assignInAllWith","assignAllWith","getOr","mergeAllWith","padChars","padCharsEnd","padCharsStart","rangeStep","rangeStepRight","assignAll","assignInAll","defaultsAll","defaultsDeepAll","invokeArgs","invokeArgsMap","mergeAll","zipAll","array","object","aliasToReal","curryN","curryRightN","includesFrom","indexOfFrom","lastIndexOfFrom","restFrom","spreadFrom","trimChars","trimCharsEnd","trimCharsStart","baseAry","cloneArray","wrapImmutable","cloner","undefined","baseConvert","util","isLib","isObj","cap","fixed","immutable","defaultHolder","fallbackHolder","forceCurry","forceFixed","forceRearg","pristine","helpers","aryMethodKeys","mapping","aryMethod","wrappers","arity","pairs","pair","indexes","castCap","iterateeRearg","overArg","baseArity","iterateeAry","castFixed","skipFixed","methodSpread","otherArgs","flatSpread","castRearg","skipRearg","methodRearg","aryRearg","cloneByPath","nested","createConverter","realName","methodName","remap","oldOptions","newUtil","newFunc","newOptions","wrapped","wrapper","mutate","createCloner","aryKey","otherName","afterRearg","convert","realToAlias","alias","require$$0","require$$1","seed","alphabet","previousSeed","shuffled","nextValue","_seed_","ORIGINAL","setCharacters","_alphabet_","unique","item","ind","arr","getShuffled","characterIndex","sourceArray","targetArray","randomFromSeed","characters","lookup","crypto","msCrypto","getRandomValues","bytes","mask","log","LN2","id","byte","counter","previousSeconds","number","loopCounter","format","pow","REDUCE_TIME","version","clusterWorkerId","seconds","generate","build","seedValue","workerId","newCharacters","isValid","LARGE_ARRAY_SIZE","CORE_ERROR_TEXT","FUNC_ERROR_TEXT","HASH_UNDEFINED","MAX_MEMOIZE_SIZE","PLACEHOLDER","CLONE_DEEP_FLAG","CLONE_FLAT_FLAG","CLONE_SYMBOLS_FLAG","COMPARE_PARTIAL_FLAG","COMPARE_UNORDERED_FLAG","WRAP_BIND_FLAG","WRAP_BIND_KEY_FLAG","WRAP_CURRY_BOUND_FLAG","WRAP_CURRY_FLAG","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","WRAP_FLIP_FLAG","DEFAULT_TRUNC_LENGTH","DEFAULT_TRUNC_OMISSION","HOT_COUNT","HOT_SPAN","LAZY_FILTER_FLAG","LAZY_MAP_FLAG","INFINITY","MAX_SAFE_INTEGER","MAX_INTEGER","NAN","MAX_ARRAY_LENGTH","MAX_ARRAY_INDEX","HALF_MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","asyncTag","boolTag","dateTag","domExcTag","errorTag","funcTag","genTag","mapTag","numberTag","nullTag","objectTag","proxyTag","regexpTag","setTag","stringTag","symbolTag","undefinedTag","weakMapTag","weakSetTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrim","reTrimStart","reTrimEnd","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsBreakRange","rsMathOpRange","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","reOptMod","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","root","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","require","nodeIsArrayBuffer","nodeIsDate","nodeIsMap","nodeIsRegExp","nodeIsSet","nodeIsTypedArray","arrayAggregator","setter","accumulator","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","offset","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","collection","eachFunc","baseFindIndex","fromIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","current","baseTimes","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","deburrLetter","escapeHtmlChar","escapeStringChar","chr","hasUnicode","mapToArray","arg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","nativeObjectToString","objectCtorString","oldDash","reIsNative","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","symIterator","symToStringTag","defineProperty","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","WeakMap","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","proto","baseLodash","chainAll","Hash","entry","ListCache","MapCache","SetCache","Stack","arrayLikeKeys","inherited","isArr","isArg","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","skip","lower","upper","baseClone","bitmask","customizer","stack","isDeep","isFlat","isFull","initCloneArray","tag","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","baseAssignIn","getSymbols","copySymbols","symbol","regexp","Ctor","cloneArrayBuffer","dataView","cloneDataView","cloneTypedArray","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","baseDifference","isCommon","valuesLength","outer","computed","valuesIndex","getMapData","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","baseFilter","baseFlatten","depth","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","other","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","maxLength","Infinity","seen","baseInvoke","parent","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","baseIsNative","baseIteratee","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","getMatchData","matchesStrictComparable","isKey","isStrictComparable","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","baseSortBy","criteria","objCriteria","othCriteria","ordersLength","compareAscending","order","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","previous","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","baseSetData","baseSetToString","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","actions","action","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftIndex","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","sources","guard","isIterateeCall","iterable","createCaseFirst","createCompounder","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","funcs","prereq","getFuncName","funcName","getData","isLaziable","createHybrid","partialsRight","holdersRight","argPos","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","countHolders","newHolders","createRecurry","arrLength","oldArray","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","defaultValue","createOver","arrayFunc","createPadding","chars","charsLength","createRange","baseRange","createRelationalOperation","wrapFunc","isCurry","newData","setData","setWrapToString","createRound","precision","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrValue","otherFunc","getValue","hasPath","hasFunc","ctorString","isMaskable","shortOut","reference","details","insertWrapDetails","updateWrapDetails","getWrapDetails","count","lastCalled","stamp","remaining","rand","memoizeCapped","quote","subString","mapped","interceptor","wrapperAt","lastArgs","lastThis","timerId","lastCallTime","lastInvokeTime","maxing","invokeFunc","time","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","timeWaiting","remainingWait","debounced","isInvoking","leadingEdge","resolver","memoized","transforms","funcsLength","iteratorToArray","remainder","isBinary","propsIndex","propsLength","basePick","word","pattern","hasUnicodeWord","unicodeWords","asciiWords","methodNames","basePropertyDeep","augend","addend","dividend","divisor","multiplier","multiplicand","minuend","subtrahend","baseConforms","properties","baseFill","limit","isArrLike","position","baseInRange","strictLastIndexOf","strLength","radix","floating","temp","settings","isEscaping","isEvaluating","importsKeys","importsValues","reDelimiters","escapeValue","interpolateValue","esTemplateValue","evaluateValue","substring","newEnd","prefix","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","isLazy","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","dir","isRight","view","getView","iterLength","takeCount","iterIndex","commonPlus","extra","common","_events","recordApi","save","getContext","getNew","load","validate","uploadFile","downloadFile","indexApi","buildIndex","listItems","aggregates","collectionApi","getAllowedRecordTypes","initialise","authApi","authenticate","authenticateTemporaryAccess","createTemporaryAccess","createUser","enableUser","disableUser","loadAccessLevels","getNewAccessLevel","getNewUser","getNewUserAuth","getUsers","saveAccessLevels","isAuthorized","changeMyPassword","setPasswordFromTemporaryCode","scorePassword","isValidPassword","validateUser","validateAccessLevels","setUserAccessLevels","templateApi","saveApplicationHierarchy","saveActionsAndTriggers","actionsApi","execute","_eventsList","makeEvent","area","areaKey","methodKey","obj","events","eventsList","BadRequestError","httpStatusCode","UnauthorisedError","NotFoundError","apiWrapper","async","app","eventNamespace","eventContext","pushCallStack","handleNotAuthorized","startDate","elapsed","publish","onBegin","publishComplete","error","publishError","apiWrapperSync","err","seedCallId","callId","calls","threadCallId","createCallStack","namespace","popCallStack","onError","endcontext","onComplete","getLock","lockFile","timeoutMilliseconds","maxLockRetries","retryCount","lock","timeout","getEpochTime","totalTimeout","datastore","createFile","getLockFileContent","NO_LOCK","parseLockFileContent","loadFile","deleteFile","sleepForRetry","epochTime","content","parts","Number","releaseLock","isNolock","trimKeySep","safeKey","joinKey","strs","paramsOrArray","splitKey","getDirFomKey","getFileFromKey","fieldDefinitions","templateDefinitions","appDefinitionFile","dirIndex","folderPath","getIndexKeyFromFileKey","ifExists","val","exists","notExists","not","isDefined","isNonNull","isNotNaN","allTrue","funcArgs","conditionFunc","anyTrue","insensitiveEquals","str1","str2","isSomething","isNothing","isNothingOrEmpty","somethingOrGetDefault","getDefaultFunc","mapIfSomethingOrDefault","mapFunc","defaultVal","none","isNotEmpty","ob","isNonEmptyArray","isNonEmptyString","tryOr","failFunc","tryAwaitOr","defineError","errorPrefix","tryOrIgnore","tryAwaitOrIgnore","causesException","executesWithoutException","handleErrorWith","returnValInError","handleErrorWithUndefined","switchCase","cases","nextCase","nextResult","isOneOf","vals","defaultCase","getHashCode","char","toDateOrNull","toBoolOrNull","toNumberOrNull","isArrayOfString","opts","pause","res","retry","retries","getOrDefault","mapIfSomethingOrBlank","configFolder","StartsWith","searchFor","searchIn","keySep","somethingOrDefault","isValue","val1","val2","memberMatches","member","awEx","toDate","toBool","makerule","field","validationError","applyRuleSet","ruleSet","itemToValidate","applyRule","itemTovalidate","filters","limiters","compileRawExpression","compileRawCode","filterRegex","limiterRegex","argsRegex","expressionCache","codeCache","compileExpression","expression","tokens","filterTokens","filterName","effect","argExpressions","parseExpression","tempVars","list","evaluateArgExpression","compileCode","code","limiterTokens","limiterName","parseCode","state","limiter","argExpression","globalObj","hasHandler","allHandlers","globals","$nxCompileToSandbox","Proxy","$nxClearSandbox","indexTypes","ancestor","indexRuleSet","compileMap","compileFilter","isRecord","indexType","getFlattenedHierarchy","appHierarchy","useCached","flattenHierarchy","currentNode","flattened","children","aggregateGroups","unionIfAny","l2","l1","child","getExactNodeForPath","pathRegx","hasMatchingAncestor","ancestorPredicate","decendantNode","getNode","nodeKey","isCollectionRecord","collectionNodeKey","getNodeByKeyOrNodeKey","keyOrNodeKey","nodeByKey","isNode","isKeyAncestorOf","ancestorKey","isAncestor","decendant","isDecendant","getRecordNodeIdFromId","recordId","recordNodeIdIsAllowed","indexNode","nodeId","allowedRecordNodeIds","recordNodeIsAllowed","recordNode","getAllowedRecordNodesForIndex","recordNodes","isGlobalIndex","isAncestorIndex","isReferenceIndex","fieldReversesReferenceToIndex","fields","isSingleRecord","isSingle","isaggregateGroup","isRoot","isDecendantOfARecord","typeOptions","reverseIndexNodeKeys","getLastPartInKey","getNodesInPath","getActualKeyOfParent","parentNodeKey","actualChildKey","ks","getParentKey","hasNoMatchingAncestors","parentPredicate","findField","fieldName","getRecordNodeId","recordKey","getRecordNodeById","hierarchy","getNodeFromNodeKeyHash","isShardedIndex","getShardName","fieldReversesReferenceToNode","getSafeFieldParser","tryParse","defaultValueFunctions","record","getSafeValueParser","getUndefinedValue","parsed","success","default","getNewValue","getInitialValue","typeFunctions","specificFunctions","null","validateTypeConstraints","validationRules","fieldValue","validateRule","getMessage","errors","getDefaultOptions","parsedFailed","parsedSuccess","getDefaultExport","sampleValue","stringify","safeParseField","safeParseValue","optionDefinitions","getDefaultValue","stringFunctions","stringTryParse","requirementDescription","parse","allowDeclaredValuesOnly","typeConstraints","boolFunctions","boolTryParse","allowNulls","JSON","numberFunctions","numberTryParse","num","maxValue","minValue","decimalPlaces","splitDecimal","getDecimalPlaces","dateFunctions","isValidDate","dateTryParse","date","mapToParsedArrary","minLength","typeName","arrayTryParse","arrayFunctions","referenceNothing","referenceFunctions","isObjectWithKey","hasStringValue","tryParseFromString","asObj","indexNodeKey","displayValue","isEmptyString","referenceExists","fileNothing","relativePath","fileFunctions","fileName","filePath","isValidFile","isLegalFilename","basicTypes","datetime","bool","file","kvType","concreteArray","allTypes","getType","getSampleFieldValue","getNewFieldValue","detectType","USERS_LIST_FILE","userAuthFile","username","USERS_LOCK_FILE","ACCESS_LEVELS_FILE","ACCESS_LEVELS_LOCK_FILE","permissionTypes","CREATE_RECORD","UPDATE_RECORD","READ_RECORD","DELETE_RECORD","READ_INDEX","MANAGE_INDEX","MANAGE_COLLECTION","WRITE_TEMPLATES","CREATE_USER","SET_PASSWORD","CREATE_TEMPORARY_ACCESS","ENABLE_DISABLE_USER","WRITE_ACCESS_LEVELS","LIST_USERS","LIST_ACCESS_LEVELS","EXECUTE_ACTION","SET_USER_ACCESS_LEVELS","getUserByName","users","stripUserOfSensitiveStuff","user","stripped","tempCode","parseTemporaryCode","fullCode","permissionType","resourceKey","alwaysAuthorized","_isAuthorized","permissions","userperm","nodePermission","accessLevel","staticPermission","createRecord","updateRecord","deleteRecord","readRecord","writeTemplates","setPassword","readIndex","manageIndex","manageCollection","enableDisableUser","writeAccessLevels","listUsers","listAccessLevels","executeAction","permission","collectionKey","recordTypeName","getRecordNode","_getNew","constructRecord","collectionPathRegx","getNodeForCollectionPath","getNewChild","collectionName","getFieldValue","step2list","step3list","re_mgr0","re_mgr1","re_meq1","re_s_v","re_1a","re2_1a","re_1b","re2_1b","re_1b_2","re2_1b_2","re3_1b_2","re4_1b_2","re_1c","re_2","re_3","re_4","re2_4","re_5","re_5_1","re3_5","porterStemmer","lunr","builder","Builder","pipeline","trimmer","stopWordFilter","stemmer","searchPipeline","utils","warn","console","asString","FieldRef","docRef","stringValue","_stringValue","joiner","fromString","fieldRef","elements","complete","intersect","idf","posting","documentCount","documentsWithTerm","abs","Token","metadata","tokenizer","len","sliceEnd","sliceStart","sliceLength","tokenMetadata","Pipeline","_stack","registeredFunctions","registerFunction","label","warnIfFunctionNotRegistered","serialised","fnName","existingFn","newFn","pos","stackLength","memo","runString","token","Vector","_magnitude","positionForIndex","pivotPoint","pivotIndex","insertIdx","upsert","magnitude","sumOfSquares","elementsLength","sqrt","dot","otherVector","dotProduct","aLen","bLen","aVal","bVal","similarity","output","ational","tional","enci","anci","izer","bli","alli","entli","eli","ousli","ization","ation","ator","alism","iveness","fulness","ousness","aliti","iviti","biliti","logi","icate","ative","alize","iciti","ical","ful","ness","stem","suffix","firstch","re2","re3","re4","substr","fp","generateStopWordFilter","stopWords","stopWord","TokenSet","final","edges","_nextId","fromArray","finish","fromClause","clause","fromFuzzyString","term","editDistance","editsRemaining","frame","noEditNode","insertionNode","substitutionNode","transposeNode","charA","charB","edge","_str","labels","qNode","qEdges","qLen","nEdges","nLen","qEdge","nEdge","previousWord","uncheckedNodes","minimizedNodes","commonPrefix","minimize","nextNode","downTo","childKey","Index","attrs","invertedIndex","fieldVectors","tokenSet","queryString","query","QueryParser","Query","matchingFields","queryVectors","termFieldCache","requiredMatches","prohibitedMatches","clauses","terms","clauseMatches","usePipeline","termTokenSet","expandedTerms","presence","REQUIRED","expandedTerm","termIndex","_index","fieldPosting","matchingDocumentRefs","termField","matchingDocumentsSet","PROHIBITED","boost","fieldMatch","matchingDocumentRef","matchingFieldRef","MatchData","allRequiredMatches","allProhibitedMatches","matchingFieldRefs","results","isNegated","docMatch","fieldVector","score","combine","ref","serializedIndex","serializedVectors","serializedInvertedIndex","tokenSetBuilder","tuple","_ref","_fields","_documents","fieldTermFrequencies","fieldLengths","_b","_k1","metadataWhitelist","attributes","RangeError","k1","doc","extractor","fieldTerms","metadataKey","calculateAverageFieldLengths","fieldRefs","numberOfFields","documentsWithField","averageFieldLength","createFieldVectors","fieldRefsLength","termIdfCache","fieldLength","termFrequencies","termsLength","fieldBoost","docBoost","scoreWithPrecision","createTokenSet","use","unshift","clonedMetadata","metadataKeys","otherMatchData","allFields","wildcard","NONE","LEADING","TRAILING","OPTIONAL","QueryParseError","QueryLexer","lexemes","escapeCharPositions","lexText","sliceString","subSlices","emit","escapeCharacter","EOS","width","ignore","backup","acceptDigitRun","charCode","more","FIELD","TERM","EDIT_DISTANCE","BOOST","PRESENCE","lexField","lexer","lexTerm","lexEditDistance","lexBoost","lexEOS","termSeparator","currentClause","lexemeIdx","parseClause","peekLexeme","consumeLexeme","lexeme","nextClause","completedClause","parser","parsePresence","parseField","parseTerm","errorMessage","nextLexeme","possibleFields","parseEditDistance","parseBoost","generateSchema","mappedRecords","compiledMap","mappedKeys","sortKey","getSortKey","mapRecord","createSampleRecord","schema","fieldsHas","setField","thisType","mappedRec","revLookup","Arr","inited","encodeChunk","uint8","tmp","fromByteArray","extraBytes","len2","read","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","write","TYPED_ARRAY_SUPPORT","_kMaxLength","kMaxLength","createBuffer","that","__proto__","encodingOrOffset","fromArrayLike","fromArrayBuffer","encoding","isEncoding","actual","internalIsBuffer","checked","fromObject","assertSize","_isBuffer","isView","loweredCase","utf8ToBytes","base64ToBytes","swap","bidirectionalIndexOf","arrayIndexOf","indexSize","valLength","buf","readUInt16BE","foundIndex","found","hexWrite","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","latin1Write","base64Write","ucs2Write","units","utf16leToBytes","base64Slice","base64.fromByteArray","utf8Slice","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","poolSize","_augment","alloc","allocUnsafeSlow","compare","swap16","swap32","swap64","hexSlice","asciiSlice","latin1Slice","utf16leSlice","inspect","thisStart","thisEnd","thisCopy","targetCopy","_arr","out","toHex","checkOffset","ext","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","ieee754.write","writeDouble","newBuf","subarray","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","ieee754.read","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","leadSurrogate","b64","placeHolders","base64.toByteArray","stringtrim","base64clean","dst","isFastBuffer","isSlowBuffer","copyProps","SafeBuffer","SlowBuffer","createNodeErrors","construct","nodeKeyMaker","pathRegxMaker","addToParent","defaultIndex","constructNode","getNodeId","findRoot","constructHierarchy","def","getNewRootLevel","pathMaps","_getNewRecordTemplate","createDefaultIndex","allidsShardFactor","getNewIndexTemplate","getNewRecordTemplate","getNewSingleRecordTemplate","getNewAggregateGroupTemplate","condition","getNewAggregateTemplate","aggregatedValue","fieldErrors","AddFieldValidationFailed","getNewField","fieldRules","allowedTypes","typeOptionsRules","optName","validateField","everySingleField","validateAllFields","addField","recordTemplate","validationMessages","getNewRecordValidationRule","invalidFields","messageWhenInvalid","expressionWhenValid","getStaticValue","commonRecordValidationRules","fieldNotEmpty","fieldBetween","fieldGreaterThan","addRecordValidationRule","createTrigger","actionName","eventName","optionsCreator","createAction","behaviourSource","behaviourName","initialOptions","aggregateRules","validateAggregate","aggregate","sets","commonRules","stringNotEmpty","recordRules","aggregateGroupRules","validateNode","getRuleSet","validateAll","duplicateNameRule","duplicateNodeKeyErrors","aggregateErrors","validateAllAggregates","actionRules","duplicateActionRule","validateAction","validateActions","allActions","duplicateActions","a2","validateTrigger","trigger","triggerRules","validateTriggers","triggers","getApplicationDefinition","appDefinition","loadJson","_saveApplicationHierarchy","validationErrors","updateJson","createFolder","createJson","_saveActionsAndTriggers","actionValidErrs","triggerValidErrs","getTemplateApi","getBehaviourSources","api","_getUsers","_loadAccessLevels","dummyHash","password","_authenticate","allUsers","userAuth","enabled","accessLevels","passwordHash","buildUserPermissions","verified","verify","isUser","tempAccessCode","temporaryAccessId","temporaryAccessHash","temporaryAccessExpiryEpoch","userAccessLevels","allAccessLevels","levels","ua","userName","_createTemporaryAccess","getTemporaryCode","tempId","allusers","u2","userRules","_getNewUser","_getNewUserAuth","_isValidPassword","currentPw","newpassword","_changeMyPassword","existingAuth","doSet","_setPasswordFromTemporaryCode","currentTime","auth","_scorePassword","letters","variations","digits","nonWords","variationCount","check","strengthText","_createUser","userErrors","getAccess","tempAccess","_enableUser","_disableUser","toggleUser","permissionRules","isAllowedType","isRecordOrIndexType","applyPermissionRules","applyLevelRules","allLevels","accessLevelRules","_validateAccessLevels","level","validateAccessLevel","_saveAccessLevels","errs","generateFullPermissions","allNodes","indexNodes","_setUserAccessLevels","actualAccessLevels","missing","userWithFullAccess","hierarchyFunctions","getAuthApi","getPotentialReverseReferenceIndexes","refIndex","getPotentialReferenceIndexes","getDefaultTypeOptions","getNewAction","getNewTrigger","getIndexNodes","getRecordNodes","getIndexSchema","subscriber_queue","stop","subscribers","new_value","run_queue","invalidate","subscriber","setState","pathParts","safeSetPath","currentPartIndex","currentKey","trimSlash","loadRecord","statePath","url","isSuccess","listRecords","indexKey","records","post","body","localStorage","setItem","saveRecord","recordtoSave","getState","savedRecord","getNewChildRecordToState","coreApi","childRecordType","errorHandler","rec","getNewRecordToState","EVENT_TYPE_MEMBER_NAME","eventHandlers","rootPath","parameters","setStateWithStore","currentState","apiCall","notFound","badRequest","forbidden","fetch","headers","Content-Type","credentials","status","json","statusText","patch","del","apiOpts","createApi","fallback","safeGetPath","Set State","Load Record","List Records","Save Record","Get New Child Record","Get New Record","Authenticate","createCoreApp","createCoreApi","_bbuser","handlersObj","handlersArray","defaultDef","required","elementDefinition","propType","isOfType","defaultDefinition","expandSingleProp","propDef","expandPropsDefinition","propsDefinition","expandedProps","isComponent","isEvent","_component","asset","##bbstate","emptyState","normalString","isRootComponent","inherits","hasProp","getExactComponent","allComponents","s1","s2","stringEquals","getInstanceProps","componentInfo","finalProps","fullProps","getComponentInfo","comp","subComponentProps","cname","createProps","rootProps","inheritedProps","targetComponent","unsetProps","rootDefaultProps","rootComponent","componentName","derivedFromProps","propName","parsedPropDef","parsePropDef","createArrayElementProps","arrayPropName","buildPropsHierarchy","baseComponent","buildProps","propComponentInfo","subComponentInstanceProps","propsArray","newPropsArray","baseComponentInfo","rename","pages","oldname","newname","changedComponents","traverseProps","hasEdited","pageName","page","appBody","makeLibraryUrl","appName","lib","encodeURI","makeGeneratorLibraryUrl","appname","location","apps","hasAppPackage","pkg","libraries","appPackage","allLibraries","componentLibraries","libModule","import","loadLibs","generatorLibraries","allGeneratorLibs","generatorModule","loadGeneratorLibs","loadLibraryUrls","libUrl","libName","importPath","loadLibUrls","derivedComponents","generators","generatorsArray","rootComponents","combineComponents","components","shadowHierarchy","createShadowHierarchy","showSettings","show","useAnalytics","showBackend","isBackend","showFrontend","derived","newRecord","useRoot","currentNodeIsNew","selectExistingNode","activeNav","newIndex","saveCurrentNode","existingNode","cloned","currentIndex","savePackage","importAppDefinition","deleteCurrentNode","nodeToDelete","saveField","databaseStore","db","deleteField","saveAction","newAction","oldAction","existingAction","deleteAction","saveTrigger","newTrigger","oldTrigger","existingTrigger","deleteTrigger","incrementAccessLevelsVersion","saveLevel","newLevel","oldLevel","existingLevel","deleteLevel","setActiveNav","navName","saveDerivedComponent","derivedComponent","currentFrontEndItem","currentComponentInfo","currentComponentIsNew","createDerivedComponent","newComponentInfo","parentcomponent","description","tags","getNewComponentInfo","currentFrontEndType","createGeneratedComponents","doCreate","deleteDerivedComponent","renameDerivedComponent","changedComponent","saveAllChanged","savePage","currentPageName","addComponentLibrary","response","componentsArray","removeComponentLibrary","addStylesheet","stylesheets","removeStylesheet","refreshComponents","main","unauthenticated","setCurrentComponent","setCurrentPage","mainUi","unauthenticatedUi","newChildRecord","newRootRecord","newChildIndex","newRootIndex","getStore","setupRouter","pushState","history","$store","factory","modules","installedModules","__webpack_require__","moduleId","getter","__esModule","./dist/icons.json","activity","airplay","alert-circle","alert-octagon","alert-triangle","align-center","align-justify","align-left","align-right","aperture","archive","arrow-down-circle","arrow-down-left","arrow-down-right","arrow-down","arrow-left-circle","arrow-left","arrow-right-circle","arrow-right","arrow-up-circle","arrow-up-left","arrow-up-right","arrow-up","at-sign","award","bar-chart-2","bar-chart","battery-charging","battery","bell-off","bell","bluetooth","bold","book-open","book","bookmark","box","briefcase","calendar","camera-off","camera","cast","check-circle","check-square","chevron-down","chevron-left","chevron-right","chevron-up","chevrons-down","chevrons-left","chevrons-right","chevrons-up","chrome","circle","clipboard","clock","cloud-drizzle","cloud-lightning","cloud-off","cloud-rain","cloud-snow","cloud","codepen","codesandbox","coffee","columns","command","compass","corner-down-left","corner-down-right","corner-left-down","corner-left-up","corner-right-down","corner-right-up","corner-up-left","corner-up-right","cpu","credit-card","crop","crosshair","database","disc","dollar-sign","download-cloud","download","droplet","edit-2","edit-3","edit","external-link","eye-off","eye","facebook","fast-forward","feather","figma","file-minus","file-plus","file-text","film","flag","folder-minus","folder-plus","folder","framer","frown","gift","git-branch","git-commit","git-merge","git-pull-request","github","gitlab","globe","grid","hard-drive","headphones","heart","help-circle","hexagon","home","image","inbox","info","instagram","italic","layers","layout","life-buoy","link-2","link","linkedin","loader","log-in","log-out","mail","map-pin","maximize-2","maximize","meh","menu","message-circle","message-square","mic-off","mic","minimize-2","minus-circle","minus-square","minus","monitor","moon","more-horizontal","more-vertical","mouse-pointer","move","music","navigation-2","navigation","octagon","package","paperclip","pause-circle","pen-tool","percent","phone-call","phone-forwarded","phone-incoming","phone-missed","phone-off","phone-outgoing","phone","pie-chart","play-circle","play","plus-circle","plus-square","plus","pocket","power","printer","radio","refresh-ccw","refresh-cw","rewind","rotate-ccw","rotate-cw","rss","scissors","send","server","share-2","share","shield-off","shield","shopping-bag","shopping-cart","sidebar","skip-back","skip-forward","slack","slash","sliders","smartphone","smile","speaker","square","star","stop-circle","sun","sunrise","sunset","tablet","terminal","thermometer","thumbs-down","thumbs-up","toggle-left","toggle-right","tool","trash-2","trash","trello","trending-down","trending-up","triangle","truck","tv","twitch","twitter","umbrella","underline","unlock","upload-cloud","upload","user-check","user-minus","user-plus","user-x","video-off","video","voicemail","volume-1","volume-2","volume-x","volume","watch","wifi-off","wifi","wind","x-circle","x-octagon","x-square","youtube","zap-off","zap","zoom-in","zoom-out","./node_modules/classnames/dedupe.js","__WEBPACK_AMD_DEFINE_RESULT__","classNames","StorageObject","_parseArray","resultSet","_parse","hasOwn","SPACE","argType","_parseString","_parseObject","_parseNumber","classSet","./node_modules/core-js/es/array/from.js","./node_modules/core-js/internals/a-function.js","./node_modules/core-js/internals/an-object.js","./node_modules/core-js/internals/array-from.js","toObject","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIteratorMethod","arrayLike","argumentsLength","mapfn","iteratorMethod","./node_modules/core-js/internals/array-includes.js","toIndexedObject","toAbsoluteIndex","IS_INCLUDES","$this","el","./node_modules/core-js/internals/bind-context.js","aFunction","./node_modules/core-js/internals/call-with-safe-iteration-closing.js","anObject","ENTRIES","returnMethod","./node_modules/core-js/internals/check-correctness-of-iteration.js","ITERATOR","wellKnownSymbol","SAFE_CLOSING","called","iteratorWithReturn","return","SKIP_CLOSING","ITERATION_SUPPORT","./node_modules/core-js/internals/classof-raw.js","./node_modules/core-js/internals/classof.js","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tryGet","callee","./node_modules/core-js/internals/copy-constructor-properties.js","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","getOwnPropertyDescriptor","./node_modules/core-js/internals/correct-prototype-getter.js","fails","./node_modules/core-js/internals/create-iterator-constructor.js","IteratorPrototype","createPropertyDescriptor","setToStringTag","Iterators","returnThis","IteratorConstructor","NAME","./node_modules/core-js/internals/create-property-descriptor.js","bitmap","./node_modules/core-js/internals/create-property.js","toPrimitive","propertyKey","./node_modules/core-js/internals/define-iterator.js","createIteratorConstructor","setPrototypeOf","hide","redefine","IS_PURE","IteratorsCore","BUGGY_SAFARI_ITERATORS","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","forced","./node_modules/core-js/internals/descriptors.js","./node_modules/core-js/internals/document-create-element.js","exist","./node_modules/core-js/internals/enum-bug-keys.js","./node_modules/core-js/internals/export.js","setGlobal","copyConstructorProperties","isForced","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","sham","./node_modules/core-js/internals/fails.js","./node_modules/core-js/internals/function-to-string.js","shared","./node_modules/core-js/internals/get-iterator-method.js","classof","./node_modules/core-js/internals/global.js","globalThis","./node_modules/core-js/internals/has.js","./node_modules/core-js/internals/hidden-keys.js","./node_modules/core-js/internals/hide.js","DESCRIPTORS","./node_modules/core-js/internals/html.js","documentElement","./node_modules/core-js/internals/ie8-dom-define.js","./node_modules/core-js/internals/indexed-object.js","./node_modules/core-js/internals/internal-state.js","NATIVE_WEAK_MAP","objectHas","sharedKey","hiddenKeys","wmget","wmhas","wmset","STATE","enforce","getterFor","TYPE","./node_modules/core-js/internals/is-array-iterator-method.js","ArrayPrototype","./node_modules/core-js/internals/is-forced.js","replacement","feature","detection","normalize","POLYFILL","NATIVE","./node_modules/core-js/internals/is-object.js","./node_modules/core-js/internals/is-pure.js","./node_modules/core-js/internals/iterators-core.js","PrototypeOfArrayIteratorPrototype","arrayIterator","./node_modules/core-js/internals/iterators.js","./node_modules/core-js/internals/native-symbol.js","./node_modules/core-js/internals/native-weak-map.js","nativeFunctionToString","./node_modules/core-js/internals/object-create.js","defineProperties","enumBugKeys","documentCreateElement","Empty","createDict","iframeDocument","iframe","display","contentWindow","open","close","Properties","./node_modules/core-js/internals/object-define-properties.js","objectKeys","./node_modules/core-js/internals/object-define-property.js","IE8_DOM_DEFINE","nativeDefineProperty","Attributes","./node_modules/core-js/internals/object-get-own-property-descriptor.js","propertyIsEnumerableModule","nativeGetOwnPropertyDescriptor","./node_modules/core-js/internals/object-get-own-property-names.js","internalObjectKeys","getOwnPropertyNames","./node_modules/core-js/internals/object-get-own-property-symbols.js","./node_modules/core-js/internals/object-get-prototype-of.js","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","./node_modules/core-js/internals/object-keys-internal.js","names","./node_modules/core-js/internals/object-keys.js","./node_modules/core-js/internals/object-property-is-enumerable.js","nativePropertyIsEnumerable","NASHORN_BUG","./node_modules/core-js/internals/object-set-prototype-of.js","validateSetPrototypeOfArguments","correctSetter","./node_modules/core-js/internals/own-keys.js","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","Reflect","./node_modules/core-js/internals/path.js","./node_modules/core-js/internals/redefine.js","InternalStateModule","getInternalState","enforceInternalState","TEMPLATE","unsafe","simple","./node_modules/core-js/internals/require-object-coercible.js","./node_modules/core-js/internals/set-global.js","./node_modules/core-js/internals/set-to-string-tag.js","TAG","./node_modules/core-js/internals/shared-key.js","./node_modules/core-js/internals/shared.js","copyright","./node_modules/core-js/internals/string-at.js","requireObjectCoercible","CONVERT_TO_STRING","second","./node_modules/core-js/internals/to-absolute-index.js","integer","./node_modules/core-js/internals/to-indexed-object.js","IndexedObject","./node_modules/core-js/internals/to-integer.js","argument","./node_modules/core-js/internals/to-length.js","./node_modules/core-js/internals/to-object.js","./node_modules/core-js/internals/to-primitive.js","./node_modules/core-js/internals/uid.js","postfix","./node_modules/core-js/internals/validate-set-prototype-of-arguments.js","./node_modules/core-js/internals/well-known-symbol.js","NATIVE_SYMBOL","./node_modules/core-js/modules/es.array.from.js","checkCorrectnessOfIteration","./node_modules/core-js/modules/es.string.iterator.js","codePointAt","defineIterator","setInternalState","iterated","point","./node_modules/webpack/buildin/global.js","eval","./src/default-attrs.json","xmlns","height","viewBox","stroke","stroke-width","stroke-linecap","stroke-linejoin","./src/icon.js","_extends","_createClass","Constructor","protoProps","staticProps","_dedupe2","_interopRequireDefault","_defaultAttrs2","Icon","contents","_classCallCheck","class","attrsToString","./src/icons.js","_icon2","_icons2","_tags2","icon","./src/index.js","_toSvg2","_replace2","icons","toSvg","./src/replace.js","elementsToReplace","querySelectorAll","elementAttrs","getAttrs","svgString","svgElement","DOMParser","parseFromString","querySelector","replaceChild","replaceElement","./src/tags.json","life-bouy","./src/to-svg.js","_icons","0","getIcon","hoverColor","currentAttributes","_attributes","subComponents","isExpanded","isInSubfolder","click_handler","title","isComponentSelected","click_handler_1","subfolders","componentsThisLevel","pathPartsThisLevel","thisLevel","expandedFolders","joinPath","normalizedName","isOnThisLevel","notOnThisLevel","subfolder","lastPartOfName","subFolder","folderName","expandFolder","expandedFolder","newFolders","f1","f2","infoText","disabled","hasError","margin","textMember","valueMember","multiple","selected_option","mozNow","msNow","oNow","webkitNow","isBinding","setBinding","getBinding","makeError","expandPropDef","validateProps","isFinal","isArrayElement","propDefName","propValue","arrayItem","arrayErrs","arrErr","splitName","fullname","generator","allowGenerators","click_handler_2","onComponentChosen","onGeneratorChosen","addRootComponent","isGenerator","newComponentLibraries","newDerivedComponents","objPrototype","hyphenateCache","hyphenateRe","hyphenate","camelizeRe","camelize","ucfirst","strPrototype","startsWithFn","endsWithFn","arrPrototype","includesFn","includesStr","includesArray","findIndexFn","arguments$1","isWindow","isDocument","isJQuery","jquery","Node","isNodeCollection","isNumeric","toBoolean","toFloat","toNode","toNodes","Boolean","toList","toMs","ref$1","propA","propB","uniqueBy","intersectRect","r1","r2","left","right","top","bottom","pointInRect","rect","Dimensions","ratio","dimensions","aProp","contain","maxDimensions","this$1","cover","getAttribute","removeAttr","hasAttr","hasAttribute","isIE","navigator","userAgent","isRtl","hasTouchEvents","hasPointerEvents","PointerEvent","hasTouch","DocumentTouch","maxTouchPoints","pointerDown","pointerMove","pointerUp","pointerEnter","pointerLeave","pointerCancel","selector","queryAll","nodes","findAll","isContextSelector","ownerDocument","_query","queryFn","removes","contextSanitizeRe","selectorRe","splitSelector","selectors","closest","selectors$1","prev","previousElementSibling","contextSelectorRe","elProto","Element","matchesFn","webkitMatchesSelector","msMatchesSelector","closestFn","parents","escapeFn","CSS","voidElements","base","col","embed","img","keygen","menuitem","meta","param","track","wbr","isVoidElement","tagName","isVisible","offsetWidth","offsetHeight","getClientRects","selInput","isInput","within","getArgs","targets","listener","useCapture","toEventTargets","delegates","delegate","currentTarget","selfFilter","useCaptureFilter","off","notCanceled","bubbles","cancelable","capture","isEventTarget","toEventTarget","isTouch","pointerType","touches","getEventPos","changedTouches","PromiseFn","Deferred","PENDING","setImmediate","executor","deferred","race","ajax","env","xhr","XMLHttpRequest","beforeSend","responseType","header","setRequestHeader","getImage","srcset","sizes","Image","onerror","onload","readyState","unbind","getIndex","finite","hasChildNodes","insertNodes","nextSibling","wrapAll","structure","firstChild","wrapInner","unwrap","notify","reason","onResolved","onRejected","catch","fragmentRe","singleTagRe","container","insertAdjacentHTML","textContent","firstElementChild","nextElementSibling","isHtml","addClass","apply$1","removeClass","removeClasses","cls","replaceClass","hasClass","toggleClass","force","getArgs$1","supports","Force","Multiple","_multiple","_force","cssNumber","animation-iteration-count","column-count","fill-opacity","flex-grow","flex-shrink","font-weight","line-height","opacity","orphans","stroke-dasharray","stroke-dashoffset","widows","z-index","zoom","getStyle","removeProperty","styles","getStyles","pseudoElt","defaultView","getComputedStyle","vars","getCssVar","docEl","getPropertyValue","cssProps","prefixedName","cssPrefixes","vendorPropName","transition","timing","timer","transition-property","transition-duration","transition-timing-function","Transition","inProgress","animationPrefix","clsCancelAnimation","animate","origin","hasReset","Animation","in","dirs","positionAt","elAttach","targetAttach","elOffset","targetOffset","boundary","getPos","flipped","dim","getDimensions","targetDim","moveTo","getOffsets","boundaries","getWindow","align","alignFlip","elemOffset","centerOffset","centerTargetOffset","newVal","coordinates","currentOffset","hidden","pageYOffset","pageXOffset","innerHeight","innerWidth","getBoundingClientRect","offsetParent","getDocument","getDocEl","parentOffset","dimension","boxModelAdjust","sizing","attach","factor","offsets","flipPosition","isInView","topOffset","leftOffset","win","client","bounding","scrolledOver","heightOffset","elHeight","offsetPosition","vp","vh","diff","scrollTop","scrollTo","offsetTop","offsetLeft","toPx","fastdom","reads","writes","scheduleFlush","remove$1","runTasks","scheduled","microtask","MouseTracker","slope","positions","ticking","pageX","pageY","movesTo","prevPos","points","strats","mergeFnData","parentVal","childVal","vm","concatStrat","mergeOptions","extends","mixins","mergeKey","key$1","parseOptions","created","beforeConnect","connected","beforeDisconnect","disconnected","destroy","Player","cmd","postMessage","isVideo","isYoutube","isVimeo","isHTML5","isIFrame","enableApi","poller","vimeo","setInterval","player_id","clearInterval","mute","muted","IntersectionObserver","IntersectionObserverClass","rootMargin","pending","takeRecords","passive","inView","isIntersecting","observe","disconnect","getComponentName","UIkit","_init","freeze","prepend","DATA","_connected","_callUpdate","plugin","installed","Sub","globalAPI","_callHook","hook","handlers","$options","_callConnected","_data","_computeds","_initProps","_initEvents","_initObserver","_callDisconnected","_observer","_unbindEvents","_callWatches","updates","_frames","hooksAPI","getProps","data$1","coerce","prop$1","registerComputed","$props","$el","registerEvent","notIn","normalizeData","_uid","_initData","_initMethods","_initComputeds","$mount","$name","exclude","MutationObserver","$reset","attributeFilter","stateAPI","argsArray","functional","getComponent","opt","install","_initialized","getComponents","connect","name$1","componentAPI","$emit","removeEl","$create","$update","$getComponent","$container","instanceAPI","Class","Togglable","queued","initProps","overflow","paddingTop","paddingBottom","marginTop","marginBottom","hideProps","hasAnimation","hasTransition","toggleElement","_toggleElement","toggled","isToggled","untoggled","scroll","toggleNow","updateAria","_toggle","inner","lastElementChild","currentHeight","endHeight","toggleAnimation","focus","blur","Accordion","collapsible","clsOpen","items","preventDefault","isItem","_wrapper","Alert","selClose","Core","x1","y1","x2","y2","Video","automute","autoplay","preload","player","visible","Cover","naturalWidth","videoWidth","clientWidth","naturalHeight","videoHeight","clientHeight","Position","clsPos","offset$1","axis","getAxis","Drop","boundaryAlign","delayShow","delayHide","clsDrop","hoverIdle","tracker","defaultPrevented","clearTimers","delayOn","isActive","tryShow","isDelaying","showTimer","isParentOf","hideTimer","isChildOf","alignTo","Dropdown","FormCustom","files","Gif","inview","Margin","firstColumn","rows","getRows","stacks","row","getOffset","leftDim","Grid","masonry","parallax","clsStack","transitionInProgress","translates","maxColumnHeight","padding","getPaddingBottom","height$1","scrolled","distance","column","maxScrolled","FlexBug","selMinHeight","forceHeight","HeightMatch","heights","getHeights","hasMinHeight","minHeight","hasShrunk","toFixed","HeightViewport","expand","offsetBottom","dataset","heightExpand","Svg","strokeAnimation","focusable","include","svg","getSvg","applyAttributes","svgEl","insertSVG","getMaxPathLength","svgs","decodeURIComponent","symbols","symbolRe","parseSymbols","parseSVG","getTotalLength","spinner","totop","marker","close-icon","close-large","navbar-toggle-icon","overlay-icon","pagination-next","pagination-previous","search-icon","search-large","search-navbar","slidenav-next","slidenav-next-large","slidenav-previous","slidenav-previous-large","added","cmp","isIcon","cloneNode","applyRtl","IconComponent","Slidenav","Search","Close","Spinner","Img","dataSrc","dataSrcset","cacheKey","dataWidth","dataHeight","dataSizes","isImg","storage","setSrcAttrs","sizesToPixel","observer","currentSrc","devicePixelRatio","bgSize","srcSize","descriptors","srcSetRe","change","backgroundImage","sizesRe","matchMedia","sizeRe","additionRe","sessionStorage","Media","media","toMedia","Leader","clsWrapper","clsHide","attrFill","Container","active$1","Modal","selPanel","escClose","bgClose","overlay","panel","transitionElement","modal","clsPage","keyCode","animate$1","_reject","Modal$1","dialog","alert","confirm","resolved","prompt","ok","Nav","Navbar","dropdown","dropbar","dropbarMode","dropbarAnchor","dropdowns","getDropdown","getActive","transitionTo","newHeight","oldHeight","clip","Offcanvas","clsContainer","clsFlip","clsContainerAnimation","clsSidebarAnimation","clsMode","clsOverlay","targetTouches","clientY","scrollHeight","getViewport","viewport","OverflowAuto","selContainer","selContent","Responsive","Scroll","docHeight","winHeight","startY","currentY","cos","PI","click","Scrollspy","inViewClass","_ukScrollspyState","ScrollspyNav","links","Sticky","clsActive","clsInactive","clsFixed","clsBelow","selTarget","widthElement","showOnUp","isFixed","elTop","bottomOffset","parseProp","inactive","lastScroll","margins","initTimestamp","lastDir","initScroll","propOffset","Switcher","swiping","attrItem","connects","toggles","hasPrev","Tab","Toggle","href","core","Countdown","days","hours","minutes","unit","total","timespan","digit","targetClass","Animate","propsFrom","oldScrollY","propsTo","getPositionWithMargin","zIndex","pointerEvents","Filter","selActive","updateState","old","listA","listB","actives","mergeState","stateFilter","ref_sort","stateSort","stateOrder","getFilter","matchFilter","getSelector","sorted","localeCompare","numeric","sortItems","filterBy","Animations","slide","translate","translated","scale3d","Animations$1","fade","scale","triggerUpdate","SliderAutoplay","autoplayInterval","pauseOnHover","startAutoplay","stopAutoplay","slides","interval","draggable","SliderDrag","threshold","selSlides","button","drag","_transitioner","getDistance","dragging","prevIndex","unbindMove","dis","nextIndex","_getDistance","itemShown","_translate","_show","dirChange","userSelect","Slider","selNav","nav","selNavItem","navItems","maxIndex","updateNav","getValidIndex","clsActivated","velocity","Transitioner","transitionOptions","speedUp","selList","itemshown","queueIndex","forward","getDirection","_getTransitioner","transitioner","Slideshow","linear","itemshow itemhide itemshown itemhidden","beforeitemshow","itemhidden","lightboxPanel","delayControls","videoAutoplay","selCaption","caption","showControls","hideControls","getItem","loadItem","alt","setError","poster","setIframe","getIframe","withCredentials","ref_response","controlsTimer","Lightbox","toItem","containers","Notification","clsClose","clsMsg","notification","closeAll","immediate","marginProp","startProps","removeFn","Parallax","bgPos","isColor","isCssProp","steps","getUnit","covers","down","bgProps","bg","backgroundSize","_image","dimEl","dimImage","span","posPercentage","backgroundRepeat","getCss","getStep","Parallax$1","getOffsetElement","ease$1","SliderReactive","getLeft","center","getElLeft","bounds","centerEl","getMax","getWidth","triggerUpdate$1","Slider$1","updateTranslates","getItemIn","getActives","slideLeft","avgWidth","leftCenter","slideWidth","slideRight","itemshow","slideIndex","SlideshowParallax","selItem","ref_detail","getCurrent","isIn","trackTimer","obj$1","Animations$2","Slideshow$1","maxHeight","Sortable","clsItem","clsPlaceholder","clsDrag","clsDragState","clsBase","clsNoDrag","clsEmpty","clsCustom","handle","scrollY","touchAction","trackScroll","scrollEl","elementFromPoint","getScrollingElement","parentElement","parents$1","overflowRe","touched","outerHTML","boxSizing","sortable","getSortable","classes","isPredecessor","scrollingElement","Tooltip","_hasTitle","aria-expanded","_unbind","tooltip","Upload","allow","clsDragover","concurrent","maxSize","mime","msgInvalidMime","msgInvalidName","msgInvalidSize","beforeAll","completeAll","fail","loadEnd","loadStart","progress","transfer","dataTransfer","dragenter","dragover","dragleave","match$1","chunks","FormData","mutations","applyMutation","childList","subtree","characterData","mutation","addedNodes","removedNodes","i$1","applyChildList","attributeName","applyAttribute","boot","componentChosen","hideDialog","confirmClearComponent","componentSelected","shortName","modalAction","CHOOSE_COMPONENT","CLEAR_COMPONENT","emptyProps","modalElement","onValueChanged","onEdit","chooseComponent","showDialog","clearComponent","setProp","fieldHasError","onEditComponent","____name","elementDefinitionArray","addElement","parentProps","onValidate","onEditComponentProp","elementErrors","elArray","elProp","newElement","newProps","elementProps","makeBinding","bindingPath","canOnlyBind","clearBinding","bindingFallbackValue","setBindingPath","setBindingFallback","setBindingSource","bindingSource","isBound","onChanged","forceIsBound","ev","onParameterChanged","onRemoved","eventTypeChanged","eventType","eventChanged","paramsAsObject","eType","emptyParameters","newparameters","onEventHandlerChanged","removeHandler","addHandler","newHandler","oldEvent","newEvent","newEvents","setComponentProp","inheritedExpanded","inheritedPropsDefinitions","propsDefinitions","shouldValidate","instanceProps","onPropsChanged","isInstance","isPropInherited","nowSet","arrayIndex","cubicOut","padding_top","padding_bottom","margin_top","margin_bottom","border_top_width","borderTopWidth","border_bottom_width","borderBottomWidth","propsChanged","onSubComponentPropsChanged","onSubComponentGoBack","editingSubComponentProps","editingSubComponentTitle","onGoBack","editingSubComponentName","editingSubComponentArrayIndex","editingSubComponentArrayPropName","subProps","componentDetailsExpanded","onPropsValidate","componentInstanceCancelEdit","editingComponentInstanceTitle","editingComponentInstance","componentInstancePropsChanged","nameInvalid","tagsString","confirmDeleteComponent","deleteComponent","editingComponentArrayIndex","editingComponentArrayPropName","propsValidationErrors","editingComponentInstancePropName","originalName","ignoreStore","updateComponent","doChange","newComponent","ukModal","isOpen","onClosed","listenerAdded","libraryDependencies","componentDependsOnLibrary","componentDependencies","dependsOn","dependantComponents","dependantPages","dependants","onSelectedChanged","onNameChanged","libs","existingComponents","_generator","generateParameter","allGeneratedComponents","onConfirmGenerate","selectedComponents","indexSchema","componentExists","componentsWithDependencies","sp","newselectedComponents","componentSelectorModal","generatorOptionsModal","stylesheetLinks","hasComponent","appRootPath","addLib","addNewLib","addNewStylesheet","removeLibrary","entryComponent","notSeletedComponent","newComponentPicker","settingsView","navActive","onclick","iconName","isDroppedDown","setActive","newChildActions","defaultNewChildActions","inputChanged","valuesText","hasErrors","__assign","HOOKS","_disable","_enable","allowInput","altFormat","altInput","altInputClass","ariaDateFormat","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enable","enableSeconds","enableTime","getWeek","givenDate","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","monthSelectorType","nextArrow","noCalendar","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","positionElement","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","hourAriaLabel","minuteAriaLabel","int","arrayify","elem","clearNode","createNumberInput","inputClassName","numInput","arrowUp","arrowDown","doNothing","monthToStr","monthNumber","revFormat","dateObj","monthName","setMonth","hour","day","getHours","shortMonth","setSeconds","unixSeconds","weekNum","weekNumber","year","setFullYear","ISODate","setMinutes","month","unixMillSeconds","tokenRegex","formats","toISOString","getMonth","getSeconds","getMinutes","createDateFormatter","_a","_c","l10n","frmt","overrideLocale","formatDate","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","datestr","parseDate","matched","ops","matchIndex","regexStr","token_1","isBackSlash","escaped","compareDates","date1","date2","isBetween","ts","ts1","ts2","DAY","_loop_1","args_1","DEBOUNCED_CHANGE_MS","FlatpickrInstance","instanceConfig","flatpickr","defaultConfig","bindToInstance","setCalendarWidth","calendarContainer","visibility","daysContainer","daysWidth","weekWrapper","updateTime","selectedDates","setDefaultTime","isKeyDown","curValue","delta","which","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","secondElement","limitMinHours","minTime","minDate","minDateHasTime","latestSelectedDateObj","limitMaxHours","maxTime","maxDate","maxDateHasTime","setHoursFromDate","setDefaultHours","minHr","minMinutes","maxHr","maxMinutes","isMobile","onYearInput","changeYear","_handlers","onClick","evt","triggerChange","triggerEvent","bindEvents","inputType","mobileInput","tabIndex","mobileFormatStr","setupMobile","debouncedResize","onResize","onMouseOver","ontouchstart","documentClick","monthNav","onMonthNavClick","selectDate","timeContainer","timeIncrement","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","buildMonthSwitch","redraw","inputElem","createDocumentFragment","yearElements","monthElements","prevMonthNav","nextMonthNav","buildMonths","__hidePrevMonthArrow","__hideNextMonthArrow","currentYearElement","updateNavigationCurrentMonth","innerContainer","buildWeeks","rContainer","buildWeekdays","buildDays","hourInput","aria-label","getElementsByTagName","minuteInput","military2ampm","secondInput","buildTime","customAppend","appendTo","createDay","dayNumber","dateIsEnabled","isEnabled","dayElement","todayDateElem","isDateSelected","selectedDateElem","isDateInRange","focusOnDayElem","targetNode","getFirstAvailableDay","startMonth","endMonth","startIndex","endIndex","focusOnDay","dayFocused","activeElement","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","getDaysInMonth","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayIndex","dayNum","dayContainer","frag","shouldBuildMonth","monthsDropdownContainer","buildMonth","monthElement","monthNavFragment","selectedMonth","yearInput","tabindex","yearElement","weekdayContainer","updateWeekdays","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","isCalendarElem","eventTarget_1","composedPath","getEventTarget","isCalendarElement","lostFocus","relatedTarget","isIgnored","newYear","newYearNum","isNewYear","dateToCheck","allowKeydown","allowInlineKeydown","isTimeObj","focusAndClose","delta_1","ctrlKey","elems","pluginElements","shiftKey","hoverDate","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","dayElem","timestamp","outOfRange","positionCalendar","minMaxDateSetter","inverseDateObj","setupLocale","l10ns","userConfig","customPositionElement","_positionElement","calendarHeight","acc","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","distanceFromBottom","showOnTop","rightMost","centerMost","styleSheets","bodyWidth","centerLeft","centerIndex","centerStyle","centerBefore","msMaxTouchPoints","findParent","selectedDate","shouldChangeMonth","selectedIndex","showTimeInput","single","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","_initialDate","_createElement","lastChild","_type","wasOpen","CALLBACKS","setSelectedDate","inputDate","dates","parseDateRules","hooks","initEvent","getDateStr","dObj","isPrevMonth","isNextMonth","boolOpts","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","pluginConf","parseConfig","nodeName","preloadedDate","defaultDate","_showTimeInput","setupDates","isSafari","_flatpickr","nodeList","instances","HTMLCollection","NodeList","localize","setDefaults","jQuery","fp_incr","fpInstance","clonedField","possibleReferenceIndexes","func_1","possibleReverseReferenceIndexes","func_2","func_3","typeChanged","onFinished","selectedReverseRefIndex","getTypeOptions","editingField","fieldToEdit","onFinishedFieldEdit","getIndexAllowedRecords","nameChanged","newField","editField","editIndex","MIN_SAFE_INTEGER","getTypeOptionsValueText","pluralName","isallowed","change_handler","indexableRecords","toggleAllowedRecord","openConfirmDelete","confirmDelete","hierarchyWidth","defaultNewIndexActions","defaultNewRecordActions","newIndexActions","newRecordActions","clonedAction","addNewOption","optKey","optValue","removeOption","newActionsList","actionsArray","getDefaultOptionsHtml","editingAction","actionEditingFinished","editingActionIsNew","isEditing","onActionEdit","onActionDelete","onActionSave","onActionCancel","defaultOptions","clonedTrigger","actionNames","allTriggers","newTriggersList","editingTrigger","triggerEditingFinished","editingTriggerIsNew","onTriggerEdit","onTriggerDelete","onTriggerSave","onTriggerCancel","getPermissionName","hasPermission","permissionChanged","clonedLevel","permissionMatrix","allPermissions","matchPermissions","p1","p2","hasPerm","perm","newLevels","createNewLevel","getPermissionsString","editingLevel","onEditingFinished","editingLevelIsNew","onLevelEdit","onLevelDelete","perms","navWidth","child_ctx","blocks","mount","et","ut","Tt","Ct","Nt","Dt","Pt","Zt","Xe","sr","ar","cr","getElementById"],"mappings":"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KAAKC,IAAO,KAAKC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IACnfC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IACvfC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IACvfC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAAS,IAAIC,IAA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"} |