react-input-emoji 4.2.0 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.es.js +37126 -46584
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +37127 -46584
- package/dist/index.js.map +1 -1
- package/package.json +5 -3
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/utils/emoji-utils.js","../src/utils/input-event-utils.js","../src/hooks/use-sanitize.js","../src/hooks/use-expose.js","../src/hooks/use-emit.js","../src/text-input.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/emoji-mart/dist-es/utils/data.js","../node_modules/emoji-mart/dist-es/polyfills/stringFromCodePoint.js","../node_modules/emoji-mart/dist-es/utils/index.js","../node_modules/emoji-mart/dist-es/utils/store.js","../node_modules/emoji-mart/dist-es/utils/emoji-index/nimble-emoji-index.js","../node_modules/emoji-mart/dist-es/utils/emoji-index/emoji-index.js","../node_modules/emoji-mart/dist-es/utils/frequently.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/emoji-mart/dist-es/svgs/index.js","../node_modules/emoji-mart/dist-es/utils/shared-props.js","../node_modules/emoji-mart/dist-es/components/anchors.js","../node_modules/emoji-mart/dist-es/utils/shared-default-props.js","../node_modules/emoji-mart/dist-es/components/emoji/nimble-emoji.js","../node_modules/emoji-mart/dist-es/components/not-found.js","../node_modules/emoji-mart/dist-es/components/category.js","../node_modules/emoji-mart/dist-es/components/skins.js","../node_modules/emoji-mart/dist-es/components/skins-emoji.js","../node_modules/emoji-mart/dist-es/components/skins-dot.js","../node_modules/emoji-mart/dist-es/components/preview.js","../node_modules/emoji-mart/dist-es/components/search.js","../node_modules/emoji-mart/dist-es/components/picker/nimble-picker.js","../node_modules/emoji-mart/dist-es/components/picker/picker.js","../node_modules/emoji-mart/dist-es/components/emoji/emoji.js","../src/components/emoji-picker.js","../src/components/emoji-picker-wrapper.js","../src/utils/mention-utils.js","../src/hooks/use-mention.js","../src/components/mention-user-list.js","../src/components/mention-wrapper.js","../src/utils/observer.js","../src/hooks/use-event-listeners.js","../src/hooks/user-pollute.js","../src/index.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","// @ts-check\n\nexport const TRANSPARENT_GIF =\n \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";\n\n/**\n * Replace all text with emoji with an image html tag\n * @param {string} text\n * @return {string}\n */\nexport function replaceAllTextEmojis(text) {\n let allEmojis = getAllEmojisFromText(text);\n\n // TODO: get all emoji style\n const allEmojiStyle = {};\n\n if (allEmojis) {\n allEmojis = [...new Set(allEmojis)]; // remove duplicates\n\n allEmojis.forEach(emoji => {\n const style = allEmojiStyle[emoji];\n\n if (!style) return;\n\n text = replaceAll(\n text,\n emoji,\n `<img\n style=\"${style}\"\n data-emoji=\"${emoji}\"\n src=\"${TRANSPARENT_GIF}\"\n />`\n );\n });\n }\n\n return text;\n}\n\n/**\n * Replace all occurrencies in a string\n * @param {string} str\n * @param {string} find\n * @param {string} replace\n * @return {string}\n */\nfunction replaceAll(str, find, replace) {\n return str.replace(new RegExp(find, \"g\"), replace);\n}\n\n/**\n * Get all emojis from the text\n * @param {string} text\n * @return {string[]}\n */\nfunction getAllEmojisFromText(text) {\n return text.match(\n /(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*/g\n );\n}\n\n// /**\n// * Get all emoji stlye from emoji mart\n// * @return {Object.<string, string>}\n// */\n// function getAllEmojiStyle() {\n// /** @type {NodeListOf<Element>} */\n// const allEmojiButton = Array.prototype.slice.call(\n// document.querySelectorAll(\".emoji-mart-category-list > li > button\")\n// );\n\n// /** @type {Object.<string, string>} */\n// const allEmojiStyle = {};\n\n// allEmojiButton.forEach(emojiButton => {\n// const label = emojiButton.getAttribute(\"aria-label\");\n// const [emoji] = label.split(\",\");\n\n// const emojiSpanEl = emojiButton.querySelector(\"span\");\n\n// const style = replaceAll(emojiSpanEl.style.cssText, '\"', \"'\");\n\n// allEmojiStyle[emoji] = style;\n// });\n\n// return allEmojiStyle;\n// }\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * @param { import(\"../types/types\").EmojiMartItem } emoji\n * @return {string}\n */\nexport function getImageEmoji(emoji) {\n let shortNames = `${emoji.short_names}`;\n\n shortNames = replaceAll(shortNames, \",\", \", \");\n\n /** @type {HTMLSpanElement} */\n const emojiSpanEl =\n document.querySelector(\n `[aria-label=\"${emoji.native}, ${shortNames}\"] > span`\n ) || document.querySelector(`[aria-label=\"${emoji.id}\"] > span`);\n\n if (!emojiSpanEl) return \"\";\n\n const style = replaceAll(emojiSpanEl.style.cssText, '\"', \"'\");\n\n let dataEmoji = emoji.native;\n\n if (!dataEmoji && emoji.emoticons && emoji.emoticons.length > 0) {\n dataEmoji = emoji.emoticons[0];\n }\n\n return `<img style=\"${style}\" data-emoji=\"${dataEmoji}\" src=\"${TRANSPARENT_GIF}\" />`;\n}\n\n/**\n *\n * @param {string} html\n * @return {string}\n */\nexport function replaceAllTextEmojiToString(html) {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const images = Array.prototype.slice.call(container.querySelectorAll(\"img\"));\n\n images.forEach(image => {\n container.innerHTML = container.innerHTML.replace(\n image.outerHTML,\n image.dataset.emoji\n );\n });\n\n return container.innerHTML;\n}\n","// @ts-check\n\nimport {\n getImageEmoji,\n replaceAllTextEmojis,\n replaceAllTextEmojiToString\n} from \"./emoji-utils\";\n\n/**\n * Handle copy of current selected text\n * @param {React.ClipboardEvent} event\n */\nexport function handleCopy(event) {\n const selectedText = window.getSelection();\n\n if (selectedText === null) {\n return\n }\n\n let container = document.createElement(\"div\");\n\n for (let i = 0, len = selectedText.rangeCount; i < len; ++i) {\n container.appendChild(selectedText.getRangeAt(i).cloneContents());\n }\n\n container = replaceEmojiToString(container);\n\n event.clipboardData.setData(\"text\", container.innerText);\n event.preventDefault();\n}\n\n/**\n *\n * @param {string} html\n */\nexport function handlePasteHtmlAtCaret(html) {\n let sel;\n let range;\n if (window.getSelection) {\n // IE9 and non-IE\n sel = window.getSelection();\n\n if (sel === null) return\n\n if (sel.getRangeAt && sel.rangeCount) {\n range = sel.getRangeAt(0);\n range.deleteContents();\n\n // Range.createContextualFragment() would be useful here but is\n // non-standard and not supported in all browsers (IE9, for one)\n const el = document.createElement(\"div\");\n el.innerHTML = html;\n const frag = document.createDocumentFragment();\n let node;\n let lastNode;\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n }\n}\n\n/**\n * Replace emoji img to its string value\n * @param {HTMLDivElement} container\n * @return {HTMLDivElement}\n */\nfunction replaceEmojiToString(container) {\n const images = Array.prototype.slice.call(container.querySelectorAll(\"img\"));\n\n images.forEach(image => {\n image.outerHTML = image.dataset.emoji;\n });\n\n return container;\n}\n\n/**\n * Handle past on input\n * @param {React.ClipboardEvent} event\n */\nexport function handlePaste(event) {\n event.preventDefault();\n let content;\n if (event.clipboardData) {\n content = event.clipboardData.getData(\"text/plain\");\n content = replaceAllTextEmojis(content);\n document.execCommand(\"insertHTML\", false, content);\n }\n}\n\n/**\n * @typedef {object} HandleKeyDownOptions\n * @property {HTMLDivElement} placeholderEl\n * @property {number} maxLength\n * @property {HTMLDivElement} inputEl\n * @property {React.MutableRefObject<string>} cleanedTextRef\n * @property {React.MutableRefObject<HTMLDivElement>} textInputRef\n * @property {boolean} cleanOnEnter\n * @property {function(): void} emitChange\n * @property {(function(string): void)=} onEnter\n * @property {(function(KeyboardEvent): void)=} onKeyDown\n * @property {(function(string): void)} updateHTML\n */\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @typedef {Object} HandleSelectEmojiProps\n * @property {import(\"../types/types\").EmojiMartItem} emoji\n * @property {React.MutableRefObject<import('../text-input').Ref>} textInputRef\n * @property {boolean} keepOpened\n * @property {() => void} toggleShowPicker\n * @property {number=} maxLength\n */\n\n/**\n *\n * @param {HandleSelectEmojiProps} props\n */\nexport function handleSelectEmoji({\n emoji,\n textInputRef,\n keepOpened,\n toggleShowPicker,\n maxLength\n}) {\n if (\n typeof maxLength !== \"undefined\" &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n return;\n }\n\n textInputRef.current.appendContent(getImageEmoji(emoji));\n\n if (!keepOpened) {\n toggleShowPicker();\n }\n}\n\n/**\n *\n * @param {{text: string, html: string}} props\n * @return {number}\n */\nexport function totalCharacters({ text, html }) {\n const textCount = text.length;\n const emojisCount = (html.match(/<img/g) || []).length;\n\n return textCount + emojisCount;\n}\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * Handle keyup event\n * @param {() => void} emitChange\n * @param {(event: KeyboardEvent) => void} onKeyDownMention\n * @param {React.MutableRefObject<string>} cleanedTextRef\n * @param {React.MutableRefObject<HTMLDivElement>} textInputRef\n * @return {(event: KeyboardEvent) => void}\n */\nexport function handleKeyup(\n emitChange,\n onKeyDownMention,\n cleanedTextRef,\n textInputRef\n) {\n return event => {\n const text = replaceAllTextEmojiToString(textInputRef.current.innerHTML);\n cleanedTextRef.current = text;\n emitChange();\n onKeyDownMention(event);\n };\n}\n\n/**\n * Handle focus event\n * @param {function(FocusEvent): void} onFocus\n * @return {function(FocusEvent): void}\n */\nexport function handleFocus(onFocus) {\n return event => {\n onFocus(event);\n };\n}\n","// @ts-check\n\nimport { useCallback, useRef } from \"react\";\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function useSanitize() {\n /** @type {React.MutableRefObject<SanitizeFn[]>} */\n const sanitizeFnsRef = useRef([]);\n\n const sanitizedTextRef = useRef(\"\");\n\n /** @type {(fn: SanitizeFn) => void} */\n const addSanitizeFn = useCallback(fn => {\n sanitizeFnsRef.current.push(fn);\n }, []);\n\n /** @type {(html: string) => string} */\n const sanitize = useCallback(html => {\n let result = sanitizeFnsRef.current.reduce((acc, fn) => {\n return fn(acc);\n }, html);\n\n result = replaceAllHtmlToString(result);\n\n sanitizedTextRef.current = result;\n\n return result;\n }, []);\n\n return { addSanitizeFn, sanitize, sanitizedTextRef };\n}\n\n/**\n *\n * @param {string} html\n * @return {string}\n */\nexport function replaceAllHtmlToString(html) {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n let text = container.innerText || \"\";\n\n // remove all ↵ for safari\n text = text.replace(/\\n/gi, \"\");\n\n return text;\n}\n","// @ts-check\n\nimport { useImperativeHandle } from \"react\";\nimport { useSanitize } from \"./use-sanitize\";\n\n/**\n * @typedef {Object} Props\n * @property {React.Ref<any>} ref\n * @property {React.MutableRefObject<import('../text-input').Ref | null>} textInputRef\n * @property {(value: string) => void} setValue\n * @property {() => void} emitChange\n */\n\n/**\n *\n * @param {Props} props\n */\nexport function useExpose({ ref, textInputRef, setValue, emitChange }) {\n const { sanitize, sanitizedTextRef } = useSanitize();\n\n useImperativeHandle(ref, () => ({\n get value() {\n return sanitizedTextRef.current;\n },\n set value(value) {\n setValue(value);\n },\n focus: () => {\n if (textInputRef.current === null) return\n textInputRef.current.focus();\n },\n blur: () => {\n if (textInputRef.current !== null) {\n sanitize(textInputRef.current.html);\n\n }\n\n emitChange();\n }\n }));\n}\n","// @ts-check\n\nimport { useCallback, useEffect, useRef } from \"react\";\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * useEmit\n * @param {React.MutableRefObject<import('../text-input').Ref | null>} textInputRef\n * @param {(size: {width: number, height: number}) => void} onResize\n * @param {(text: string) => void} onChange\n */\nexport function useEmit(textInputRef, onResize, onChange) {\n /** @type {React.MutableRefObject<{width: number; height: number} | null>} */\n const currentSizeRef = useRef(null);\n const onChangeFn = useRef(onChange);\n\n const checkAndEmitResize = useCallback(() => {\n if (textInputRef.current !== null) {\n const currentSize = currentSizeRef.current;\n\n const nextSize = textInputRef.current.size;\n\n if (\n (!currentSize ||\n currentSize.width !== nextSize.width ||\n currentSize.height !== nextSize.height) &&\n typeof onResize === \"function\"\n ) {\n onResize(nextSize);\n }\n\n currentSizeRef.current = nextSize;\n }\n }, [onResize, textInputRef]);\n\n const emitChange = useCallback((sanitizedText) => {\n if (typeof onChangeFn.current === \"function\") {\n onChangeFn.current(sanitizedText);\n }\n\n if (typeof onResize === \"function\") {\n checkAndEmitResize();\n }\n }, [checkAndEmitResize, onResize]);\n\n useEffect(() => {\n if (textInputRef.current) {\n checkAndEmitResize();\n }\n }, [checkAndEmitResize, textInputRef]);\n\n return emitChange;\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useImperativeHandle, forwardRef, useRef } from \"react\";\nimport { handlePasteHtmlAtCaret } from \"./utils/input-event-utils\";\n\n/**\n * @typedef {Object} Props\n * @property {(event: React.KeyboardEvent) => void} onKeyDown\n * @property {(event: React.KeyboardEvent) => void} onKeyUp\n * @property {() => void} onFocus\n * @property {() => void} onBlur\n * @property {(sanitizedText: string) => void=} onChange\n * @property {(event: React.KeyboardEvent) => void} onArrowUp\n * @property {(event: React.KeyboardEvent) => void} onArrowDown\n * @property {(event: React.KeyboardEvent) => void} onEnter\n * @property {(event: React.ClipboardEvent) => void} onCopy\n * @property {(event: React.ClipboardEvent) => void} onPaste\n * @property {string} placeholder\n * @property {React.CSSProperties} style\n * @property {number} tabIndex\n * @property {string} className\n * @property {(html: string) => void} onChange\n */\n\n/**\n * @typedef {{\n * appendContent: (html: string) => void;\n * html: string;\n * text: string;\n * size: { width: number; height: number;};\n * focus: () => void;\n * }} Ref\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.ForwardRefRenderFunction<Ref, Props>} */\nconst TextInput = (\n { placeholder, style, tabIndex, className, onChange, ...props },\n ref\n) => {\n useImperativeHandle(ref, () => ({\n appendContent: html => {\n if (textInputRef.current) {\n textInputRef.current.focus();\n }\n\n handlePasteHtmlAtCaret(html);\n\n if (textInputRef.current) {\n textInputRef.current.focus();\n }\n\n if (textInputRef.current && placeholderRef.current && textInputRef.current.innerHTML.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else if (placeholderRef.current) {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n\n if (textInputRef.current && typeof onChange === 'function') {\n onChange(textInputRef.current.innerHTML);\n }\n },\n set html(value) {\n if (textInputRef.current) {\n textInputRef.current.innerHTML = value;\n }\n \n if (placeholderRef.current) {\n if (value.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n if (typeof onChange === 'function' && textInputRef.current) {\n onChange(textInputRef.current.innerHTML);\n }\n },\n get html() {\n if (!textInputRef.current) return ''\n\n return textInputRef.current.innerHTML;\n },\n get text() {\n if (!textInputRef.current) return ''\n\n return textInputRef.current.innerText;\n },\n get size() {\n if (!textInputRef.current) {\n return {\n width: 0,\n height: 0\n }\n }\n\n return {\n width: textInputRef.current.offsetWidth,\n height: textInputRef.current.offsetHeight\n };\n },\n focus() {\n if (!textInputRef.current) return\n\n textInputRef.current.focus();\n }\n }));\n\n /** @type {React.MutableRefObject<HTMLDivElement | null>} */\n const placeholderRef = useRef(null);\n /** @type {React.MutableRefObject<HTMLDivElement | null>} */\n const textInputRef = useRef(null);\n\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyDown(event) {\n if (event.key === \"Enter\") {\n props.onEnter(event);\n } else if (event.key === \"ArrowUp\") {\n props.onArrowUp(event);\n } else if (event.key === \"ArrowDown\") {\n props.onArrowDown(event);\n } else {\n if (event.key.length === 1 && placeholderRef.current) {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n props.onKeyDown(event);\n }\n\n /** */\n function handleClick() {\n props.onFocus();\n }\n\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyUp(event) {\n props.onKeyUp(event);\n\n const input = textInputRef.current;\n\n if (placeholderRef.current) {\n if (input?.innerText?.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n if (typeof onChange === 'function' && textInputRef.current) {\n onChange(textInputRef.current.innerHTML);\n }\n }\n\n return (\n <div className=\"react-input-emoji--container\" style={style}>\n <div className=\"react-input-emoji--wrapper\" onClick={handleClick}>\n <div ref={placeholderRef} className=\"react-input-emoji--placeholder\">\n {placeholder}\n </div>\n <div\n ref={textInputRef}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n tabIndex={tabIndex}\n contentEditable\n className={`react-input-emoji--input${className ? ` ${className}` : \"\"\n }`}\n onBlur={props.onBlur}\n onCopy={props.onCopy}\n onPaste={props.onPaste}\n data-testid=\"react-input-emoji--input\"\n />\n </div>\n </div>\n );\n};\n\nconst TextInputWithRef = forwardRef(TextInput);\n\nexport default TextInputWithRef;\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","var mapping = {\n name: 'a',\n unified: 'b',\n non_qualified: 'c',\n has_img_apple: 'd',\n has_img_google: 'e',\n has_img_twitter: 'f',\n has_img_facebook: 'h',\n keywords: 'j',\n sheet: 'k',\n emoticons: 'l',\n text: 'm',\n short_names: 'n',\n added_in: 'o'\n};\n\nvar buildSearch = function buildSearch(emoji) {\n var search = [];\n\n var addToSearch = function addToSearch(strings, split) {\n if (!strings) {\n return;\n }\n\n ;\n (Array.isArray(strings) ? strings : [strings]).forEach(function (string) {\n ;\n (split ? string.split(/[-|_|\\s]+/) : [string]).forEach(function (s) {\n s = s.toLowerCase();\n\n if (search.indexOf(s) == -1) {\n search.push(s);\n }\n });\n });\n };\n\n addToSearch(emoji.short_names, true);\n addToSearch(emoji.name, true);\n addToSearch(emoji.keywords, false);\n addToSearch(emoji.emoticons, false);\n return search.join(',');\n};\n\nvar compress = function compress(emoji) {\n emoji.short_names = emoji.short_names.filter(function (short_name) {\n return short_name !== emoji.short_name;\n });\n delete emoji.short_name;\n emoji.sheet = [emoji.sheet_x, emoji.sheet_y];\n delete emoji.sheet_x;\n delete emoji.sheet_y;\n emoji.added_in = parseInt(emoji.added_in);\n\n if (emoji.added_in === 6) {\n delete emoji.added_in;\n }\n\n for (var key in mapping) {\n emoji[mapping[key]] = emoji[key];\n delete emoji[key];\n }\n\n for (var _key in emoji) {\n var value = emoji[_key];\n\n if (Array.isArray(value) && !value.length) {\n delete emoji[_key];\n } else if (typeof value === 'string' && !value.length) {\n delete emoji[_key];\n } else if (value === null) {\n delete emoji[_key];\n }\n }\n};\n\nvar uncompress = function uncompress(data) {\n data.compressed = false;\n\n for (var id in data.emojis) {\n var emoji = data.emojis[id];\n\n for (var key in mapping) {\n emoji[key] = emoji[mapping[key]];\n delete emoji[mapping[key]];\n }\n\n if (!emoji.short_names) emoji.short_names = [];\n emoji.short_names.unshift(id);\n emoji.sheet_x = emoji.sheet[0];\n emoji.sheet_y = emoji.sheet[1];\n delete emoji.sheet;\n if (!emoji.text) emoji.text = '';\n if (!emoji.added_in) emoji.added_in = 6;\n emoji.added_in = emoji.added_in.toFixed(1);\n emoji.search = buildSearch(emoji);\n }\n};\n\nexport { buildSearch, compress, uncompress };","var _String = String;\nexport default _String.fromCodePoint || function stringFromCodePoint() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n\n if (!length) {\n return '';\n }\n\n var result = '';\n\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n\n if (!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n codePoint < 0 || // not a valid Unicode code point\n codePoint > 0x10ffff || // not a valid Unicode code point\n Math.floor(codePoint) != codePoint // not an integer\n ) {\n throw RangeError('Invalid code point: ' + codePoint);\n }\n\n if (codePoint <= 0xffff) {\n // BMP code point\n codeUnits.push(codePoint);\n } else {\n // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xd800;\n lowSurrogate = codePoint % 0x400 + 0xdc00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n\n if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n result += String.fromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n\n return result;\n};","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport { buildSearch } from './data';\nimport stringFromCodePoint from '../polyfills/stringFromCodePoint';\nimport { uncompress } from './data';\nvar COLONS_REGEX = /^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/;\nvar SKINS = ['1F3FA', '1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF'];\n\nfunction unifiedToNative(unified) {\n var unicodes = unified.split('-'),\n codePoints = unicodes.map(function (u) {\n return \"0x\".concat(u);\n });\n return stringFromCodePoint.apply(null, codePoints);\n}\n\nfunction sanitize(emoji) {\n var name = emoji.name,\n short_names = emoji.short_names,\n skin_tone = emoji.skin_tone,\n skin_variations = emoji.skin_variations,\n emoticons = emoji.emoticons,\n unified = emoji.unified,\n custom = emoji.custom,\n customCategory = emoji.customCategory,\n imageUrl = emoji.imageUrl,\n id = emoji.id || short_names[0],\n colons = \":\".concat(id, \":\");\n\n if (custom) {\n return {\n id: id,\n name: name,\n short_names: short_names,\n colons: colons,\n emoticons: emoticons,\n custom: custom,\n customCategory: customCategory,\n imageUrl: imageUrl\n };\n }\n\n if (skin_tone) {\n colons += \":skin-tone-\".concat(skin_tone, \":\");\n }\n\n return {\n id: id,\n name: name,\n short_names: short_names,\n colons: colons,\n emoticons: emoticons,\n unified: unified.toLowerCase(),\n skin: skin_tone || (skin_variations ? 1 : null),\n \"native\": unifiedToNative(unified)\n };\n}\n\nfunction getSanitizedData() {\n return sanitize(getData.apply(void 0, arguments));\n}\n\nfunction getData(emoji, skin, set, data) {\n var emojiData = {};\n\n if (typeof emoji == 'string') {\n var matches = emoji.match(COLONS_REGEX);\n\n if (matches) {\n emoji = matches[1];\n\n if (matches[2]) {\n skin = parseInt(matches[2], 10);\n }\n }\n\n if (data.aliases.hasOwnProperty(emoji)) {\n emoji = data.aliases[emoji];\n }\n\n if (data.emojis.hasOwnProperty(emoji)) {\n emojiData = data.emojis[emoji];\n } else {\n return null;\n }\n } else if (emoji.id) {\n if (data.aliases.hasOwnProperty(emoji.id)) {\n emoji.id = data.aliases[emoji.id];\n }\n\n if (data.emojis.hasOwnProperty(emoji.id)) {\n emojiData = data.emojis[emoji.id];\n skin || (skin = emoji.skin);\n }\n }\n\n if (!Object.keys(emojiData).length) {\n emojiData = emoji;\n emojiData.custom = true;\n\n if (!emojiData.search) {\n emojiData.search = buildSearch(emoji);\n }\n }\n\n emojiData.emoticons || (emojiData.emoticons = []);\n emojiData.variations || (emojiData.variations = []);\n\n if (emojiData.skin_variations && skin > 1) {\n emojiData = JSON.parse(JSON.stringify(emojiData));\n var skinKey = SKINS[skin - 1],\n variationData = emojiData.skin_variations[skinKey];\n\n if (variationData) {\n if (!variationData.variations && emojiData.variations) {\n delete emojiData.variations;\n }\n\n if (set && (variationData[\"has_img_\".concat(set)] == undefined || variationData[\"has_img_\".concat(set)]) || !set) {\n emojiData.skin_tone = skin;\n\n for (var k in variationData) {\n var v = variationData[k];\n emojiData[k] = v;\n }\n }\n }\n }\n\n if (emojiData.variations && emojiData.variations.length) {\n emojiData = JSON.parse(JSON.stringify(emojiData));\n emojiData.unified = emojiData.variations.shift();\n }\n\n return emojiData;\n}\n\nfunction getEmojiDataFromNative(nativeString, set, data) {\n if (data.compressed) {\n uncompress(data);\n }\n\n var skinTones = ['🏻', '🏼', '🏽', '🏾', '🏿'];\n var skinCodes = ['1F3FB', '1F3FC', '1F3FD', '1F3FE', '1F3FF'];\n var skin;\n var skinCode;\n var baseNativeString = nativeString;\n skinTones.forEach(function (skinTone, skinToneIndex) {\n if (nativeString.indexOf(skinTone) > 0) {\n skin = skinToneIndex + 2;\n skinCode = skinCodes[skinToneIndex];\n }\n });\n var emojiData;\n\n for (var id in data.emojis) {\n var emoji = data.emojis[id];\n var emojiUnified = emoji.unified;\n\n if (emoji.variations && emoji.variations.length) {\n emojiUnified = emoji.variations.shift();\n }\n\n if (skin && emoji.skin_variations && emoji.skin_variations[skinCode]) {\n emojiUnified = emoji.skin_variations[skinCode].unified;\n }\n\n if (unifiedToNative(emojiUnified) === baseNativeString) emojiData = emoji;\n }\n\n if (!emojiData) {\n return null;\n }\n\n emojiData.id = emojiData.short_names[0];\n return getSanitizedData(emojiData, skin, set, data);\n}\n\nfunction uniq(arr) {\n return arr.reduce(function (acc, item) {\n if (acc.indexOf(item) === -1) {\n acc.push(item);\n }\n\n return acc;\n }, []);\n}\n\nfunction intersect(a, b) {\n var uniqA = uniq(a);\n var uniqB = uniq(b);\n return uniqA.filter(function (item) {\n return uniqB.indexOf(item) >= 0;\n });\n}\n\nfunction deepMerge(a, b) {\n var o = {};\n\n for (var key in a) {\n var originalValue = a[key],\n value = originalValue;\n\n if (b.hasOwnProperty(key)) {\n value = b[key];\n }\n\n if (_typeof(value) === 'object') {\n value = deepMerge(originalValue, value);\n }\n\n o[key] = value;\n }\n\n return o;\n} // https://github.com/sonicdoe/measure-scrollbar\n\n\nfunction measureScrollbar() {\n if (typeof document == 'undefined') return 0;\n var div = document.createElement('div');\n div.style.width = '100px';\n div.style.height = '100px';\n div.style.overflow = 'scroll';\n div.style.position = 'absolute';\n div.style.top = '-9999px';\n document.body.appendChild(div);\n var scrollbarWidth = div.offsetWidth - div.clientWidth;\n document.body.removeChild(div);\n return scrollbarWidth;\n} // Use requestIdleCallback() if available, else fall back to setTimeout().\n// Throttle so as not to run too frequently.\n\n\nfunction throttleIdleTask(func) {\n var doIdleTask = typeof requestIdleCallback === 'function' ? requestIdleCallback : setTimeout;\n var running = false;\n return function throttled() {\n if (running) {\n return;\n }\n\n running = true;\n doIdleTask(function () {\n running = false;\n func();\n });\n };\n}\n\nexport { getData, getEmojiDataFromNative, getSanitizedData, uniq, intersect, deepMerge, unifiedToNative, measureScrollbar, throttleIdleTask };","var NAMESPACE = 'emoji-mart';\nvar isLocalStorageSupported = typeof window !== 'undefined' && 'localStorage' in window;\nvar getter;\nvar setter;\n\nfunction setHandlers(handlers) {\n handlers || (handlers = {});\n getter = handlers.getter;\n setter = handlers.setter;\n}\n\nfunction setNamespace(namespace) {\n NAMESPACE = namespace;\n}\n\nfunction update(state) {\n for (var key in state) {\n var value = state[key];\n set(key, value);\n }\n}\n\nfunction set(key, value) {\n if (setter) {\n setter(key, value);\n } else {\n if (!isLocalStorageSupported) return;\n\n try {\n window.localStorage[\"\".concat(NAMESPACE, \".\").concat(key)] = JSON.stringify(value);\n } catch (e) {}\n }\n}\n\nfunction get(key) {\n if (getter) {\n return getter(key);\n } else {\n if (!isLocalStorageSupported) return;\n\n try {\n var value = window.localStorage[\"\".concat(NAMESPACE, \".\").concat(key)];\n\n if (value) {\n return JSON.parse(value);\n }\n } catch (e) {\n return;\n }\n }\n}\n\nexport default {\n update: update,\n set: set,\n get: get,\n setNamespace: setNamespace,\n setHandlers: setHandlers\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport { getData, getSanitizedData, intersect } from '..';\nimport { uncompress } from '../data';\nimport store from '../store';\n\nvar NimbleEmojiIndex =\n/*#__PURE__*/\nfunction () {\n function NimbleEmojiIndex(data, set) {\n _classCallCheck(this, NimbleEmojiIndex);\n\n if (data.compressed) {\n uncompress(data);\n }\n\n this.data = data || {};\n this.set = set || null;\n this.originalPool = {};\n this.index = {};\n this.emojis = {};\n this.emoticons = {};\n this.customEmojisList = [];\n this.buildIndex();\n }\n\n _createClass(NimbleEmojiIndex, [{\n key: \"buildIndex\",\n value: function buildIndex() {\n var _this = this;\n\n var _loop = function _loop(emoji) {\n var emojiData = _this.data.emojis[emoji],\n short_names = emojiData.short_names,\n emoticons = emojiData.emoticons,\n skin_variations = emojiData.skin_variations,\n id = short_names[0];\n\n if (emoticons) {\n emoticons.forEach(function (emoticon) {\n if (_this.emoticons[emoticon]) {\n return;\n }\n\n _this.emoticons[emoticon] = id;\n });\n } // If skin variations include them\n\n\n if (skin_variations) {\n _this.emojis[id] = {};\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n _this.emojis[id][skinTone] = getSanitizedData({\n id: id,\n skin: skinTone\n }, skinTone, _this.set, _this.data);\n }\n } else {\n _this.emojis[id] = getSanitizedData(id, null, _this.set, _this.data);\n }\n\n _this.originalPool[id] = emojiData;\n };\n\n for (var emoji in this.data.emojis) {\n _loop(emoji);\n }\n }\n }, {\n key: \"clearCustomEmojis\",\n value: function clearCustomEmojis(pool) {\n var _this2 = this;\n\n this.customEmojisList.forEach(function (emoji) {\n var emojiId = emoji.id || emoji.short_names[0];\n delete pool[emojiId];\n delete _this2.emojis[emojiId];\n });\n }\n }, {\n key: \"addCustomToPool\",\n value: function addCustomToPool(custom, pool) {\n var _this3 = this;\n\n if (this.customEmojisList.length) this.clearCustomEmojis(pool);\n custom.forEach(function (emoji) {\n var emojiId = emoji.id || emoji.short_names[0];\n\n if (emojiId && !pool[emojiId]) {\n pool[emojiId] = getData(emoji, null, null, _this3.data);\n _this3.emojis[emojiId] = getSanitizedData(emoji, null, null, _this3.data);\n }\n });\n this.customEmojisList = custom;\n this.index = {};\n }\n }, {\n key: \"search\",\n value: function search(value) {\n var _this4 = this;\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n emojisToShowFilter = _ref.emojisToShowFilter,\n maxResults = _ref.maxResults,\n include = _ref.include,\n exclude = _ref.exclude,\n _ref$custom = _ref.custom,\n custom = _ref$custom === void 0 ? [] : _ref$custom;\n\n if (this.customEmojisList != custom) this.addCustomToPool(custom, this.originalPool);\n var skinTone = store.get('skin') || 1;\n maxResults || (maxResults = 75);\n include || (include = []);\n exclude || (exclude = []);\n var results = null,\n pool = this.originalPool;\n\n if (value.length) {\n if (value == '-' || value == '-1') {\n return [this.emojis['-1'][skinTone]];\n }\n\n var values = value.toLowerCase().split(/[\\s|,|\\-|_]+/),\n allResults = [];\n\n if (values.length > 2) {\n values = [values[0], values[1]];\n }\n\n if (include.length || exclude.length) {\n pool = {};\n this.data.categories.forEach(function (category) {\n var isIncluded = include && include.length ? include.indexOf(category.id) > -1 : true;\n var isExcluded = exclude && exclude.length ? exclude.indexOf(category.id) > -1 : false;\n\n if (!isIncluded || isExcluded) {\n return;\n }\n\n category.emojis.forEach(function (emojiId) {\n return pool[emojiId] = _this4.data.emojis[emojiId];\n });\n });\n\n if (custom.length) {\n var customIsIncluded = include && include.length ? include.indexOf('custom') > -1 : true;\n var customIsExcluded = exclude && exclude.length ? exclude.indexOf('custom') > -1 : false;\n\n if (customIsIncluded && !customIsExcluded) {\n this.addCustomToPool(custom, pool);\n }\n }\n }\n\n allResults = values.map(function (value) {\n var aPool = pool,\n aIndex = _this4.index,\n length = 0;\n\n for (var charIndex = 0; charIndex < value.length; charIndex++) {\n var _char = value[charIndex];\n length++;\n aIndex[_char] || (aIndex[_char] = {});\n aIndex = aIndex[_char];\n\n if (!aIndex.results) {\n (function () {\n var scores = {};\n aIndex.results = [];\n aIndex.pool = {};\n\n for (var id in aPool) {\n var emoji = aPool[id],\n search = emoji.search,\n sub = value.substr(0, length),\n subIndex = search.indexOf(sub);\n\n if (subIndex != -1) {\n var score = subIndex + 1;\n if (sub == id) score = 0;\n\n if (_this4.emojis[id] && _this4.emojis[id][skinTone]) {\n aIndex.results.push(_this4.emojis[id][skinTone]);\n } else {\n aIndex.results.push(_this4.emojis[id]);\n }\n\n aIndex.pool[id] = emoji;\n scores[id] = score;\n }\n }\n\n aIndex.results.sort(function (a, b) {\n var aScore = scores[a.id],\n bScore = scores[b.id];\n\n if (aScore == bScore) {\n return a.id.localeCompare(b.id);\n } else {\n return aScore - bScore;\n }\n });\n })();\n }\n\n aPool = aIndex.pool;\n }\n\n return aIndex.results;\n }).filter(function (a) {\n return a;\n });\n\n if (allResults.length > 1) {\n results = intersect.apply(null, allResults);\n } else if (allResults.length) {\n results = allResults[0];\n } else {\n results = [];\n }\n }\n\n if (results) {\n if (emojisToShowFilter) {\n results = results.filter(function (result) {\n return emojisToShowFilter(pool[result.id]);\n });\n }\n\n if (results && results.length > maxResults) {\n results = results.slice(0, maxResults);\n }\n }\n\n return results;\n }\n }]);\n\n return NimbleEmojiIndex;\n}();\n\nexport { NimbleEmojiIndex as default };","import data from '../../../data/all.json';\nimport NimbleEmojiIndex from './nimble-emoji-index';\nvar emojiIndex = new NimbleEmojiIndex(data);\nvar emojis = emojiIndex.emojis,\n emoticons = emojiIndex.emoticons;\n\nfunction search() {\n return emojiIndex.search.apply(emojiIndex, arguments);\n}\n\nexport default {\n search: search,\n emojis: emojis,\n emoticons: emoticons\n};","import store from './store';\nvar DEFAULTS = ['+1', 'grinning', 'kissing_heart', 'heart_eyes', 'laughing', 'stuck_out_tongue_winking_eye', 'sweat_smile', 'joy', 'scream', 'disappointed', 'unamused', 'weary', 'sob', 'sunglasses', 'heart', 'poop'];\nvar frequently, initialized;\nvar defaults = {};\n\nfunction init() {\n initialized = true;\n frequently = store.get('frequently');\n}\n\nfunction add(emoji) {\n if (!initialized) init();\n var id = emoji.id;\n frequently || (frequently = defaults);\n frequently[id] || (frequently[id] = 0);\n frequently[id] += 1;\n store.set('last', id);\n store.set('frequently', frequently);\n}\n\nfunction get(perLine) {\n if (!initialized) init();\n\n if (!frequently) {\n defaults = {};\n var result = [];\n\n for (var i = 0; i < perLine; i++) {\n defaults[DEFAULTS[i]] = perLine - i;\n result.push(DEFAULTS[i]);\n }\n\n return result;\n }\n\n var quantity = perLine * 4;\n var frequentlyKeys = [];\n\n for (var key in frequently) {\n if (frequently.hasOwnProperty(key)) {\n frequentlyKeys.push(key);\n }\n }\n\n var sorted = frequentlyKeys.sort(function (a, b) {\n return frequently[a] - frequently[b];\n }).reverse();\n var sliced = sorted.slice(0, quantity);\n var last = store.get('last');\n\n if (last && sliced.indexOf(last) == -1) {\n sliced.pop();\n sliced.push(last);\n }\n\n return sliced;\n}\n\nexport default {\n add: add,\n get: get\n};","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import React from 'react';\nvar categories = {\n activity: function activity() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\"\n }));\n },\n custom: function custom() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"g\", {\n transform: \"translate(2.000000, 1.000000)\"\n }, React.createElement(\"rect\", {\n id: \"Rectangle\",\n x: \"8\",\n y: \"0\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n }), React.createElement(\"rect\", {\n id: \"Rectangle\",\n transform: \"translate(9.843, 10.549) rotate(60) translate(-9.843, -10.549) \",\n x: \"8.343\",\n y: \"0.049\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n }), React.createElement(\"rect\", {\n id: \"Rectangle\",\n transform: \"translate(9.843, 10.549) rotate(-60) translate(-9.843, -10.549) \",\n x: \"8.343\",\n y: \"0.049\",\n width: \"3\",\n height: \"21\",\n rx: \"1.5\"\n })));\n },\n flags: function flags() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\"\n }));\n },\n foods: function foods() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\"\n }));\n },\n nature: function nature() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\"\n }), React.createElement(\"path\", {\n d: \"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\"\n }));\n },\n objects: function objects() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\"\n }), React.createElement(\"path\", {\n d: \"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\"\n }));\n },\n people: function people() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"\n }), React.createElement(\"path\", {\n d: \"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\"\n }));\n },\n places: function places() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\"\n }), React.createElement(\"path\", {\n d: \"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\"\n }));\n },\n recent: function recent() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\"\n }), React.createElement(\"path\", {\n d: \"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"\n }));\n },\n symbols: function symbols() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n width: \"24\",\n height: \"24\"\n }, React.createElement(\"path\", {\n d: \"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\"\n }));\n }\n};\nvar search = {\n search: function search() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 20 20\",\n opacity: \"0.5\"\n }, React.createElement(\"path\", {\n d: \"M12.9 14.32a8 8 0 1 1 1.41-1.41l5.35 5.33-1.42 1.42-5.33-5.34zM8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\"\n }));\n },\n \"delete\": function _delete() {\n return React.createElement(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"13\",\n height: \"13\",\n viewBox: \"0 0 20 20\",\n opacity: \"0.5\"\n }, React.createElement(\"path\", {\n d: \"M10 8.586L2.929 1.515 1.515 2.929 8.586 10l-7.071 7.071 1.414 1.414L10 11.414l7.071 7.071 1.414-1.414L11.414 10l7.071-7.071-1.414-1.414L10 8.586z\"\n }));\n }\n};\nexport { categories, search };","import PropTypes from 'prop-types';\nvar EmojiPropTypes = {\n data: PropTypes.object.isRequired,\n onOver: PropTypes.func,\n onLeave: PropTypes.func,\n onClick: PropTypes.func,\n fallback: PropTypes.func,\n backgroundImageFn: PropTypes.func,\n \"native\": PropTypes.bool,\n forceSize: PropTypes.bool,\n tooltip: PropTypes.bool,\n useButton: PropTypes.bool,\n skin: PropTypes.oneOf([1, 2, 3, 4, 5, 6]),\n sheetSize: PropTypes.oneOf([16, 20, 32, 64]),\n sheetColumns: PropTypes.number,\n sheetRows: PropTypes.number,\n set: PropTypes.oneOf(['apple', 'google', 'twitter', 'facebook']),\n size: PropTypes.number.isRequired,\n emoji: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n};\nvar PickerPropTypes = {\n onClick: PropTypes.func,\n onSelect: PropTypes.func,\n onSkinChange: PropTypes.func,\n perLine: PropTypes.number,\n emojiSize: PropTypes.number,\n i18n: PropTypes.object,\n style: PropTypes.object,\n title: PropTypes.string,\n emoji: PropTypes.string,\n color: PropTypes.string,\n set: EmojiPropTypes.set,\n skin: EmojiPropTypes.skin,\n \"native\": PropTypes.bool,\n backgroundImageFn: EmojiPropTypes.backgroundImageFn,\n sheetSize: EmojiPropTypes.sheetSize,\n emojisToShowFilter: PropTypes.func,\n showPreview: PropTypes.bool,\n showSkinTones: PropTypes.bool,\n emojiTooltip: EmojiPropTypes.tooltip,\n useButton: EmojiPropTypes.useButton,\n theme: PropTypes.oneOf(['auto', 'light', 'dark']),\n include: PropTypes.arrayOf(PropTypes.string),\n exclude: PropTypes.arrayOf(PropTypes.string),\n recent: PropTypes.arrayOf(PropTypes.string),\n autoFocus: PropTypes.bool,\n enableFrequentEmojiSort: PropTypes.bool,\n custom: PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.string.isRequired,\n short_names: PropTypes.arrayOf(PropTypes.string).isRequired,\n emoticons: PropTypes.arrayOf(PropTypes.string),\n keywords: PropTypes.arrayOf(PropTypes.string),\n imageUrl: PropTypes.string,\n spriteUrl: PropTypes.string,\n sheet_x: PropTypes.number,\n sheet_y: PropTypes.number,\n size: PropTypes.number,\n sheetColumns: PropTypes.number,\n sheetRows: PropTypes.number\n })),\n skinEmoji: PropTypes.string,\n notFound: PropTypes.func,\n notFoundEmoji: PropTypes.string,\n icons: PropTypes.object\n};\nexport { EmojiPropTypes, PickerPropTypes };","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar Anchors =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Anchors, _React$PureComponent);\n\n function Anchors(props) {\n var _this;\n\n _classCallCheck(this, Anchors);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Anchors).call(this, props));\n var defaultCategory = props.categories.filter(function (category) {\n return category.first;\n })[0];\n _this.state = {\n selected: defaultCategory.name\n };\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Anchors, [{\n key: \"handleClick\",\n value: function handleClick(e) {\n var index = e.currentTarget.getAttribute('data-index');\n var _this$props = this.props,\n categories = _this$props.categories,\n onAnchorClick = _this$props.onAnchorClick;\n onAnchorClick(categories[index], index);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n categories = _this$props2.categories,\n color = _this$props2.color,\n i18n = _this$props2.i18n,\n icons = _this$props2.icons,\n selected = this.state.selected;\n return React.createElement(\"nav\", {\n className: \"emoji-mart-anchors\",\n \"aria-label\": i18n.categorieslabel\n }, categories.map(function (category, i) {\n var id = category.id,\n name = category.name,\n anchor = category.anchor,\n isSelected = name == selected;\n\n if (anchor === false) {\n return null;\n }\n\n var iconId = id.startsWith('custom-') ? 'custom' : id;\n return React.createElement(\"button\", {\n key: id,\n \"aria-label\": i18n.categories[iconId],\n title: i18n.categories[iconId],\n \"data-index\": i,\n type: 'button',\n onClick: _this2.handleClick,\n className: \"emoji-mart-anchor \".concat(isSelected ? 'emoji-mart-anchor-selected' : ''),\n style: {\n color: isSelected ? color : null\n }\n }, React.createElement(\"div\", {\n className: \"emoji-mart-anchor-icon\"\n }, icons.categories[iconId]()), React.createElement(\"span\", {\n className: \"emoji-mart-anchor-bar\",\n style: {\n backgroundColor: color\n }\n }));\n }));\n }\n }]);\n\n return Anchors;\n}(React.PureComponent);\n\nexport { Anchors as default };\nAnchors.propTypes\n/* remove-proptypes */\n= {\n categories: PropTypes.array,\n onAnchorClick: PropTypes.func,\n icons: PropTypes.object\n};\nAnchors.defaultProps = {\n categories: [],\n onAnchorClick: function onAnchorClick() {},\n icons: {}\n};","var EmojiDefaultProps = {\n skin: 1,\n set: 'apple',\n sheetSize: 64,\n sheetColumns: 57,\n sheetRows: 57,\n \"native\": false,\n forceSize: false,\n tooltip: false,\n useButton: true,\n backgroundImageFn: function backgroundImageFn(set, sheetSize) {\n return \"https://unpkg.com/emoji-datasource-\".concat(set, \"@\").concat(\"5.0.1\", \"/img/\").concat(set, \"/sheets-256/\").concat(sheetSize, \".png\");\n }\n};\nvar PickerDefaultProps = {\n onClick: function onClick() {},\n onSelect: function onSelect() {},\n onSkinChange: function onSkinChange() {},\n emojiSize: 24,\n perLine: 9,\n i18n: {},\n style: {},\n title: 'Emoji Mart™',\n emoji: 'department_store',\n color: '#ae65c5',\n set: EmojiDefaultProps.set,\n theme: 'light',\n skin: null,\n defaultSkin: EmojiDefaultProps.skin,\n \"native\": EmojiDefaultProps[\"native\"],\n sheetSize: EmojiDefaultProps.sheetSize,\n backgroundImageFn: EmojiDefaultProps.backgroundImageFn,\n emojisToShowFilter: null,\n showPreview: true,\n showSkinTones: true,\n emojiTooltip: EmojiDefaultProps.tooltip,\n useButton: EmojiDefaultProps.useButton,\n autoFocus: false,\n enableFrequentEmojiSort: false,\n custom: [],\n skinEmoji: '',\n notFound: function notFound() {},\n notFoundEmoji: 'sleuth_or_spy',\n icons: {}\n};\nexport { PickerDefaultProps, EmojiDefaultProps };","import _extends from \"@babel/runtime/helpers/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getData, getSanitizedData, unifiedToNative } from '../../utils';\nimport { uncompress } from '../../utils/data';\nimport { EmojiPropTypes } from '../../utils/shared-props';\nimport { EmojiDefaultProps } from '../../utils/shared-default-props';\n\nvar _getData = function _getData(props) {\n var emoji = props.emoji,\n skin = props.skin,\n set = props.set,\n data = props.data;\n return getData(emoji, skin, set, data);\n};\n\nvar _getPosition = function _getPosition(props) {\n var _getData2 = _getData(props),\n sheet_x = _getData2.sheet_x,\n sheet_y = _getData2.sheet_y,\n multiplyX = 100 / (props.sheetColumns - 1),\n multiplyY = 100 / (props.sheetRows - 1);\n\n return \"\".concat(multiplyX * sheet_x, \"% \").concat(multiplyY * sheet_y, \"%\");\n};\n\nvar _getSanitizedData = function _getSanitizedData(props) {\n var emoji = props.emoji,\n skin = props.skin,\n set = props.set,\n data = props.data;\n return getSanitizedData(emoji, skin, set, data);\n};\n\nvar _handleClick = function _handleClick(e, props) {\n if (!props.onClick) {\n return;\n }\n\n var onClick = props.onClick,\n emoji = _getSanitizedData(props);\n\n onClick(emoji, e);\n};\n\nvar _handleOver = function _handleOver(e, props) {\n if (!props.onOver) {\n return;\n }\n\n var onOver = props.onOver,\n emoji = _getSanitizedData(props);\n\n onOver(emoji, e);\n};\n\nvar _handleLeave = function _handleLeave(e, props) {\n if (!props.onLeave) {\n return;\n }\n\n var onLeave = props.onLeave,\n emoji = _getSanitizedData(props);\n\n onLeave(emoji, e);\n};\n\nvar _isNumeric = function _isNumeric(value) {\n return !isNaN(value - parseFloat(value));\n};\n\nvar _convertStyleToCSS = function _convertStyleToCSS(style) {\n var div = document.createElement('div');\n\n for (var key in style) {\n var value = style[key];\n\n if (_isNumeric(value)) {\n value += 'px';\n }\n\n div.style[key] = value;\n }\n\n return div.getAttribute('style');\n};\n\nvar NimbleEmoji = function NimbleEmoji(props) {\n if (props.data.compressed) {\n uncompress(props.data);\n }\n\n for (var k in NimbleEmoji.defaultProps) {\n if (props[k] == undefined && NimbleEmoji.defaultProps[k] != undefined) {\n props[k] = NimbleEmoji.defaultProps[k];\n }\n }\n\n var data = _getData(props);\n\n if (!data) {\n if (props.fallback) {\n return props.fallback(null, props);\n } else {\n return null;\n }\n }\n\n var unified = data.unified,\n custom = data.custom,\n short_names = data.short_names,\n imageUrl = data.imageUrl,\n style = {},\n children = props.children,\n className = 'emoji-mart-emoji',\n nativeEmoji = unified && unifiedToNative(unified),\n label = [nativeEmoji].concat(short_names).filter(Boolean).join(', '),\n title = null;\n\n if (!unified && !custom) {\n if (props.fallback) {\n return props.fallback(data, props);\n } else {\n return null;\n }\n }\n\n if (props.tooltip) {\n title = short_names[0];\n }\n\n if (props[\"native\"] && unified) {\n className += ' emoji-mart-emoji-native';\n style = {\n fontSize: props.size\n };\n children = nativeEmoji;\n\n if (props.forceSize) {\n style.display = 'inline-block';\n style.width = props.size;\n style.height = props.size;\n style.wordBreak = 'keep-all';\n }\n } else if (custom) {\n className += ' emoji-mart-emoji-custom';\n style = {\n width: props.size,\n height: props.size,\n display: 'inline-block'\n };\n\n if (data.spriteUrl) {\n style = _objectSpread({}, style, {\n backgroundImage: \"url(\".concat(data.spriteUrl, \")\"),\n backgroundSize: \"\".concat(100 * props.sheetColumns, \"% \").concat(100 * props.sheetRows, \"%\"),\n backgroundPosition: _getPosition(props)\n });\n } else {\n style = _objectSpread({}, style, {\n backgroundImage: \"url(\".concat(imageUrl, \")\"),\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center'\n });\n }\n } else {\n var setHasEmoji = data[\"has_img_\".concat(props.set)] == undefined || data[\"has_img_\".concat(props.set)];\n\n if (!setHasEmoji) {\n if (props.fallback) {\n return props.fallback(data, props);\n } else {\n return null;\n }\n } else {\n style = {\n width: props.size,\n height: props.size,\n display: 'inline-block',\n backgroundImage: \"url(\".concat(props.backgroundImageFn(props.set, props.sheetSize), \")\"),\n backgroundSize: \"\".concat(100 * props.sheetColumns, \"% \").concat(100 * props.sheetRows, \"%\"),\n backgroundPosition: _getPosition(props)\n };\n }\n }\n\n var Tag = {\n name: 'span',\n props: {}\n };\n\n if (props.onClick && props.useButton) {\n Tag.name = 'button';\n Tag.props = {\n type: 'button'\n };\n }\n\n if (props.html) {\n style = _convertStyleToCSS(style);\n return \"<\".concat(Tag.name, \" style='\").concat(style, \"' aria-label='\").concat(label, \"' \").concat(title ? \"title='\".concat(title, \"'\") : '', \" class='\").concat(className, \"'>\").concat(children || '', \"</\").concat(Tag.name, \">\");\n } else {\n return React.createElement(Tag.name, _extends({\n onClick: function onClick(e) {\n return _handleClick(e, props);\n },\n onMouseEnter: function onMouseEnter(e) {\n return _handleOver(e, props);\n },\n onMouseLeave: function onMouseLeave(e) {\n return _handleLeave(e, props);\n },\n \"aria-label\": label,\n title: title,\n className: className\n }, Tag.props), React.createElement(\"span\", {\n style: style\n }, children));\n }\n};\n\nNimbleEmoji.propTypes\n/* remove-proptypes */\n= _objectSpread({}, EmojiPropTypes, {\n data: PropTypes.object.isRequired\n});\nNimbleEmoji.defaultProps = EmojiDefaultProps;\nexport default NimbleEmoji;","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport NimbleEmoji from './emoji/nimble-emoji';\n\nvar NotFound =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(NotFound, _React$PureComponent);\n\n function NotFound() {\n _classCallCheck(this, NotFound);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(NotFound).apply(this, arguments));\n }\n\n _createClass(NotFound, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n data = _this$props.data,\n emojiProps = _this$props.emojiProps,\n i18n = _this$props.i18n,\n notFound = _this$props.notFound,\n notFoundEmoji = _this$props.notFoundEmoji;\n var component = notFound && notFound() || React.createElement(\"div\", {\n className: \"emoji-mart-no-results\"\n }, NimbleEmoji(_objectSpread({\n data: data\n }, emojiProps, {\n size: 38,\n emoji: notFoundEmoji,\n onOver: null,\n onLeave: null,\n onClick: null\n })), React.createElement(\"div\", {\n className: \"emoji-mart-no-results-label\"\n }, i18n.notfound));\n return component;\n }\n }]);\n\n return NotFound;\n}(React.PureComponent);\n\nexport { NotFound as default };\nNotFound.propTypes\n/* remove-proptypes */\n= {\n notFound: PropTypes.func.isRequired,\n emojiProps: PropTypes.object.isRequired\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport frequently from '../utils/frequently';\nimport { getData } from '../utils';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport NotFound from './not-found';\n\nvar Category =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Category, _React$Component);\n\n function Category(props) {\n var _this;\n\n _classCallCheck(this, Category);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Category).call(this, props));\n _this.data = props.data;\n _this.setContainerRef = _this.setContainerRef.bind(_assertThisInitialized(_this));\n _this.setLabelRef = _this.setLabelRef.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(Category, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.margin = 0;\n this.minMargin = 0;\n this.memoizeSize();\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n var _this$props = this.props,\n name = _this$props.name,\n perLine = _this$props.perLine,\n _native = _this$props[\"native\"],\n hasStickyPosition = _this$props.hasStickyPosition,\n emojis = _this$props.emojis,\n emojiProps = _this$props.emojiProps,\n skin = emojiProps.skin,\n size = emojiProps.size,\n set = emojiProps.set,\n nextPerLine = nextProps.perLine,\n nextNative = nextProps[\"native\"],\n nextHasStickyPosition = nextProps.hasStickyPosition,\n nextEmojis = nextProps.emojis,\n nextEmojiProps = nextProps.emojiProps,\n nextSkin = nextEmojiProps.skin,\n nextSize = nextEmojiProps.size,\n nextSet = nextEmojiProps.set,\n shouldUpdate = false;\n\n if (name == 'Recent' && perLine != nextPerLine) {\n shouldUpdate = true;\n }\n\n if (name == 'Search') {\n shouldUpdate = !(emojis == nextEmojis);\n }\n\n if (skin != nextSkin || size != nextSize || _native != nextNative || set != nextSet || hasStickyPosition != nextHasStickyPosition) {\n shouldUpdate = true;\n }\n\n return shouldUpdate;\n }\n }, {\n key: \"memoizeSize\",\n value: function memoizeSize() {\n if (!this.container) {\n // probably this is a test environment, e.g. jest\n this.top = 0;\n this.maxMargin = 0;\n return;\n }\n\n var parent = this.container.parentElement;\n\n var _this$container$getBo = this.container.getBoundingClientRect(),\n top = _this$container$getBo.top,\n height = _this$container$getBo.height;\n\n var _parent$getBoundingCl = parent.getBoundingClientRect(),\n parentTop = _parent$getBoundingCl.top;\n\n var _this$label$getBoundi = this.label.getBoundingClientRect(),\n labelHeight = _this$label$getBoundi.height;\n\n this.top = top - parentTop + parent.scrollTop;\n\n if (height == 0) {\n this.maxMargin = 0;\n } else {\n this.maxMargin = height - labelHeight;\n }\n }\n }, {\n key: \"handleScroll\",\n value: function handleScroll(scrollTop) {\n var margin = scrollTop - this.top;\n margin = margin < this.minMargin ? this.minMargin : margin;\n margin = margin > this.maxMargin ? this.maxMargin : margin;\n if (margin == this.margin) return;\n\n if (!this.props.hasStickyPosition) {\n this.label.style.top = \"\".concat(margin, \"px\");\n }\n\n this.margin = margin;\n return true;\n }\n }, {\n key: \"getEmojis\",\n value: function getEmojis() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n name = _this$props2.name,\n emojis = _this$props2.emojis,\n recent = _this$props2.recent,\n perLine = _this$props2.perLine;\n\n if (name == 'Recent') {\n var custom = this.props.custom;\n var frequentlyUsed = recent || frequently.get(perLine);\n\n if (frequentlyUsed.length) {\n emojis = frequentlyUsed.map(function (id) {\n var emoji = custom.filter(function (e) {\n return e.id === id;\n })[0];\n\n if (emoji) {\n return emoji;\n }\n\n return id;\n }).filter(function (id) {\n return !!getData(id, null, null, _this2.data);\n });\n }\n\n if (emojis.length === 0 && frequentlyUsed.length > 0) {\n return null;\n }\n }\n\n if (emojis) {\n emojis = emojis.slice(0);\n }\n\n return emojis;\n }\n }, {\n key: \"updateDisplay\",\n value: function updateDisplay(display) {\n var emojis = this.getEmojis();\n\n if (!emojis || !this.container) {\n return;\n }\n\n this.container.style.display = display;\n }\n }, {\n key: \"setContainerRef\",\n value: function setContainerRef(c) {\n this.container = c;\n }\n }, {\n key: \"setLabelRef\",\n value: function setLabelRef(c) {\n this.label = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var _this$props3 = this.props,\n id = _this$props3.id,\n name = _this$props3.name,\n hasStickyPosition = _this$props3.hasStickyPosition,\n emojiProps = _this$props3.emojiProps,\n i18n = _this$props3.i18n,\n notFound = _this$props3.notFound,\n notFoundEmoji = _this$props3.notFoundEmoji,\n emojis = this.getEmojis(),\n labelStyles = {},\n labelSpanStyles = {},\n containerStyles = {};\n\n if (!emojis) {\n containerStyles = {\n display: 'none'\n };\n }\n\n if (!hasStickyPosition) {\n labelStyles = {\n height: 28\n };\n labelSpanStyles = {\n position: 'absolute'\n };\n }\n\n var label = i18n.categories[id] || name;\n return React.createElement(\"section\", {\n ref: this.setContainerRef,\n className: \"emoji-mart-category\",\n \"aria-label\": label,\n style: containerStyles\n }, React.createElement(\"div\", {\n style: labelStyles,\n \"data-name\": name,\n className: \"emoji-mart-category-label\"\n }, React.createElement(\"span\", {\n style: labelSpanStyles,\n ref: this.setLabelRef,\n \"aria-hidden\": true\n /* already labeled by the section aria-label */\n\n }, label)), React.createElement(\"ul\", {\n className: \"emoji-mart-category-list\"\n }, emojis && emojis.map(function (emoji) {\n return React.createElement(\"li\", {\n key: emoji.short_names && emoji.short_names.join('_') || emoji\n }, NimbleEmoji(_objectSpread({\n emoji: emoji,\n data: _this3.data\n }, emojiProps)));\n })), emojis && !emojis.length && React.createElement(NotFound, {\n i18n: i18n,\n notFound: notFound,\n notFoundEmoji: notFoundEmoji,\n data: this.data,\n emojiProps: emojiProps\n }));\n }\n }]);\n\n return Category;\n}(React.Component);\n\nexport { Category as default };\nCategory.propTypes\n/* remove-proptypes */\n= {\n emojis: PropTypes.array,\n hasStickyPosition: PropTypes.bool,\n name: PropTypes.string.isRequired,\n \"native\": PropTypes.bool.isRequired,\n perLine: PropTypes.number.isRequired,\n emojiProps: PropTypes.object.isRequired,\n recent: PropTypes.arrayOf(PropTypes.string),\n notFound: PropTypes.func,\n notFoundEmoji: PropTypes.string.isRequired\n};\nCategory.defaultProps = {\n emojis: [],\n hasStickyPosition: true\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nvar Skins =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Skins, _React$PureComponent);\n\n function Skins(props) {\n var _this;\n\n _classCallCheck(this, Skins);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Skins).call(this, props));\n _this.state = {\n opened: false\n };\n return _this;\n }\n\n _createClass(Skins, [{\n key: \"handleClick\",\n value: function handleClick(e) {\n var skin = parseInt(e.currentTarget.getAttribute('data-skin'));\n var onChange = this.props.onChange;\n\n if (!this.state.opened) {\n this.setState({\n opened: true\n });\n } else {\n this.setState({\n opened: false\n });\n\n if (skin != this.props.skin) {\n onChange(skin);\n }\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n return null;\n }\n }]);\n\n return Skins;\n}(React.PureComponent);\n\nexport { Skins as default };\nSkins.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired\n};\nSkins.defaultProps = {\n onChange: function onChange() {}\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport Skins from './skins';\n\nvar SkinsEmoji =\n/*#__PURE__*/\nfunction (_Skins) {\n _inherits(SkinsEmoji, _Skins);\n\n function SkinsEmoji(props) {\n var _this;\n\n _classCallCheck(this, SkinsEmoji);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SkinsEmoji).call(this, props));\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(SkinsEmoji, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n skin = _this$props.skin,\n emojiProps = _this$props.emojiProps,\n data = _this$props.data,\n skinEmoji = _this$props.skinEmoji,\n i18n = _this$props.i18n;\n var opened = this.state.opened;\n var skinToneNodes = [];\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n var selected = skinTone === skin;\n skinToneNodes.push(React.createElement(\"span\", {\n key: \"skin-tone-\".concat(skinTone),\n className: \"emoji-mart-skin-swatch custom\".concat(selected ? ' selected' : '')\n }, React.createElement(\"span\", {\n onClick: this.handleClick,\n \"data-skin\": skinTone,\n className: \"emoji-mart-skin-tone-\".concat(skinTone)\n }, NimbleEmoji({\n emoji: skinEmoji,\n data: data,\n skin: skinTone,\n backgroundImageFn: emojiProps.backgroundImageFn,\n \"native\": emojiProps[\"native\"],\n set: emojiProps.set,\n sheetSize: emojiProps.sheetSize,\n size: 23\n }))));\n }\n\n return React.createElement(\"div\", {\n className: \"emoji-mart-skin-swatches custom\".concat(opened ? ' opened' : '')\n }, React.createElement(\"div\", {\n className: \"emoji-mart-skin-text\".concat(opened ? ' opened' : '')\n }, i18n.skintext), skinToneNodes);\n }\n }]);\n\n return SkinsEmoji;\n}(Skins);\n\nexport { SkinsEmoji as default };\nSkinsEmoji.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired,\n emojiProps: PropTypes.object.isRequired,\n skinTone: PropTypes.number,\n skinEmoji: PropTypes.string.isRequired,\n i18n: PropTypes.object\n};\nSkinsEmoji.defaultProps = {\n onChange: function onChange() {},\n skinTone: null\n};","import _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport Skins from './skins';\n\nvar SkinsDot =\n/*#__PURE__*/\nfunction (_Skins) {\n _inherits(SkinsDot, _Skins);\n\n function SkinsDot(props) {\n var _this;\n\n _classCallCheck(this, SkinsDot);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(SkinsDot).call(this, props));\n _this.handleClick = _this.handleClick.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(SkinsDot, [{\n key: \"handleKeyDown\",\n value: function handleKeyDown(event) {\n // if either enter or space is pressed, then execute\n if (event.keyCode === 13 || event.keyCode === 32) {\n event.preventDefault();\n this.handleClick(event);\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n skin = _this$props.skin,\n i18n = _this$props.i18n;\n var opened = this.state.opened;\n var skinToneNodes = [];\n\n for (var skinTone = 1; skinTone <= 6; skinTone++) {\n var selected = skinTone === skin;\n var visible = opened || selected;\n skinToneNodes.push(React.createElement(\"span\", _extends({\n key: \"skin-tone-\".concat(skinTone),\n className: \"emoji-mart-skin-swatch\".concat(selected ? ' selected' : ''),\n \"aria-label\": i18n.skintones[skinTone],\n \"aria-hidden\": !visible\n }, opened ? {\n role: 'menuitem'\n } : {}), React.createElement(\"span\", _extends({\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown,\n role: \"button\"\n }, selected ? {\n 'aria-haspopup': true,\n 'aria-expanded': !!opened\n } : {}, opened ? {\n 'aria-pressed': !!selected\n } : {}, {\n tabIndex: visible ? '0' : '',\n \"aria-label\": i18n.skintones[skinTone],\n title: i18n.skintones[skinTone],\n \"data-skin\": skinTone,\n className: \"emoji-mart-skin emoji-mart-skin-tone-\".concat(skinTone)\n }))));\n }\n\n return React.createElement(\"section\", {\n className: \"emoji-mart-skin-swatches\".concat(opened ? ' opened' : ''),\n \"aria-label\": i18n.skintext\n }, React.createElement(\"div\", opened ? {\n role: 'menubar'\n } : {}, skinToneNodes));\n }\n }]);\n\n return SkinsDot;\n}(Skins);\n\nexport { SkinsDot as default };\nSkinsDot.propTypes\n/* remove-proptypes */\n= {\n onChange: PropTypes.func,\n skin: PropTypes.number.isRequired,\n i18n: PropTypes.object\n};\nSkinsDot.defaultProps = {\n onChange: function onChange() {}\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { getData } from '../utils';\nimport NimbleEmoji from './emoji/nimble-emoji';\nimport SkinsEmoji from './skins-emoji';\nimport SkinsDot from './skins-dot';\n\nvar Preview =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Preview, _React$PureComponent);\n\n function Preview(props) {\n var _this;\n\n _classCallCheck(this, Preview);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Preview).call(this, props));\n _this.data = props.data;\n _this.state = {\n emoji: null\n };\n return _this;\n }\n\n _createClass(Preview, [{\n key: \"render\",\n value: function render() {\n var emoji = this.state.emoji,\n _this$props = this.props,\n emojiProps = _this$props.emojiProps,\n skinsProps = _this$props.skinsProps,\n showSkinTones = _this$props.showSkinTones,\n title = _this$props.title,\n idleEmoji = _this$props.emoji,\n i18n = _this$props.i18n,\n showPreview = _this$props.showPreview;\n\n if (emoji && showPreview) {\n var emojiData = getData(emoji, null, null, this.data),\n _emojiData$emoticons = emojiData.emoticons,\n emoticons = _emojiData$emoticons === void 0 ? [] : _emojiData$emoticons,\n knownEmoticons = [],\n listedEmoticons = [];\n emoticons.forEach(function (emoticon) {\n if (knownEmoticons.indexOf(emoticon.toLowerCase()) >= 0) {\n return;\n }\n\n knownEmoticons.push(emoticon.toLowerCase());\n listedEmoticons.push(emoticon);\n });\n return React.createElement(\"div\", {\n className: \"emoji-mart-preview\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoji\",\n \"aria-hidden\": \"true\"\n }, NimbleEmoji(_objectSpread({\n key: emoji.id,\n emoji: emoji,\n data: this.data\n }, emojiProps))), React.createElement(\"div\", {\n className: \"emoji-mart-preview-data\",\n \"aria-hidden\": \"true\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-name\"\n }, emoji.name), React.createElement(\"div\", {\n className: \"emoji-mart-preview-shortnames\"\n }, emojiData.short_names.map(function (short_name) {\n return React.createElement(\"span\", {\n key: short_name,\n className: \"emoji-mart-preview-shortname\"\n }, \":\", short_name, \":\");\n })), React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoticons\"\n }, listedEmoticons.map(function (emoticon) {\n return React.createElement(\"span\", {\n key: emoticon,\n className: \"emoji-mart-preview-emoticon\"\n }, emoticon);\n }))));\n } else {\n return React.createElement(\"div\", {\n className: \"emoji-mart-preview\"\n }, React.createElement(\"div\", {\n className: \"emoji-mart-preview-emoji\",\n \"aria-hidden\": \"true\"\n }, idleEmoji && idleEmoji.length && NimbleEmoji(_objectSpread({\n emoji: idleEmoji,\n data: this.data\n }, emojiProps))), React.createElement(\"div\", {\n className: \"emoji-mart-preview-data\",\n \"aria-hidden\": \"true\"\n }, React.createElement(\"span\", {\n className: \"emoji-mart-title-label\"\n }, title)), showSkinTones && React.createElement(\"div\", {\n className: \"emoji-mart-preview-skins\".concat(skinsProps.skinEmoji ? ' custom' : '')\n }, skinsProps.skinEmoji ? React.createElement(SkinsEmoji, {\n skin: skinsProps.skin,\n emojiProps: emojiProps,\n data: this.data,\n skinEmoji: skinsProps.skinEmoji,\n i18n: i18n,\n onChange: skinsProps.onChange\n }) : React.createElement(SkinsDot, {\n skin: skinsProps.skin,\n i18n: i18n,\n onChange: skinsProps.onChange\n })));\n }\n }\n }]);\n\n return Preview;\n}(React.PureComponent);\n\nexport { Preview as default };\nPreview.propTypes\n/* remove-proptypes */\n= {\n showSkinTones: PropTypes.bool,\n title: PropTypes.string.isRequired,\n emoji: PropTypes.string.isRequired,\n emojiProps: PropTypes.object.isRequired,\n skinsProps: PropTypes.object.isRequired\n};\nPreview.defaultProps = {\n showSkinTones: true,\n onChange: function onChange() {}\n};","import _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { search as icons } from '../svgs';\nimport NimbleEmojiIndex from '../utils/emoji-index/nimble-emoji-index';\nimport { throttleIdleTask } from '../utils/index';\nvar id = 0;\n\nvar Search =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Search, _React$PureComponent);\n\n function Search(props) {\n var _this;\n\n _classCallCheck(this, Search);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Search).call(this, props));\n _this.state = {\n icon: icons.search,\n isSearching: false,\n id: ++id\n };\n _this.data = props.data;\n _this.emojiIndex = new NimbleEmojiIndex(_this.data);\n _this.setRef = _this.setRef.bind(_assertThisInitialized(_this));\n _this.clear = _this.clear.bind(_assertThisInitialized(_this));\n _this.handleKeyUp = _this.handleKeyUp.bind(_assertThisInitialized(_this)); // throttle keyboard input so that typing isn't delayed\n\n _this.handleChange = throttleIdleTask(_this.handleChange.bind(_assertThisInitialized(_this)));\n return _this;\n }\n\n _createClass(Search, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n // in some cases (e.g. preact) the input may already be pre-populated\n // this.input is undefined in Jest tests\n if (this.input && this.input.value) {\n this.search(this.input.value);\n }\n }\n }, {\n key: \"search\",\n value: function search(value) {\n if (value == '') this.setState({\n icon: icons.search,\n isSearching: false\n });else this.setState({\n icon: icons[\"delete\"],\n isSearching: true\n });\n this.props.onSearch(this.emojiIndex.search(value, {\n emojisToShowFilter: this.props.emojisToShowFilter,\n maxResults: this.props.maxResults,\n include: this.props.include,\n exclude: this.props.exclude,\n custom: this.props.custom\n }));\n }\n }, {\n key: \"clear\",\n value: function clear() {\n if (this.input.value == '') return;\n this.input.value = '';\n this.input.focus();\n this.search('');\n }\n }, {\n key: \"handleChange\",\n value: function handleChange() {\n if (this.input) {\n this.search(this.input.value);\n }\n }\n }, {\n key: \"handleKeyUp\",\n value: function handleKeyUp(e) {\n if (e.keyCode === 13) {\n this.clear();\n }\n }\n }, {\n key: \"setRef\",\n value: function setRef(c) {\n this.input = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n i18n = _this$props.i18n,\n autoFocus = _this$props.autoFocus;\n var _this$state = this.state,\n icon = _this$state.icon,\n isSearching = _this$state.isSearching,\n id = _this$state.id;\n var inputId = \"emoji-mart-search-\".concat(id);\n return React.createElement(\"section\", {\n className: \"emoji-mart-search\",\n \"aria-label\": i18n.search\n }, React.createElement(\"input\", {\n id: inputId,\n ref: this.setRef,\n type: \"search\",\n onChange: this.handleChange,\n placeholder: i18n.search,\n autoFocus: autoFocus\n }), React.createElement(\"label\", {\n className: \"emoji-mart-sr-only\",\n htmlFor: inputId\n }, i18n.search), React.createElement(\"button\", {\n className: \"emoji-mart-search-icon\",\n onClick: this.clear,\n onKeyUp: this.handleKeyUp,\n \"aria-label\": i18n.clear,\n disabled: !isSearching\n }, icon()));\n }\n }]);\n\n return Search;\n}(React.PureComponent);\n\nexport { Search as default };\nSearch.propTypes\n/* remove-proptypes */\n= {\n onSearch: PropTypes.func,\n maxResults: PropTypes.number,\n emojisToShowFilter: PropTypes.func,\n autoFocus: PropTypes.bool\n};\nSearch.defaultProps = {\n onSearch: function onSearch() {},\n maxResults: 75,\n emojisToShowFilter: null,\n autoFocus: false\n};","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport * as icons from '../../svgs';\nimport store from '../../utils/store';\nimport frequently from '../../utils/frequently';\nimport { deepMerge, measureScrollbar, getSanitizedData } from '../../utils';\nimport { uncompress } from '../../utils/data';\nimport { PickerPropTypes } from '../../utils/shared-props';\nimport Anchors from '../anchors';\nimport Category from '../category';\nimport Preview from '../preview';\nimport Search from '../search';\nimport { PickerDefaultProps } from '../../utils/shared-default-props';\nvar I18N = {\n search: 'Search',\n clear: 'Clear',\n // Accessible label on \"clear\" button\n notfound: 'No Emoji Found',\n skintext: 'Choose your default skin tone',\n categories: {\n search: 'Search Results',\n recent: 'Frequently Used',\n people: 'Smileys & People',\n nature: 'Animals & Nature',\n foods: 'Food & Drink',\n activity: 'Activity',\n places: 'Travel & Places',\n objects: 'Objects',\n symbols: 'Symbols',\n flags: 'Flags',\n custom: 'Custom'\n },\n categorieslabel: 'Emoji categories',\n // Accessible title for the list of categories\n skintones: {\n 1: 'Default Skin Tone',\n 2: 'Light Skin Tone',\n 3: 'Medium-Light Skin Tone',\n 4: 'Medium Skin Tone',\n 5: 'Medium-Dark Skin Tone',\n 6: 'Dark Skin Tone'\n }\n};\n\nvar NimblePicker =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(NimblePicker, _React$PureComponent);\n\n function NimblePicker(props) {\n var _this;\n\n _classCallCheck(this, NimblePicker);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NimblePicker).call(this, props));\n _this.CUSTOM = [];\n _this.RECENT_CATEGORY = {\n id: 'recent',\n name: 'Recent',\n emojis: null\n };\n _this.SEARCH_CATEGORY = {\n id: 'search',\n name: 'Search',\n emojis: null,\n anchor: false\n };\n\n if (props.data.compressed) {\n uncompress(props.data);\n }\n\n _this.data = props.data;\n _this.i18n = deepMerge(I18N, props.i18n);\n _this.icons = deepMerge(icons, props.icons);\n _this.state = {\n firstRender: true\n };\n _this.categories = [];\n var allCategories = [].concat(_this.data.categories);\n\n if (props.custom.length > 0) {\n var customCategories = {};\n var customCategoriesCreated = 0;\n props.custom.forEach(function (emoji) {\n if (!customCategories[emoji.customCategory]) {\n customCategories[emoji.customCategory] = {\n id: emoji.customCategory ? \"custom-\".concat(emoji.customCategory) : 'custom',\n name: emoji.customCategory || 'Custom',\n emojis: [],\n anchor: customCategoriesCreated === 0\n };\n customCategoriesCreated++;\n }\n\n var category = customCategories[emoji.customCategory];\n\n var customEmoji = _objectSpread({}, emoji, {\n // `<Category />` expects emoji to have an `id`.\n id: emoji.short_names[0],\n custom: true\n });\n\n category.emojis.push(customEmoji);\n\n _this.CUSTOM.push(customEmoji);\n });\n allCategories = allCategories.concat(Object.keys(customCategories).map(function (key) {\n return customCategories[key];\n }));\n }\n\n _this.hideRecent = true;\n\n if (props.include != undefined) {\n allCategories.sort(function (a, b) {\n if (props.include.indexOf(a.id) > props.include.indexOf(b.id)) {\n return 1;\n }\n\n return -1;\n });\n }\n\n for (var categoryIndex = 0; categoryIndex < allCategories.length; categoryIndex++) {\n var category = allCategories[categoryIndex];\n var isIncluded = props.include && props.include.length ? props.include.indexOf(category.id) > -1 : true;\n var isExcluded = props.exclude && props.exclude.length ? props.exclude.indexOf(category.id) > -1 : false;\n\n if (!isIncluded || isExcluded) {\n continue;\n }\n\n if (props.emojisToShowFilter) {\n var newEmojis = [];\n var emojis = category.emojis;\n\n for (var emojiIndex = 0; emojiIndex < emojis.length; emojiIndex++) {\n var emoji = emojis[emojiIndex];\n\n if (props.emojisToShowFilter(_this.data.emojis[emoji] || emoji)) {\n newEmojis.push(emoji);\n }\n }\n\n if (newEmojis.length) {\n var newCategory = {\n emojis: newEmojis,\n name: category.name,\n id: category.id\n };\n\n _this.categories.push(newCategory);\n }\n } else {\n _this.categories.push(category);\n }\n }\n\n var includeRecent = props.include && props.include.length ? props.include.indexOf(_this.RECENT_CATEGORY.id) > -1 : true;\n var excludeRecent = props.exclude && props.exclude.length ? props.exclude.indexOf(_this.RECENT_CATEGORY.id) > -1 : false;\n\n if (includeRecent && !excludeRecent) {\n _this.hideRecent = false;\n\n _this.categories.unshift(_this.RECENT_CATEGORY);\n }\n\n if (_this.categories[0]) {\n _this.categories[0].first = true;\n }\n\n _this.categories.unshift(_this.SEARCH_CATEGORY);\n\n _this.setAnchorsRef = _this.setAnchorsRef.bind(_assertThisInitialized(_this));\n _this.handleAnchorClick = _this.handleAnchorClick.bind(_assertThisInitialized(_this));\n _this.setSearchRef = _this.setSearchRef.bind(_assertThisInitialized(_this));\n _this.handleSearch = _this.handleSearch.bind(_assertThisInitialized(_this));\n _this.setScrollRef = _this.setScrollRef.bind(_assertThisInitialized(_this));\n _this.handleScroll = _this.handleScroll.bind(_assertThisInitialized(_this));\n _this.handleScrollPaint = _this.handleScrollPaint.bind(_assertThisInitialized(_this));\n _this.handleEmojiOver = _this.handleEmojiOver.bind(_assertThisInitialized(_this));\n _this.handleEmojiLeave = _this.handleEmojiLeave.bind(_assertThisInitialized(_this));\n _this.handleEmojiClick = _this.handleEmojiClick.bind(_assertThisInitialized(_this));\n _this.handleEmojiSelect = _this.handleEmojiSelect.bind(_assertThisInitialized(_this));\n _this.setPreviewRef = _this.setPreviewRef.bind(_assertThisInitialized(_this));\n _this.handleSkinChange = _this.handleSkinChange.bind(_assertThisInitialized(_this));\n _this.handleKeyDown = _this.handleKeyDown.bind(_assertThisInitialized(_this));\n _this.handleDarkMatchMediaChange = _this.handleDarkMatchMediaChange.bind(_assertThisInitialized(_this));\n return _this;\n }\n\n _createClass(NimblePicker, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this2 = this;\n\n if (this.state.firstRender) {\n this.testStickyPosition();\n this.firstRenderTimeout = setTimeout(function () {\n _this2.setState({\n firstRender: false\n });\n }, 60);\n }\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate() {\n this.updateCategoriesSize();\n this.handleScroll();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.SEARCH_CATEGORY.emojis = null;\n clearTimeout(this.leaveTimeout);\n clearTimeout(this.firstRenderTimeout);\n\n if (this.darkMatchMedia) {\n this.darkMatchMedia.removeListener(this.handleDarkMatchMediaChange);\n }\n }\n }, {\n key: \"testStickyPosition\",\n value: function testStickyPosition() {\n var stickyTestElement = document.createElement('div');\n var prefixes = ['', '-webkit-', '-ms-', '-moz-', '-o-'];\n prefixes.forEach(function (prefix) {\n return stickyTestElement.style.position = \"\".concat(prefix, \"sticky\");\n });\n this.hasStickyPosition = !!stickyTestElement.style.position.length;\n }\n }, {\n key: \"getPreferredTheme\",\n value: function getPreferredTheme() {\n if (this.props.theme != 'auto') return this.props.theme;\n if (this.state.theme) return this.state.theme;\n if (typeof matchMedia !== 'function') return PickerDefaultProps.theme;\n\n if (!this.darkMatchMedia) {\n this.darkMatchMedia = matchMedia('(prefers-color-scheme: dark)');\n this.darkMatchMedia.addListener(this.handleDarkMatchMediaChange);\n }\n\n if (this.darkMatchMedia.media.match(/^not/)) return PickerDefaultProps.theme;\n return this.darkMatchMedia.matches ? 'dark' : 'light';\n }\n }, {\n key: \"handleDarkMatchMediaChange\",\n value: function handleDarkMatchMediaChange() {\n this.setState({\n theme: this.darkMatchMedia.matches ? 'dark' : 'light'\n });\n }\n }, {\n key: \"handleEmojiOver\",\n value: function handleEmojiOver(emoji) {\n var preview = this.preview;\n\n if (!preview) {\n return;\n } // Use Array.prototype.find() when it is more widely supported.\n\n\n var emojiData = this.CUSTOM.filter(function (customEmoji) {\n return customEmoji.id === emoji.id;\n })[0];\n\n for (var key in emojiData) {\n if (emojiData.hasOwnProperty(key)) {\n emoji[key] = emojiData[key];\n }\n }\n\n preview.setState({\n emoji: emoji\n });\n clearTimeout(this.leaveTimeout);\n }\n }, {\n key: \"handleEmojiLeave\",\n value: function handleEmojiLeave(emoji) {\n var preview = this.preview;\n\n if (!preview) {\n return;\n }\n\n this.leaveTimeout = setTimeout(function () {\n preview.setState({\n emoji: null\n });\n }, 16);\n }\n }, {\n key: \"handleEmojiClick\",\n value: function handleEmojiClick(emoji, e) {\n this.props.onClick(emoji, e);\n this.handleEmojiSelect(emoji);\n }\n }, {\n key: \"handleEmojiSelect\",\n value: function handleEmojiSelect(emoji) {\n var _this3 = this;\n\n this.props.onSelect(emoji);\n if (!this.hideRecent && !this.props.recent) frequently.add(emoji);\n var component = this.categoryRefs['category-1'];\n\n if (component) {\n var maxMargin = component.maxMargin;\n\n if (this.props.enableFrequentEmojiSort) {\n component.forceUpdate();\n }\n\n requestAnimationFrame(function () {\n if (!_this3.scroll) return;\n component.memoizeSize();\n if (maxMargin == component.maxMargin) return;\n\n _this3.updateCategoriesSize();\n\n _this3.handleScrollPaint();\n\n if (_this3.SEARCH_CATEGORY.emojis) {\n component.updateDisplay('none');\n }\n });\n }\n }\n }, {\n key: \"handleScroll\",\n value: function handleScroll() {\n if (!this.waitingForPaint) {\n this.waitingForPaint = true;\n requestAnimationFrame(this.handleScrollPaint);\n }\n }\n }, {\n key: \"handleScrollPaint\",\n value: function handleScrollPaint() {\n this.waitingForPaint = false;\n\n if (!this.scroll) {\n return;\n }\n\n var activeCategory = null;\n\n if (this.SEARCH_CATEGORY.emojis) {\n activeCategory = this.SEARCH_CATEGORY;\n } else {\n var target = this.scroll,\n scrollTop = target.scrollTop,\n scrollingDown = scrollTop > (this.scrollTop || 0),\n minTop = 0;\n\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var ii = scrollingDown ? this.categories.length - 1 - i : i,\n category = this.categories[ii],\n component = this.categoryRefs[\"category-\".concat(ii)];\n\n if (component) {\n var active = component.handleScroll(scrollTop);\n\n if (!minTop || component.top < minTop) {\n if (component.top > 0) {\n minTop = component.top;\n }\n }\n\n if (active && !activeCategory) {\n activeCategory = category;\n }\n }\n }\n\n if (scrollTop < minTop) {\n activeCategory = this.categories.filter(function (category) {\n return !(category.anchor === false);\n })[0];\n } else if (scrollTop + this.clientHeight >= this.scrollHeight) {\n activeCategory = this.categories[this.categories.length - 1];\n }\n }\n\n if (activeCategory) {\n var anchors = this.anchors,\n _activeCategory = activeCategory,\n categoryName = _activeCategory.name;\n\n if (anchors.state.selected != categoryName) {\n anchors.setState({\n selected: categoryName\n });\n }\n }\n\n this.scrollTop = scrollTop;\n }\n }, {\n key: \"handleSearch\",\n value: function handleSearch(emojis) {\n this.SEARCH_CATEGORY.emojis = emojis;\n\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var component = this.categoryRefs[\"category-\".concat(i)];\n\n if (component && component.props.name != 'Search') {\n var display = emojis ? 'none' : 'inherit';\n component.updateDisplay(display);\n }\n }\n\n this.forceUpdate();\n\n if (this.scroll) {\n this.scroll.scrollTop = 0;\n }\n\n this.handleScroll();\n }\n }, {\n key: \"handleAnchorClick\",\n value: function handleAnchorClick(category, i) {\n var component = this.categoryRefs[\"category-\".concat(i)],\n scroll = this.scroll,\n anchors = this.anchors,\n scrollToComponent = null;\n\n scrollToComponent = function scrollToComponent() {\n if (component) {\n var top = component.top;\n\n if (category.first) {\n top = 0;\n } else {\n top += 1;\n }\n\n scroll.scrollTop = top;\n }\n };\n\n if (this.SEARCH_CATEGORY.emojis) {\n this.handleSearch(null);\n this.search.clear();\n requestAnimationFrame(scrollToComponent);\n } else {\n scrollToComponent();\n }\n }\n }, {\n key: \"handleSkinChange\",\n value: function handleSkinChange(skin) {\n var newState = {\n skin: skin\n },\n onSkinChange = this.props.onSkinChange;\n this.setState(newState);\n store.update(newState);\n onSkinChange(skin);\n }\n }, {\n key: \"handleKeyDown\",\n value: function handleKeyDown(e) {\n var handled = false;\n\n switch (e.keyCode) {\n case 13:\n var emoji;\n\n if (this.SEARCH_CATEGORY.emojis && this.SEARCH_CATEGORY.emojis.length && (emoji = getSanitizedData(this.SEARCH_CATEGORY.emojis[0], this.state.skin, this.props.set, this.props.data))) {\n this.handleEmojiSelect(emoji);\n handled = true;\n }\n\n break;\n }\n\n if (handled) {\n e.preventDefault();\n }\n }\n }, {\n key: \"updateCategoriesSize\",\n value: function updateCategoriesSize() {\n for (var i = 0, l = this.categories.length; i < l; i++) {\n var component = this.categoryRefs[\"category-\".concat(i)];\n if (component) component.memoizeSize();\n }\n\n if (this.scroll) {\n var target = this.scroll;\n this.scrollHeight = target.scrollHeight;\n this.clientHeight = target.clientHeight;\n }\n }\n }, {\n key: \"getCategories\",\n value: function getCategories() {\n return this.state.firstRender ? this.categories.slice(0, 3) : this.categories;\n }\n }, {\n key: \"setAnchorsRef\",\n value: function setAnchorsRef(c) {\n this.anchors = c;\n }\n }, {\n key: \"setSearchRef\",\n value: function setSearchRef(c) {\n this.search = c;\n }\n }, {\n key: \"setPreviewRef\",\n value: function setPreviewRef(c) {\n this.preview = c;\n }\n }, {\n key: \"setScrollRef\",\n value: function setScrollRef(c) {\n this.scroll = c;\n }\n }, {\n key: \"setCategoryRef\",\n value: function setCategoryRef(name, c) {\n if (!this.categoryRefs) {\n this.categoryRefs = {};\n }\n\n this.categoryRefs[name] = c;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this4 = this;\n\n var _this$props = this.props,\n perLine = _this$props.perLine,\n emojiSize = _this$props.emojiSize,\n set = _this$props.set,\n sheetSize = _this$props.sheetSize,\n sheetColumns = _this$props.sheetColumns,\n sheetRows = _this$props.sheetRows,\n style = _this$props.style,\n title = _this$props.title,\n emoji = _this$props.emoji,\n color = _this$props.color,\n _native = _this$props[\"native\"],\n backgroundImageFn = _this$props.backgroundImageFn,\n emojisToShowFilter = _this$props.emojisToShowFilter,\n showPreview = _this$props.showPreview,\n showSkinTones = _this$props.showSkinTones,\n emojiTooltip = _this$props.emojiTooltip,\n useButton = _this$props.useButton,\n include = _this$props.include,\n exclude = _this$props.exclude,\n recent = _this$props.recent,\n autoFocus = _this$props.autoFocus,\n skinEmoji = _this$props.skinEmoji,\n notFound = _this$props.notFound,\n notFoundEmoji = _this$props.notFoundEmoji;\n var width = perLine * (emojiSize + 12) + 12 + 2 + measureScrollbar();\n var theme = this.getPreferredTheme();\n var skin = this.props.skin || this.state.skin || store.get('skin') || this.props.defaultSkin;\n return React.createElement(\"section\", {\n style: _objectSpread({\n width: width\n }, style),\n className: \"emoji-mart emoji-mart-\".concat(theme),\n \"aria-label\": title,\n onKeyDown: this.handleKeyDown\n }, React.createElement(\"div\", {\n className: \"emoji-mart-bar\"\n }, React.createElement(Anchors, {\n ref: this.setAnchorsRef,\n data: this.data,\n i18n: this.i18n,\n color: color,\n categories: this.categories,\n onAnchorClick: this.handleAnchorClick,\n icons: this.icons\n })), React.createElement(Search, {\n ref: this.setSearchRef,\n onSearch: this.handleSearch,\n data: this.data,\n i18n: this.i18n,\n emojisToShowFilter: emojisToShowFilter,\n include: include,\n exclude: exclude,\n custom: this.CUSTOM,\n autoFocus: autoFocus\n }), React.createElement(\"div\", {\n ref: this.setScrollRef,\n className: \"emoji-mart-scroll\",\n onScroll: this.handleScroll\n }, this.getCategories().map(function (category, i) {\n return React.createElement(Category, {\n ref: _this4.setCategoryRef.bind(_this4, \"category-\".concat(i)),\n key: category.name,\n id: category.id,\n name: category.name,\n emojis: category.emojis,\n perLine: perLine,\n \"native\": _native,\n hasStickyPosition: _this4.hasStickyPosition,\n data: _this4.data,\n i18n: _this4.i18n,\n recent: category.id == _this4.RECENT_CATEGORY.id ? recent : undefined,\n custom: category.id == _this4.RECENT_CATEGORY.id ? _this4.CUSTOM : undefined,\n emojiProps: {\n \"native\": _native,\n skin: skin,\n size: emojiSize,\n set: set,\n sheetSize: sheetSize,\n sheetColumns: sheetColumns,\n sheetRows: sheetRows,\n forceSize: _native,\n tooltip: emojiTooltip,\n backgroundImageFn: backgroundImageFn,\n useButton: useButton,\n onOver: _this4.handleEmojiOver,\n onLeave: _this4.handleEmojiLeave,\n onClick: _this4.handleEmojiClick\n },\n notFound: notFound,\n notFoundEmoji: notFoundEmoji\n });\n })), (showPreview || showSkinTones) && React.createElement(\"div\", {\n className: \"emoji-mart-bar\"\n }, React.createElement(Preview, {\n ref: this.setPreviewRef,\n data: this.data,\n title: title,\n emoji: emoji,\n showSkinTones: showSkinTones,\n showPreview: showPreview,\n emojiProps: {\n \"native\": _native,\n size: 38,\n skin: skin,\n set: set,\n sheetSize: sheetSize,\n sheetColumns: sheetColumns,\n sheetRows: sheetRows,\n backgroundImageFn: backgroundImageFn\n },\n skinsProps: {\n skin: skin,\n onChange: this.handleSkinChange,\n skinEmoji: skinEmoji\n },\n i18n: this.i18n\n })));\n }\n }]);\n\n return NimblePicker;\n}(React.PureComponent);\n\nexport { NimblePicker as default };\nNimblePicker.propTypes\n/* remove-proptypes */\n= _objectSpread({}, PickerPropTypes, {\n data: PropTypes.object.isRequired\n});\nNimblePicker.defaultProps = _objectSpread({}, PickerDefaultProps);","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport _classCallCheck from \"@babel/runtime/helpers/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime/helpers/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime/helpers/getPrototypeOf\";\nimport _inherits from \"@babel/runtime/helpers/inherits\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport data from '../../../data/all.json';\nimport NimblePicker from './nimble-picker';\nimport { PickerPropTypes } from '../../utils/shared-props';\nimport { PickerDefaultProps } from '../../utils/shared-default-props';\n\nvar Picker =\n/*#__PURE__*/\nfunction (_React$PureComponent) {\n _inherits(Picker, _React$PureComponent);\n\n function Picker() {\n _classCallCheck(this, Picker);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(Picker).apply(this, arguments));\n }\n\n _createClass(Picker, [{\n key: \"render\",\n value: function render() {\n return React.createElement(NimblePicker, _extends({}, this.props, this.state));\n }\n }]);\n\n return Picker;\n}(React.PureComponent);\n\nexport { Picker as default };\nPicker.propTypes\n/* remove-proptypes */\n= PickerPropTypes;\nPicker.defaultProps = _objectSpread({}, PickerDefaultProps, {\n data: data\n});","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport React from 'react';\nimport data from '../../../data/all.json';\nimport NimbleEmoji from './nimble-emoji';\nimport { EmojiPropTypes } from '../../utils/shared-props';\nimport { EmojiDefaultProps } from '../../utils/shared-default-props';\n\nvar Emoji = function Emoji(props) {\n for (var k in Emoji.defaultProps) {\n if (props[k] == undefined && Emoji.defaultProps[k] != undefined) {\n props[k] = Emoji.defaultProps[k];\n }\n }\n\n return NimbleEmoji(_objectSpread({}, props));\n};\n\nEmoji.propTypes\n/* remove-proptypes */\n= EmojiPropTypes;\nEmoji.defaultProps = _objectSpread({}, EmojiDefaultProps, {\n data: data\n});\nexport default Emoji;","// vendors\nimport React, { memo, useMemo } from \"react\";\nimport { Picker } from \"emoji-mart\";\nimport t from \"prop-types\";\nimport \"emoji-mart/css/emoji-mart.css\";\n\n/**\n * @typedef {object} Props\n * @property {'light' | 'dark' | 'auto'} theme\n * @property {function(import(\"../types/types\").EmojiMartItem): void} onSelectEmoji\n * @property {boolean} disableRecent\n * @property {object[]} customEmojis\n */\n\n/**\n * Emoji Picker Component\n * @param {Props} props\n * @return {React.FC}\n */\nfunction EmojiPicker(props) {\n const {\n theme,\n onSelectEmoji,\n disableRecent,\n customEmojis\n } = props;\n\n const excludePicker = useMemo(() => {\n /** @type import(\"emoji-mart\").CategoryName[] */\n const exclude = [];\n\n if (disableRecent) {\n exclude.push(\"recent\");\n }\n\n return exclude;\n }, [disableRecent]);\n\n return (\n <Picker\n theme={theme}\n set=\"apple\"\n showPreview={false}\n showSkinTones={false}\n onSelect={onSelectEmoji}\n exclude={excludePicker}\n custom={customEmojis}\n />\n );\n}\n\nEmojiPicker.propTypes = {\n theme: t.oneOf(['light', 'dark', 'auto']),\n onSelectEmoji: t.func,\n disableRecent: t.bool,\n customEmojis: t.array\n};\n\nexport default memo(EmojiPicker);\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useState } from \"react\";\nimport {\n getImageEmoji,\n replaceAllTextEmojis,\n replaceAllTextEmojiToString\n} from \"../utils/emoji-utils\";\n\nimport EmojiPicker from \"./emoji-picker\";\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n/**\n * @typedef {import('../types/types').PolluteFn} PolluteFn\n */\n\n/**\n * @typedef {Object} Props\n * @property {'light' | 'dark' | 'auto'} theme\n * @property {boolean} keepOpened\n * @property {boolean} disableRecent\n * @property {object[]=} customEmojis\n * @property {(fn: SanitizeFn) => void} addSanitizeFn\n * @property {(fn: PolluteFn) => void} addPolluteFn\n * @property {(html: string) => void} appendContent\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.FC<Props>} */\nconst EmojiPickerWrapper = (props) => {\n const {\n theme,\n keepOpened,\n disableRecent,\n customEmojis,\n addSanitizeFn,\n addPolluteFn,\n appendContent,\n } = props;\n\n const [showPicker, setShowPicker] = useState(false);\n\n useEffect(() => {\n addSanitizeFn(replaceAllTextEmojiToString);\n }, [addSanitizeFn]);\n\n useEffect(() => {\n addPolluteFn(replaceAllTextEmojis);\n }, [addPolluteFn]);\n\n useEffect(() => {\n /**\n *\n * @param {MouseEvent} event\n */\n function checkClickOutside(event) {\n /** @type {HTMLElement} */\n // @ts-ignore\n const element = event.target;\n\n if (\n element.classList.contains(\"react-input-emoji--button\") ||\n element.classList.contains(\"react-input-emoji--button--icon\")\n ) {\n return;\n }\n\n setShowPicker(false);\n }\n\n document.addEventListener(\"click\", checkClickOutside);\n\n return () => {\n document.removeEventListener(\"click\", checkClickOutside);\n };\n }, []);\n\n /**\n *\n * @param {React.MouseEvent} event\n */\n function toggleShowPicker(event) {\n event.stopPropagation();\n event.preventDefault();\n\n setShowPicker(currentShowPicker => !currentShowPicker);\n }\n\n // eslint-disable-next-line valid-jsdoc\n /**\n *\n * @param {import(\"../types/types\").EmojiMartItem} emoji\n */\n function handleSelectEmoji(emoji) {\n appendContent(getImageEmoji(emoji));\n\n if (!keepOpened) {\n setShowPicker(currentShowPicker => !currentShowPicker);\n }\n }\n\n return (\n <>\n <div className=\"react-emoji-picker--container\">\n {showPicker && (\n <div\n className=\"react-emoji-picker--wrapper\"\n onClick={evt => evt.stopPropagation()}\n >\n <div className=\"react-emoji-picker\">\n <EmojiPicker\n theme={theme}\n onSelectEmoji={handleSelectEmoji}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n />\n </div>\n </div>\n )}\n </div>\n <button\n type=\"button\"\n className={`react-input-emoji--button${showPicker ? \" react-input-emoji--button__show\" : \"\"\n }`}\n onClick={toggleShowPicker}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n className=\"react-input-emoji--button--icon\"\n >\n {/* eslint-disable-next-line max-len */}\n <path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\" />\n {/* eslint-disable-next-line max-len */}\n <path d=\"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\" />\n </svg>\n </button>\n </>\n );\n};\n\nexport default EmojiPickerWrapper;\n","// @ts-check\n\n/**\n *\n * @return {string | null}\n */\nexport function getTextFromAtToCaret() {\n const range = getRangeFromAtToCaret();\n\n if (!range) return null;\n\n const text = range.text.substring(range.begin, range.end);\n\n return text || null;\n}\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function deleteTextFromAtToCaret() {\n const range = getRangeFromAtToCaret();\n\n if (!range) return;\n\n // @ts-ignore\n range.element.deleteData(range.begin, range.end - range.begin);\n}\n\n/**\n *\n * @return {{begin: number, end: number, text: string, element: Node} | null}\n */\nfunction getRangeFromAtToCaret() {\n const elementWithFocus = getElementWithFocus();\n\n if (!elementWithFocus) {\n return null;\n }\n\n const { element, caretOffset } = elementWithFocus;\n const text = element.textContent;\n const lastAt = text.lastIndexOf(\"@\");\n\n if (\n lastAt === -1 ||\n lastAt >= caretOffset ||\n (lastAt !== 0 && text[lastAt - 1] !== \" \")\n ) {\n return null;\n }\n\n return { begin: lastAt, end: caretOffset, text, element };\n}\n\n/**\n *\n * @return {{element: Node, caretOffset: number}}\n */\nexport function getElementWithFocus() {\n const element = getSelectionStart();\n\n if (element === null) {\n return null;\n }\n\n let caretOffset = 0;\n if (typeof window.getSelection != \"undefined\") {\n const range = window.getSelection().getRangeAt(0);\n const preCaretRange = range.cloneRange();\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(range.endContainer, range.endOffset);\n caretOffset = preCaretRange.toString().length;\n } else if (\n // @ts-ignore\n typeof document.selection != \"undefined\" &&\n // @ts-ignore\n document.selection.type != \"Control\"\n ) {\n // @ts-ignore\n const textRange = document.selection.createRange();\n // @ts-ignore\n const preCaretTextRange = document.body.createTextRange();\n preCaretTextRange.moveToElementText(element);\n preCaretTextRange.setEndPoint(\"EndToEnd\", textRange);\n caretOffset = preCaretTextRange.text.length;\n }\n\n return { element, caretOffset };\n}\n\n/**\n *\n * @return {Node | null}\n */\nfunction getSelectionStart() {\n const node = document.getSelection().anchorNode;\n return node?.nodeType == 3 ? node : null;\n}\n","// @ts-check\nimport { useCallback, useState } from \"react\";\nimport {\n deleteTextFromAtToCaret,\n getElementWithFocus,\n getTextFromAtToCaret\n} from \"../utils/mention-utils\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MentionUser\n */\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * @param {(text: string) => Promise<MentionUser[]>=} searchMention\n * @returns {{mentionSearchText: string | null, mentionUsers: MentionUser[], onKeyUp: (event: React.KeyboardEvent) => void, onFocus: () => void, onSelectUser: () => void, loading: boolean}}\n */\nexport function useMention(searchMention) {\n const [loading, setLoading] = useState(false);\n\n /** @type {[MentionUser[], React.Dispatch<React.SetStateAction<MentionUser[]>>]} */\n const [mentionUsers, setMentionUsers] = useState([]);\n\n /** @type {[string | null, React.Dispatch<React.SetStateAction<string | null>>]} */\n const [mentionSearchText, setMentionSearchText] = useState(null);\n\n const onSelectUser = useCallback(() => {\n deleteTextFromAtToCaret();\n setMentionUsers([]);\n }, []);\n\n /** */\n const checkMentionText = useCallback(async () => {\n const metionText = getTextFromAtToCaret();\n\n setMentionSearchText(metionText);\n\n if (metionText === null) {\n setMentionUsers([]);\n } else {\n setLoading(true);\n const users = await searchMention(metionText);\n setLoading(false);\n setMentionUsers(users);\n }\n }, [searchMention]);\n\n /** @type {(event: React.KeyboardEvent) => void} */\n const onKeyUp = useCallback(\n async event => {\n if (typeof searchMention !== \"function\") return;\n\n if (\n event.key === \"Backspace\" &&\n getElementWithFocus()?.element.parentElement.hasAttribute(\n \"data-mention-id\"\n )\n ) {\n const elementWithFocus = getElementWithFocus();\n elementWithFocus.element.parentElement.remove();\n } else if (\n ![\"ArrowUp\", \"ArrowDown\", \"Esc\", \"Escape\"].includes(event.key)\n ) {\n checkMentionText();\n }\n },\n [checkMentionText, searchMention]\n );\n\n const onFocus = useCallback(() => {\n checkMentionText();\n }, [checkMentionText]);\n\n return {\n mentionSearchText,\n mentionUsers,\n onKeyUp,\n onFocus,\n onSelectUser,\n loading\n };\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, {\n useImperativeHandle,\n useState,\n forwardRef,\n useMemo,\n useEffect\n} from \"react\";\nimport t from \"prop-types\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MentionUser\n */\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n/**\n * @typedef {Object} Props\n * @property {MentionUser[]} users\n * @property {string | null} mentionSearchText\n * @property {(user: MentionUser) => void} onSelect\n * @property {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void} addEventListener\n */\n\n/**\n * @typedef {{prevUser: () => void; nextUser: () => void;}} Ref\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.ForwardRefRenderFunction<Ref, Props>} */\nconst MentionUserList = (\n { users, mentionSearchText, onSelect, addEventListener },\n ref\n) => {\n const [selectedUser, setSelectedUser] = useState(0);\n\n useImperativeHandle(ref, () => ({\n prevUser: () => {\n setSelectedUser(currentSelectedUser => {\n if (currentSelectedUser === 0) {\n return 0;\n }\n\n return currentSelectedUser - 1;\n });\n },\n nextUser: () => {\n setSelectedUser(currentSelectedUser => {\n if (currentSelectedUser === users.length - 1) {\n return users.length - 1;\n }\n\n return currentSelectedUser + 1;\n });\n }\n }));\n\n useEffect(() => {\n setSelectedUser(0);\n }, [users]);\n\n /**\n *\n * @param {string} selectedText\n * @param {string} rest\n * @return {string}\n */\n function getMentionSelectedNameEl(selectedText, rest) {\n return `<span class=\"react-input-emoji--mention--item--name__selected\" data-testid=\"metion-selected-word\">${selectedText}</span>${rest}`;\n }\n\n /** @type {(MentionUser & {nameHtml: string})[]} */\n const usersFiltered = useMemo(() => {\n const searchText = mentionSearchText\n ? mentionSearchText.substring(1).toLocaleLowerCase()\n : \"\";\n return users.map(user => {\n let nameHtml = user.name;\n\n if (mentionSearchText && mentionSearchText.length > 1) {\n if (user.name.toLowerCase().startsWith(searchText)) {\n nameHtml = getMentionSelectedNameEl(\n user.name.substring(0, searchText.length),\n user.name.substring(searchText.length)\n );\n } else {\n const names = user.name.split(\" \");\n\n nameHtml = names\n .map(name => {\n if (name.toLocaleLowerCase().startsWith(searchText)) {\n return getMentionSelectedNameEl(\n name.substring(0, searchText.length),\n name.substring(searchText.length)\n );\n }\n return name;\n })\n .join(\" \");\n }\n }\n\n return {\n ...user,\n nameHtml\n };\n });\n }, [mentionSearchText, users]);\n\n // eslint-disable-next-line valid-jsdoc\n /**\n *\n * @param {MentionUser} user\n * @returns {(event: React.MouseEvent) => void} event\n */\n function handleClick(user) {\n return event => {\n event.stopPropagation();\n event.preventDefault();\n\n onSelect(user);\n };\n }\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"enter\", event => {\n event.stopPropagation();\n event.preventDefault();\n onSelect(usersFiltered[selectedUser]);\n });\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onSelect, selectedUser, usersFiltered]);\n\n return (\n <ul\n className=\"react-input-emoji--mention--list\"\n data-testid=\"mention-user-list\"\n >\n {usersFiltered.map((user, index) => (\n <li key={user.id}>\n <button\n type=\"button\"\n onClick={handleClick(user)}\n className={`react-input-emoji--mention--item${\n selectedUser === index\n ? \" react-input-emoji--mention--item__selected\"\n : \"\"\n }`}\n onMouseOver={() => setSelectedUser(index)}\n >\n <img\n className=\"react-input-emoji--mention--item--img\"\n src={user.image}\n />\n <div\n className=\"react-input-emoji--mention--item--name\"\n dangerouslySetInnerHTML={{ __html: user.nameHtml }}\n />\n </button>\n </li>\n ))}\n </ul>\n );\n};\n\nconst MentionUserListWithRef = forwardRef(MentionUserList);\n\nMentionUserListWithRef.propTypes = {\n users: t.array.isRequired\n};\n\nexport default MentionUserListWithRef;\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useRef, useState } from \"react\";\n\n// hooks\nimport { useMention } from \"../hooks/use-mention\";\n\n// components\nimport MentionUserList from \"./mention-user-list\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MetionUser\n */\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n/**\n * @typedef {Object} Props\n * @property {(text: string) => Promise<MetionUser[]>=} searchMention\n * @property {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void} addEventListener\n * @property {(html: string) => void} appendContent\n * @property {(fn: SanitizeFn) => void} addSanitizeFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.FC<Props>} */\nconst MentionWrapper = ({\n searchMention,\n addEventListener,\n appendContent,\n addSanitizeFn\n}) => {\n /** @type {React.MutableRefObject<import('./mention-user-list').Ref | null>} */\n const metionUserListRef = useRef(null);\n const [showUserList, setShowUserList] = useState(false);\n\n const {\n mentionSearchText,\n mentionUsers,\n loading,\n onKeyUp,\n onFocus,\n onSelectUser\n } = useMention(searchMention);\n\n useEffect(() => {\n addSanitizeFn(html => {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const mentionsEl = Array.prototype.slice.call(\n container.querySelectorAll(\".react-input-emoji--mention--text\")\n );\n\n mentionsEl.forEach(mentionEl => {\n container.innerHTML = container.innerHTML.replace(\n mentionEl.outerHTML,\n `@[${mentionEl.dataset.mentionName}](userId:${mentionEl.dataset.mentionId})`\n );\n });\n\n return container.innerHTML;\n });\n }, [addSanitizeFn]);\n\n useEffect(() => {\n setShowUserList(mentionUsers.length > 0);\n }, [mentionUsers]);\n\n useEffect(() => {\n /** */\n function checkClickOutside() {\n setShowUserList(false);\n }\n\n document.addEventListener(\"click\", checkClickOutside);\n\n return () => {\n document.removeEventListener(\"click\", checkClickOutside);\n };\n }, []);\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"keyUp\", onKeyUp);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onKeyUp]);\n\n useEffect(() => {\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyDown(event) {\n switch (event.key) {\n case \"Esc\": // IE/Edge specific value\n case \"Escape\":\n setShowUserList(false);\n break;\n default:\n break;\n }\n }\n\n const unsubscribe = addEventListener(\"keyDown\", handleKeyDown);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener]);\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"focus\", onFocus);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onFocus]);\n\n useEffect(() => {\n if (showUserList) {\n const unsubscribeArrowUp = addEventListener(\"arrowUp\", event => {\n event.stopPropagation();\n event.preventDefault();\n metionUserListRef.current.prevUser();\n });\n\n const unsubscribeArrowDown = addEventListener(\"arrowDown\", event => {\n event.stopPropagation();\n event.preventDefault();\n metionUserListRef.current.nextUser();\n });\n\n return () => {\n unsubscribeArrowUp();\n unsubscribeArrowDown();\n };\n }\n }, [addEventListener, showUserList]);\n\n /**\n *\n * @param {MetionUser} user\n */\n function handleSelect(user) {\n onSelectUser();\n appendContent(\n `<span class=\"react-input-emoji--mention--text\" data-mention-id=\"${user.id}\" data-mention-name=\"${user.name}\">@${user.name}</span> `\n );\n }\n\n return (\n <>\n {loading ? (\n <div className=\"react-input-emoji--mention--container\">\n <div className=\"react-input-emoji--mention--loading\">\n <div className=\"react-input-emoji--mention--loading--spinner\">\n Loading...\n </div>\n </div>\n </div>\n ) : (\n showUserList && (\n <div\n className=\"react-input-emoji--mention--container\"\n onClick={evt => evt.stopPropagation()}\n >\n <MentionUserList\n ref={metionUserListRef}\n mentionSearchText={mentionSearchText}\n users={mentionUsers}\n onSelect={handleSelect}\n addEventListener={addEventListener}\n />\n </div>\n )\n )}\n </>\n );\n};\n\nexport default MentionWrapper;\n","// @ts-check\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @template T\n * @returns {import('../types/types').ListenerObj<T>}\n */\nexport function createObserver() {\n /** @type {import('../types/types').Listerner<T>[]} */\n let listeners = [];\n\n return {\n subscribe: listener => {\n listeners.push(listener);\n return () => {\n listeners = listeners.filter(l => l !== listener);\n };\n },\n publish: event => {\n listeners.forEach(listener => listener(event));\n },\n get currentListerners() {\n return listeners;\n }\n };\n}\n","// @ts-check\n\nimport { useCallback, useMemo } from \"react\";\nimport { createObserver } from \"../utils/observer\";\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function useEventListeners() {\n /** @type {TextInputListeners} */\n const listeners = useMemo(\n () => ({\n keyDown: createObserver(),\n keyUp: createObserver(),\n arrowUp: createObserver(),\n arrowDown: createObserver(),\n enter: createObserver(),\n focus: createObserver(),\n blur: createObserver()\n }),\n []\n );\n\n /**\n * @template {keyof TextInputListeners} T, K\n * @type {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void}\n */\n const addEventListener = useCallback(\n (event, fn) => {\n return listeners[event].subscribe(fn);\n },\n [listeners]\n );\n\n return { addEventListener, listeners };\n}\n","// @ts-check\n\nimport { useCallback, useRef } from \"react\";\n\n/**\n * @typedef {import('../types/types').PolluteFn} PolluteFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function usePollute() {\n /** @type {React.MutableRefObject<PolluteFn[]>} */\n const polluteFnsRef = useRef([]);\n\n /** @type {(fn: PolluteFn) => void} */\n const addPolluteFn = useCallback(fn => {\n polluteFnsRef.current.push(fn);\n }, []);\n\n /** @type {(html: string) => string} */\n const pollute = useCallback(text => {\n const result = polluteFnsRef.current.reduce((acc, fn) => {\n return fn(acc);\n }, text);\n\n return result;\n }, []);\n\n return { addPolluteFn, pollute };\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useRef, forwardRef, useCallback } from \"react\";\n\n// css\nimport \"./styles.css\";\n\n// utils\nimport { replaceAllTextEmojis } from \"./utils/emoji-utils\";\nimport {\n totalCharacters\n} from \"./utils/input-event-utils\";\n\n// hooks\nimport { useExpose } from \"./hooks/use-expose\";\nimport { useEmit } from \"./hooks/use-emit\";\n\n// components\nimport TextInput from \"./text-input\";\nimport EmojiPickerWrapper from \"./components/emoji-picker-wrapper\";\nimport MentionWrapper from \"./components/mention-wrapper\";\nimport { useEventListeners } from \"./hooks/use-event-listeners\";\nimport { useSanitize } from \"./hooks/use-sanitize\";\nimport { usePollute } from \"./hooks/user-pollute\";\n\n/**\n * @typedef {import('./types/types').MentionUser} MetionUser\n */\n\n/**\n * @typedef {import('./types/types').ListenerObj<any>} ListenerObj\n */\n\n/**\n * @typedef {object} Props\n * @property {string} value\n * @property {(value: string) => void} onChange\n * @property {\"light\" | \"dark\" | \"auto\"} theme\n * @property {boolean} cleanOnEnter\n * @property {(text: string) => void} onEnter\n * @property {string} placeholder\n * @property {(size: {width: number, height: number}) => void} onResize\n * @property {() => void} onClick\n * @property {() => void} onFocus\n * @property {() => void=} onBlur\n * @property {number} maxLength\n * @property {boolean} keepOpened\n * @property {(event: KeyboardEvent) => void} onKeyDown\n * @property {string} inputClass\n * @property {boolean} disableRecent\n * @property {number} tabIndex\n * @property {number} height\n * @property {number} borderRadius\n * @property {string} borderColor\n * @property {number} fontSize\n * @property {string} fontFamily\n * @property {object[]=} customEmojis\n * @property {(text: string) => Promise<MetionUser[]>=} searchMention\n */\n\n/**\n * Input Emoji Component\n * @param {Props} props\n * @param {React.Ref<any>} ref\n * @return {JSX.Element}\n */\nfunction InputEmoji(props, ref) {\n const {\n onChange,\n onEnter,\n onResize,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n theme,\n cleanOnEnter,\n placeholder,\n maxLength,\n keepOpened,\n inputClass,\n disableRecent,\n tabIndex,\n value,\n customEmojis,\n searchMention,\n // style\n borderRadius,\n borderColor,\n fontSize,\n fontFamily\n } = props;\n\n /** @type {React.MutableRefObject<import('./text-input').Ref | null>} */\n const textInputRef = useRef(null);\n\n const { addEventListener, listeners } = useEventListeners();\n\n const { addSanitizeFn, sanitize, sanitizedTextRef } = useSanitize();\n\n const { addPolluteFn, pollute } = usePollute();\n\n const updateHTML = useCallback(\n (nextValue = \"\") => {\n if (textInputRef.current === null) return\n\n textInputRef.current.html = replaceAllTextEmojis(nextValue);\n sanitizedTextRef.current = nextValue;\n },\n [sanitizedTextRef]\n );\n\n const setValue = useCallback(\n value => {\n updateHTML(value);\n },\n [updateHTML]\n );\n\n const emitChange = useEmit(textInputRef, onResize, onChange);\n\n useExpose({\n ref,\n setValue,\n textInputRef,\n emitChange\n });\n\n useEffect(() => {\n if (sanitizedTextRef.current !== value) {\n setValue(value);\n }\n }, [sanitizedTextRef, setValue, value]);\n\n useEffect(() => {\n updateHTML();\n }, [updateHTML]);\n\n useEffect(() => {\n /**\n * Handle keydown event\n * @param {React.KeyboardEvent} event\n * @return {boolean}\n */\n function handleKeydown(event) {\n if (\n typeof maxLength !== \"undefined\" &&\n event.key !== \"Backspace\" &&\n textInputRef.current !== null &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n event.preventDefault();\n }\n\n if (event.key === \"Enter\" && textInputRef.current) {\n event.preventDefault();\n\n const text = sanitize(textInputRef.current.html);\n\n emitChange(sanitizedTextRef.current);\n\n if (\n typeof onEnter === \"function\" &&\n listeners.enter.currentListerners.length === 0\n ) {\n onEnter(text);\n }\n\n if (cleanOnEnter && listeners.enter.currentListerners.length === 0) {\n updateHTML(\"\");\n }\n\n if (typeof onKeyDown === \"function\") {\n onKeyDown(event.nativeEvent);\n }\n\n return false;\n }\n\n if (typeof onKeyDown === \"function\") {\n onKeyDown(event.nativeEvent);\n }\n\n return true;\n }\n\n const unsubscribe = addEventListener(\"keyDown\", handleKeydown);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, cleanOnEnter, emitChange, listeners.enter.currentListerners.length, maxLength, onEnter, onKeyDown, sanitize, sanitizedTextRef, updateHTML]);\n\n useEffect(() => {\n /** */\n function handleFocus() {\n if (typeof onClick === \"function\") {\n onClick();\n }\n\n if (typeof onFocus === \"function\") {\n onFocus();\n }\n }\n\n const unsubscribe = addEventListener(\"focus\", handleFocus);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onClick, onFocus]);\n\n useEffect(() => {\n /** */\n function handleBlur() {\n if (typeof onBlur === 'function') {\n onBlur()\n }\n }\n\n const unsubscribe = addEventListener('blur', handleBlur);\n\n return () => {\n unsubscribe()\n }\n }, [addEventListener, onBlur])\n\n /**\n *\n * @param {string} html\n */\n function handleTextInputChange(html) {\n sanitize(html);\n emitChange(sanitizedTextRef.current);\n }\n\n /**\n *\n * @param {string} html\n */\n function appendContent(html) {\n if (\n typeof maxLength !== \"undefined\" &&\n textInputRef.current !== null &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n return;\n }\n\n if (textInputRef.current !== null) {\n textInputRef.current.appendContent(html);\n }\n }\n\n /**\n * Handle copy of current selected text\n * @param {React.ClipboardEvent} event\n */\n function handleCopy(event) {\n event.clipboardData.setData(\"text\", sanitizedTextRef.current);\n event.preventDefault();\n }\n\n /**\n * Handle past on input\n * @param {React.ClipboardEvent} event\n */\n function handlePaste(event) {\n event.preventDefault();\n let content;\n if (event.clipboardData) {\n content = event.clipboardData.getData(\"text/plain\");\n content = pollute(content);\n document.execCommand(\"insertHTML\", false, content);\n }\n }\n\n return (\n <div className=\"react-emoji\">\n <MentionWrapper\n searchMention={searchMention}\n addEventListener={addEventListener}\n appendContent={appendContent}\n addSanitizeFn={addSanitizeFn}\n />\n <TextInput\n ref={textInputRef}\n onCopy={handleCopy}\n onPaste={handlePaste}\n onBlur={listeners.blur.publish}\n onFocus={listeners.focus.publish}\n onArrowUp={listeners.arrowUp.publish}\n onArrowDown={listeners.arrowDown.publish}\n onKeyUp={listeners.keyUp.publish}\n onKeyDown={listeners.keyDown.publish}\n onEnter={listeners.enter.publish}\n placeholder={placeholder}\n style={{\n borderRadius,\n borderColor,\n fontSize,\n fontFamily\n }}\n tabIndex={tabIndex}\n className={inputClass}\n onChange={handleTextInputChange}\n />\n <EmojiPickerWrapper\n theme={theme}\n keepOpened={keepOpened}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n addSanitizeFn={addSanitizeFn}\n addPolluteFn={addPolluteFn}\n appendContent={appendContent}\n />\n </div>\n );\n}\n\nconst InputEmojiWithRef = forwardRef(InputEmoji);\n\nInputEmojiWithRef.defaultProps = {\n theme: /** @type {const} */ (\"auto\"),\n height: 30,\n placeholder: \"Type a message\",\n borderRadius: 21,\n borderColor: \"#EAEAEA\",\n fontSize: 15,\n fontFamily: \"sans-serif\",\n tabIndex: 0,\n customEmojis: []\n};\n\nexport default InputEmojiWithRef;\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","TRANSPARENT_GIF","replaceAllTextEmojis","text","allEmojis","getAllEmojisFromText","allEmojiStyle","Set","forEach","emoji","replaceAll","str","find","replace","RegExp","match","getImageEmoji","shortNames","short_names","emojiSpanEl","querySelector","native","id","dataEmoji","emoticons","length","replaceAllTextEmojiToString","html","container","innerHTML","images","Array","prototype","slice","call","querySelectorAll","image","outerHTML","dataset","handlePasteHtmlAtCaret","sel","range","window","getSelection","getRangeAt","rangeCount","deleteContents","el","frag","createDocumentFragment","node","lastNode","insertNode","cloneRange","setStartAfter","collapse","removeAllRanges","addRange","totalCharacters","textCount","emojisCount","useSanitize","sanitizeFnsRef","useRef","sanitizedTextRef","addSanitizeFn","useCallback","fn","current","push","sanitize","result","reduce","acc","replaceAllHtmlToString","innerText","useExpose","textInputRef","setValue","emitChange","useImperativeHandle","value","focus","blur","useEmit","onResize","onChange","currentSizeRef","onChangeFn","checkAndEmitResize","currentSize","nextSize","size","width","height","sanitizedText","useEffect","TextInput","placeholder","tabIndex","className","props","appendContent","placeholderRef","trim","visibility","offsetWidth","offsetHeight","handleKeyDown","event","key","onEnter","onArrowUp","onArrowDown","onKeyDown","handleClick","onFocus","handleKeyUp","onKeyUp","input","React","onBlur","onCopy","onPaste","TextInputWithRef","forwardRef","_classCallCheck","instance","Constructor","TypeError","_defineProperties","target","i","descriptor","enumerable","configurable","writable","Object","defineProperty","_createClass","protoProps","staticProps","_typeof","obj","Symbol","iterator","constructor","mapping","name","unified","non_qualified","has_img_apple","has_img_google","has_img_twitter","has_img_facebook","keywords","sheet","added_in","buildSearch","search","addToSearch","strings","split","isArray","string","s","toLowerCase","indexOf","join","uncompress","data","compressed","emojis","unshift","sheet_x","sheet_y","toFixed","_String","String","fromCodePoint","stringFromCodePoint","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","index","arguments","codePoint","Number","isFinite","Math","floor","RangeError","fromCharCode","apply","COLONS_REGEX","SKINS","unifiedToNative","unicodes","codePoints","map","u","concat","skin_tone","skin_variations","custom","customCategory","imageUrl","colons","skin","getSanitizedData","getData","set","emojiData","matches","parseInt","aliases","hasOwnProperty","keys","variations","JSON","parse","stringify","skinKey","variationData","undefined","k","v","shift","uniq","arr","item","intersect","a","b","uniqA","uniqB","filter","deepMerge","o","originalValue","measureScrollbar","div","overflow","position","top","body","scrollbarWidth","clientWidth","removeChild","throttleIdleTask","func","doIdleTask","requestIdleCallback","setTimeout","running","throttled","NAMESPACE","isLocalStorageSupported","getter","setter","setHandlers","handlers","setNamespace","namespace","update","state","localStorage","e","get","NimbleEmojiIndex","originalPool","customEmojisList","buildIndex","_this","_loop","emoticon","skinTone","clearCustomEmojis","pool","_this2","emojiId","addCustomToPool","_this3","_this4","_ref","emojisToShowFilter","maxResults","include","exclude","_ref$custom","store","results","values","allResults","categories","category","isIncluded","isExcluded","customIsIncluded","customIsExcluded","aPool","aIndex","charIndex","_char","scores","sub","substr","subIndex","score","sort","aScore","bScore","localeCompare","emojiIndex","DEFAULTS","frequently","initialized","defaults","init","add","perLine","quantity","frequentlyKeys","sorted","reverse","sliced","last","pop","_defineProperty","_extends","assign","bind","source","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","assertThisInitialized","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","_inherits","subClass","superClass","create","activity","xmlns","viewBox","d","transform","x","y","rx","flags","foods","nature","objects","people","places","recent","symbols","opacity","_delete","EmojiPropTypes","PropTypes","object","isRequired","onOver","onLeave","onClick","fallback","backgroundImageFn","bool","forceSize","tooltip","useButton","oneOf","sheetSize","sheetColumns","number","sheetRows","oneOfType","PickerPropTypes","onSelect","onSkinChange","emojiSize","i18n","title","color","showPreview","showSkinTones","emojiTooltip","theme","arrayOf","autoFocus","enableFrequentEmojiSort","shape","spriteUrl","skinEmoji","notFound","notFoundEmoji","icons","Anchors","_React$PureComponent","defaultCategory","first","selected","currentTarget","getAttribute","_this$props","onAnchorClick","render","_this$props2","categorieslabel","anchor","isSelected","iconId","startsWith","backgroundColor","PureComponent","propTypes","array","defaultProps","EmojiDefaultProps","PickerDefaultProps","defaultSkin","ownKeys","enumerableOnly","getOwnPropertySymbols","sym","getOwnPropertyDescriptor","_objectSpread","getOwnPropertyDescriptors","defineProperties","_getData","_getPosition","_getData2","multiplyX","multiplyY","_getSanitizedData","_handleClick","_handleOver","_handleLeave","_isNumeric","isNaN","parseFloat","_convertStyleToCSS","NimbleEmoji","children","nativeEmoji","label","Boolean","fontSize","display","wordBreak","backgroundImage","backgroundSize","backgroundPosition","backgroundRepeat","setHasEmoji","Tag","onMouseEnter","onMouseLeave","NotFound","emojiProps","component","notfound","Category","_React$Component","setContainerRef","setLabelRef","componentDidMount","margin","minMargin","memoizeSize","shouldComponentUpdate","nextProps","nextState","_native","hasStickyPosition","nextPerLine","nextNative","nextHasStickyPosition","nextEmojis","nextEmojiProps","nextSkin","nextSet","shouldUpdate","maxMargin","parent","parentElement","_this$container$getBo","getBoundingClientRect","_parent$getBoundingCl","parentTop","_this$label$getBoundi","labelHeight","scrollTop","handleScroll","getEmojis","frequentlyUsed","updateDisplay","c","_this$props3","labelStyles","labelSpanStyles","containerStyles","Component","Skins","opened","setState","SkinsEmoji","_Skins","skinToneNodes","skintext","SkinsDot","keyCode","preventDefault","visible","skintones","role","Preview","skinsProps","idleEmoji","_emojiData$emoticons","knownEmoticons","listedEmoticons","short_name","Search","icon","isSearching","setRef","clear","handleChange","onSearch","_this$state","inputId","htmlFor","disabled","I18N","NimblePicker","CUSTOM","RECENT_CATEGORY","SEARCH_CATEGORY","firstRender","allCategories","customCategories","customCategoriesCreated","customEmoji","hideRecent","categoryIndex","newEmojis","newCategory","includeRecent","excludeRecent","setAnchorsRef","handleAnchorClick","setSearchRef","handleSearch","setScrollRef","handleScrollPaint","handleEmojiOver","handleEmojiLeave","handleEmojiClick","handleEmojiSelect","setPreviewRef","handleSkinChange","handleDarkMatchMediaChange","testStickyPosition","firstRenderTimeout","componentDidUpdate","updateCategoriesSize","componentWillUnmount","clearTimeout","leaveTimeout","darkMatchMedia","removeListener","stickyTestElement","prefixes","prefix","getPreferredTheme","matchMedia","addListener","media","preview","categoryRefs","forceUpdate","requestAnimationFrame","scroll","waitingForPaint","activeCategory","scrollingDown","minTop","l","ii","active","clientHeight","scrollHeight","anchors","_activeCategory","categoryName","scrollToComponent","newState","handled","getCategories","setCategoryRef","onScroll","Picker","EmojiPicker","onSelectEmoji","disableRecent","customEmojis","excludePicker","useMemo","t","memo","EmojiPickerWrapper","keepOpened","addPolluteFn","showPicker","setShowPicker","useState","checkClickOutside","element","classList","contains","addEventListener","removeEventListener","toggleShowPicker","stopPropagation","currentShowPicker","handleSelectEmoji","evt","getTextFromAtToCaret","getRangeFromAtToCaret","substring","begin","end","deleteTextFromAtToCaret","deleteData","elementWithFocus","getElementWithFocus","caretOffset","textContent","lastAt","lastIndexOf","getSelectionStart","preCaretRange","selectNodeContents","setEnd","endContainer","endOffset","toString","selection","textRange","createRange","preCaretTextRange","createTextRange","moveToElementText","setEndPoint","anchorNode","nodeType","useMention","searchMention","loading","setLoading","mentionUsers","setMentionUsers","mentionSearchText","setMentionSearchText","onSelectUser","checkMentionText","metionText","users","hasAttribute","remove","includes","MentionUserList","selectedUser","setSelectedUser","prevUser","currentSelectedUser","nextUser","getMentionSelectedNameEl","selectedText","rest","usersFiltered","searchText","toLocaleLowerCase","user","nameHtml","names","unsubscribe","__html","MentionUserListWithRef","MentionWrapper","metionUserListRef","showUserList","setShowUserList","mentionsEl","mentionEl","mentionName","mentionId","unsubscribeArrowUp","unsubscribeArrowDown","handleSelect","createObserver","listeners","subscribe","listener","publish","currentListerners","useEventListeners","keyDown","keyUp","arrowUp","arrowDown","enter","usePollute","polluteFnsRef","pollute","InputEmoji","cleanOnEnter","maxLength","inputClass","borderRadius","borderColor","fontFamily","updateHTML","nextValue","handleKeydown","nativeEvent","handleFocus","handleBlur","handleTextInputChange","handleCopy","clipboardData","setData","handlePaste","content","execCommand","InputEmojiWithRef"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/utils/emoji-utils.js","../src/utils/input-event-utils.js","../src/hooks/use-sanitize.js","../src/hooks/use-expose.js","../src/hooks/use-emit.js","../src/text-input.js","../src/components/emoji-picker-button.js","../node_modules/emoji-mart/dist/module.js","../node_modules/@emoji-mart/react/dist/module.js","../src/components/emoji-picker.js","../src/components/emoji-picker-container.js","../src/components/emoji-picker-wrapper.js","../src/utils/mention-utils.js","../src/hooks/use-mention.js","../src/components/mention-user-list.js","../src/components/mention-wrapper.js","../src/utils/observer.js","../src/hooks/use-event-listeners.js","../src/hooks/user-pollute.js","../src/index.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","// @ts-check\n\nexport const TRANSPARENT_GIF =\n \"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\";\n\nexport const EMOJI_STYLE = \"\";\n\n/**\n * Replace all text with emoji with an image html tag\n * @param {string} text\n * @return {string}\n */\nexport function replaceAllTextEmojis(text) {\n let allEmojis = getAllEmojisFromText(text);\n\n if (allEmojis) {\n allEmojis = [...new Set(allEmojis)]; // remove duplicates\n\n allEmojis.forEach(emoji => {\n text = replaceAll(text, emoji, getInputEmojiHTML(emoji));\n });\n }\n\n return text;\n}\n\n/**\n * Replace all occurrencies in a string\n * @param {string} str\n * @param {string} find\n * @param {string} replace\n * @return {string}\n */\nfunction replaceAll(str, find, replace) {\n return str.replace(new RegExp(find, \"g\"), replace);\n}\n\n/**\n * Get all emojis from the text\n * @param {string} text\n * @return {string[]}\n */\nfunction getAllEmojisFromText(text) {\n return text.match(\n /(?:[\\u2700-\\u27bf]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*/g\n );\n}\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * @param { import(\"../types/types\").EmojiMartItem } emoji\n * @return {string}\n */\nexport function getImageEmoji(emoji) {\n return getInputEmojiHTML(emoji.native);\n}\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * @param {string} emoji\n * @returns\n */\nfunction getInputEmojiHTML(emoji) {\n return `<span class=\"width: 18px; height: 18px; display: inline-block; margin: 0 1px;\">${emoji}</span>`;\n}\n\n/**\n *\n * @param {string} html\n * @return {string}\n */\nexport function replaceAllTextEmojiToString(html) {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const images = Array.prototype.slice.call(container.querySelectorAll(\"img\"));\n\n images.forEach(image => {\n container.innerHTML = container.innerHTML.replace(\n image.outerHTML,\n image.dataset.emoji\n );\n });\n\n return container.innerHTML;\n}\n","// @ts-check\n\nimport {\n getImageEmoji,\n replaceAllTextEmojis,\n replaceAllTextEmojiToString\n} from \"./emoji-utils\";\n\n/**\n * Handle copy of current selected text\n * @param {React.ClipboardEvent} event\n */\nexport function handleCopy(event) {\n const selectedText = window.getSelection();\n\n if (selectedText === null) {\n return\n }\n\n let container = document.createElement(\"div\");\n\n for (let i = 0, len = selectedText.rangeCount; i < len; ++i) {\n container.appendChild(selectedText.getRangeAt(i).cloneContents());\n }\n\n container = replaceEmojiToString(container);\n\n event.clipboardData.setData(\"text\", container.innerText);\n event.preventDefault();\n}\n\n/**\n *\n * @param {string} html\n */\nexport function handlePasteHtmlAtCaret(html) {\n let sel;\n let range;\n if (window.getSelection) {\n // IE9 and non-IE\n sel = window.getSelection();\n\n if (sel === null) return\n\n if (sel.getRangeAt && sel.rangeCount) {\n range = sel.getRangeAt(0);\n range.deleteContents();\n\n // Range.createContextualFragment() would be useful here but is\n // non-standard and not supported in all browsers (IE9, for one)\n const el = document.createElement(\"div\");\n el.innerHTML = html;\n const frag = document.createDocumentFragment();\n let node;\n let lastNode;\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n }\n}\n\n/**\n * Replace emoji img to its string value\n * @param {HTMLDivElement} container\n * @return {HTMLDivElement}\n */\nfunction replaceEmojiToString(container) {\n const images = Array.prototype.slice.call(container.querySelectorAll(\"img\"));\n\n images.forEach(image => {\n image.outerHTML = image.dataset.emoji;\n });\n\n return container;\n}\n\n/**\n * Handle past on input\n * @param {React.ClipboardEvent} event\n */\nexport function handlePaste(event) {\n event.preventDefault();\n let content;\n if (event.clipboardData) {\n content = event.clipboardData.getData(\"text/plain\");\n content = replaceAllTextEmojis(content);\n document.execCommand(\"insertHTML\", false, content);\n }\n}\n\n/**\n * @typedef {object} HandleKeyDownOptions\n * @property {HTMLDivElement} placeholderEl\n * @property {number} maxLength\n * @property {HTMLDivElement} inputEl\n * @property {React.MutableRefObject<string>} cleanedTextRef\n * @property {React.MutableRefObject<HTMLDivElement>} textInputRef\n * @property {boolean} cleanOnEnter\n * @property {function(): void} emitChange\n * @property {(function(string): void)=} onEnter\n * @property {(function(KeyboardEvent): void)=} onKeyDown\n * @property {(function(string): void)} updateHTML\n */\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @typedef {Object} HandleSelectEmojiProps\n * @property {import(\"../types/types\").EmojiMartItem} emoji\n * @property {React.MutableRefObject<import('../text-input').Ref>} textInputRef\n * @property {boolean} keepOpened\n * @property {() => void} toggleShowPicker\n * @property {number=} maxLength\n */\n\n/**\n *\n * @param {HandleSelectEmojiProps} props\n */\nexport function handleSelectEmoji({\n emoji,\n textInputRef,\n keepOpened,\n toggleShowPicker,\n maxLength\n}) {\n if (\n typeof maxLength !== \"undefined\" &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n return;\n }\n\n textInputRef.current.appendContent(getImageEmoji(emoji));\n\n if (!keepOpened) {\n toggleShowPicker();\n }\n}\n\n/**\n *\n * @param {{text: string, html: string}} props\n * @return {number}\n */\nexport function totalCharacters({ text, html }) {\n const textCount = text.length;\n const emojisCount = (html.match(/<img/g) || []).length;\n\n return textCount + emojisCount;\n}\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * Handle keyup event\n * @param {() => void} emitChange\n * @param {(event: KeyboardEvent) => void} onKeyDownMention\n * @param {React.MutableRefObject<string>} cleanedTextRef\n * @param {React.MutableRefObject<HTMLDivElement>} textInputRef\n * @return {(event: KeyboardEvent) => void}\n */\nexport function handleKeyup(\n emitChange,\n onKeyDownMention,\n cleanedTextRef,\n textInputRef\n) {\n return event => {\n const text = replaceAllTextEmojiToString(textInputRef.current.innerHTML);\n cleanedTextRef.current = text;\n emitChange();\n onKeyDownMention(event);\n };\n}\n\n/**\n * Handle focus event\n * @param {function(FocusEvent): void} onFocus\n * @return {function(FocusEvent): void}\n */\nexport function handleFocus(onFocus) {\n return event => {\n onFocus(event);\n };\n}\n","// @ts-check\n\nimport { useCallback, useRef } from \"react\";\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function useSanitize() {\n /** @type {React.MutableRefObject<SanitizeFn[]>} */\n const sanitizeFnsRef = useRef([]);\n\n const sanitizedTextRef = useRef(\"\");\n\n /** @type {(fn: SanitizeFn) => void} */\n const addSanitizeFn = useCallback(fn => {\n sanitizeFnsRef.current.push(fn);\n }, []);\n\n /** @type {(html: string) => string} */\n const sanitize = useCallback(html => {\n let result = sanitizeFnsRef.current.reduce((acc, fn) => {\n return fn(acc);\n }, html);\n\n result = replaceAllHtmlToString(result);\n\n sanitizedTextRef.current = result;\n\n return result;\n }, []);\n\n return { addSanitizeFn, sanitize, sanitizedTextRef };\n}\n\n/**\n *\n * @param {string} html\n * @return {string}\n */\nexport function replaceAllHtmlToString(html) {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n let text = container.innerText || \"\";\n\n // remove all ↵ for safari\n text = text.replace(/\\n/gi, \"\");\n\n return text;\n}\n","// @ts-check\n\nimport { useImperativeHandle } from \"react\";\nimport { useSanitize } from \"./use-sanitize\";\n\n/**\n * @typedef {Object} Props\n * @property {React.Ref<any>} ref\n * @property {React.MutableRefObject<import('../text-input').Ref | null>} textInputRef\n * @property {(value: string) => void} setValue\n * @property {() => void} emitChange\n */\n\n/**\n *\n * @param {Props} props\n */\nexport function useExpose({ ref, textInputRef, setValue, emitChange }) {\n const { sanitize, sanitizedTextRef } = useSanitize();\n\n useImperativeHandle(ref, () => ({\n get value() {\n return sanitizedTextRef.current;\n },\n set value(value) {\n setValue(value);\n },\n focus: () => {\n if (textInputRef.current === null) return\n textInputRef.current.focus();\n },\n blur: () => {\n if (textInputRef.current !== null) {\n sanitize(textInputRef.current.html);\n\n }\n\n emitChange();\n }\n }));\n}\n","// @ts-check\n\nimport { useCallback, useEffect, useRef } from \"react\";\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * useEmit\n * @param {React.MutableRefObject<import('../text-input').Ref | null>} textInputRef\n * @param {(size: {width: number, height: number}) => void} onResize\n * @param {(text: string) => void} onChange\n */\nexport function useEmit(textInputRef, onResize, onChange) {\n /** @type {React.MutableRefObject<{width: number; height: number} | null>} */\n const currentSizeRef = useRef(null);\n const onChangeFn = useRef(onChange);\n\n const checkAndEmitResize = useCallback(() => {\n if (textInputRef.current !== null) {\n const currentSize = currentSizeRef.current;\n\n const nextSize = textInputRef.current.size;\n\n if (\n (!currentSize ||\n currentSize.width !== nextSize.width ||\n currentSize.height !== nextSize.height) &&\n typeof onResize === \"function\"\n ) {\n onResize(nextSize);\n }\n\n currentSizeRef.current = nextSize;\n }\n }, [onResize, textInputRef]);\n\n const emitChange = useCallback((sanitizedText) => {\n if (typeof onChangeFn.current === \"function\") {\n onChangeFn.current(sanitizedText);\n }\n\n if (typeof onResize === \"function\") {\n checkAndEmitResize();\n }\n }, [checkAndEmitResize, onResize]);\n\n useEffect(() => {\n if (textInputRef.current) {\n checkAndEmitResize();\n }\n }, [checkAndEmitResize, textInputRef]);\n\n return emitChange;\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useImperativeHandle, forwardRef, useRef } from \"react\";\nimport { handlePasteHtmlAtCaret } from \"./utils/input-event-utils\";\n\n/**\n * @typedef {Object} Props\n * @property {(event: React.KeyboardEvent) => void} onKeyDown\n * @property {(event: React.KeyboardEvent) => void} onKeyUp\n * @property {() => void} onFocus\n * @property {() => void} onBlur\n * @property {(sanitizedText: string) => void=} onChange\n * @property {(event: React.KeyboardEvent) => void} onArrowUp\n * @property {(event: React.KeyboardEvent) => void} onArrowDown\n * @property {(event: React.KeyboardEvent) => void} onEnter\n * @property {(event: React.ClipboardEvent) => void} onCopy\n * @property {(event: React.ClipboardEvent) => void} onPaste\n * @property {string} placeholder\n * @property {React.CSSProperties} style\n * @property {number} tabIndex\n * @property {string} className\n * @property {(html: string) => void} onChange\n */\n\n/**\n * @typedef {{\n * appendContent: (html: string) => void;\n * html: string;\n * text: string;\n * size: { width: number; height: number;};\n * focus: () => void;\n * }} Ref\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.ForwardRefRenderFunction<Ref, Props>} */\nconst TextInput = (\n { placeholder, style, tabIndex, className, onChange, ...props },\n ref\n) => {\n useImperativeHandle(ref, () => ({\n appendContent: html => {\n if (textInputRef.current) {\n textInputRef.current.focus();\n }\n\n handlePasteHtmlAtCaret(html);\n\n if (textInputRef.current) {\n textInputRef.current.focus();\n }\n\n if (textInputRef.current && placeholderRef.current && textInputRef.current.innerHTML.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else if (placeholderRef.current) {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n\n if (textInputRef.current && typeof onChange === 'function') {\n onChange(textInputRef.current.innerHTML);\n }\n },\n set html(value) {\n if (textInputRef.current) {\n textInputRef.current.innerHTML = value;\n }\n \n if (placeholderRef.current) {\n if (value.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n if (typeof onChange === 'function' && textInputRef.current) {\n onChange(textInputRef.current.innerHTML);\n }\n },\n get html() {\n if (!textInputRef.current) return ''\n\n return textInputRef.current.innerHTML;\n },\n get text() {\n if (!textInputRef.current) return ''\n\n return textInputRef.current.innerText;\n },\n get size() {\n if (!textInputRef.current) {\n return {\n width: 0,\n height: 0\n }\n }\n\n return {\n width: textInputRef.current.offsetWidth,\n height: textInputRef.current.offsetHeight\n };\n },\n focus() {\n if (!textInputRef.current) return\n\n textInputRef.current.focus();\n }\n }));\n\n /** @type {React.MutableRefObject<HTMLDivElement | null>} */\n const placeholderRef = useRef(null);\n /** @type {React.MutableRefObject<HTMLDivElement | null>} */\n const textInputRef = useRef(null);\n\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyDown(event) {\n if (event.key === \"Enter\") {\n props.onEnter(event);\n } else if (event.key === \"ArrowUp\") {\n props.onArrowUp(event);\n } else if (event.key === \"ArrowDown\") {\n props.onArrowDown(event);\n } else {\n if (event.key.length === 1 && placeholderRef.current) {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n props.onKeyDown(event);\n }\n\n /** */\n function handleClick() {\n props.onFocus();\n }\n\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyUp(event) {\n props.onKeyUp(event);\n\n const input = textInputRef.current;\n\n if (placeholderRef.current) {\n if (input?.innerText?.trim() === \"\") {\n placeholderRef.current.style.visibility = \"visible\";\n } else {\n placeholderRef.current.style.visibility = \"hidden\";\n }\n }\n\n if (typeof onChange === 'function' && textInputRef.current) {\n onChange(textInputRef.current.innerHTML);\n }\n }\n\n return (\n <div className=\"react-input-emoji--container\" style={style}>\n <div className=\"react-input-emoji--wrapper\" onClick={handleClick}>\n <div ref={placeholderRef} className=\"react-input-emoji--placeholder\">\n {placeholder}\n </div>\n <div\n ref={textInputRef}\n onKeyDown={handleKeyDown}\n onKeyUp={handleKeyUp}\n tabIndex={tabIndex}\n contentEditable\n className={`react-input-emoji--input${className ? ` ${className}` : \"\"\n }`}\n onBlur={props.onBlur}\n onCopy={props.onCopy}\n onPaste={props.onPaste}\n data-testid=\"react-input-emoji--input\"\n />\n </div>\n </div>\n );\n};\n\nconst TextInputWithRef = forwardRef(TextInput);\n\nexport default TextInputWithRef;\n","/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useRef, useState } from \"react\";\n\n/**\n * @typedef {object} Props\n * @property {boolean} showPicker\n * @property {(event: React.MouseEvent) => void} toggleShowPicker\n * @property {HTMLDivElement=} buttonElement\n */\n\n/**\n * Emoji Picker Button Component\n * @param {Props} props\n * @return {JSX.Element}\n */\nfunction EmojiPickerButton({ showPicker, toggleShowPicker, buttonElement }) {\n const buttonRef = useRef(null);\n const [showCustomButtonContent, setShowCustomButtonContent] = useState(false);\n\n useEffect(() => {\n if ((buttonElement?.childNodes?.length ?? 0) > 2) {\n buttonRef.current.appendChild(buttonElement?.childNodes[0]);\n setShowCustomButtonContent(true);\n }\n }, [buttonElement?.childNodes]);\n\n return (\n <button\n ref={buttonRef}\n type=\"button\"\n className={`react-input-emoji--button${\n showPicker ? \" react-input-emoji--button__show\" : \"\"\n }`}\n onClick={toggleShowPicker}\n >\n {!showCustomButtonContent && (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n height=\"24\"\n className=\"react-input-emoji--button--icon\"\n >\n {/* eslint-disable-next-line max-len */}\n <path d=\"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\" />\n {/* eslint-disable-next-line max-len */}\n <path d=\"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\" />\n </svg>\n )}\n </button>\n );\n}\n\nexport default EmojiPickerButton;\n","function $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\nfunction $c770c458706daa72$export$2e2bcd8739ae039(obj, key, value) {\n if (key in obj) Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n else obj[key] = value;\n return obj;\n}\n\n\nvar $fb96b826c0c5f37a$var$n, $fb96b826c0c5f37a$export$41c562ebe57d11e2, $fb96b826c0c5f37a$var$u, $fb96b826c0c5f37a$export$a8257692ac88316c, $fb96b826c0c5f37a$var$t, $fb96b826c0c5f37a$var$r, $fb96b826c0c5f37a$var$o, $fb96b826c0c5f37a$var$f, $fb96b826c0c5f37a$var$e = {}, $fb96b826c0c5f37a$var$c = [], $fb96b826c0c5f37a$var$s = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\nfunction $fb96b826c0c5f37a$var$a(n1, l1) {\n for(var u1 in l1)n1[u1] = l1[u1];\n return n1;\n}\nfunction $fb96b826c0c5f37a$var$h(n2) {\n var l2 = n2.parentNode;\n l2 && l2.removeChild(n2);\n}\nfunction $fb96b826c0c5f37a$export$c8a8987d4410bf2d(l3, u2, i1) {\n var t1, r1, o1, f1 = {};\n for(o1 in u2)\"key\" == o1 ? t1 = u2[o1] : \"ref\" == o1 ? r1 = u2[o1] : f1[o1] = u2[o1];\n if (arguments.length > 2 && (f1.children = arguments.length > 3 ? $fb96b826c0c5f37a$var$n.call(arguments, 2) : i1), \"function\" == typeof l3 && null != l3.defaultProps) for(o1 in l3.defaultProps)void 0 === f1[o1] && (f1[o1] = l3.defaultProps[o1]);\n return $fb96b826c0c5f37a$var$y(l3, f1, t1, r1, null);\n}\nfunction $fb96b826c0c5f37a$var$y(n3, i2, t2, r2, o2) {\n var f2 = {\n type: n3,\n props: i2,\n key: t2,\n ref: r2,\n __k: null,\n __: null,\n __b: 0,\n __e: null,\n __d: void 0,\n __c: null,\n __h: null,\n constructor: void 0,\n __v: null == o2 ? ++$fb96b826c0c5f37a$var$u : o2\n };\n return null == o2 && null != $fb96b826c0c5f37a$export$41c562ebe57d11e2.vnode && $fb96b826c0c5f37a$export$41c562ebe57d11e2.vnode(f2), f2;\n}\nfunction $fb96b826c0c5f37a$export$7d1e3a5e95ceca43() {\n return {\n current: null\n };\n}\nfunction $fb96b826c0c5f37a$export$ffb0004e005737fa(n4) {\n return n4.children;\n}\nfunction $fb96b826c0c5f37a$export$16fa2f45be04daa8(n5, l4) {\n this.props = n5, this.context = l4;\n}\nfunction $fb96b826c0c5f37a$var$k(n6, l5) {\n if (null == l5) return n6.__ ? $fb96b826c0c5f37a$var$k(n6.__, n6.__.__k.indexOf(n6) + 1) : null;\n for(var u3; l5 < n6.__k.length; l5++)if (null != (u3 = n6.__k[l5]) && null != u3.__e) return u3.__e;\n return \"function\" == typeof n6.type ? $fb96b826c0c5f37a$var$k(n6) : null;\n}\nfunction $fb96b826c0c5f37a$var$b(n7) {\n var l6, u4;\n if (null != (n7 = n7.__) && null != n7.__c) {\n for(n7.__e = n7.__c.base = null, l6 = 0; l6 < n7.__k.length; l6++)if (null != (u4 = n7.__k[l6]) && null != u4.__e) {\n n7.__e = n7.__c.base = u4.__e;\n break;\n }\n return $fb96b826c0c5f37a$var$b(n7);\n }\n}\nfunction $fb96b826c0c5f37a$var$m(n8) {\n (!n8.__d && (n8.__d = !0) && $fb96b826c0c5f37a$var$t.push(n8) && !$fb96b826c0c5f37a$var$g.__r++ || $fb96b826c0c5f37a$var$o !== $fb96b826c0c5f37a$export$41c562ebe57d11e2.debounceRendering) && (($fb96b826c0c5f37a$var$o = $fb96b826c0c5f37a$export$41c562ebe57d11e2.debounceRendering) || $fb96b826c0c5f37a$var$r)($fb96b826c0c5f37a$var$g);\n}\nfunction $fb96b826c0c5f37a$var$g() {\n for(var n9; $fb96b826c0c5f37a$var$g.__r = $fb96b826c0c5f37a$var$t.length;)n9 = $fb96b826c0c5f37a$var$t.sort(function(n10, l7) {\n return n10.__v.__b - l7.__v.__b;\n }), $fb96b826c0c5f37a$var$t = [], n9.some(function(n11) {\n var l8, u5, i3, t3, r3, o3;\n n11.__d && (r3 = (t3 = (l8 = n11).__v).__e, (o3 = l8.__P) && (u5 = [], (i3 = $fb96b826c0c5f37a$var$a({}, t3)).__v = t3.__v + 1, $fb96b826c0c5f37a$var$j(o3, t3, i3, l8.__n, void 0 !== o3.ownerSVGElement, null != t3.__h ? [\n r3\n ] : null, u5, null == r3 ? $fb96b826c0c5f37a$var$k(t3) : r3, t3.__h), $fb96b826c0c5f37a$var$z(u5, t3), t3.__e != r3 && $fb96b826c0c5f37a$var$b(t3)));\n });\n}\nfunction $fb96b826c0c5f37a$var$w(n12, l9, u6, i4, t4, r4, o4, f3, s1, a1) {\n var h1, v1, p1, _1, b1, m1, g1, w1 = i4 && i4.__k || $fb96b826c0c5f37a$var$c, A1 = w1.length;\n for(u6.__k = [], h1 = 0; h1 < l9.length; h1++)if (null != (_1 = u6.__k[h1] = null == (_1 = l9[h1]) || \"boolean\" == typeof _1 ? null : \"string\" == typeof _1 || \"number\" == typeof _1 || \"bigint\" == typeof _1 ? $fb96b826c0c5f37a$var$y(null, _1, null, null, _1) : Array.isArray(_1) ? $fb96b826c0c5f37a$var$y($fb96b826c0c5f37a$export$ffb0004e005737fa, {\n children: _1\n }, null, null, null) : _1.__b > 0 ? $fb96b826c0c5f37a$var$y(_1.type, _1.props, _1.key, null, _1.__v) : _1)) {\n if (_1.__ = u6, _1.__b = u6.__b + 1, null === (p1 = w1[h1]) || p1 && _1.key == p1.key && _1.type === p1.type) w1[h1] = void 0;\n else for(v1 = 0; v1 < A1; v1++){\n if ((p1 = w1[v1]) && _1.key == p1.key && _1.type === p1.type) {\n w1[v1] = void 0;\n break;\n }\n p1 = null;\n }\n $fb96b826c0c5f37a$var$j(n12, _1, p1 = p1 || $fb96b826c0c5f37a$var$e, t4, r4, o4, f3, s1, a1), b1 = _1.__e, (v1 = _1.ref) && p1.ref != v1 && (g1 || (g1 = []), p1.ref && g1.push(p1.ref, null, _1), g1.push(v1, _1.__c || b1, _1)), null != b1 ? (null == m1 && (m1 = b1), \"function\" == typeof _1.type && _1.__k === p1.__k ? _1.__d = s1 = $fb96b826c0c5f37a$var$x(_1, s1, n12) : s1 = $fb96b826c0c5f37a$var$P(n12, _1, p1, w1, b1, s1), \"function\" == typeof u6.type && (u6.__d = s1)) : s1 && p1.__e == s1 && s1.parentNode != n12 && (s1 = $fb96b826c0c5f37a$var$k(p1));\n }\n for(u6.__e = m1, h1 = A1; h1--;)null != w1[h1] && (\"function\" == typeof u6.type && null != w1[h1].__e && w1[h1].__e == u6.__d && (u6.__d = $fb96b826c0c5f37a$var$k(i4, h1 + 1)), $fb96b826c0c5f37a$var$N(w1[h1], w1[h1]));\n if (g1) for(h1 = 0; h1 < g1.length; h1++)$fb96b826c0c5f37a$var$M(g1[h1], g1[++h1], g1[++h1]);\n}\nfunction $fb96b826c0c5f37a$var$x(n13, l10, u7) {\n for(var i5, t5 = n13.__k, r5 = 0; t5 && r5 < t5.length; r5++)(i5 = t5[r5]) && (i5.__ = n13, l10 = \"function\" == typeof i5.type ? $fb96b826c0c5f37a$var$x(i5, l10, u7) : $fb96b826c0c5f37a$var$P(u7, i5, i5, t5, i5.__e, l10));\n return l10;\n}\nfunction $fb96b826c0c5f37a$export$47e4c5b300681277(n14, l11) {\n return l11 = l11 || [], null == n14 || \"boolean\" == typeof n14 || (Array.isArray(n14) ? n14.some(function(n15) {\n $fb96b826c0c5f37a$export$47e4c5b300681277(n15, l11);\n }) : l11.push(n14)), l11;\n}\nfunction $fb96b826c0c5f37a$var$P(n16, l12, u8, i6, t6, r6) {\n var o5, f4, e1;\n if (void 0 !== l12.__d) o5 = l12.__d, l12.__d = void 0;\n else if (null == u8 || t6 != r6 || null == t6.parentNode) n: if (null == r6 || r6.parentNode !== n16) n16.appendChild(t6), o5 = null;\n else {\n for(f4 = r6, e1 = 0; (f4 = f4.nextSibling) && e1 < i6.length; e1 += 2)if (f4 == t6) break n;\n n16.insertBefore(t6, r6), o5 = r6;\n }\n return void 0 !== o5 ? o5 : t6.nextSibling;\n}\nfunction $fb96b826c0c5f37a$var$C(n17, l13, u9, i7, t7) {\n var r7;\n for(r7 in u9)\"children\" === r7 || \"key\" === r7 || r7 in l13 || $fb96b826c0c5f37a$var$H(n17, r7, null, u9[r7], i7);\n for(r7 in l13)t7 && \"function\" != typeof l13[r7] || \"children\" === r7 || \"key\" === r7 || \"value\" === r7 || \"checked\" === r7 || u9[r7] === l13[r7] || $fb96b826c0c5f37a$var$H(n17, r7, l13[r7], u9[r7], i7);\n}\nfunction $fb96b826c0c5f37a$var$$(n18, l14, u10) {\n \"-\" === l14[0] ? n18.setProperty(l14, u10) : n18[l14] = null == u10 ? \"\" : \"number\" != typeof u10 || $fb96b826c0c5f37a$var$s.test(l14) ? u10 : u10 + \"px\";\n}\nfunction $fb96b826c0c5f37a$var$H(n19, l15, u11, i8, t8) {\n var r8;\n n: if (\"style\" === l15) {\n if (\"string\" == typeof u11) n19.style.cssText = u11;\n else {\n if (\"string\" == typeof i8 && (n19.style.cssText = i8 = \"\"), i8) for(l15 in i8)u11 && l15 in u11 || $fb96b826c0c5f37a$var$$(n19.style, l15, \"\");\n if (u11) for(l15 in u11)i8 && u11[l15] === i8[l15] || $fb96b826c0c5f37a$var$$(n19.style, l15, u11[l15]);\n }\n } else if (\"o\" === l15[0] && \"n\" === l15[1]) r8 = l15 !== (l15 = l15.replace(/Capture$/, \"\")), l15 = l15.toLowerCase() in n19 ? l15.toLowerCase().slice(2) : l15.slice(2), n19.l || (n19.l = {}), n19.l[l15 + r8] = u11, u11 ? i8 || n19.addEventListener(l15, r8 ? $fb96b826c0c5f37a$var$T : $fb96b826c0c5f37a$var$I, r8) : n19.removeEventListener(l15, r8 ? $fb96b826c0c5f37a$var$T : $fb96b826c0c5f37a$var$I, r8);\n else if (\"dangerouslySetInnerHTML\" !== l15) {\n if (t8) l15 = l15.replace(/xlink[H:h]/, \"h\").replace(/sName$/, \"s\");\n else if (\"href\" !== l15 && \"list\" !== l15 && \"form\" !== l15 && \"tabIndex\" !== l15 && \"download\" !== l15 && l15 in n19) try {\n n19[l15] = null == u11 ? \"\" : u11;\n break n;\n } catch (n) {}\n \"function\" == typeof u11 || (null != u11 && (!1 !== u11 || \"a\" === l15[0] && \"r\" === l15[1]) ? n19.setAttribute(l15, u11) : n19.removeAttribute(l15));\n }\n}\nfunction $fb96b826c0c5f37a$var$I(n20) {\n this.l[n20.type + !1]($fb96b826c0c5f37a$export$41c562ebe57d11e2.event ? $fb96b826c0c5f37a$export$41c562ebe57d11e2.event(n20) : n20);\n}\nfunction $fb96b826c0c5f37a$var$T(n21) {\n this.l[n21.type + !0]($fb96b826c0c5f37a$export$41c562ebe57d11e2.event ? $fb96b826c0c5f37a$export$41c562ebe57d11e2.event(n21) : n21);\n}\nfunction $fb96b826c0c5f37a$var$j(n22, u12, i9, t9, r9, o6, f5, e2, c1) {\n var s2, h2, v2, y1, p2, k1, b2, m2, g2, x1, A2, P1 = u12.type;\n if (void 0 !== u12.constructor) return null;\n null != i9.__h && (c1 = i9.__h, e2 = u12.__e = i9.__e, u12.__h = null, o6 = [\n e2\n ]), (s2 = $fb96b826c0c5f37a$export$41c562ebe57d11e2.__b) && s2(u12);\n try {\n n: if (\"function\" == typeof P1) {\n if (m2 = u12.props, g2 = (s2 = P1.contextType) && t9[s2.__c], x1 = s2 ? g2 ? g2.props.value : s2.__ : t9, i9.__c ? b2 = (h2 = u12.__c = i9.__c).__ = h2.__E : (\"prototype\" in P1 && P1.prototype.render ? u12.__c = h2 = new P1(m2, x1) : (u12.__c = h2 = new $fb96b826c0c5f37a$export$16fa2f45be04daa8(m2, x1), h2.constructor = P1, h2.render = $fb96b826c0c5f37a$var$O), g2 && g2.sub(h2), h2.props = m2, h2.state || (h2.state = {}), h2.context = x1, h2.__n = t9, v2 = h2.__d = !0, h2.__h = []), null == h2.__s && (h2.__s = h2.state), null != P1.getDerivedStateFromProps && (h2.__s == h2.state && (h2.__s = $fb96b826c0c5f37a$var$a({}, h2.__s)), $fb96b826c0c5f37a$var$a(h2.__s, P1.getDerivedStateFromProps(m2, h2.__s))), y1 = h2.props, p2 = h2.state, v2) null == P1.getDerivedStateFromProps && null != h2.componentWillMount && h2.componentWillMount(), null != h2.componentDidMount && h2.__h.push(h2.componentDidMount);\n else {\n if (null == P1.getDerivedStateFromProps && m2 !== y1 && null != h2.componentWillReceiveProps && h2.componentWillReceiveProps(m2, x1), !h2.__e && null != h2.shouldComponentUpdate && !1 === h2.shouldComponentUpdate(m2, h2.__s, x1) || u12.__v === i9.__v) {\n h2.props = m2, h2.state = h2.__s, u12.__v !== i9.__v && (h2.__d = !1), h2.__v = u12, u12.__e = i9.__e, u12.__k = i9.__k, u12.__k.forEach(function(n23) {\n n23 && (n23.__ = u12);\n }), h2.__h.length && f5.push(h2);\n break n;\n }\n null != h2.componentWillUpdate && h2.componentWillUpdate(m2, h2.__s, x1), null != h2.componentDidUpdate && h2.__h.push(function() {\n h2.componentDidUpdate(y1, p2, k1);\n });\n }\n h2.context = x1, h2.props = m2, h2.state = h2.__s, (s2 = $fb96b826c0c5f37a$export$41c562ebe57d11e2.__r) && s2(u12), h2.__d = !1, h2.__v = u12, h2.__P = n22, s2 = h2.render(h2.props, h2.state, h2.context), h2.state = h2.__s, null != h2.getChildContext && (t9 = $fb96b826c0c5f37a$var$a($fb96b826c0c5f37a$var$a({}, t9), h2.getChildContext())), v2 || null == h2.getSnapshotBeforeUpdate || (k1 = h2.getSnapshotBeforeUpdate(y1, p2)), A2 = null != s2 && s2.type === $fb96b826c0c5f37a$export$ffb0004e005737fa && null == s2.key ? s2.props.children : s2, $fb96b826c0c5f37a$var$w(n22, Array.isArray(A2) ? A2 : [\n A2\n ], u12, i9, t9, r9, o6, f5, e2, c1), h2.base = u12.__e, u12.__h = null, h2.__h.length && f5.push(h2), b2 && (h2.__E = h2.__ = null), h2.__e = !1;\n } else null == o6 && u12.__v === i9.__v ? (u12.__k = i9.__k, u12.__e = i9.__e) : u12.__e = $fb96b826c0c5f37a$var$L(i9.__e, u12, i9, t9, r9, o6, f5, c1);\n (s2 = $fb96b826c0c5f37a$export$41c562ebe57d11e2.diffed) && s2(u12);\n } catch (n24) {\n u12.__v = null, (c1 || null != o6) && (u12.__e = e2, u12.__h = !!c1, o6[o6.indexOf(e2)] = null), $fb96b826c0c5f37a$export$41c562ebe57d11e2.__e(n24, u12, i9);\n }\n}\nfunction $fb96b826c0c5f37a$var$z(n25, u13) {\n $fb96b826c0c5f37a$export$41c562ebe57d11e2.__c && $fb96b826c0c5f37a$export$41c562ebe57d11e2.__c(u13, n25), n25.some(function(u14) {\n try {\n n25 = u14.__h, u14.__h = [], n25.some(function(n26) {\n n26.call(u14);\n });\n } catch (n27) {\n $fb96b826c0c5f37a$export$41c562ebe57d11e2.__e(n27, u14.__v);\n }\n });\n}\nfunction $fb96b826c0c5f37a$var$L(l16, u15, i10, t10, r10, o7, f6, c2) {\n var s3, a2, v3, y2 = i10.props, p3 = u15.props, d1 = u15.type, _2 = 0;\n if (\"svg\" === d1 && (r10 = !0), null != o7) {\n for(; _2 < o7.length; _2++)if ((s3 = o7[_2]) && \"setAttribute\" in s3 == !!d1 && (d1 ? s3.localName === d1 : 3 === s3.nodeType)) {\n l16 = s3, o7[_2] = null;\n break;\n }\n }\n if (null == l16) {\n if (null === d1) return document.createTextNode(p3);\n l16 = r10 ? document.createElementNS(\"http://www.w3.org/2000/svg\", d1) : document.createElement(d1, p3.is && p3), o7 = null, c2 = !1;\n }\n if (null === d1) y2 === p3 || c2 && l16.data === p3 || (l16.data = p3);\n else {\n if (o7 = o7 && $fb96b826c0c5f37a$var$n.call(l16.childNodes), a2 = (y2 = i10.props || $fb96b826c0c5f37a$var$e).dangerouslySetInnerHTML, v3 = p3.dangerouslySetInnerHTML, !c2) {\n if (null != o7) for(y2 = {}, _2 = 0; _2 < l16.attributes.length; _2++)y2[l16.attributes[_2].name] = l16.attributes[_2].value;\n (v3 || a2) && (v3 && (a2 && v3.__html == a2.__html || v3.__html === l16.innerHTML) || (l16.innerHTML = v3 && v3.__html || \"\"));\n }\n if ($fb96b826c0c5f37a$var$C(l16, p3, y2, r10, c2), v3) u15.__k = [];\n else if (_2 = u15.props.children, $fb96b826c0c5f37a$var$w(l16, Array.isArray(_2) ? _2 : [\n _2\n ], u15, i10, t10, r10 && \"foreignObject\" !== d1, o7, f6, o7 ? o7[0] : i10.__k && $fb96b826c0c5f37a$var$k(i10, 0), c2), null != o7) for(_2 = o7.length; _2--;)null != o7[_2] && $fb96b826c0c5f37a$var$h(o7[_2]);\n c2 || (\"value\" in p3 && void 0 !== (_2 = p3.value) && (_2 !== y2.value || _2 !== l16.value || \"progress\" === d1 && !_2) && $fb96b826c0c5f37a$var$H(l16, \"value\", _2, y2.value, !1), \"checked\" in p3 && void 0 !== (_2 = p3.checked) && _2 !== l16.checked && $fb96b826c0c5f37a$var$H(l16, \"checked\", _2, y2.checked, !1));\n }\n return l16;\n}\nfunction $fb96b826c0c5f37a$var$M(n28, u16, i11) {\n try {\n \"function\" == typeof n28 ? n28(u16) : n28.current = u16;\n } catch (n29) {\n $fb96b826c0c5f37a$export$41c562ebe57d11e2.__e(n29, i11);\n }\n}\nfunction $fb96b826c0c5f37a$var$N(n30, u17, i12) {\n var t11, r11;\n if ($fb96b826c0c5f37a$export$41c562ebe57d11e2.unmount && $fb96b826c0c5f37a$export$41c562ebe57d11e2.unmount(n30), (t11 = n30.ref) && (t11.current && t11.current !== n30.__e || $fb96b826c0c5f37a$var$M(t11, null, u17)), null != (t11 = n30.__c)) {\n if (t11.componentWillUnmount) try {\n t11.componentWillUnmount();\n } catch (n31) {\n $fb96b826c0c5f37a$export$41c562ebe57d11e2.__e(n31, u17);\n }\n t11.base = t11.__P = null;\n }\n if (t11 = n30.__k) for(r11 = 0; r11 < t11.length; r11++)t11[r11] && $fb96b826c0c5f37a$var$N(t11[r11], u17, \"function\" != typeof n30.type);\n i12 || null == n30.__e || $fb96b826c0c5f37a$var$h(n30.__e), n30.__e = n30.__d = void 0;\n}\nfunction $fb96b826c0c5f37a$var$O(n32, l, u18) {\n return this.constructor(n32, u18);\n}\nfunction $fb96b826c0c5f37a$export$b3890eb0ae9dca99(u19, i13, t12) {\n var r12, o8, f7;\n $fb96b826c0c5f37a$export$41c562ebe57d11e2.__ && $fb96b826c0c5f37a$export$41c562ebe57d11e2.__(u19, i13), o8 = (r12 = \"function\" == typeof t12) ? null : t12 && t12.__k || i13.__k, f7 = [], $fb96b826c0c5f37a$var$j(i13, u19 = (!r12 && t12 || i13).__k = $fb96b826c0c5f37a$export$c8a8987d4410bf2d($fb96b826c0c5f37a$export$ffb0004e005737fa, null, [\n u19\n ]), o8 || $fb96b826c0c5f37a$var$e, $fb96b826c0c5f37a$var$e, void 0 !== i13.ownerSVGElement, !r12 && t12 ? [\n t12\n ] : o8 ? null : i13.firstChild ? $fb96b826c0c5f37a$var$n.call(i13.childNodes) : null, f7, !r12 && t12 ? t12 : o8 ? o8.__e : i13.firstChild, r12), $fb96b826c0c5f37a$var$z(f7, u19);\n}\nfunction $fb96b826c0c5f37a$export$fa8d919ba61d84db(n33, l17) {\n $fb96b826c0c5f37a$export$b3890eb0ae9dca99(n33, l17, $fb96b826c0c5f37a$export$fa8d919ba61d84db);\n}\nfunction $fb96b826c0c5f37a$export$e530037191fcd5d7(l18, u20, i14) {\n var t13, r13, o9, f8 = $fb96b826c0c5f37a$var$a({}, l18.props);\n for(o9 in u20)\"key\" == o9 ? t13 = u20[o9] : \"ref\" == o9 ? r13 = u20[o9] : f8[o9] = u20[o9];\n return arguments.length > 2 && (f8.children = arguments.length > 3 ? $fb96b826c0c5f37a$var$n.call(arguments, 2) : i14), $fb96b826c0c5f37a$var$y(l18.type, f8, t13 || l18.key, r13 || l18.ref, null);\n}\nfunction $fb96b826c0c5f37a$export$fd42f52fd3ae1109(n34, l19) {\n var u21 = {\n __c: l19 = \"__cC\" + $fb96b826c0c5f37a$var$f++,\n __: n34,\n Consumer: function(n35, l20) {\n return n35.children(l20);\n },\n Provider: function(n36) {\n var u22, i15;\n return this.getChildContext || (u22 = [], (i15 = {})[l19] = this, this.getChildContext = function() {\n return i15;\n }, this.shouldComponentUpdate = function(n37) {\n this.props.value !== n37.value && u22.some($fb96b826c0c5f37a$var$m);\n }, this.sub = function(n38) {\n u22.push(n38);\n var l21 = n38.componentWillUnmount;\n n38.componentWillUnmount = function() {\n u22.splice(u22.indexOf(n38), 1), l21 && l21.call(n38);\n };\n }), n36.children;\n }\n };\n return u21.Provider.__ = u21.Consumer.contextType = u21;\n}\n$fb96b826c0c5f37a$var$n = $fb96b826c0c5f37a$var$c.slice, $fb96b826c0c5f37a$export$41c562ebe57d11e2 = {\n __e: function(n39, l22) {\n for(var u23, i16, t14; l22 = l22.__;)if ((u23 = l22.__c) && !u23.__) try {\n if ((i16 = u23.constructor) && null != i16.getDerivedStateFromError && (u23.setState(i16.getDerivedStateFromError(n39)), t14 = u23.__d), null != u23.componentDidCatch && (u23.componentDidCatch(n39), t14 = u23.__d), t14) return u23.__E = u23;\n } catch (l23) {\n n39 = l23;\n }\n throw n39;\n }\n}, $fb96b826c0c5f37a$var$u = 0, $fb96b826c0c5f37a$export$a8257692ac88316c = function(n40) {\n return null != n40 && void 0 === n40.constructor;\n}, $fb96b826c0c5f37a$export$16fa2f45be04daa8.prototype.setState = function(n41, l24) {\n var u24;\n u24 = null != this.__s && this.__s !== this.state ? this.__s : this.__s = $fb96b826c0c5f37a$var$a({}, this.state), \"function\" == typeof n41 && (n41 = n41($fb96b826c0c5f37a$var$a({}, u24), this.props)), n41 && $fb96b826c0c5f37a$var$a(u24, n41), null != n41 && this.__v && (l24 && this.__h.push(l24), $fb96b826c0c5f37a$var$m(this));\n}, $fb96b826c0c5f37a$export$16fa2f45be04daa8.prototype.forceUpdate = function(n42) {\n this.__v && (this.__e = !0, n42 && this.__h.push(n42), $fb96b826c0c5f37a$var$m(this));\n}, $fb96b826c0c5f37a$export$16fa2f45be04daa8.prototype.render = $fb96b826c0c5f37a$export$ffb0004e005737fa, $fb96b826c0c5f37a$var$t = [], $fb96b826c0c5f37a$var$r = \"function\" == typeof Promise ? Promise.prototype.then.bind(Promise.resolve()) : setTimeout, $fb96b826c0c5f37a$var$g.__r = 0, $fb96b826c0c5f37a$var$f = 0;\n\n\n\nvar $bd9dd35321b03dd4$var$o = 0;\nfunction $bd9dd35321b03dd4$export$34b9dba7ce09269b(_1, e1, n, t, f) {\n var l, s, u = {};\n for(s in e1)\"ref\" == s ? l = e1[s] : u[s] = e1[s];\n var a = {\n type: _1,\n props: u,\n key: n,\n ref: l,\n __k: null,\n __: null,\n __b: 0,\n __e: null,\n __d: void 0,\n __c: null,\n __h: null,\n constructor: void 0,\n __v: --$bd9dd35321b03dd4$var$o,\n __source: t,\n __self: f\n };\n if (\"function\" == typeof _1 && (l = _1.defaultProps)) for(s in l)void 0 === u[s] && (u[s] = l[s]);\n return (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).vnode && (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).vnode(a), a;\n}\n\n\n\nfunction $f72b75cf796873c7$var$set(key, value) {\n try {\n window.localStorage[`emoji-mart.${key}`] = JSON.stringify(value);\n } catch (error) {}\n}\nfunction $f72b75cf796873c7$var$get(key) {\n try {\n const value = window.localStorage[`emoji-mart.${key}`];\n if (value) return JSON.parse(value);\n } catch (error) {}\n}\nvar $f72b75cf796873c7$export$2e2bcd8739ae039 = {\n set: $f72b75cf796873c7$var$set,\n get: $f72b75cf796873c7$var$get\n};\n\n\nconst $c84d045dcc34faf5$var$CACHE = new Map();\nconst $c84d045dcc34faf5$var$VERSIONS = [\n {\n v: 14,\n emoji: \"\\uD83E\\uDEE0\"\n },\n {\n v: 13.1,\n emoji: \"\\uD83D\\uDE36\\u200D\\uD83C\\uDF2B\\uFE0F\"\n },\n {\n v: 13,\n emoji: \"\\uD83E\\uDD78\"\n },\n {\n v: 12.1,\n emoji: \"\\uD83E\\uDDD1\\u200D\\uD83E\\uDDB0\"\n },\n {\n v: 12,\n emoji: \"\\uD83E\\uDD71\"\n },\n {\n v: 11,\n emoji: \"\\uD83E\\uDD70\"\n },\n {\n v: 5,\n emoji: \"\\uD83E\\uDD29\"\n },\n {\n v: 4,\n emoji: \"\\uD83D\\uDC71\\u200D\\u2640\\uFE0F\"\n },\n {\n v: 3,\n emoji: \"\\uD83E\\uDD23\"\n },\n {\n v: 2,\n emoji: \"\\uD83D\\uDC4B\\uD83C\\uDFFB\"\n },\n {\n v: 1,\n emoji: \"\\uD83D\\uDE43\"\n }, \n];\nfunction $c84d045dcc34faf5$var$latestVersion() {\n for (const { v: v , emoji: emoji } of $c84d045dcc34faf5$var$VERSIONS){\n if ($c84d045dcc34faf5$var$isSupported(emoji)) return v;\n }\n}\nfunction $c84d045dcc34faf5$var$noCountryFlags() {\n if ($c84d045dcc34faf5$var$isSupported(\"\\uD83C\\uDDE8\\uD83C\\uDDE6\")) return false;\n return true;\n}\nfunction $c84d045dcc34faf5$var$isSupported(emoji) {\n if ($c84d045dcc34faf5$var$CACHE.has(emoji)) return $c84d045dcc34faf5$var$CACHE.get(emoji);\n const supported = $c84d045dcc34faf5$var$isEmojiSupported(emoji);\n $c84d045dcc34faf5$var$CACHE.set(emoji, supported);\n return supported;\n}\n// https://github.com/koala-interactive/is-emoji-supported\nconst $c84d045dcc34faf5$var$isEmojiSupported = (()=>{\n let ctx = null;\n try {\n if (!navigator.userAgent.includes(\"jsdom\")) ctx = document.createElement(\"canvas\").getContext(\"2d\", {\n willReadFrequently: true\n });\n } catch {}\n // Not in browser env\n if (!ctx) return ()=>false;\n const CANVAS_HEIGHT = 25;\n const CANVAS_WIDTH = 20;\n const textSize = Math.floor(CANVAS_HEIGHT / 2);\n // Initialize convas context\n ctx.font = textSize + \"px Arial, Sans-Serif\";\n ctx.textBaseline = \"top\";\n ctx.canvas.width = CANVAS_WIDTH * 2;\n ctx.canvas.height = CANVAS_HEIGHT;\n return (unicode)=>{\n ctx.clearRect(0, 0, CANVAS_WIDTH * 2, CANVAS_HEIGHT);\n // Draw in red on the left\n ctx.fillStyle = \"#FF0000\";\n ctx.fillText(unicode, 0, 22);\n // Draw in blue on right\n ctx.fillStyle = \"#0000FF\";\n ctx.fillText(unicode, CANVAS_WIDTH, 22);\n const a = ctx.getImageData(0, 0, CANVAS_WIDTH, CANVAS_HEIGHT).data;\n const count = a.length;\n let i = 0;\n // Search the first visible pixel\n for(; i < count && !a[i + 3]; i += 4);\n // No visible pixel\n if (i >= count) return false;\n // Emoji has immutable color, so we check the color of the emoji in two different colors\n // the result show be the same.\n const x = CANVAS_WIDTH + i / 4 % CANVAS_WIDTH;\n const y = Math.floor(i / 4 / CANVAS_WIDTH);\n const b = ctx.getImageData(x, y, 1, 1).data;\n if (a[i] !== b[0] || a[i + 2] !== b[2]) return false;\n // Some emojis are a contraction of different ones, so if it's not\n // supported, it will show multiple characters\n if (ctx.measureText(unicode).width >= CANVAS_WIDTH) return false;\n // Supported\n return true;\n };\n})();\nvar $c84d045dcc34faf5$export$2e2bcd8739ae039 = {\n latestVersion: $c84d045dcc34faf5$var$latestVersion,\n noCountryFlags: $c84d045dcc34faf5$var$noCountryFlags\n};\n\n\n\nconst $b22cfd0a55410b4f$var$DEFAULTS = [\n \"+1\",\n \"grinning\",\n \"kissing_heart\",\n \"heart_eyes\",\n \"laughing\",\n \"stuck_out_tongue_winking_eye\",\n \"sweat_smile\",\n \"joy\",\n \"scream\",\n \"disappointed\",\n \"unamused\",\n \"weary\",\n \"sob\",\n \"sunglasses\",\n \"heart\", \n];\nlet $b22cfd0a55410b4f$var$Index = null;\nfunction $b22cfd0a55410b4f$var$add(emoji) {\n $b22cfd0a55410b4f$var$Index || ($b22cfd0a55410b4f$var$Index = (0, $f72b75cf796873c7$export$2e2bcd8739ae039).get(\"frequently\") || {});\n const emojiId = emoji.id || emoji;\n if (!emojiId) return;\n $b22cfd0a55410b4f$var$Index[emojiId] || ($b22cfd0a55410b4f$var$Index[emojiId] = 0);\n $b22cfd0a55410b4f$var$Index[emojiId] += 1;\n (0, $f72b75cf796873c7$export$2e2bcd8739ae039).set(\"last\", emojiId);\n (0, $f72b75cf796873c7$export$2e2bcd8739ae039).set(\"frequently\", $b22cfd0a55410b4f$var$Index);\n}\nfunction $b22cfd0a55410b4f$var$get({ maxFrequentRows: maxFrequentRows , perLine: perLine }) {\n if (!maxFrequentRows) return [];\n $b22cfd0a55410b4f$var$Index || ($b22cfd0a55410b4f$var$Index = (0, $f72b75cf796873c7$export$2e2bcd8739ae039).get(\"frequently\"));\n let emojiIds = [];\n if (!$b22cfd0a55410b4f$var$Index) {\n $b22cfd0a55410b4f$var$Index = {};\n for(let i in $b22cfd0a55410b4f$var$DEFAULTS.slice(0, perLine)){\n const emojiId = $b22cfd0a55410b4f$var$DEFAULTS[i];\n $b22cfd0a55410b4f$var$Index[emojiId] = perLine - i;\n emojiIds.push(emojiId);\n }\n return emojiIds;\n }\n const max = maxFrequentRows * perLine;\n const last = (0, $f72b75cf796873c7$export$2e2bcd8739ae039).get(\"last\");\n for(let emojiId in $b22cfd0a55410b4f$var$Index)emojiIds.push(emojiId);\n emojiIds.sort((a, b)=>{\n const aScore = $b22cfd0a55410b4f$var$Index[b];\n const bScore = $b22cfd0a55410b4f$var$Index[a];\n if (aScore == bScore) return a.localeCompare(b);\n return aScore - bScore;\n });\n if (emojiIds.length > max) {\n const removedIds = emojiIds.slice(max);\n emojiIds = emojiIds.slice(0, max);\n for (let removedId of removedIds){\n if (removedId == last) continue;\n delete $b22cfd0a55410b4f$var$Index[removedId];\n }\n if (last && emojiIds.indexOf(last) == -1) {\n delete $b22cfd0a55410b4f$var$Index[emojiIds[emojiIds.length - 1]];\n emojiIds.splice(-1, 1, last);\n }\n (0, $f72b75cf796873c7$export$2e2bcd8739ae039).set(\"frequently\", $b22cfd0a55410b4f$var$Index);\n }\n return emojiIds;\n}\nvar $b22cfd0a55410b4f$export$2e2bcd8739ae039 = {\n add: $b22cfd0a55410b4f$var$add,\n get: $b22cfd0a55410b4f$var$get,\n DEFAULTS: $b22cfd0a55410b4f$var$DEFAULTS\n};\n\n\nvar $8d50d93417ef682a$exports = {};\n$8d50d93417ef682a$exports = JSON.parse('{\"search\":\"Search\",\"search_no_results_1\":\"Oh no!\",\"search_no_results_2\":\"That emoji couldn\\u2019t be found\",\"pick\":\"Pick an emoji\\u2026\",\"add_custom\":\"Add custom emoji\",\"categories\":{\"activity\":\"Activity\",\"custom\":\"Custom\",\"flags\":\"Flags\",\"foods\":\"Food & Drink\",\"frequent\":\"Frequently used\",\"nature\":\"Animals & Nature\",\"objects\":\"Objects\",\"people\":\"Smileys & People\",\"places\":\"Travel & Places\",\"search\":\"Search Results\",\"symbols\":\"Symbols\"},\"skins\":{\"1\":\"Default\",\"2\":\"Light\",\"3\":\"Medium-Light\",\"4\":\"Medium\",\"5\":\"Medium-Dark\",\"6\":\"Dark\",\"choose\":\"Choose default skin tone\"}}');\n\n\nvar $b247ea80b67298d5$export$2e2bcd8739ae039 = {\n autoFocus: {\n value: false\n },\n dynamicWidth: {\n value: false\n },\n emojiButtonColors: {\n value: null\n },\n emojiButtonRadius: {\n value: \"100%\"\n },\n emojiButtonSize: {\n value: 36\n },\n emojiSize: {\n value: 24\n },\n emojiVersion: {\n value: 14,\n choices: [\n 1,\n 2,\n 3,\n 4,\n 5,\n 11,\n 12,\n 12.1,\n 13,\n 13.1,\n 14\n ]\n },\n exceptEmojis: {\n value: []\n },\n icons: {\n value: \"auto\",\n choices: [\n \"auto\",\n \"outline\",\n \"solid\"\n ]\n },\n locale: {\n value: \"en\",\n choices: [\n \"en\",\n \"ar\",\n \"be\",\n \"cs\",\n \"de\",\n \"es\",\n \"fa\",\n \"fi\",\n \"fr\",\n \"hi\",\n \"it\",\n \"ja\",\n \"kr\",\n \"nl\",\n \"pl\",\n \"pt\",\n \"ru\",\n \"sa\",\n \"tr\",\n \"uk\",\n \"vi\",\n \"zh\", \n ]\n },\n maxFrequentRows: {\n value: 4\n },\n navPosition: {\n value: \"top\",\n choices: [\n \"top\",\n \"bottom\",\n \"none\"\n ]\n },\n noCountryFlags: {\n value: false\n },\n noResultsEmoji: {\n value: null\n },\n perLine: {\n value: 9\n },\n previewEmoji: {\n value: null\n },\n previewPosition: {\n value: \"bottom\",\n choices: [\n \"top\",\n \"bottom\",\n \"none\"\n ]\n },\n searchPosition: {\n value: \"sticky\",\n choices: [\n \"sticky\",\n \"static\",\n \"none\"\n ]\n },\n set: {\n value: \"native\",\n choices: [\n \"native\",\n \"apple\",\n \"facebook\",\n \"google\",\n \"twitter\"\n ]\n },\n skin: {\n value: 1,\n choices: [\n 1,\n 2,\n 3,\n 4,\n 5,\n 6\n ]\n },\n skinTonePosition: {\n value: \"preview\",\n choices: [\n \"preview\",\n \"search\",\n \"none\"\n ]\n },\n theme: {\n value: \"auto\",\n choices: [\n \"auto\",\n \"light\",\n \"dark\"\n ]\n },\n // Data\n categories: null,\n categoryIcons: null,\n custom: null,\n data: null,\n i18n: null,\n // Callbacks\n getImageURL: null,\n getSpritesheetURL: null,\n onAddCustomEmoji: null,\n onClickOutside: null,\n onEmojiSelect: null,\n // Deprecated\n stickySearch: {\n deprecated: true,\n value: true\n }\n};\n\n\n\nlet $7adb23b0109cc36a$export$dbe3113d60765c1a = null;\nlet $7adb23b0109cc36a$export$2d0294657ab35f1b = null;\nconst $7adb23b0109cc36a$var$fetchCache = {};\nasync function $7adb23b0109cc36a$var$fetchJSON(src) {\n if ($7adb23b0109cc36a$var$fetchCache[src]) return $7adb23b0109cc36a$var$fetchCache[src];\n const response = await fetch(src);\n const json = await response.json();\n $7adb23b0109cc36a$var$fetchCache[src] = json;\n return json;\n}\nlet $7adb23b0109cc36a$var$promise = null;\nlet $7adb23b0109cc36a$var$initiated = false;\nlet $7adb23b0109cc36a$var$initCallback = null;\nlet $7adb23b0109cc36a$var$initialized = false;\nfunction $7adb23b0109cc36a$export$2cd8252107eb640b(options, { caller: caller } = {}) {\n $7adb23b0109cc36a$var$promise || ($7adb23b0109cc36a$var$promise = new Promise((resolve)=>{\n $7adb23b0109cc36a$var$initCallback = resolve;\n }));\n if (options) $7adb23b0109cc36a$var$_init(options);\n else if (caller && !$7adb23b0109cc36a$var$initialized) console.warn(`\\`${caller}\\` requires data to be initialized first. Promise will be pending until \\`init\\` is called.`);\n return $7adb23b0109cc36a$var$promise;\n}\nasync function $7adb23b0109cc36a$var$_init(props) {\n $7adb23b0109cc36a$var$initialized = true;\n let { emojiVersion: emojiVersion , set: set , locale: locale } = props;\n emojiVersion || (emojiVersion = (0, $b247ea80b67298d5$export$2e2bcd8739ae039).emojiVersion.value);\n set || (set = (0, $b247ea80b67298d5$export$2e2bcd8739ae039).set.value);\n locale || (locale = (0, $b247ea80b67298d5$export$2e2bcd8739ae039).locale.value);\n if (!$7adb23b0109cc36a$export$2d0294657ab35f1b) {\n $7adb23b0109cc36a$export$2d0294657ab35f1b = (typeof props.data === \"function\" ? await props.data() : props.data) || await $7adb23b0109cc36a$var$fetchJSON(`https://cdn.jsdelivr.net/npm/@emoji-mart/data@latest/sets/${emojiVersion}/${set}.json`);\n $7adb23b0109cc36a$export$2d0294657ab35f1b.emoticons = {};\n $7adb23b0109cc36a$export$2d0294657ab35f1b.natives = {};\n $7adb23b0109cc36a$export$2d0294657ab35f1b.categories.unshift({\n id: \"frequent\",\n emojis: []\n });\n for(const alias in $7adb23b0109cc36a$export$2d0294657ab35f1b.aliases){\n const emojiId = $7adb23b0109cc36a$export$2d0294657ab35f1b.aliases[alias];\n const emoji = $7adb23b0109cc36a$export$2d0294657ab35f1b.emojis[emojiId];\n if (!emoji) continue;\n emoji.aliases || (emoji.aliases = []);\n emoji.aliases.push(alias);\n }\n $7adb23b0109cc36a$export$2d0294657ab35f1b.originalCategories = $7adb23b0109cc36a$export$2d0294657ab35f1b.categories;\n } else $7adb23b0109cc36a$export$2d0294657ab35f1b.categories = $7adb23b0109cc36a$export$2d0294657ab35f1b.categories.filter((c)=>{\n const isCustom = !!c.name;\n if (!isCustom) return true;\n return false;\n });\n $7adb23b0109cc36a$export$dbe3113d60765c1a = (typeof props.i18n === \"function\" ? await props.i18n() : props.i18n) || (locale == \"en\" ? (0, (/*@__PURE__*/$parcel$interopDefault($8d50d93417ef682a$exports))) : await $7adb23b0109cc36a$var$fetchJSON(`https://cdn.jsdelivr.net/npm/@emoji-mart/data@latest/i18n/${locale}.json`));\n if (props.custom) for(let i in props.custom){\n i = parseInt(i);\n const category = props.custom[i];\n const prevCategory = props.custom[i - 1];\n if (!category.emojis || !category.emojis.length) continue;\n category.id || (category.id = `custom_${i + 1}`);\n category.name || (category.name = $7adb23b0109cc36a$export$dbe3113d60765c1a.categories.custom);\n if (prevCategory && !category.icon) category.target = prevCategory.target || prevCategory;\n $7adb23b0109cc36a$export$2d0294657ab35f1b.categories.push(category);\n for (const emoji of category.emojis)$7adb23b0109cc36a$export$2d0294657ab35f1b.emojis[emoji.id] = emoji;\n }\n if (props.categories) $7adb23b0109cc36a$export$2d0294657ab35f1b.categories = $7adb23b0109cc36a$export$2d0294657ab35f1b.originalCategories.filter((c)=>{\n return props.categories.indexOf(c.id) != -1;\n }).sort((c1, c2)=>{\n const i1 = props.categories.indexOf(c1.id);\n const i2 = props.categories.indexOf(c2.id);\n return i1 - i2;\n });\n let latestVersionSupport = null;\n let noCountryFlags = null;\n if (set == \"native\") {\n latestVersionSupport = (0, $c84d045dcc34faf5$export$2e2bcd8739ae039).latestVersion();\n noCountryFlags = props.noCountryFlags || (0, $c84d045dcc34faf5$export$2e2bcd8739ae039).noCountryFlags();\n }\n let categoryIndex = $7adb23b0109cc36a$export$2d0294657ab35f1b.categories.length;\n let resetSearchIndex = false;\n while(categoryIndex--){\n const category = $7adb23b0109cc36a$export$2d0294657ab35f1b.categories[categoryIndex];\n if (category.id == \"frequent\") {\n let { maxFrequentRows: maxFrequentRows , perLine: perLine } = props;\n maxFrequentRows = maxFrequentRows >= 0 ? maxFrequentRows : (0, $b247ea80b67298d5$export$2e2bcd8739ae039).maxFrequentRows.value;\n perLine || (perLine = (0, $b247ea80b67298d5$export$2e2bcd8739ae039).perLine.value);\n category.emojis = (0, $b22cfd0a55410b4f$export$2e2bcd8739ae039).get({\n maxFrequentRows: maxFrequentRows,\n perLine: perLine\n });\n }\n if (!category.emojis || !category.emojis.length) {\n $7adb23b0109cc36a$export$2d0294657ab35f1b.categories.splice(categoryIndex, 1);\n continue;\n }\n const { categoryIcons: categoryIcons } = props;\n if (categoryIcons) {\n const icon = categoryIcons[category.id];\n if (icon && !category.icon) category.icon = icon;\n }\n let emojiIndex = category.emojis.length;\n while(emojiIndex--){\n const emojiId = category.emojis[emojiIndex];\n const emoji = emojiId.id ? emojiId : $7adb23b0109cc36a$export$2d0294657ab35f1b.emojis[emojiId];\n const ignore = ()=>{\n category.emojis.splice(emojiIndex, 1);\n };\n if (!emoji || props.exceptEmojis && props.exceptEmojis.includes(emoji.id)) {\n ignore();\n continue;\n }\n if (latestVersionSupport && emoji.version > latestVersionSupport) {\n ignore();\n continue;\n }\n if (noCountryFlags && category.id == \"flags\") {\n if (!(0, $e6eae5155b87f591$export$bcb25aa587e9cb13).includes(emoji.id)) {\n ignore();\n continue;\n }\n }\n if (!emoji.search) {\n resetSearchIndex = true;\n emoji.search = \",\" + [\n [\n emoji.id,\n false\n ],\n [\n emoji.name,\n true\n ],\n [\n emoji.keywords,\n false\n ],\n [\n emoji.emoticons,\n false\n ], \n ].map(([strings, split])=>{\n if (!strings) return;\n return (Array.isArray(strings) ? strings : [\n strings\n ]).map((string)=>{\n return (split ? string.split(/[-|_|\\s]+/) : [\n string\n ]).map((s)=>s.toLowerCase());\n }).flat();\n }).flat().filter((a)=>a && a.trim()).join(\",\");\n if (emoji.emoticons) for (const emoticon of emoji.emoticons){\n if ($7adb23b0109cc36a$export$2d0294657ab35f1b.emoticons[emoticon]) continue;\n $7adb23b0109cc36a$export$2d0294657ab35f1b.emoticons[emoticon] = emoji.id;\n }\n let skinIndex = 0;\n for (const skin of emoji.skins){\n if (!skin) continue;\n skinIndex++;\n const { native: native } = skin;\n if (native) {\n $7adb23b0109cc36a$export$2d0294657ab35f1b.natives[native] = emoji.id;\n emoji.search += `,${native}`;\n }\n const skinShortcodes = skinIndex == 1 ? \"\" : `:skin-tone-${skinIndex}:`;\n skin.shortcodes = `:${emoji.id}:${skinShortcodes}`;\n }\n }\n }\n }\n if (resetSearchIndex) (0, $c4d155af13ad4d4b$export$2e2bcd8739ae039).reset();\n $7adb23b0109cc36a$var$initCallback();\n}\nfunction $7adb23b0109cc36a$export$75fe5f91d452f94b(props, defaultProps, element) {\n props || (props = {});\n const _props = {};\n for(let k in defaultProps)_props[k] = $7adb23b0109cc36a$export$88c9ddb45cea7241(k, props, defaultProps, element);\n return _props;\n}\nfunction $7adb23b0109cc36a$export$88c9ddb45cea7241(propName, props, defaultProps, element) {\n const defaults = defaultProps[propName];\n let value = element && element.getAttribute(propName) || (props[propName] != null && props[propName] != undefined ? props[propName] : null);\n if (!defaults) return value;\n if (value != null && defaults.value && typeof defaults.value != typeof value) {\n if (typeof defaults.value == \"boolean\") value = value == \"false\" ? false : true;\n else value = defaults.value.constructor(value);\n }\n if (defaults.transform && value) value = defaults.transform(value);\n if (value == null || defaults.choices && defaults.choices.indexOf(value) == -1) value = defaults.value;\n return value;\n}\n\n\nconst $c4d155af13ad4d4b$var$SHORTCODES_REGEX = /^(?:\\:([^\\:]+)\\:)(?:\\:skin-tone-(\\d)\\:)?$/;\nlet $c4d155af13ad4d4b$var$Pool = null;\nfunction $c4d155af13ad4d4b$var$get(emojiId) {\n if (emojiId.id) return emojiId;\n return (0, $7adb23b0109cc36a$export$2d0294657ab35f1b).emojis[emojiId] || (0, $7adb23b0109cc36a$export$2d0294657ab35f1b).emojis[(0, $7adb23b0109cc36a$export$2d0294657ab35f1b).aliases[emojiId]] || (0, $7adb23b0109cc36a$export$2d0294657ab35f1b).emojis[(0, $7adb23b0109cc36a$export$2d0294657ab35f1b).natives[emojiId]];\n}\nfunction $c4d155af13ad4d4b$var$reset() {\n $c4d155af13ad4d4b$var$Pool = null;\n}\nasync function $c4d155af13ad4d4b$var$search(value, { maxResults: maxResults , caller: caller } = {}) {\n if (!value || !value.trim().length) return null;\n maxResults || (maxResults = 90);\n await (0, $7adb23b0109cc36a$export$2cd8252107eb640b)(null, {\n caller: caller || \"SearchIndex.search\"\n });\n const values = value.toLowerCase().replace(/(\\w)-/, \"$1 \").split(/[\\s|,]+/).filter((word, i, words)=>{\n return word.trim() && words.indexOf(word) == i;\n });\n if (!values.length) return;\n let pool = $c4d155af13ad4d4b$var$Pool || ($c4d155af13ad4d4b$var$Pool = Object.values((0, $7adb23b0109cc36a$export$2d0294657ab35f1b).emojis));\n let results, scores;\n for (const value1 of values){\n if (!pool.length) break;\n results = [];\n scores = {};\n for (const emoji of pool){\n if (!emoji.search) continue;\n const score = emoji.search.indexOf(`,${value1}`);\n if (score == -1) continue;\n results.push(emoji);\n scores[emoji.id] || (scores[emoji.id] = 0);\n scores[emoji.id] += emoji.id == value1 ? 0 : score + 1;\n }\n pool = results;\n }\n if (results.length < 2) return results;\n results.sort((a, b)=>{\n const aScore = scores[a.id];\n const bScore = scores[b.id];\n if (aScore == bScore) return a.id.localeCompare(b.id);\n return aScore - bScore;\n });\n if (results.length > maxResults) results = results.slice(0, maxResults);\n return results;\n}\nvar $c4d155af13ad4d4b$export$2e2bcd8739ae039 = {\n search: $c4d155af13ad4d4b$var$search,\n get: $c4d155af13ad4d4b$var$get,\n reset: $c4d155af13ad4d4b$var$reset,\n SHORTCODES_REGEX: $c4d155af13ad4d4b$var$SHORTCODES_REGEX\n};\n\n\nconst $e6eae5155b87f591$export$bcb25aa587e9cb13 = [\n \"checkered_flag\",\n \"crossed_flags\",\n \"pirate_flag\",\n \"rainbow-flag\",\n \"transgender_flag\",\n \"triangular_flag_on_post\",\n \"waving_black_flag\",\n \"waving_white_flag\", \n];\n\n\nfunction $693b183b0a78708f$export$9cb4719e2e525b7a(a, b) {\n return Array.isArray(a) && Array.isArray(b) && a.length === b.length && a.every((val, index)=>val == b[index]);\n}\nasync function $693b183b0a78708f$export$e772c8ff12451969(frames = 1) {\n for(let _ in [\n ...Array(frames).keys()\n ])await new Promise(requestAnimationFrame);\n}\nfunction $693b183b0a78708f$export$d10ac59fbe52a745(emoji, { skinIndex: skinIndex = 0 } = {}) {\n const skin = emoji.skins[skinIndex] || (()=>{\n skinIndex = 0;\n return emoji.skins[skinIndex];\n })();\n const emojiData = {\n id: emoji.id,\n name: emoji.name,\n native: skin.native,\n unified: skin.unified,\n keywords: emoji.keywords,\n shortcodes: skin.shortcodes || emoji.shortcodes\n };\n if (emoji.skins.length > 1) emojiData.skin = skinIndex + 1;\n if (skin.src) emojiData.src = skin.src;\n if (emoji.aliases && emoji.aliases.length) emojiData.aliases = emoji.aliases;\n if (emoji.emoticons && emoji.emoticons.length) emojiData.emoticons = emoji.emoticons;\n return emojiData;\n}\nasync function $693b183b0a78708f$export$5ef5574deca44bc0(nativeString) {\n const results = await (0, $c4d155af13ad4d4b$export$2e2bcd8739ae039).search(nativeString, {\n maxResults: 1,\n caller: \"getEmojiDataFromNative\"\n });\n if (!results || !results.length) return null;\n const emoji = results[0];\n let skinIndex = 0;\n for (let skin of emoji.skins){\n if (skin.native == nativeString) break;\n skinIndex++;\n }\n return $693b183b0a78708f$export$d10ac59fbe52a745(emoji, {\n skinIndex: skinIndex\n });\n}\n\n\n\n\n\nconst $fcccfb36ed0cde68$var$categories = {\n activity: {\n outline: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M12 0C5.373 0 0 5.372 0 12c0 6.627 5.373 12 12 12 6.628 0 12-5.373 12-12 0-6.628-5.372-12-12-12m9.949 11H17.05c.224-2.527 1.232-4.773 1.968-6.113A9.966 9.966 0 0 1 21.949 11M13 11V2.051a9.945 9.945 0 0 1 4.432 1.564c-.858 1.491-2.156 4.22-2.392 7.385H13zm-2 0H8.961c-.238-3.165-1.536-5.894-2.393-7.385A9.95 9.95 0 0 1 11 2.051V11zm0 2v8.949a9.937 9.937 0 0 1-4.432-1.564c.857-1.492 2.155-4.221 2.393-7.385H11zm4.04 0c.236 3.164 1.534 5.893 2.392 7.385A9.92 9.92 0 0 1 13 21.949V13h2.04zM4.982 4.887C5.718 6.227 6.726 8.473 6.951 11h-4.9a9.977 9.977 0 0 1 2.931-6.113M2.051 13h4.9c-.226 2.527-1.233 4.771-1.969 6.113A9.972 9.972 0 0 1 2.051 13m16.967 6.113c-.735-1.342-1.744-3.586-1.968-6.113h4.899a9.961 9.961 0 0 1-2.931 6.113\"\n })\n }),\n solid: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M16.17 337.5c0 44.98 7.565 83.54 13.98 107.9C35.22 464.3 50.46 496 174.9 496c9.566 0 19.59-.4707 29.84-1.271L17.33 307.3C16.53 317.6 16.17 327.7 16.17 337.5zM495.8 174.5c0-44.98-7.565-83.53-13.98-107.9c-4.688-17.54-18.34-31.23-36.04-35.95C435.5 27.91 392.9 16 337 16c-9.564 0-19.59 .4707-29.84 1.271l187.5 187.5C495.5 194.4 495.8 184.3 495.8 174.5zM26.77 248.8l236.3 236.3c142-36.1 203.9-150.4 222.2-221.1L248.9 26.87C106.9 62.96 45.07 177.2 26.77 248.8zM256 335.1c0 9.141-7.474 16-16 16c-4.094 0-8.188-1.564-11.31-4.689L164.7 283.3C161.6 280.2 160 276.1 160 271.1c0-8.529 6.865-16 16-16c4.095 0 8.189 1.562 11.31 4.688l64.01 64C254.4 327.8 256 331.9 256 335.1zM304 287.1c0 9.141-7.474 16-16 16c-4.094 0-8.188-1.564-11.31-4.689L212.7 235.3C209.6 232.2 208 228.1 208 223.1c0-9.141 7.473-16 16-16c4.094 0 8.188 1.562 11.31 4.688l64.01 64.01C302.5 279.8 304 283.9 304 287.1zM256 175.1c0-9.141 7.473-16 16-16c4.094 0 8.188 1.562 11.31 4.688l64.01 64.01c3.125 3.125 4.688 7.219 4.688 11.31c0 9.133-7.468 16-16 16c-4.094 0-8.189-1.562-11.31-4.688l-64.01-64.01C257.6 184.2 256 180.1 256 175.1z\"\n })\n })\n },\n custom: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 448 512\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M417.1 368c-5.937 10.27-16.69 16-27.75 16c-5.422 0-10.92-1.375-15.97-4.281L256 311.4V448c0 17.67-14.33 32-31.1 32S192 465.7 192 448V311.4l-118.3 68.29C68.67 382.6 63.17 384 57.75 384c-11.06 0-21.81-5.734-27.75-16c-8.828-15.31-3.594-34.88 11.72-43.72L159.1 256L41.72 187.7C26.41 178.9 21.17 159.3 29.1 144C36.63 132.5 49.26 126.7 61.65 128.2C65.78 128.7 69.88 130.1 73.72 132.3L192 200.6V64c0-17.67 14.33-32 32-32S256 46.33 256 64v136.6l118.3-68.29c3.838-2.213 7.939-3.539 12.07-4.051C398.7 126.7 411.4 132.5 417.1 144c8.828 15.31 3.594 34.88-11.72 43.72L288 256l118.3 68.28C421.6 333.1 426.8 352.7 417.1 368z\"\n })\n }),\n flags: {\n outline: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M0 0l6.084 24H8L1.916 0zM21 5h-4l-1-4H4l3 12h3l1 4h13L21 5zM6.563 3h7.875l2 8H8.563l-2-8zm8.832 10l-2.856 1.904L12.063 13h3.332zM19 13l-1.5-6h1.938l2 8H16l3-2z\"\n })\n }),\n solid: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M64 496C64 504.8 56.75 512 48 512h-32C7.25 512 0 504.8 0 496V32c0-17.75 14.25-32 32-32s32 14.25 32 32V496zM476.3 0c-6.365 0-13.01 1.35-19.34 4.233c-45.69 20.86-79.56 27.94-107.8 27.94c-59.96 0-94.81-31.86-163.9-31.87C160.9 .3055 131.6 4.867 96 15.75v350.5c32-9.984 59.87-14.1 84.85-14.1c73.63 0 124.9 31.78 198.6 31.78c31.91 0 68.02-5.971 111.1-23.09C504.1 355.9 512 344.4 512 332.1V30.73C512 11.1 495.3 0 476.3 0z\"\n })\n })\n },\n foods: {\n outline: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M17 4.978c-1.838 0-2.876.396-3.68.934.513-1.172 1.768-2.934 4.68-2.934a1 1 0 0 0 0-2c-2.921 0-4.629 1.365-5.547 2.512-.064.078-.119.162-.18.244C11.73 1.838 10.798.023 9.207.023 8.579.022 7.85.306 7 .978 5.027 2.54 5.329 3.902 6.492 4.999 3.609 5.222 0 7.352 0 12.969c0 4.582 4.961 11.009 9 11.009 1.975 0 2.371-.486 3-1 .629.514 1.025 1 3 1 4.039 0 9-6.418 9-11 0-5.953-4.055-8-7-8M8.242 2.546c.641-.508.943-.523.965-.523.426.169.975 1.405 1.357 3.055-1.527-.629-2.741-1.352-2.98-1.846.059-.112.241-.356.658-.686M15 21.978c-1.08 0-1.21-.109-1.559-.402l-.176-.146c-.367-.302-.816-.452-1.266-.452s-.898.15-1.266.452l-.176.146c-.347.292-.477.402-1.557.402-2.813 0-7-5.389-7-9.009 0-5.823 4.488-5.991 5-5.991 1.939 0 2.484.471 3.387 1.251l.323.276a1.995 1.995 0 0 0 2.58 0l.323-.276c.902-.78 1.447-1.251 3.387-1.251.512 0 5 .168 5 6 0 3.617-4.187 9-7 9\"\n })\n }),\n solid: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M481.9 270.1C490.9 279.1 496 291.3 496 304C496 316.7 490.9 328.9 481.9 337.9C472.9 346.9 460.7 352 448 352H64C51.27 352 39.06 346.9 30.06 337.9C21.06 328.9 16 316.7 16 304C16 291.3 21.06 279.1 30.06 270.1C39.06 261.1 51.27 256 64 256H448C460.7 256 472.9 261.1 481.9 270.1zM475.3 388.7C478.3 391.7 480 395.8 480 400V416C480 432.1 473.3 449.3 461.3 461.3C449.3 473.3 432.1 480 416 480H96C79.03 480 62.75 473.3 50.75 461.3C38.74 449.3 32 432.1 32 416V400C32 395.8 33.69 391.7 36.69 388.7C39.69 385.7 43.76 384 48 384H464C468.2 384 472.3 385.7 475.3 388.7zM50.39 220.8C45.93 218.6 42.03 215.5 38.97 211.6C35.91 207.7 33.79 203.2 32.75 198.4C31.71 193.5 31.8 188.5 32.99 183.7C54.98 97.02 146.5 32 256 32C365.5 32 457 97.02 479 183.7C480.2 188.5 480.3 193.5 479.2 198.4C478.2 203.2 476.1 207.7 473 211.6C469.1 215.5 466.1 218.6 461.6 220.8C457.2 222.9 452.3 224 447.3 224H64.67C59.73 224 54.84 222.9 50.39 220.8zM372.7 116.7C369.7 119.7 368 123.8 368 128C368 131.2 368.9 134.3 370.7 136.9C372.5 139.5 374.1 141.6 377.9 142.8C380.8 143.1 384 144.3 387.1 143.7C390.2 143.1 393.1 141.6 395.3 139.3C397.6 137.1 399.1 134.2 399.7 131.1C400.3 128 399.1 124.8 398.8 121.9C397.6 118.1 395.5 116.5 392.9 114.7C390.3 112.9 387.2 111.1 384 111.1C379.8 111.1 375.7 113.7 372.7 116.7V116.7zM244.7 84.69C241.7 87.69 240 91.76 240 96C240 99.16 240.9 102.3 242.7 104.9C244.5 107.5 246.1 109.6 249.9 110.8C252.8 111.1 256 112.3 259.1 111.7C262.2 111.1 265.1 109.6 267.3 107.3C269.6 105.1 271.1 102.2 271.7 99.12C272.3 96.02 271.1 92.8 270.8 89.88C269.6 86.95 267.5 84.45 264.9 82.7C262.3 80.94 259.2 79.1 256 79.1C251.8 79.1 247.7 81.69 244.7 84.69V84.69zM116.7 116.7C113.7 119.7 112 123.8 112 128C112 131.2 112.9 134.3 114.7 136.9C116.5 139.5 118.1 141.6 121.9 142.8C124.8 143.1 128 144.3 131.1 143.7C134.2 143.1 137.1 141.6 139.3 139.3C141.6 137.1 143.1 134.2 143.7 131.1C144.3 128 143.1 124.8 142.8 121.9C141.6 118.1 139.5 116.5 136.9 114.7C134.3 112.9 131.2 111.1 128 111.1C123.8 111.1 119.7 113.7 116.7 116.7L116.7 116.7z\"\n })\n })\n },\n frequent: {\n outline: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M13 4h-2l-.001 7H9v2h2v2h2v-2h4v-2h-4z\"\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"\n })\n ]\n }),\n solid: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M256 512C114.6 512 0 397.4 0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512zM232 256C232 264 236 271.5 242.7 275.1L338.7 339.1C349.7 347.3 364.6 344.3 371.1 333.3C379.3 322.3 376.3 307.4 365.3 300L280 243.2V120C280 106.7 269.3 96 255.1 96C242.7 96 231.1 106.7 231.1 120L232 256z\"\n })\n })\n },\n nature: {\n outline: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M15.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 15.5 8M8.5 8a1.5 1.5 0 1 0 .001 3.001A1.5 1.5 0 0 0 8.5 8\"\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M18.933 0h-.027c-.97 0-2.138.787-3.018 1.497-1.274-.374-2.612-.51-3.887-.51-1.285 0-2.616.133-3.874.517C7.245.79 6.069 0 5.093 0h-.027C3.352 0 .07 2.67.002 7.026c-.039 2.479.276 4.238 1.04 5.013.254.258.882.677 1.295.882.191 3.177.922 5.238 2.536 6.38.897.637 2.187.949 3.2 1.102C8.04 20.6 8 20.795 8 21c0 1.773 2.35 3 4 3 1.648 0 4-1.227 4-3 0-.201-.038-.393-.072-.586 2.573-.385 5.435-1.877 5.925-7.587.396-.22.887-.568 1.104-.788.763-.774 1.079-2.534 1.04-5.013C23.929 2.67 20.646 0 18.933 0M3.223 9.135c-.237.281-.837 1.155-.884 1.238-.15-.41-.368-1.349-.337-3.291.051-3.281 2.478-4.972 3.091-5.031.256.015.731.27 1.265.646-1.11 1.171-2.275 2.915-2.352 5.125-.133.546-.398.858-.783 1.313M12 22c-.901 0-1.954-.693-2-1 0-.654.475-1.236 1-1.602V20a1 1 0 1 0 2 0v-.602c.524.365 1 .947 1 1.602-.046.307-1.099 1-2 1m3-3.48v.02a4.752 4.752 0 0 0-1.262-1.02c1.092-.516 2.239-1.334 2.239-2.217 0-1.842-1.781-2.195-3.977-2.195-2.196 0-3.978.354-3.978 2.195 0 .883 1.148 1.701 2.238 2.217A4.8 4.8 0 0 0 9 18.539v-.025c-1-.076-2.182-.281-2.973-.842-1.301-.92-1.838-3.045-1.853-6.478l.023-.041c.496-.826 1.49-1.45 1.804-3.102 0-2.047 1.357-3.631 2.362-4.522C9.37 3.178 10.555 3 11.948 3c1.447 0 2.685.192 3.733.57 1 .9 2.316 2.465 2.316 4.48.313 1.651 1.307 2.275 1.803 3.102.035.058.068.117.102.178-.059 5.967-1.949 7.01-4.902 7.19m6.628-8.202c-.037-.065-.074-.13-.113-.195a7.587 7.587 0 0 0-.739-.987c-.385-.455-.648-.768-.782-1.313-.076-2.209-1.241-3.954-2.353-5.124.531-.376 1.004-.63 1.261-.647.636.071 3.044 1.764 3.096 5.031.027 1.81-.347 3.218-.37 3.235\"\n })\n ]\n }),\n solid: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 576 512\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M332.7 19.85C334.6 8.395 344.5 0 356.1 0C363.6 0 370.6 3.52 375.1 9.502L392 32H444.1C456.8 32 469.1 37.06 478.1 46.06L496 64H552C565.3 64 576 74.75 576 88V112C576 156.2 540.2 192 496 192H426.7L421.6 222.5L309.6 158.5L332.7 19.85zM448 64C439.2 64 432 71.16 432 80C432 88.84 439.2 96 448 96C456.8 96 464 88.84 464 80C464 71.16 456.8 64 448 64zM416 256.1V480C416 497.7 401.7 512 384 512H352C334.3 512 320 497.7 320 480V364.8C295.1 377.1 268.8 384 240 384C211.2 384 184 377.1 160 364.8V480C160 497.7 145.7 512 128 512H96C78.33 512 64 497.7 64 480V249.8C35.23 238.9 12.64 214.5 4.836 183.3L.9558 167.8C-3.331 150.6 7.094 133.2 24.24 128.1C41.38 124.7 58.76 135.1 63.05 152.2L66.93 167.8C70.49 182 83.29 191.1 97.97 191.1H303.8L416 256.1z\"\n })\n })\n },\n objects: {\n outline: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M12 0a9 9 0 0 0-5 16.482V21s2.035 3 5 3 5-3 5-3v-4.518A9 9 0 0 0 12 0zm0 2c3.86 0 7 3.141 7 7s-3.14 7-7 7-7-3.141-7-7 3.14-7 7-7zM9 17.477c.94.332 1.946.523 3 .523s2.06-.19 3-.523v.834c-.91.436-1.925.689-3 .689a6.924 6.924 0 0 1-3-.69v-.833zm.236 3.07A8.854 8.854 0 0 0 12 21c.965 0 1.888-.167 2.758-.451C14.155 21.173 13.153 22 12 22c-1.102 0-2.117-.789-2.764-1.453z\"\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M14.745 12.449h-.004c-.852-.024-1.188-.858-1.577-1.824-.421-1.061-.703-1.561-1.182-1.566h-.009c-.481 0-.783.497-1.235 1.537-.436.982-.801 1.811-1.636 1.791l-.276-.043c-.565-.171-.853-.691-1.284-1.794-.125-.313-.202-.632-.27-.913-.051-.213-.127-.53-.195-.634C7.067 9.004 7.039 9 6.99 9A1 1 0 0 1 7 7h.01c1.662.017 2.015 1.373 2.198 2.134.486-.981 1.304-2.058 2.797-2.075 1.531.018 2.28 1.153 2.731 2.141l.002-.008C14.944 8.424 15.327 7 16.979 7h.032A1 1 0 1 1 17 9h-.011c-.149.076-.256.474-.319.709a6.484 6.484 0 0 1-.311.951c-.429.973-.79 1.789-1.614 1.789\"\n })\n ]\n }),\n solid: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 384 512\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M112.1 454.3c0 6.297 1.816 12.44 5.284 17.69l17.14 25.69c5.25 7.875 17.17 14.28 26.64 14.28h61.67c9.438 0 21.36-6.401 26.61-14.28l17.08-25.68c2.938-4.438 5.348-12.37 5.348-17.7L272 415.1h-160L112.1 454.3zM191.4 .0132C89.44 .3257 16 82.97 16 175.1c0 44.38 16.44 84.84 43.56 115.8c16.53 18.84 42.34 58.23 52.22 91.45c.0313 .25 .0938 .5166 .125 .7823h160.2c.0313-.2656 .0938-.5166 .125-.7823c9.875-33.22 35.69-72.61 52.22-91.45C351.6 260.8 368 220.4 368 175.1C368 78.61 288.9-.2837 191.4 .0132zM192 96.01c-44.13 0-80 35.89-80 79.1C112 184.8 104.8 192 96 192S80 184.8 80 176c0-61.76 50.25-111.1 112-111.1c8.844 0 16 7.159 16 16S200.8 96.01 192 96.01z\"\n })\n })\n },\n people: {\n outline: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M12 0C5.373 0 0 5.373 0 12s5.373 12 12 12 12-5.373 12-12S18.627 0 12 0m0 22C6.486 22 2 17.514 2 12S6.486 2 12 2s10 4.486 10 10-4.486 10-10 10\"\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M8 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 8 7M16 7a2 2 0 1 0-.001 3.999A2 2 0 0 0 16 7M15.232 15c-.693 1.195-1.87 2-3.349 2-1.477 0-2.655-.805-3.347-2H15m3-2H6a6 6 0 1 0 12 0\"\n })\n ]\n }),\n solid: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M0 256C0 114.6 114.6 0 256 0C397.4 0 512 114.6 512 256C512 397.4 397.4 512 256 512C114.6 512 0 397.4 0 256zM256 432C332.1 432 396.2 382 415.2 314.1C419.1 300.4 407.8 288 393.6 288H118.4C104.2 288 92.92 300.4 96.76 314.1C115.8 382 179.9 432 256 432V432zM176.4 160C158.7 160 144.4 174.3 144.4 192C144.4 209.7 158.7 224 176.4 224C194 224 208.4 209.7 208.4 192C208.4 174.3 194 160 176.4 160zM336.4 224C354 224 368.4 209.7 368.4 192C368.4 174.3 354 160 336.4 160C318.7 160 304.4 174.3 304.4 192C304.4 209.7 318.7 224 336.4 224z\"\n })\n })\n },\n places: {\n outline: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M6.5 12C5.122 12 4 13.121 4 14.5S5.122 17 6.5 17 9 15.879 9 14.5 7.878 12 6.5 12m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5M17.5 12c-1.378 0-2.5 1.121-2.5 2.5s1.122 2.5 2.5 2.5 2.5-1.121 2.5-2.5-1.122-2.5-2.5-2.5m0 3c-.275 0-.5-.225-.5-.5s.225-.5.5-.5.5.225.5.5-.225.5-.5.5\"\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M22.482 9.494l-1.039-.346L21.4 9h.6c.552 0 1-.439 1-.992 0-.006-.003-.008-.003-.008H23c0-1-.889-2-1.984-2h-.642l-.731-1.717C19.262 3.012 18.091 2 16.764 2H7.236C5.909 2 4.738 3.012 4.357 4.283L3.626 6h-.642C1.889 6 1 7 1 8h.003S1 8.002 1 8.008C1 8.561 1.448 9 2 9h.6l-.043.148-1.039.346a2.001 2.001 0 0 0-1.359 2.097l.751 7.508a1 1 0 0 0 .994.901H3v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h6v1c0 1.103.896 2 2 2h2c1.104 0 2-.897 2-2v-1h1.096a.999.999 0 0 0 .994-.901l.751-7.508a2.001 2.001 0 0 0-1.359-2.097M6.273 4.857C6.402 4.43 6.788 4 7.236 4h9.527c.448 0 .834.43.963.857L19.313 9H4.688l1.585-4.143zM7 21H5v-1h2v1zm12 0h-2v-1h2v1zm2.189-3H2.811l-.662-6.607L3 11h18l.852.393L21.189 18z\"\n })\n ]\n }),\n solid: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M39.61 196.8L74.8 96.29C88.27 57.78 124.6 32 165.4 32H346.6C387.4 32 423.7 57.78 437.2 96.29L472.4 196.8C495.6 206.4 512 229.3 512 256V448C512 465.7 497.7 480 480 480H448C430.3 480 416 465.7 416 448V400H96V448C96 465.7 81.67 480 64 480H32C14.33 480 0 465.7 0 448V256C0 229.3 16.36 206.4 39.61 196.8V196.8zM109.1 192H402.9L376.8 117.4C372.3 104.6 360.2 96 346.6 96H165.4C151.8 96 139.7 104.6 135.2 117.4L109.1 192zM96 256C78.33 256 64 270.3 64 288C64 305.7 78.33 320 96 320C113.7 320 128 305.7 128 288C128 270.3 113.7 256 96 256zM416 320C433.7 320 448 305.7 448 288C448 270.3 433.7 256 416 256C398.3 256 384 270.3 384 288C384 305.7 398.3 320 416 320z\"\n })\n })\n },\n symbols: {\n outline: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M0 0h11v2H0zM4 11h3V6h4V4H0v2h4zM15.5 17c1.381 0 2.5-1.116 2.5-2.493s-1.119-2.493-2.5-2.493S13 13.13 13 14.507 14.119 17 15.5 17m0-2.986c.276 0 .5.222.5.493 0 .272-.224.493-.5.493s-.5-.221-.5-.493.224-.493.5-.493M21.5 19.014c-1.381 0-2.5 1.116-2.5 2.493S20.119 24 21.5 24s2.5-1.116 2.5-2.493-1.119-2.493-2.5-2.493m0 2.986a.497.497 0 0 1-.5-.493c0-.271.224-.493.5-.493s.5.222.5.493a.497.497 0 0 1-.5.493M22 13l-9 9 1.513 1.5 8.99-9.009zM17 11c2.209 0 4-1.119 4-2.5V2s.985-.161 1.498.949C23.01 4.055 23 6 23 6s1-1.119 1-3.135C24-.02 21 0 21 0h-2v6.347A5.853 5.853 0 0 0 17 6c-2.209 0-4 1.119-4 2.5s1.791 2.5 4 2.5M10.297 20.482l-1.475-1.585a47.54 47.54 0 0 1-1.442 1.129c-.307-.288-.989-1.016-2.045-2.183.902-.836 1.479-1.466 1.729-1.892s.376-.871.376-1.336c0-.592-.273-1.178-.818-1.759-.546-.581-1.329-.871-2.349-.871-1.008 0-1.79.293-2.344.879-.556.587-.832 1.181-.832 1.784 0 .813.419 1.748 1.256 2.805-.847.614-1.444 1.208-1.794 1.784a3.465 3.465 0 0 0-.523 1.833c0 .857.308 1.56.924 2.107.616.549 1.423.823 2.42.823 1.173 0 2.444-.379 3.813-1.137L8.235 24h2.819l-2.09-2.383 1.333-1.135zm-6.736-6.389a1.02 1.02 0 0 1 .73-.286c.31 0 .559.085.747.254a.849.849 0 0 1 .283.659c0 .518-.419 1.112-1.257 1.784-.536-.651-.805-1.231-.805-1.742a.901.901 0 0 1 .302-.669M3.74 22c-.427 0-.778-.116-1.057-.349-.279-.232-.418-.487-.418-.766 0-.594.509-1.288 1.527-2.083.968 1.134 1.717 1.946 2.248 2.438-.921.507-1.686.76-2.3.76\"\n })\n }),\n solid: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 512 512\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M500.3 7.251C507.7 13.33 512 22.41 512 31.1V175.1C512 202.5 483.3 223.1 447.1 223.1C412.7 223.1 383.1 202.5 383.1 175.1C383.1 149.5 412.7 127.1 447.1 127.1V71.03L351.1 90.23V207.1C351.1 234.5 323.3 255.1 287.1 255.1C252.7 255.1 223.1 234.5 223.1 207.1C223.1 181.5 252.7 159.1 287.1 159.1V63.1C287.1 48.74 298.8 35.61 313.7 32.62L473.7 .6198C483.1-1.261 492.9 1.173 500.3 7.251H500.3zM74.66 303.1L86.5 286.2C92.43 277.3 102.4 271.1 113.1 271.1H174.9C185.6 271.1 195.6 277.3 201.5 286.2L213.3 303.1H239.1C266.5 303.1 287.1 325.5 287.1 351.1V463.1C287.1 490.5 266.5 511.1 239.1 511.1H47.1C21.49 511.1-.0019 490.5-.0019 463.1V351.1C-.0019 325.5 21.49 303.1 47.1 303.1H74.66zM143.1 359.1C117.5 359.1 95.1 381.5 95.1 407.1C95.1 434.5 117.5 455.1 143.1 455.1C170.5 455.1 191.1 434.5 191.1 407.1C191.1 381.5 170.5 359.1 143.1 359.1zM440.3 367.1H496C502.7 367.1 508.6 372.1 510.1 378.4C513.3 384.6 511.6 391.7 506.5 396L378.5 508C372.9 512.1 364.6 513.3 358.6 508.9C352.6 504.6 350.3 496.6 353.3 489.7L391.7 399.1H336C329.3 399.1 323.4 395.9 321 389.6C318.7 383.4 320.4 376.3 325.5 371.1L453.5 259.1C459.1 255 467.4 254.7 473.4 259.1C479.4 263.4 481.6 271.4 478.7 278.3L440.3 367.1zM116.7 219.1L19.85 119.2C-8.112 90.26-6.614 42.31 24.85 15.34C51.82-8.137 93.26-3.642 118.2 21.83L128.2 32.32L137.7 21.83C162.7-3.642 203.6-8.137 231.6 15.34C262.6 42.31 264.1 90.26 236.1 119.2L139.7 219.1C133.2 225.6 122.7 225.6 116.7 219.1H116.7z\"\n })\n })\n }\n};\nconst $fcccfb36ed0cde68$var$search = {\n loupe: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M12.9 14.32a8 8 0 1 1 1.41-1.41l5.35 5.33-1.42 1.42-5.33-5.34zM8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\"\n })\n }),\n delete: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 20 20\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"path\", {\n d: \"M10 8.586L2.929 1.515 1.515 2.929 8.586 10l-7.071 7.071 1.414 1.414L10 11.414l7.071 7.071 1.414-1.414L11.414 10l7.071-7.071-1.414-1.414L10 8.586z\"\n })\n })\n};\nvar $fcccfb36ed0cde68$export$2e2bcd8739ae039 = {\n categories: $fcccfb36ed0cde68$var$categories,\n search: $fcccfb36ed0cde68$var$search\n};\n\n\n\n\n\nfunction $254755d3f438722f$export$2e2bcd8739ae039(props) {\n let { id: id , skin: skin , emoji: emoji } = props;\n if (props.shortcodes) {\n const matches = props.shortcodes.match((0, $c4d155af13ad4d4b$export$2e2bcd8739ae039).SHORTCODES_REGEX);\n if (matches) {\n id = matches[1];\n if (matches[2]) skin = matches[2];\n }\n }\n emoji || (emoji = (0, $c4d155af13ad4d4b$export$2e2bcd8739ae039).get(id || props.native));\n if (!emoji) return props.fallback;\n const emojiSkin = emoji.skins[skin - 1] || emoji.skins[0];\n const imageSrc = emojiSkin.src || (props.set != \"native\" && !props.spritesheet ? typeof props.getImageURL === \"function\" ? props.getImageURL(props.set, emojiSkin.unified) : `https://cdn.jsdelivr.net/npm/emoji-datasource-${props.set}@14.0.0/img/${props.set}/64/${emojiSkin.unified}.png` : undefined);\n const spritesheetSrc = typeof props.getSpritesheetURL === \"function\" ? props.getSpritesheetURL(props.set) : `https://cdn.jsdelivr.net/npm/emoji-datasource-${props.set}@14.0.0/img/${props.set}/sheets-256/64.png`;\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"span\", {\n class: \"emoji-mart-emoji\",\n \"data-emoji-set\": props.set,\n children: imageSrc ? /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"img\", {\n style: {\n maxWidth: props.size || \"1em\",\n maxHeight: props.size || \"1em\",\n display: \"inline-block\"\n },\n alt: emojiSkin.native || emojiSkin.shortcodes,\n src: imageSrc\n }) : props.set == \"native\" ? /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"span\", {\n style: {\n fontSize: props.size,\n fontFamily: '\"EmojiMart\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Segoe UI\", \"Apple Color Emoji\", \"Twemoji Mozilla\", \"Noto Color Emoji\", \"Android Emoji\"'\n },\n children: emojiSkin.native\n }) : /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"span\", {\n style: {\n display: \"block\",\n width: props.size,\n height: props.size,\n backgroundImage: `url(${spritesheetSrc})`,\n backgroundSize: `${100 * (0, $7adb23b0109cc36a$export$2d0294657ab35f1b).sheet.cols}% ${100 * (0, $7adb23b0109cc36a$export$2d0294657ab35f1b).sheet.rows}%`,\n backgroundPosition: `${100 / ((0, $7adb23b0109cc36a$export$2d0294657ab35f1b).sheet.cols - 1) * emojiSkin.x}% ${100 / ((0, $7adb23b0109cc36a$export$2d0294657ab35f1b).sheet.rows - 1) * emojiSkin.y}%`\n }\n })\n });\n}\n\n\n\n\n\n\n\nconst $6f57cc9cd54c5aaa$var$WindowHTMLElement = typeof window !== \"undefined\" && window.HTMLElement ? window.HTMLElement : Object;\nclass $6f57cc9cd54c5aaa$export$2e2bcd8739ae039 extends $6f57cc9cd54c5aaa$var$WindowHTMLElement {\n static get observedAttributes() {\n return Object.keys(this.Props);\n }\n update(props = {}) {\n for(let k in props)this.attributeChangedCallback(k, null, props[k]);\n }\n attributeChangedCallback(attr, _, newValue) {\n if (!this.component) return;\n const value = (0, $7adb23b0109cc36a$export$88c9ddb45cea7241)(attr, {\n [attr]: newValue\n }, this.constructor.Props, this);\n if (this.component.componentWillReceiveProps) this.component.componentWillReceiveProps({\n [attr]: value\n });\n else {\n this.component.props[attr] = value;\n this.component.forceUpdate();\n }\n }\n disconnectedCallback() {\n this.disconnected = true;\n if (this.component && this.component.unregister) this.component.unregister();\n }\n constructor(props = {}){\n super();\n this.props = props;\n if (props.parent || props.ref) {\n let ref = null;\n const parent = props.parent || (ref = props.ref && props.ref.current);\n if (ref) ref.innerHTML = \"\";\n if (parent) parent.appendChild(this);\n }\n }\n}\n\n\n\nclass $26f27c338a96b1a6$export$2e2bcd8739ae039 extends (0, $6f57cc9cd54c5aaa$export$2e2bcd8739ae039) {\n setShadow() {\n this.attachShadow({\n mode: \"open\"\n });\n }\n injectStyles(styles) {\n if (!styles) return;\n const style = document.createElement(\"style\");\n style.textContent = styles;\n this.shadowRoot.insertBefore(style, this.shadowRoot.firstChild);\n }\n constructor(props, { styles: styles } = {}){\n super(props);\n this.setShadow();\n this.injectStyles(styles);\n }\n}\n\n\n\n\n\n\nvar $3d90f6e46fb2dd47$export$2e2bcd8739ae039 = {\n fallback: \"\",\n id: \"\",\n native: \"\",\n shortcodes: \"\",\n size: {\n value: \"\",\n transform: (value)=>{\n // If the value is a number, then we assume it’s a pixel value.\n if (!/\\D/.test(value)) return `${value}px`;\n return value;\n }\n },\n // Shared\n set: (0, $b247ea80b67298d5$export$2e2bcd8739ae039).set,\n skin: (0, $b247ea80b67298d5$export$2e2bcd8739ae039).skin\n};\n\n\nclass $331b4160623139bf$export$2e2bcd8739ae039 extends (0, $6f57cc9cd54c5aaa$export$2e2bcd8739ae039) {\n async connectedCallback() {\n const props = (0, $7adb23b0109cc36a$export$75fe5f91d452f94b)(this.props, (0, $3d90f6e46fb2dd47$export$2e2bcd8739ae039), this);\n props.element = this;\n props.ref = (component)=>{\n this.component = component;\n };\n await (0, $7adb23b0109cc36a$export$2cd8252107eb640b)();\n if (this.disconnected) return;\n (0, $fb96b826c0c5f37a$export$b3890eb0ae9dca99)(/*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)((0, $254755d3f438722f$export$2e2bcd8739ae039), {\n ...props\n }), this);\n }\n constructor(props){\n super(props);\n }\n}\n(0, $c770c458706daa72$export$2e2bcd8739ae039)($331b4160623139bf$export$2e2bcd8739ae039, \"Props\", (0, $3d90f6e46fb2dd47$export$2e2bcd8739ae039));\nif (typeof customElements !== \"undefined\" && !customElements.get(\"em-emoji\")) customElements.define(\"em-emoji\", $331b4160623139bf$export$2e2bcd8739ae039);\n\n\n\n\n\n\nvar $1a9a8ef576b7773d$var$t, $1a9a8ef576b7773d$var$u, $1a9a8ef576b7773d$var$r, $1a9a8ef576b7773d$var$o = 0, $1a9a8ef576b7773d$var$i = [], $1a9a8ef576b7773d$var$c = (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__b, $1a9a8ef576b7773d$var$f = (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__r, $1a9a8ef576b7773d$var$e = (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).diffed, $1a9a8ef576b7773d$var$a = (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__c, $1a9a8ef576b7773d$var$v = (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).unmount;\nfunction $1a9a8ef576b7773d$var$m(t1, r1) {\n (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__h && (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__h($1a9a8ef576b7773d$var$u, t1, $1a9a8ef576b7773d$var$o || r1), $1a9a8ef576b7773d$var$o = 0;\n var i1 = $1a9a8ef576b7773d$var$u.__H || ($1a9a8ef576b7773d$var$u.__H = {\n __: [],\n __h: []\n });\n return t1 >= i1.__.length && i1.__.push({}), i1.__[t1];\n}\nfunction $1a9a8ef576b7773d$export$60241385465d0a34(n1) {\n return $1a9a8ef576b7773d$var$o = 1, $1a9a8ef576b7773d$export$13e3392192263954($1a9a8ef576b7773d$var$w, n1);\n}\nfunction $1a9a8ef576b7773d$export$13e3392192263954(n2, r2, o1) {\n var i2 = $1a9a8ef576b7773d$var$m($1a9a8ef576b7773d$var$t++, 2);\n return i2.t = n2, i2.__c || (i2.__ = [\n o1 ? o1(r2) : $1a9a8ef576b7773d$var$w(void 0, r2),\n function(n3) {\n var t2 = i2.t(i2.__[0], n3);\n i2.__[0] !== t2 && (i2.__ = [\n t2,\n i2.__[1]\n ], i2.__c.setState({}));\n }\n ], i2.__c = $1a9a8ef576b7773d$var$u), i2.__;\n}\nfunction $1a9a8ef576b7773d$export$6d9c69b0de29b591(r3, o2) {\n var i3 = $1a9a8ef576b7773d$var$m($1a9a8ef576b7773d$var$t++, 3);\n !(0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__s && $1a9a8ef576b7773d$var$k(i3.__H, o2) && (i3.__ = r3, i3.__H = o2, $1a9a8ef576b7773d$var$u.__H.__h.push(i3));\n}\nfunction $1a9a8ef576b7773d$export$e5c5a5f917a5871c(r4, o3) {\n var i4 = $1a9a8ef576b7773d$var$m($1a9a8ef576b7773d$var$t++, 4);\n !(0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__s && $1a9a8ef576b7773d$var$k(i4.__H, o3) && (i4.__ = r4, i4.__H = o3, $1a9a8ef576b7773d$var$u.__h.push(i4));\n}\nfunction $1a9a8ef576b7773d$export$b8f5890fc79d6aca(n4) {\n return $1a9a8ef576b7773d$var$o = 5, $1a9a8ef576b7773d$export$1538c33de8887b59(function() {\n return {\n current: n4\n };\n }, []);\n}\nfunction $1a9a8ef576b7773d$export$d5a552a76deda3c2(n5, t3, u1) {\n $1a9a8ef576b7773d$var$o = 6, $1a9a8ef576b7773d$export$e5c5a5f917a5871c(function() {\n \"function\" == typeof n5 ? n5(t3()) : n5 && (n5.current = t3());\n }, null == u1 ? u1 : u1.concat(n5));\n}\nfunction $1a9a8ef576b7773d$export$1538c33de8887b59(n6, u2) {\n var r5 = $1a9a8ef576b7773d$var$m($1a9a8ef576b7773d$var$t++, 7);\n return $1a9a8ef576b7773d$var$k(r5.__H, u2) && (r5.__ = n6(), r5.__H = u2, r5.__h = n6), r5.__;\n}\nfunction $1a9a8ef576b7773d$export$35808ee640e87ca7(n7, t4) {\n return $1a9a8ef576b7773d$var$o = 8, $1a9a8ef576b7773d$export$1538c33de8887b59(function() {\n return n7;\n }, t4);\n}\nfunction $1a9a8ef576b7773d$export$fae74005e78b1a27(n8) {\n var r6 = $1a9a8ef576b7773d$var$u.context[n8.__c], o4 = $1a9a8ef576b7773d$var$m($1a9a8ef576b7773d$var$t++, 9);\n return o4.c = n8, r6 ? (null == o4.__ && (o4.__ = !0, r6.sub($1a9a8ef576b7773d$var$u)), r6.props.value) : n8.__;\n}\nfunction $1a9a8ef576b7773d$export$dc8fbce3eb94dc1e(t5, u3) {\n (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).useDebugValue && (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).useDebugValue(u3 ? u3(t5) : t5);\n}\nfunction $1a9a8ef576b7773d$export$c052f6604b7d51fe(n9) {\n var r7 = $1a9a8ef576b7773d$var$m($1a9a8ef576b7773d$var$t++, 10), o5 = $1a9a8ef576b7773d$export$60241385465d0a34();\n return r7.__ = n9, $1a9a8ef576b7773d$var$u.componentDidCatch || ($1a9a8ef576b7773d$var$u.componentDidCatch = function(n10) {\n r7.__ && r7.__(n10), o5[1](n10);\n }), [\n o5[0],\n function() {\n o5[1](void 0);\n }\n ];\n}\nfunction $1a9a8ef576b7773d$var$x() {\n var t6;\n for($1a9a8ef576b7773d$var$i.sort(function(n11, t7) {\n return n11.__v.__b - t7.__v.__b;\n }); t6 = $1a9a8ef576b7773d$var$i.pop();)if (t6.__P) try {\n t6.__H.__h.forEach($1a9a8ef576b7773d$var$g), t6.__H.__h.forEach($1a9a8ef576b7773d$var$j), t6.__H.__h = [];\n } catch (u4) {\n t6.__H.__h = [], (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__e(u4, t6.__v);\n }\n}\n(0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__b = function(n12) {\n $1a9a8ef576b7773d$var$u = null, $1a9a8ef576b7773d$var$c && $1a9a8ef576b7773d$var$c(n12);\n}, (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__r = function(n13) {\n $1a9a8ef576b7773d$var$f && $1a9a8ef576b7773d$var$f(n13), $1a9a8ef576b7773d$var$t = 0;\n var r8 = ($1a9a8ef576b7773d$var$u = n13.__c).__H;\n r8 && (r8.__h.forEach($1a9a8ef576b7773d$var$g), r8.__h.forEach($1a9a8ef576b7773d$var$j), r8.__h = []);\n}, (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).diffed = function(t8) {\n $1a9a8ef576b7773d$var$e && $1a9a8ef576b7773d$var$e(t8);\n var o6 = t8.__c;\n o6 && o6.__H && o6.__H.__h.length && (1 !== $1a9a8ef576b7773d$var$i.push(o6) && $1a9a8ef576b7773d$var$r === (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).requestAnimationFrame || (($1a9a8ef576b7773d$var$r = (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).requestAnimationFrame) || function(n14) {\n var t9, u5 = function() {\n clearTimeout(r9), $1a9a8ef576b7773d$var$b && cancelAnimationFrame(t9), setTimeout(n14);\n }, r9 = setTimeout(u5, 100);\n $1a9a8ef576b7773d$var$b && (t9 = requestAnimationFrame(u5));\n })($1a9a8ef576b7773d$var$x)), $1a9a8ef576b7773d$var$u = null;\n}, (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__c = function(t10, u6) {\n u6.some(function(t11) {\n try {\n t11.__h.forEach($1a9a8ef576b7773d$var$g), t11.__h = t11.__h.filter(function(n15) {\n return !n15.__ || $1a9a8ef576b7773d$var$j(n15);\n });\n } catch (r10) {\n u6.some(function(n16) {\n n16.__h && (n16.__h = []);\n }), u6 = [], (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__e(r10, t11.__v);\n }\n }), $1a9a8ef576b7773d$var$a && $1a9a8ef576b7773d$var$a(t10, u6);\n}, (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).unmount = function(t12) {\n $1a9a8ef576b7773d$var$v && $1a9a8ef576b7773d$var$v(t12);\n var u7, r11 = t12.__c;\n r11 && r11.__H && (r11.__H.__.forEach(function(n17) {\n try {\n $1a9a8ef576b7773d$var$g(n17);\n } catch (n18) {\n u7 = n18;\n }\n }), u7 && (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__e(u7, r11.__v));\n};\nvar $1a9a8ef576b7773d$var$b = \"function\" == typeof requestAnimationFrame;\nfunction $1a9a8ef576b7773d$var$g(n19) {\n var t13 = $1a9a8ef576b7773d$var$u, r12 = n19.__c;\n \"function\" == typeof r12 && (n19.__c = void 0, r12()), $1a9a8ef576b7773d$var$u = t13;\n}\nfunction $1a9a8ef576b7773d$var$j(n20) {\n var t14 = $1a9a8ef576b7773d$var$u;\n n20.__c = n20.__(), $1a9a8ef576b7773d$var$u = t14;\n}\nfunction $1a9a8ef576b7773d$var$k(n21, t15) {\n return !n21 || n21.length !== t15.length || t15.some(function(t16, u8) {\n return t16 !== n21[u8];\n });\n}\nfunction $1a9a8ef576b7773d$var$w(n22, t17) {\n return \"function\" == typeof t17 ? t17(n22) : t17;\n}\n\n\n\n\n\nfunction $dc040a17866866fa$var$S(n1, t1) {\n for(var e1 in t1)n1[e1] = t1[e1];\n return n1;\n}\nfunction $dc040a17866866fa$var$C(n2, t2) {\n for(var e2 in n2)if (\"__source\" !== e2 && !(e2 in t2)) return !0;\n for(var r1 in t2)if (\"__source\" !== r1 && n2[r1] !== t2[r1]) return !0;\n return !1;\n}\nfunction $dc040a17866866fa$export$221d75b3f55bb0bd(n3) {\n this.props = n3;\n}\nfunction $dc040a17866866fa$export$7c73462e0d25e514(n4, t3) {\n function e3(n5) {\n var e4 = this.props.ref, r3 = e4 == n5.ref;\n return !r3 && e4 && (e4.call ? e4(null) : e4.current = null), t3 ? !t3(this.props, n5) || !r3 : $dc040a17866866fa$var$C(this.props, n5);\n }\n function r2(t4) {\n return this.shouldComponentUpdate = e3, (0, $fb96b826c0c5f37a$export$c8a8987d4410bf2d)(n4, t4);\n }\n return r2.displayName = \"Memo(\" + (n4.displayName || n4.name) + \")\", r2.prototype.isReactComponent = !0, r2.__f = !0, r2;\n}\n($dc040a17866866fa$export$221d75b3f55bb0bd.prototype = new (0, $fb96b826c0c5f37a$export$16fa2f45be04daa8)).isPureReactComponent = !0, $dc040a17866866fa$export$221d75b3f55bb0bd.prototype.shouldComponentUpdate = function(n6, t5) {\n return $dc040a17866866fa$var$C(this.props, n6) || $dc040a17866866fa$var$C(this.state, t5);\n};\nvar $dc040a17866866fa$var$w = (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__b;\n(0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__b = function(n7) {\n n7.type && n7.type.__f && n7.ref && (n7.props.ref = n7.ref, n7.ref = null), $dc040a17866866fa$var$w && $dc040a17866866fa$var$w(n7);\n};\nvar $dc040a17866866fa$var$R = \"undefined\" != typeof Symbol && Symbol.for && Symbol.for(\"react.forward_ref\") || 3911;\nfunction $dc040a17866866fa$export$257a8862b851cb5b(n8) {\n function t6(t7, e5) {\n var r4 = $dc040a17866866fa$var$S({}, t7);\n return delete r4.ref, n8(r4, (e5 = t7.ref || e5) && (\"object\" != typeof e5 || \"current\" in e5) ? e5 : null);\n }\n return t6.$$typeof = $dc040a17866866fa$var$R, t6.render = t6, t6.prototype.isReactComponent = t6.__f = !0, t6.displayName = \"ForwardRef(\" + (n8.displayName || n8.name) + \")\", t6;\n}\nvar $dc040a17866866fa$var$N = function(n9, t8) {\n return null == n9 ? null : (0, $fb96b826c0c5f37a$export$47e4c5b300681277)((0, $fb96b826c0c5f37a$export$47e4c5b300681277)(n9).map(t8));\n}, $dc040a17866866fa$export$dca3b0875bd9a954 = {\n map: $dc040a17866866fa$var$N,\n forEach: $dc040a17866866fa$var$N,\n count: function(n10) {\n return n10 ? (0, $fb96b826c0c5f37a$export$47e4c5b300681277)(n10).length : 0;\n },\n only: function(n11) {\n var t9 = (0, $fb96b826c0c5f37a$export$47e4c5b300681277)(n11);\n if (1 !== t9.length) throw \"Children.only\";\n return t9[0];\n },\n toArray: (0, $fb96b826c0c5f37a$export$47e4c5b300681277)\n}, $dc040a17866866fa$var$A = (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__e;\n(0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__e = function(n12, t10, e6) {\n if (n12.then) {\n for(var r5, u1 = t10; u1 = u1.__;)if ((r5 = u1.__c) && r5.__c) return null == t10.__e && (t10.__e = e6.__e, t10.__k = e6.__k), r5.__c(n12, t10);\n }\n $dc040a17866866fa$var$A(n12, t10, e6);\n};\nvar $dc040a17866866fa$var$O = (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).unmount;\nfunction $dc040a17866866fa$export$74bf444e3cd11ea5() {\n this.__u = 0, this.t = null, this.__b = null;\n}\nfunction $dc040a17866866fa$var$U(n13) {\n var t11 = n13.__.__c;\n return t11 && t11.__e && t11.__e(n13);\n}\nfunction $dc040a17866866fa$export$488013bae63b21da(n14) {\n var t12, e7, r6;\n function u2(u3) {\n if (t12 || (t12 = n14()).then(function(n15) {\n e7 = n15.default || n15;\n }, function(n16) {\n r6 = n16;\n }), r6) throw r6;\n if (!e7) throw t12;\n return (0, $fb96b826c0c5f37a$export$c8a8987d4410bf2d)(e7, u3);\n }\n return u2.displayName = \"Lazy\", u2.__f = !0, u2;\n}\nfunction $dc040a17866866fa$export$998bcd577473dd93() {\n this.u = null, this.o = null;\n}\n(0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).unmount = function(n17) {\n var t13 = n17.__c;\n t13 && t13.__R && t13.__R(), t13 && !0 === n17.__h && (n17.type = null), $dc040a17866866fa$var$O && $dc040a17866866fa$var$O(n17);\n}, ($dc040a17866866fa$export$74bf444e3cd11ea5.prototype = new (0, $fb96b826c0c5f37a$export$16fa2f45be04daa8)).__c = function(n18, t14) {\n var e8 = t14.__c, r7 = this;\n null == r7.t && (r7.t = []), r7.t.push(e8);\n var u4 = $dc040a17866866fa$var$U(r7.__v), o1 = !1, i1 = function() {\n o1 || (o1 = !0, e8.__R = null, u4 ? u4(l1) : l1());\n };\n e8.__R = i1;\n var l1 = function() {\n if (!--r7.__u) {\n if (r7.state.__e) {\n var n19 = r7.state.__e;\n r7.__v.__k[0] = function n22(t17, e9, r8) {\n return t17 && (t17.__v = null, t17.__k = t17.__k && t17.__k.map(function(t18) {\n return n22(t18, e9, r8);\n }), t17.__c && t17.__c.__P === e9 && (t17.__e && r8.insertBefore(t17.__e, t17.__d), t17.__c.__e = !0, t17.__c.__P = r8)), t17;\n }(n19, n19.__c.__P, n19.__c.__O);\n }\n var t15;\n for(r7.setState({\n __e: r7.__b = null\n }); t15 = r7.t.pop();)t15.forceUpdate();\n }\n }, c1 = !0 === t14.__h;\n (r7.__u++) || c1 || r7.setState({\n __e: r7.__b = r7.__v.__k[0]\n }), n18.then(i1, i1);\n}, $dc040a17866866fa$export$74bf444e3cd11ea5.prototype.componentWillUnmount = function() {\n this.t = [];\n}, $dc040a17866866fa$export$74bf444e3cd11ea5.prototype.render = function(n23, t19) {\n if (this.__b) {\n if (this.__v.__k) {\n var e10 = document.createElement(\"div\"), r9 = this.__v.__k[0].__c;\n this.__v.__k[0] = function n24(t20, e13, r12) {\n return t20 && (t20.__c && t20.__c.__H && (t20.__c.__H.__.forEach(function(n25) {\n \"function\" == typeof n25.__c && n25.__c();\n }), t20.__c.__H = null), null != (t20 = $dc040a17866866fa$var$S({}, t20)).__c && (t20.__c.__P === r12 && (t20.__c.__P = e13), t20.__c = null), t20.__k = t20.__k && t20.__k.map(function(t21) {\n return n24(t21, e13, r12);\n })), t20;\n }(this.__b, e10, r9.__O = r9.__P);\n }\n this.__b = null;\n }\n var u5 = t19.__e && (0, $fb96b826c0c5f37a$export$c8a8987d4410bf2d)((0, $fb96b826c0c5f37a$export$ffb0004e005737fa), null, n23.fallback);\n return u5 && (u5.__h = null), [\n (0, $fb96b826c0c5f37a$export$c8a8987d4410bf2d)((0, $fb96b826c0c5f37a$export$ffb0004e005737fa), null, t19.__e ? null : n23.children),\n u5\n ];\n};\nvar $dc040a17866866fa$var$T = function(n26, t22, e14) {\n if (++e14[1] === e14[0] && n26.o.delete(t22), n26.props.revealOrder && (\"t\" !== n26.props.revealOrder[0] || !n26.o.size)) for(e14 = n26.u; e14;){\n for(; e14.length > 3;)e14.pop()();\n if (e14[1] < e14[0]) break;\n n26.u = e14 = e14[2];\n }\n};\nfunction $dc040a17866866fa$var$D(n27) {\n return this.getChildContext = function() {\n return n27.context;\n }, n27.children;\n}\nfunction $dc040a17866866fa$var$I(n28) {\n var t23 = this, e15 = n28.i;\n t23.componentWillUnmount = function() {\n (0, $fb96b826c0c5f37a$export$b3890eb0ae9dca99)(null, t23.l), t23.l = null, t23.i = null;\n }, t23.i && t23.i !== e15 && t23.componentWillUnmount(), n28.__v ? (t23.l || (t23.i = e15, t23.l = {\n nodeType: 1,\n parentNode: e15,\n childNodes: [],\n appendChild: function(n29) {\n this.childNodes.push(n29), t23.i.appendChild(n29);\n },\n insertBefore: function(n30, e) {\n this.childNodes.push(n30), t23.i.appendChild(n30);\n },\n removeChild: function(n31) {\n this.childNodes.splice(this.childNodes.indexOf(n31) >>> 1, 1), t23.i.removeChild(n31);\n }\n }), (0, $fb96b826c0c5f37a$export$b3890eb0ae9dca99)((0, $fb96b826c0c5f37a$export$c8a8987d4410bf2d)($dc040a17866866fa$var$D, {\n context: t23.context\n }, n28.__v), t23.l)) : t23.l && t23.componentWillUnmount();\n}\nfunction $dc040a17866866fa$export$d39a5bbd09211389(n32, t24) {\n return (0, $fb96b826c0c5f37a$export$c8a8987d4410bf2d)($dc040a17866866fa$var$I, {\n __v: n32,\n i: t24\n });\n}\n($dc040a17866866fa$export$998bcd577473dd93.prototype = new (0, $fb96b826c0c5f37a$export$16fa2f45be04daa8)).__e = function(n33) {\n var t25 = this, e16 = $dc040a17866866fa$var$U(t25.__v), r13 = t25.o.get(n33);\n return r13[0]++, function(u6) {\n var o2 = function() {\n t25.props.revealOrder ? (r13.push(u6), $dc040a17866866fa$var$T(t25, n33, r13)) : u6();\n };\n e16 ? e16(o2) : o2();\n };\n}, $dc040a17866866fa$export$998bcd577473dd93.prototype.render = function(n34) {\n this.u = null, this.o = new Map;\n var t26 = (0, $fb96b826c0c5f37a$export$47e4c5b300681277)(n34.children);\n n34.revealOrder && \"b\" === n34.revealOrder[0] && t26.reverse();\n for(var e17 = t26.length; e17--;)this.o.set(t26[e17], this.u = [\n 1,\n 0,\n this.u\n ]);\n return n34.children;\n}, $dc040a17866866fa$export$998bcd577473dd93.prototype.componentDidUpdate = $dc040a17866866fa$export$998bcd577473dd93.prototype.componentDidMount = function() {\n var n35 = this;\n this.o.forEach(function(t27, e18) {\n $dc040a17866866fa$var$T(n35, e18, t27);\n });\n};\nvar $dc040a17866866fa$var$j = \"undefined\" != typeof Symbol && Symbol.for && Symbol.for(\"react.element\") || 60103, $dc040a17866866fa$var$P = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/, $dc040a17866866fa$var$V = \"undefined\" != typeof document, $dc040a17866866fa$var$z = function(n36) {\n return (\"undefined\" != typeof Symbol && \"symbol\" == typeof Symbol() ? /fil|che|rad/i : /fil|che|ra/i).test(n36);\n};\nfunction $dc040a17866866fa$export$b3890eb0ae9dca99(n37, t28, e19) {\n return null == t28.__k && (t28.textContent = \"\"), (0, $fb96b826c0c5f37a$export$b3890eb0ae9dca99)(n37, t28), \"function\" == typeof e19 && e19(), n37 ? n37.__c : null;\n}\nfunction $dc040a17866866fa$export$fa8d919ba61d84db(n38, t29, e20) {\n return (0, $fb96b826c0c5f37a$export$fa8d919ba61d84db)(n38, t29), \"function\" == typeof e20 && e20(), n38 ? n38.__c : null;\n}\n(0, $fb96b826c0c5f37a$export$16fa2f45be04daa8).prototype.isReactComponent = {}, [\n \"componentWillMount\",\n \"componentWillReceiveProps\",\n \"componentWillUpdate\"\n].forEach(function(n39) {\n Object.defineProperty((0, $fb96b826c0c5f37a$export$16fa2f45be04daa8).prototype, n39, {\n configurable: !0,\n get: function() {\n return this[\"UNSAFE_\" + n39];\n },\n set: function(t30) {\n Object.defineProperty(this, n39, {\n configurable: !0,\n writable: !0,\n value: t30\n });\n }\n });\n});\nvar $dc040a17866866fa$var$H = (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).event;\nfunction $dc040a17866866fa$var$Z() {}\nfunction $dc040a17866866fa$var$Y() {\n return this.cancelBubble;\n}\nfunction $dc040a17866866fa$var$q() {\n return this.defaultPrevented;\n}\n(0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).event = function(n40) {\n return $dc040a17866866fa$var$H && (n40 = $dc040a17866866fa$var$H(n40)), n40.persist = $dc040a17866866fa$var$Z, n40.isPropagationStopped = $dc040a17866866fa$var$Y, n40.isDefaultPrevented = $dc040a17866866fa$var$q, n40.nativeEvent = n40;\n};\nvar $dc040a17866866fa$var$G, $dc040a17866866fa$var$J = {\n configurable: !0,\n get: function() {\n return this.class;\n }\n}, $dc040a17866866fa$var$K = (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).vnode;\n(0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).vnode = function(n41) {\n var t31 = n41.type, e21 = n41.props, r14 = e21;\n if (\"string\" == typeof t31) {\n var u7 = -1 === t31.indexOf(\"-\");\n for(var o3 in r14 = {}, e21){\n var i2 = e21[o3];\n $dc040a17866866fa$var$V && \"children\" === o3 && \"noscript\" === t31 || \"value\" === o3 && \"defaultValue\" in e21 && null == i2 || (\"defaultValue\" === o3 && \"value\" in e21 && null == e21.value ? o3 = \"value\" : \"download\" === o3 && !0 === i2 ? i2 = \"\" : /ondoubleclick/i.test(o3) ? o3 = \"ondblclick\" : /^onchange(textarea|input)/i.test(o3 + t31) && !$dc040a17866866fa$var$z(e21.type) ? o3 = \"oninput\" : /^onfocus$/i.test(o3) ? o3 = \"onfocusin\" : /^onblur$/i.test(o3) ? o3 = \"onfocusout\" : /^on(Ani|Tra|Tou|BeforeInp)/.test(o3) ? o3 = o3.toLowerCase() : u7 && $dc040a17866866fa$var$P.test(o3) ? o3 = o3.replace(/[A-Z0-9]/, \"-$&\").toLowerCase() : null === i2 && (i2 = void 0), r14[o3] = i2);\n }\n \"select\" == t31 && r14.multiple && Array.isArray(r14.value) && (r14.value = (0, $fb96b826c0c5f37a$export$47e4c5b300681277)(e21.children).forEach(function(n42) {\n n42.props.selected = -1 != r14.value.indexOf(n42.props.value);\n })), \"select\" == t31 && null != r14.defaultValue && (r14.value = (0, $fb96b826c0c5f37a$export$47e4c5b300681277)(e21.children).forEach(function(n43) {\n n43.props.selected = r14.multiple ? -1 != r14.defaultValue.indexOf(n43.props.value) : r14.defaultValue == n43.props.value;\n })), n41.props = r14, e21.class != e21.className && ($dc040a17866866fa$var$J.enumerable = \"className\" in e21, null != e21.className && (r14.class = e21.className), Object.defineProperty(r14, \"className\", $dc040a17866866fa$var$J));\n }\n n41.$$typeof = $dc040a17866866fa$var$j, $dc040a17866866fa$var$K && $dc040a17866866fa$var$K(n41);\n};\nvar $dc040a17866866fa$var$Q = (0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__r;\n(0, $fb96b826c0c5f37a$export$41c562ebe57d11e2).__r = function(n44) {\n $dc040a17866866fa$var$Q && $dc040a17866866fa$var$Q(n44), $dc040a17866866fa$var$G = n44.__c;\n};\nvar $dc040a17866866fa$export$ae55be85d98224ed = {\n ReactCurrentDispatcher: {\n current: {\n readContext: function(n45) {\n return $dc040a17866866fa$var$G.__n[n45.__c].props.value;\n }\n }\n }\n}, $dc040a17866866fa$export$83d89fbfd8236492 = \"17.0.2\";\nfunction $dc040a17866866fa$export$d38cd72104c1f0e9(n46) {\n return (0, $fb96b826c0c5f37a$export$c8a8987d4410bf2d).bind(null, n46);\n}\nfunction $dc040a17866866fa$export$a8257692ac88316c(n47) {\n return !!n47 && n47.$$typeof === $dc040a17866866fa$var$j;\n}\nfunction $dc040a17866866fa$export$e530037191fcd5d7(n48) {\n return $dc040a17866866fa$export$a8257692ac88316c(n48) ? (0, $fb96b826c0c5f37a$export$e530037191fcd5d7).apply(null, arguments) : n48;\n}\nfunction $dc040a17866866fa$export$502457920280e6be(n49) {\n return !!n49.__k && ((0, $fb96b826c0c5f37a$export$b3890eb0ae9dca99)(null, n49), !0);\n}\nfunction $dc040a17866866fa$export$466bfc07425424d5(n50) {\n return n50 && (n50.base || 1 === n50.nodeType && n50) || null;\n}\nvar $dc040a17866866fa$export$c78a37762a8d58e1 = function(n51, t32) {\n return n51(t32);\n}, $dc040a17866866fa$export$cd75ccfd720a3cd4 = function(n52, t33) {\n return n52(t33);\n}, $dc040a17866866fa$export$5f8d39834fd61797 = (0, $fb96b826c0c5f37a$export$ffb0004e005737fa);\nvar $dc040a17866866fa$export$2e2bcd8739ae039 = {\n useState: (0, $1a9a8ef576b7773d$export$60241385465d0a34),\n useReducer: (0, $1a9a8ef576b7773d$export$13e3392192263954),\n useEffect: (0, $1a9a8ef576b7773d$export$6d9c69b0de29b591),\n useLayoutEffect: (0, $1a9a8ef576b7773d$export$e5c5a5f917a5871c),\n useRef: (0, $1a9a8ef576b7773d$export$b8f5890fc79d6aca),\n useImperativeHandle: (0, $1a9a8ef576b7773d$export$d5a552a76deda3c2),\n useMemo: (0, $1a9a8ef576b7773d$export$1538c33de8887b59),\n useCallback: (0, $1a9a8ef576b7773d$export$35808ee640e87ca7),\n useContext: (0, $1a9a8ef576b7773d$export$fae74005e78b1a27),\n useDebugValue: (0, $1a9a8ef576b7773d$export$dc8fbce3eb94dc1e),\n version: \"17.0.2\",\n Children: $dc040a17866866fa$export$dca3b0875bd9a954,\n render: $dc040a17866866fa$export$b3890eb0ae9dca99,\n hydrate: $dc040a17866866fa$export$fa8d919ba61d84db,\n unmountComponentAtNode: $dc040a17866866fa$export$502457920280e6be,\n createPortal: $dc040a17866866fa$export$d39a5bbd09211389,\n createElement: (0, $fb96b826c0c5f37a$export$c8a8987d4410bf2d),\n createContext: (0, $fb96b826c0c5f37a$export$fd42f52fd3ae1109),\n createFactory: $dc040a17866866fa$export$d38cd72104c1f0e9,\n cloneElement: $dc040a17866866fa$export$e530037191fcd5d7,\n createRef: (0, $fb96b826c0c5f37a$export$7d1e3a5e95ceca43),\n Fragment: (0, $fb96b826c0c5f37a$export$ffb0004e005737fa),\n isValidElement: $dc040a17866866fa$export$a8257692ac88316c,\n findDOMNode: $dc040a17866866fa$export$466bfc07425424d5,\n Component: (0, $fb96b826c0c5f37a$export$16fa2f45be04daa8),\n PureComponent: $dc040a17866866fa$export$221d75b3f55bb0bd,\n memo: $dc040a17866866fa$export$7c73462e0d25e514,\n forwardRef: $dc040a17866866fa$export$257a8862b851cb5b,\n flushSync: $dc040a17866866fa$export$cd75ccfd720a3cd4,\n unstable_batchedUpdates: $dc040a17866866fa$export$c78a37762a8d58e1,\n StrictMode: (0, $fb96b826c0c5f37a$export$ffb0004e005737fa),\n Suspense: $dc040a17866866fa$export$74bf444e3cd11ea5,\n SuspenseList: $dc040a17866866fa$export$998bcd577473dd93,\n lazy: $dc040a17866866fa$export$488013bae63b21da,\n __SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED: $dc040a17866866fa$export$ae55be85d98224ed\n};\n\n\n\n\nconst $ec8c39fdad15601a$var$THEME_ICONS = {\n light: \"outline\",\n dark: \"solid\"\n};\nclass $ec8c39fdad15601a$export$2e2bcd8739ae039 extends (0, $dc040a17866866fa$export$221d75b3f55bb0bd) {\n renderIcon(category) {\n const { icon: icon } = category;\n if (icon) {\n if (icon.svg) return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"span\", {\n class: \"flex\",\n dangerouslySetInnerHTML: {\n __html: icon.svg\n }\n });\n if (icon.src) return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"img\", {\n src: icon.src\n });\n }\n const categoryIcons = (0, $fcccfb36ed0cde68$export$2e2bcd8739ae039).categories[category.id] || (0, $fcccfb36ed0cde68$export$2e2bcd8739ae039).categories.custom;\n const style = this.props.icons == \"auto\" ? $ec8c39fdad15601a$var$THEME_ICONS[this.props.theme] : this.props.icons;\n return categoryIcons[style] || categoryIcons;\n }\n render() {\n let selectedCategoryIndex = null;\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"nav\", {\n id: \"nav\",\n class: \"padding\",\n \"data-position\": this.props.position,\n dir: this.props.dir,\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"flex relative\",\n children: [\n this.categories.map((category, i)=>{\n const title = category.name || (0, $7adb23b0109cc36a$export$dbe3113d60765c1a).categories[category.id];\n const selected = !this.props.unfocused && category.id == this.state.categoryId;\n if (selected) selectedCategoryIndex = i;\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"button\", {\n \"aria-label\": title,\n \"aria-selected\": selected || undefined,\n title: title,\n type: \"button\",\n class: \"flex flex-grow flex-center\",\n onMouseDown: (e)=>e.preventDefault(),\n onClick: ()=>{\n this.props.onClick({\n category: category,\n i: i\n });\n },\n children: this.renderIcon(category)\n });\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"bar\",\n style: {\n width: `${100 / this.categories.length}%`,\n opacity: selectedCategoryIndex == null ? 0 : 1,\n transform: this.props.dir === \"rtl\" ? `scaleX(-1) translateX(${selectedCategoryIndex * 100}%)` : `translateX(${selectedCategoryIndex * 100}%)`\n }\n })\n ]\n })\n });\n }\n constructor(){\n super();\n this.categories = (0, $7adb23b0109cc36a$export$2d0294657ab35f1b).categories.filter((category)=>{\n return !category.target;\n });\n this.state = {\n categoryId: this.categories[0].id\n };\n }\n}\n\n\n\n\n\nclass $e0d4dda61265ff1e$export$2e2bcd8739ae039 extends (0, $dc040a17866866fa$export$221d75b3f55bb0bd) {\n shouldComponentUpdate(nextProps) {\n for(let k in nextProps){\n if (k == \"children\") continue;\n if (nextProps[k] != this.props[k]) return true;\n }\n return false;\n }\n render() {\n return this.props.children;\n }\n}\n\n\n\n\nconst $89bd6bb200cc8fef$var$Performance = {\n rowsPerRender: 10\n};\nclass $89bd6bb200cc8fef$export$2e2bcd8739ae039 extends (0, $fb96b826c0c5f37a$export$16fa2f45be04daa8) {\n getInitialState(props = this.props) {\n return {\n skin: (0, $f72b75cf796873c7$export$2e2bcd8739ae039).get(\"skin\") || props.skin,\n theme: this.initTheme(props.theme)\n };\n }\n componentWillMount() {\n this.dir = (0, $7adb23b0109cc36a$export$dbe3113d60765c1a).rtl ? \"rtl\" : \"ltr\";\n this.refs = {\n menu: (0, $fb96b826c0c5f37a$export$7d1e3a5e95ceca43)(),\n navigation: (0, $fb96b826c0c5f37a$export$7d1e3a5e95ceca43)(),\n scroll: (0, $fb96b826c0c5f37a$export$7d1e3a5e95ceca43)(),\n search: (0, $fb96b826c0c5f37a$export$7d1e3a5e95ceca43)(),\n searchInput: (0, $fb96b826c0c5f37a$export$7d1e3a5e95ceca43)(),\n skinToneButton: (0, $fb96b826c0c5f37a$export$7d1e3a5e95ceca43)(),\n skinToneRadio: (0, $fb96b826c0c5f37a$export$7d1e3a5e95ceca43)()\n };\n this.initGrid();\n if (this.props.stickySearch == false && this.props.searchPosition == \"sticky\") {\n console.warn(\"[EmojiMart] Deprecation warning: `stickySearch` has been renamed `searchPosition`.\");\n this.props.searchPosition = \"static\";\n }\n }\n componentDidMount() {\n this.register();\n this.shadowRoot = this.base.parentNode;\n if (this.props.autoFocus) {\n const { searchInput: searchInput } = this.refs;\n if (searchInput.current) searchInput.current.focus();\n }\n }\n componentWillReceiveProps(nextProps) {\n this.nextState || (this.nextState = {});\n for(const k1 in nextProps)this.nextState[k1] = nextProps[k1];\n clearTimeout(this.nextStateTimer);\n this.nextStateTimer = setTimeout(()=>{\n let requiresGridReset = false;\n for(const k in this.nextState){\n this.props[k] = this.nextState[k];\n if (k === \"custom\" || k === \"categories\") requiresGridReset = true;\n }\n delete this.nextState;\n const nextState = this.getInitialState();\n if (requiresGridReset) return this.reset(nextState);\n this.setState(nextState);\n });\n }\n componentWillUnmount() {\n this.unregister();\n }\n async reset(nextState = {}) {\n await (0, $7adb23b0109cc36a$export$2cd8252107eb640b)(this.props);\n this.initGrid();\n this.unobserve();\n this.setState(nextState, ()=>{\n this.observeCategories();\n this.observeRows();\n });\n }\n register() {\n document.addEventListener(\"click\", this.handleClickOutside);\n this.observe();\n }\n unregister() {\n document.removeEventListener(\"click\", this.handleClickOutside);\n this.unobserve();\n }\n observe() {\n this.observeCategories();\n this.observeRows();\n }\n unobserve({ except: except = [] } = {}) {\n if (!Array.isArray(except)) except = [\n except\n ];\n for (const observer of this.observers){\n if (except.includes(observer)) continue;\n observer.disconnect();\n }\n this.observers = [].concat(except);\n }\n initGrid() {\n const { categories: categories } = (0, $7adb23b0109cc36a$export$2d0294657ab35f1b);\n this.refs.categories = new Map();\n const navKey = (0, $7adb23b0109cc36a$export$2d0294657ab35f1b).categories.map((category)=>category.id).join(\",\");\n if (this.navKey && this.navKey != navKey) this.refs.scroll.current && (this.refs.scroll.current.scrollTop = 0);\n this.navKey = navKey;\n this.grid = [];\n this.grid.setsize = 0;\n const addRow = (rows, category)=>{\n const row = [];\n row.__categoryId = category.id;\n row.__index = rows.length;\n this.grid.push(row);\n const rowIndex = this.grid.length - 1;\n const rowRef = rowIndex % $89bd6bb200cc8fef$var$Performance.rowsPerRender ? {} : (0, $fb96b826c0c5f37a$export$7d1e3a5e95ceca43)();\n rowRef.index = rowIndex;\n rowRef.posinset = this.grid.setsize + 1;\n rows.push(rowRef);\n return row;\n };\n for (let category1 of categories){\n const rows = [];\n let row = addRow(rows, category1);\n for (let emoji of category1.emojis){\n if (row.length == this.getPerLine()) row = addRow(rows, category1);\n this.grid.setsize += 1;\n row.push(emoji);\n }\n this.refs.categories.set(category1.id, {\n root: (0, $fb96b826c0c5f37a$export$7d1e3a5e95ceca43)(),\n rows: rows\n });\n }\n }\n initTheme(theme) {\n if (theme != \"auto\") return theme;\n if (!this.darkMedia) {\n this.darkMedia = matchMedia(\"(prefers-color-scheme: dark)\");\n if (this.darkMedia.media.match(/^not/)) return \"light\";\n this.darkMedia.addListener(()=>{\n if (this.props.theme != \"auto\") return;\n this.setState({\n theme: this.darkMedia.matches ? \"dark\" : \"light\"\n });\n });\n }\n return this.darkMedia.matches ? \"dark\" : \"light\";\n }\n initDynamicPerLine(props = this.props) {\n if (!props.dynamicWidth) return;\n const { element: element , emojiButtonSize: emojiButtonSize } = props;\n const calculatePerLine = ()=>{\n const { width: width } = element.getBoundingClientRect();\n return Math.floor(width / emojiButtonSize);\n };\n const observer = new ResizeObserver(()=>{\n this.unobserve({\n except: observer\n });\n this.setState({\n perLine: calculatePerLine()\n }, ()=>{\n this.initGrid();\n this.forceUpdate(()=>{\n this.observeCategories();\n this.observeRows();\n });\n });\n });\n observer.observe(element);\n this.observers.push(observer);\n return calculatePerLine();\n }\n getPerLine() {\n return this.state.perLine || this.props.perLine;\n }\n getEmojiByPos([p1, p2]) {\n const grid = this.state.searchResults || this.grid;\n const emoji = grid[p1] && grid[p1][p2];\n if (!emoji) return;\n return (0, $c4d155af13ad4d4b$export$2e2bcd8739ae039).get(emoji);\n }\n observeCategories() {\n const navigation = this.refs.navigation.current;\n if (!navigation) return;\n const visibleCategories = new Map();\n const setFocusedCategory = (categoryId)=>{\n if (categoryId != navigation.state.categoryId) navigation.setState({\n categoryId: categoryId\n });\n };\n const observerOptions = {\n root: this.refs.scroll.current,\n threshold: [\n 0.0,\n 1.0\n ]\n };\n const observer = new IntersectionObserver((entries)=>{\n for (const entry of entries){\n const id = entry.target.dataset.id;\n visibleCategories.set(id, entry.intersectionRatio);\n }\n const ratios = [\n ...visibleCategories\n ];\n for (const [id, ratio] of ratios)if (ratio) {\n setFocusedCategory(id);\n break;\n }\n }, observerOptions);\n for (const { root: root } of this.refs.categories.values())observer.observe(root.current);\n this.observers.push(observer);\n }\n observeRows() {\n const visibleRows = {\n ...this.state.visibleRows\n };\n const observer = new IntersectionObserver((entries)=>{\n for (const entry of entries){\n const index = parseInt(entry.target.dataset.index);\n if (entry.isIntersecting) visibleRows[index] = true;\n else delete visibleRows[index];\n }\n this.setState({\n visibleRows: visibleRows\n });\n }, {\n root: this.refs.scroll.current,\n rootMargin: `${this.props.emojiButtonSize * ($89bd6bb200cc8fef$var$Performance.rowsPerRender + 5)}px 0px ${this.props.emojiButtonSize * $89bd6bb200cc8fef$var$Performance.rowsPerRender}px`\n });\n for (const { rows: rows } of this.refs.categories.values()){\n for (const row of rows)if (row.current) observer.observe(row.current);\n }\n this.observers.push(observer);\n }\n preventDefault(e) {\n e.preventDefault();\n }\n unfocusSearch() {\n const input = this.refs.searchInput.current;\n if (!input) return;\n input.blur();\n }\n navigate({ e: e , input: input , left: left , right: right , up: up , down: down }) {\n const grid = this.state.searchResults || this.grid;\n if (!grid.length) return;\n let [p1, p2] = this.state.pos;\n const pos = (()=>{\n if (p1 == 0) {\n if (p2 == 0 && !e.repeat && (left || up)) return null;\n }\n if (p1 == -1) {\n if (!e.repeat && (right || down) && input.selectionStart == input.value.length) return [\n 0,\n 0\n ];\n return null;\n }\n if (left || right) {\n let row = grid[p1];\n const increment = left ? -1 : 1;\n p2 += increment;\n if (!row[p2]) {\n p1 += increment;\n row = grid[p1];\n if (!row) {\n p1 = left ? 0 : grid.length - 1;\n p2 = left ? 0 : grid[p1].length - 1;\n return [\n p1,\n p2\n ];\n }\n p2 = left ? row.length - 1 : 0;\n }\n return [\n p1,\n p2\n ];\n }\n if (up || down) {\n p1 += up ? -1 : 1;\n const row = grid[p1];\n if (!row) {\n p1 = up ? 0 : grid.length - 1;\n p2 = up ? 0 : grid[p1].length - 1;\n return [\n p1,\n p2\n ];\n }\n if (!row[p2]) p2 = row.length - 1;\n return [\n p1,\n p2\n ];\n }\n })();\n if (pos) e.preventDefault();\n else {\n if (this.state.pos[0] > -1) this.setState({\n pos: [\n -1,\n -1\n ]\n });\n return;\n }\n this.setState({\n pos: pos,\n keyboard: true\n }, ()=>{\n this.scrollTo({\n row: pos[0]\n });\n });\n }\n scrollTo({ categoryId: categoryId , row: row }) {\n const grid = this.state.searchResults || this.grid;\n if (!grid.length) return;\n const scroll = this.refs.scroll.current;\n const scrollRect = scroll.getBoundingClientRect();\n let scrollTop = 0;\n if (row >= 0) categoryId = grid[row].__categoryId;\n if (categoryId) {\n const ref = this.refs[categoryId] || this.refs.categories.get(categoryId).root;\n const categoryRect = ref.current.getBoundingClientRect();\n scrollTop = categoryRect.top - (scrollRect.top - scroll.scrollTop) + 1;\n }\n if (row >= 0) {\n if (!row) scrollTop = 0;\n else {\n const rowIndex = grid[row].__index;\n const rowTop = scrollTop + rowIndex * this.props.emojiButtonSize;\n const rowBot = rowTop + this.props.emojiButtonSize + this.props.emojiButtonSize * 0.88;\n if (rowTop < scroll.scrollTop) scrollTop = rowTop;\n else if (rowBot > scroll.scrollTop + scrollRect.height) scrollTop = rowBot - scrollRect.height;\n else return;\n }\n }\n this.ignoreMouse();\n scroll.scrollTop = scrollTop;\n }\n ignoreMouse() {\n this.mouseIsIgnored = true;\n clearTimeout(this.ignoreMouseTimer);\n this.ignoreMouseTimer = setTimeout(()=>{\n delete this.mouseIsIgnored;\n }, 100);\n }\n handleEmojiOver(pos) {\n if (this.mouseIsIgnored || this.state.showSkins) return;\n this.setState({\n pos: pos || [\n -1,\n -1\n ],\n keyboard: false\n });\n }\n handleEmojiClick({ e: e , emoji: emoji , pos: pos }) {\n if (!this.props.onEmojiSelect) return;\n if (!emoji && pos) emoji = this.getEmojiByPos(pos);\n if (emoji) {\n const emojiData = (0, $693b183b0a78708f$export$d10ac59fbe52a745)(emoji, {\n skinIndex: this.state.skin - 1\n });\n if (this.props.maxFrequentRows) (0, $b22cfd0a55410b4f$export$2e2bcd8739ae039).add(emojiData, this.props);\n this.props.onEmojiSelect(emojiData, e);\n }\n }\n closeSkins() {\n if (!this.state.showSkins) return;\n this.setState({\n showSkins: null,\n tempSkin: null\n });\n this.base.removeEventListener(\"click\", this.handleBaseClick);\n this.base.removeEventListener(\"keydown\", this.handleBaseKeydown);\n }\n handleSkinMouseOver(tempSkin) {\n this.setState({\n tempSkin: tempSkin\n });\n }\n handleSkinClick(skin) {\n this.ignoreMouse();\n this.closeSkins();\n this.setState({\n skin: skin,\n tempSkin: null\n });\n (0, $f72b75cf796873c7$export$2e2bcd8739ae039).set(\"skin\", skin);\n }\n renderNav() {\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)((0, $ec8c39fdad15601a$export$2e2bcd8739ae039), {\n ref: this.refs.navigation,\n icons: this.props.icons,\n theme: this.state.theme,\n dir: this.dir,\n unfocused: !!this.state.searchResults,\n position: this.props.navPosition,\n onClick: this.handleCategoryClick\n }, this.navKey);\n }\n renderPreview() {\n const emoji = this.getEmojiByPos(this.state.pos);\n const noSearchResults = this.state.searchResults && !this.state.searchResults.length;\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n id: \"preview\",\n class: \"flex flex-middle\",\n dir: this.dir,\n \"data-position\": this.props.previewPosition,\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"flex flex-middle flex-grow\",\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"flex flex-auto flex-middle flex-center\",\n style: {\n height: this.props.emojiButtonSize,\n fontSize: this.props.emojiButtonSize\n },\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)((0, $254755d3f438722f$export$2e2bcd8739ae039), {\n emoji: emoji,\n id: noSearchResults ? this.props.noResultsEmoji || \"cry\" : this.props.previewEmoji || (this.props.previewPosition == \"top\" ? \"point_down\" : \"point_up\"),\n set: this.props.set,\n size: this.props.emojiButtonSize,\n skin: this.state.tempSkin || this.state.skin,\n spritesheet: true,\n getSpritesheetURL: this.props.getSpritesheetURL\n })\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: `margin-${this.dir[0]}`,\n children: emoji || noSearchResults ? /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: `padding-${this.dir[2]} align-${this.dir[0]}`,\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"preview-title ellipsis\",\n children: emoji ? emoji.name : (0, $7adb23b0109cc36a$export$dbe3113d60765c1a).search_no_results_1\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"preview-subtitle ellipsis color-c\",\n children: emoji ? emoji.skins[0].shortcodes : (0, $7adb23b0109cc36a$export$dbe3113d60765c1a).search_no_results_2\n })\n ]\n }) : /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"preview-placeholder color-c\",\n children: (0, $7adb23b0109cc36a$export$dbe3113d60765c1a).pick\n })\n })\n ]\n }),\n !emoji && this.props.skinTonePosition == \"preview\" && this.renderSkinToneButton()\n ]\n });\n }\n renderEmojiButton(emoji, { pos: pos , posinset: posinset , grid: grid }) {\n const size = this.props.emojiButtonSize;\n const skin = this.state.tempSkin || this.state.skin;\n const emojiSkin = emoji.skins[skin - 1] || emoji.skins[0];\n const native = emojiSkin.native;\n const selected = (0, $693b183b0a78708f$export$9cb4719e2e525b7a)(this.state.pos, pos);\n const key = pos.concat(emoji.id).join(\"\");\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)((0, $e0d4dda61265ff1e$export$2e2bcd8739ae039), {\n selected: selected,\n skin: skin,\n size: size,\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"button\", {\n \"aria-label\": native,\n \"aria-selected\": selected || undefined,\n \"aria-posinset\": posinset,\n \"aria-setsize\": grid.setsize,\n \"data-keyboard\": this.state.keyboard,\n title: this.props.previewPosition == \"none\" ? emoji.name : undefined,\n type: \"button\",\n class: \"flex flex-center flex-middle\",\n tabindex: \"-1\",\n onClick: (e)=>this.handleEmojiClick({\n e: e,\n emoji: emoji\n }),\n onMouseEnter: ()=>this.handleEmojiOver(pos),\n onMouseLeave: ()=>this.handleEmojiOver(),\n style: {\n width: this.props.emojiButtonSize,\n height: this.props.emojiButtonSize,\n fontSize: this.props.emojiSize,\n lineHeight: 0\n },\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n \"aria-hidden\": \"true\",\n class: \"background\",\n style: {\n borderRadius: this.props.emojiButtonRadius,\n backgroundColor: this.props.emojiButtonColors ? this.props.emojiButtonColors[(posinset - 1) % this.props.emojiButtonColors.length] : undefined\n }\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)((0, $254755d3f438722f$export$2e2bcd8739ae039), {\n emoji: emoji,\n set: this.props.set,\n size: this.props.emojiSize,\n skin: skin,\n spritesheet: true,\n getSpritesheetURL: this.props.getSpritesheetURL\n })\n ]\n })\n }, key);\n }\n renderSearch() {\n const renderSkinTone = this.props.previewPosition == \"none\" || this.props.skinTonePosition == \"search\";\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"spacer\"\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"flex flex-middle\",\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"search relative flex-grow\",\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"input\", {\n type: \"search\",\n ref: this.refs.searchInput,\n placeholder: (0, $7adb23b0109cc36a$export$dbe3113d60765c1a).search,\n onClick: this.handleSearchClick,\n onInput: this.handleSearchInput,\n onKeyDown: this.handleSearchKeyDown,\n autoComplete: \"off\"\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"span\", {\n class: \"icon loupe flex\",\n children: (0, $fcccfb36ed0cde68$export$2e2bcd8739ae039).search.loupe\n }),\n this.state.searchResults && /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"button\", {\n title: \"Clear\",\n \"aria-label\": \"Clear\",\n type: \"button\",\n class: \"icon delete flex\",\n onClick: this.clearSearch,\n onMouseDown: this.preventDefault,\n children: (0, $fcccfb36ed0cde68$export$2e2bcd8739ae039).search.delete\n })\n ]\n }),\n renderSkinTone && this.renderSkinToneButton()\n ]\n })\n ]\n });\n }\n renderSearchResults() {\n const { searchResults: searchResults } = this.state;\n if (!searchResults) return null;\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"category\",\n ref: this.refs.search,\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: `sticky padding-small align-${this.dir[0]}`,\n children: (0, $7adb23b0109cc36a$export$dbe3113d60765c1a).categories.search\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n children: !searchResults.length ? /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: `padding-small align-${this.dir[0]}`,\n children: this.props.onAddCustomEmoji && /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"a\", {\n onClick: this.props.onAddCustomEmoji,\n children: (0, $7adb23b0109cc36a$export$dbe3113d60765c1a).add_custom\n })\n }) : searchResults.map((row, i)=>{\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"flex\",\n children: row.map((emoji, ii)=>{\n return this.renderEmojiButton(emoji, {\n pos: [\n i,\n ii\n ],\n posinset: i * this.props.perLine + ii + 1,\n grid: searchResults\n });\n })\n });\n })\n })\n ]\n });\n }\n renderCategories() {\n const { categories: categories } = (0, $7adb23b0109cc36a$export$2d0294657ab35f1b);\n const hidden = !!this.state.searchResults;\n const perLine = this.getPerLine();\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n style: {\n visibility: hidden ? \"hidden\" : undefined,\n display: hidden ? \"none\" : undefined,\n height: \"100%\"\n },\n children: categories.map((category)=>{\n const { root: root , rows: rows } = this.refs.categories.get(category.id);\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n \"data-id\": category.target ? category.target.id : category.id,\n class: \"category\",\n ref: root,\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: `sticky padding-small align-${this.dir[0]}`,\n children: category.name || (0, $7adb23b0109cc36a$export$dbe3113d60765c1a).categories[category.id]\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"relative\",\n style: {\n height: rows.length * this.props.emojiButtonSize\n },\n children: rows.map((row, i)=>{\n const targetRow = row.index - row.index % $89bd6bb200cc8fef$var$Performance.rowsPerRender;\n const visible = this.state.visibleRows[targetRow];\n const ref = \"current\" in row ? row : undefined;\n if (!visible && !ref) return null;\n const start = i * perLine;\n const end = start + perLine;\n const emojiIds = category.emojis.slice(start, end);\n if (emojiIds.length < perLine) emojiIds.push(...new Array(perLine - emojiIds.length));\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n \"data-index\": row.index,\n ref: ref,\n class: \"flex row\",\n style: {\n top: i * this.props.emojiButtonSize\n },\n children: visible && emojiIds.map((emojiId, ii)=>{\n if (!emojiId) return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n style: {\n width: this.props.emojiButtonSize,\n height: this.props.emojiButtonSize\n }\n });\n const emoji = (0, $c4d155af13ad4d4b$export$2e2bcd8739ae039).get(emojiId);\n return this.renderEmojiButton(emoji, {\n pos: [\n row.index,\n ii\n ],\n posinset: row.posinset + ii,\n grid: this.grid\n });\n })\n }, row.index);\n })\n })\n ]\n });\n })\n });\n }\n renderSkinToneButton() {\n if (this.props.skinTonePosition == \"none\") return null;\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"flex flex-auto flex-center flex-middle\",\n style: {\n position: \"relative\",\n width: this.props.emojiButtonSize,\n height: this.props.emojiButtonSize\n },\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"button\", {\n type: \"button\",\n ref: this.refs.skinToneButton,\n class: \"skin-tone-button flex flex-auto flex-center flex-middle\",\n \"aria-selected\": this.state.showSkins ? \"\" : undefined,\n \"aria-label\": (0, $7adb23b0109cc36a$export$dbe3113d60765c1a).skins.choose,\n title: (0, $7adb23b0109cc36a$export$dbe3113d60765c1a).skins.choose,\n onClick: this.openSkins,\n style: {\n width: this.props.emojiSize,\n height: this.props.emojiSize\n },\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"span\", {\n class: `skin-tone skin-tone-${this.state.skin}`\n })\n })\n });\n }\n renderLiveRegion() {\n const emoji = this.getEmojiByPos(this.state.pos);\n const contents = emoji ? emoji.name : \"\";\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n \"aria-live\": \"polite\",\n class: \"sr-only\",\n children: contents\n });\n }\n renderSkins() {\n const skinToneButton = this.refs.skinToneButton.current;\n const skinToneButtonRect = skinToneButton.getBoundingClientRect();\n const baseRect = this.base.getBoundingClientRect();\n const position = {};\n if (this.dir == \"ltr\") position.right = baseRect.right - skinToneButtonRect.right - 3;\n else position.left = skinToneButtonRect.left - baseRect.left - 3;\n if (this.props.previewPosition == \"bottom\" && this.props.skinTonePosition == \"preview\") position.bottom = baseRect.bottom - skinToneButtonRect.top + 6;\n else {\n position.top = skinToneButtonRect.bottom - baseRect.top + 3;\n position.bottom = \"auto\";\n }\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n ref: this.refs.menu,\n role: \"radiogroup\",\n dir: this.dir,\n \"aria-label\": (0, $7adb23b0109cc36a$export$dbe3113d60765c1a).skins.choose,\n class: \"menu hidden\",\n \"data-position\": position.top ? \"top\" : \"bottom\",\n style: position,\n children: [\n ...Array(6).keys()\n ].map((i)=>{\n const skin = i + 1;\n const checked = this.state.skin == skin;\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"input\", {\n type: \"radio\",\n name: \"skin-tone\",\n value: skin,\n \"aria-label\": (0, $7adb23b0109cc36a$export$dbe3113d60765c1a).skins[skin],\n ref: checked ? this.refs.skinToneRadio : null,\n defaultChecked: checked,\n onChange: ()=>this.handleSkinMouseOver(skin),\n onKeyDown: (e)=>{\n if (e.code == \"Enter\" || e.code == \"Space\" || e.code == \"Tab\") {\n e.preventDefault();\n this.handleSkinClick(skin);\n }\n }\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"button\", {\n \"aria-hidden\": \"true\",\n tabindex: \"-1\",\n onClick: ()=>this.handleSkinClick(skin),\n onMouseEnter: ()=>this.handleSkinMouseOver(skin),\n onMouseLeave: ()=>this.handleSkinMouseOver(),\n class: \"option flex flex-grow flex-middle\",\n children: [\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"span\", {\n class: `skin-tone skin-tone-${skin}`\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"span\", {\n class: \"margin-small-lr\",\n children: (0, $7adb23b0109cc36a$export$dbe3113d60765c1a).skins[skin]\n })\n ]\n })\n ]\n });\n })\n });\n }\n render() {\n const lineWidth = this.props.perLine * this.props.emojiButtonSize;\n return /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"section\", {\n id: \"root\",\n class: \"flex flex-column\",\n dir: this.dir,\n style: {\n width: this.props.dynamicWidth ? \"100%\" : `calc(${lineWidth}px + (var(--padding) + var(--sidebar-width)))`\n },\n \"data-emoji-set\": this.props.set,\n \"data-theme\": this.state.theme,\n \"data-menu\": this.state.showSkins ? \"\" : undefined,\n children: [\n this.props.previewPosition == \"top\" && this.renderPreview(),\n this.props.navPosition == \"top\" && this.renderNav(),\n this.props.searchPosition == \"sticky\" && /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n class: \"padding-lr\",\n children: this.renderSearch()\n }),\n /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n ref: this.refs.scroll,\n class: \"scroll flex-grow padding-lr\",\n children: /*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)(\"div\", {\n style: {\n width: this.props.dynamicWidth ? \"100%\" : lineWidth,\n height: \"100%\"\n },\n children: [\n this.props.searchPosition == \"static\" && this.renderSearch(),\n this.renderSearchResults(),\n this.renderCategories()\n ]\n })\n }),\n this.props.navPosition == \"bottom\" && this.renderNav(),\n this.props.previewPosition == \"bottom\" && this.renderPreview(),\n this.state.showSkins && this.renderSkins(),\n this.renderLiveRegion()\n ]\n });\n }\n constructor(props){\n super();\n (0, $c770c458706daa72$export$2e2bcd8739ae039)(this, \"handleClickOutside\", (e)=>{\n const { element: element } = this.props;\n if (e.target != element) {\n if (this.state.showSkins) this.closeSkins();\n if (this.props.onClickOutside) this.props.onClickOutside(e);\n }\n });\n (0, $c770c458706daa72$export$2e2bcd8739ae039)(this, \"handleBaseClick\", (e)=>{\n if (!this.state.showSkins) return;\n if (!e.target.closest(\".menu\")) {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.closeSkins();\n }\n });\n (0, $c770c458706daa72$export$2e2bcd8739ae039)(this, \"handleBaseKeydown\", (e)=>{\n if (!this.state.showSkins) return;\n if (e.key == \"Escape\") {\n e.preventDefault();\n e.stopImmediatePropagation();\n this.closeSkins();\n }\n });\n (0, $c770c458706daa72$export$2e2bcd8739ae039)(this, \"handleSearchClick\", ()=>{\n const emoji = this.getEmojiByPos(this.state.pos);\n if (!emoji) return;\n this.setState({\n pos: [\n -1,\n -1\n ]\n });\n });\n (0, $c770c458706daa72$export$2e2bcd8739ae039)(this, \"handleSearchInput\", async ()=>{\n const input = this.refs.searchInput.current;\n if (!input) return;\n const { value: value } = input;\n const searchResults = await (0, $c4d155af13ad4d4b$export$2e2bcd8739ae039).search(value);\n const afterRender = ()=>{\n if (!this.refs.scroll.current) return;\n this.refs.scroll.current.scrollTop = 0;\n };\n if (!searchResults) return this.setState({\n searchResults: searchResults,\n pos: [\n -1,\n -1\n ]\n }, afterRender);\n const pos = input.selectionStart == input.value.length ? [\n 0,\n 0\n ] : [\n -1,\n -1\n ];\n const grid = [];\n grid.setsize = searchResults.length;\n let row = null;\n for (let emoji of searchResults){\n if (!grid.length || row.length == this.getPerLine()) {\n row = [];\n row.__categoryId = \"search\";\n row.__index = grid.length;\n grid.push(row);\n }\n row.push(emoji);\n }\n this.ignoreMouse();\n this.setState({\n searchResults: grid,\n pos: pos\n }, afterRender);\n });\n (0, $c770c458706daa72$export$2e2bcd8739ae039)(this, \"handleSearchKeyDown\", (e)=>{\n // const specialKey = e.altKey || e.ctrlKey || e.metaKey\n const input = e.currentTarget;\n e.stopImmediatePropagation();\n switch(e.key){\n case \"ArrowLeft\":\n // if (specialKey) return\n // e.preventDefault()\n this.navigate({\n e: e,\n input: input,\n left: true\n });\n break;\n case \"ArrowRight\":\n // if (specialKey) return\n // e.preventDefault()\n this.navigate({\n e: e,\n input: input,\n right: true\n });\n break;\n case \"ArrowUp\":\n // if (specialKey) return\n // e.preventDefault()\n this.navigate({\n e: e,\n input: input,\n up: true\n });\n break;\n case \"ArrowDown\":\n // if (specialKey) return\n // e.preventDefault()\n this.navigate({\n e: e,\n input: input,\n down: true\n });\n break;\n case \"Enter\":\n e.preventDefault();\n this.handleEmojiClick({\n e: e,\n pos: this.state.pos\n });\n break;\n case \"Escape\":\n e.preventDefault();\n if (this.state.searchResults) this.clearSearch();\n else this.unfocusSearch();\n break;\n default:\n break;\n }\n });\n (0, $c770c458706daa72$export$2e2bcd8739ae039)(this, \"clearSearch\", ()=>{\n const input = this.refs.searchInput.current;\n if (!input) return;\n input.value = \"\";\n input.focus();\n this.handleSearchInput();\n });\n (0, $c770c458706daa72$export$2e2bcd8739ae039)(this, \"handleCategoryClick\", ({ category: category , i: i })=>{\n this.scrollTo(i == 0 ? {\n row: -1\n } : {\n categoryId: category.id\n });\n });\n (0, $c770c458706daa72$export$2e2bcd8739ae039)(this, \"openSkins\", (e)=>{\n const { currentTarget: currentTarget } = e;\n const rect = currentTarget.getBoundingClientRect();\n this.setState({\n showSkins: rect\n }, async ()=>{\n // Firefox requires 2 frames for the transition to consistenly work\n await (0, $693b183b0a78708f$export$e772c8ff12451969)(2);\n const menu = this.refs.menu.current;\n if (!menu) return;\n menu.classList.remove(\"hidden\");\n this.refs.skinToneRadio.current.focus();\n this.base.addEventListener(\"click\", this.handleBaseClick, true);\n this.base.addEventListener(\"keydown\", this.handleBaseKeydown, true);\n });\n });\n this.observers = [];\n this.state = {\n pos: [\n -1,\n -1\n ],\n perLine: this.initDynamicPerLine(props),\n visibleRows: {\n 0: true\n },\n ...this.getInitialState(props)\n };\n }\n}\n\n\n\n\n\n\n\n\n\nclass $efa000751917694d$export$2e2bcd8739ae039 extends (0, $26f27c338a96b1a6$export$2e2bcd8739ae039) {\n async connectedCallback() {\n const props = (0, $7adb23b0109cc36a$export$75fe5f91d452f94b)(this.props, (0, $b247ea80b67298d5$export$2e2bcd8739ae039), this);\n props.element = this;\n props.ref = (component)=>{\n this.component = component;\n };\n await (0, $7adb23b0109cc36a$export$2cd8252107eb640b)(props);\n if (this.disconnected) return;\n (0, $fb96b826c0c5f37a$export$b3890eb0ae9dca99)(/*#__PURE__*/ (0, $bd9dd35321b03dd4$export$34b9dba7ce09269b)((0, $89bd6bb200cc8fef$export$2e2bcd8739ae039), {\n ...props\n }), this.shadowRoot);\n }\n constructor(props){\n super(props, {\n styles: (0, (/*@__PURE__*/$parcel$interopDefault($329d53ba9fd7125f$exports)))\n });\n }\n}\n(0, $c770c458706daa72$export$2e2bcd8739ae039)($efa000751917694d$export$2e2bcd8739ae039, \"Props\", (0, $b247ea80b67298d5$export$2e2bcd8739ae039));\nif (typeof customElements !== \"undefined\" && !customElements.get(\"em-emoji-picker\")) customElements.define(\"em-emoji-picker\", $efa000751917694d$export$2e2bcd8739ae039);\n\n\nvar $329d53ba9fd7125f$exports = {};\n$329d53ba9fd7125f$exports = \":host {\\n width: min-content;\\n height: 435px;\\n min-height: 230px;\\n border-radius: var(--border-radius);\\n box-shadow: var(--shadow);\\n --border-radius: 10px;\\n --category-icon-size: 18px;\\n --font-family: -apple-system, BlinkMacSystemFont, \\\"Helvetica Neue\\\", sans-serif;\\n --font-size: 15px;\\n --preview-placeholder-size: 21px;\\n --preview-title-size: 1.1em;\\n --preview-subtitle-size: .9em;\\n --shadow-color: 0deg 0% 0%;\\n --shadow: .3px .5px 2.7px hsl(var(--shadow-color) / .14), .4px .8px 1px -3.2px hsl(var(--shadow-color) / .14), 1px 2px 2.5px -4.5px hsl(var(--shadow-color) / .14);\\n display: flex;\\n}\\n\\n[data-theme=\\\"light\\\"] {\\n --em-rgb-color: var(--rgb-color, 34, 36, 39);\\n --em-rgb-accent: var(--rgb-accent, 34, 102, 237);\\n --em-rgb-background: var(--rgb-background, 255, 255, 255);\\n --em-rgb-input: var(--rgb-input, 255, 255, 255);\\n --em-color-border: var(--color-border, rgba(0, 0, 0, .05));\\n --em-color-border-over: var(--color-border-over, rgba(0, 0, 0, .1));\\n}\\n\\n[data-theme=\\\"dark\\\"] {\\n --em-rgb-color: var(--rgb-color, 222, 222, 221);\\n --em-rgb-accent: var(--rgb-accent, 58, 130, 247);\\n --em-rgb-background: var(--rgb-background, 21, 22, 23);\\n --em-rgb-input: var(--rgb-input, 0, 0, 0);\\n --em-color-border: var(--color-border, rgba(255, 255, 255, .1));\\n --em-color-border-over: var(--color-border-over, rgba(255, 255, 255, .2));\\n}\\n\\n#root {\\n --color-a: rgb(var(--em-rgb-color));\\n --color-b: rgba(var(--em-rgb-color), .65);\\n --color-c: rgba(var(--em-rgb-color), .45);\\n --padding: 12px;\\n --padding-small: calc(var(--padding) / 2);\\n --sidebar-width: 16px;\\n --duration: 225ms;\\n --duration-fast: 125ms;\\n --duration-instant: 50ms;\\n --easing: cubic-bezier(.4, 0, .2, 1);\\n width: 100%;\\n text-align: left;\\n border-radius: var(--border-radius);\\n background-color: rgb(var(--em-rgb-background));\\n position: relative;\\n}\\n\\n@media (prefers-reduced-motion) {\\n #root {\\n --duration: 0;\\n --duration-fast: 0;\\n --duration-instant: 0;\\n }\\n}\\n\\n#root[data-menu] button {\\n cursor: auto;\\n}\\n\\n#root[data-menu] .menu button {\\n cursor: pointer;\\n}\\n\\n:host, #root, input, button {\\n color: rgb(var(--em-rgb-color));\\n font-family: var(--font-family);\\n font-size: var(--font-size);\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n line-height: normal;\\n}\\n\\n*, :before, :after {\\n box-sizing: border-box;\\n min-width: 0;\\n margin: 0;\\n padding: 0;\\n}\\n\\n.relative {\\n position: relative;\\n}\\n\\n.flex {\\n display: flex;\\n}\\n\\n.flex-auto {\\n flex: none;\\n}\\n\\n.flex-center {\\n justify-content: center;\\n}\\n\\n.flex-column {\\n flex-direction: column;\\n}\\n\\n.flex-grow {\\n flex: auto;\\n}\\n\\n.flex-middle {\\n align-items: center;\\n}\\n\\n.flex-wrap {\\n flex-wrap: wrap;\\n}\\n\\n.padding {\\n padding: var(--padding);\\n}\\n\\n.padding-t {\\n padding-top: var(--padding);\\n}\\n\\n.padding-lr {\\n padding-left: var(--padding);\\n padding-right: var(--padding);\\n}\\n\\n.padding-r {\\n padding-right: var(--padding);\\n}\\n\\n.padding-small {\\n padding: var(--padding-small);\\n}\\n\\n.padding-small-b {\\n padding-bottom: var(--padding-small);\\n}\\n\\n.padding-small-lr {\\n padding-left: var(--padding-small);\\n padding-right: var(--padding-small);\\n}\\n\\n.margin {\\n margin: var(--padding);\\n}\\n\\n.margin-r {\\n margin-right: var(--padding);\\n}\\n\\n.margin-l {\\n margin-left: var(--padding);\\n}\\n\\n.margin-small-l {\\n margin-left: var(--padding-small);\\n}\\n\\n.margin-small-lr {\\n margin-left: var(--padding-small);\\n margin-right: var(--padding-small);\\n}\\n\\n.align-l {\\n text-align: left;\\n}\\n\\n.align-r {\\n text-align: right;\\n}\\n\\n.color-a {\\n color: var(--color-a);\\n}\\n\\n.color-b {\\n color: var(--color-b);\\n}\\n\\n.color-c {\\n color: var(--color-c);\\n}\\n\\n.ellipsis {\\n white-space: nowrap;\\n max-width: 100%;\\n width: auto;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n}\\n\\n.sr-only {\\n width: 1px;\\n height: 1px;\\n position: absolute;\\n top: auto;\\n left: -10000px;\\n overflow: hidden;\\n}\\n\\na {\\n cursor: pointer;\\n color: rgb(var(--em-rgb-accent));\\n}\\n\\na:hover {\\n text-decoration: underline;\\n}\\n\\n.spacer {\\n height: 10px;\\n}\\n\\n[dir=\\\"rtl\\\"] .scroll {\\n padding-left: 0;\\n padding-right: var(--padding);\\n}\\n\\n.scroll {\\n padding-right: 0;\\n overflow-x: hidden;\\n overflow-y: auto;\\n}\\n\\n.scroll::-webkit-scrollbar {\\n width: var(--sidebar-width);\\n height: var(--sidebar-width);\\n}\\n\\n.scroll::-webkit-scrollbar-track {\\n border: 0;\\n}\\n\\n.scroll::-webkit-scrollbar-button {\\n width: 0;\\n height: 0;\\n display: none;\\n}\\n\\n.scroll::-webkit-scrollbar-corner {\\n background-color: rgba(0, 0, 0, 0);\\n}\\n\\n.scroll::-webkit-scrollbar-thumb {\\n min-height: 20%;\\n min-height: 65px;\\n border: 4px solid rgb(var(--em-rgb-background));\\n border-radius: 8px;\\n}\\n\\n.scroll::-webkit-scrollbar-thumb:hover {\\n background-color: var(--em-color-border-over) !important;\\n}\\n\\n.scroll:hover::-webkit-scrollbar-thumb {\\n background-color: var(--em-color-border);\\n}\\n\\n.sticky {\\n z-index: 1;\\n background-color: rgba(var(--em-rgb-background), .9);\\n -webkit-backdrop-filter: blur(4px);\\n backdrop-filter: blur(4px);\\n font-weight: 500;\\n position: sticky;\\n top: -1px;\\n}\\n\\n[dir=\\\"rtl\\\"] .search input[type=\\\"search\\\"] {\\n padding: 10px 2.2em 10px 2em;\\n}\\n\\n[dir=\\\"rtl\\\"] .search .loupe {\\n left: auto;\\n right: .7em;\\n}\\n\\n[dir=\\\"rtl\\\"] .search .delete {\\n left: .7em;\\n right: auto;\\n}\\n\\n.search {\\n z-index: 2;\\n position: relative;\\n}\\n\\n.search input, .search button {\\n font-size: calc(var(--font-size) - 1px);\\n}\\n\\n.search input[type=\\\"search\\\"] {\\n width: 100%;\\n background-color: var(--em-color-border);\\n transition-duration: var(--duration);\\n transition-property: background-color, box-shadow;\\n transition-timing-function: var(--easing);\\n border: 0;\\n border-radius: 10px;\\n outline: 0;\\n padding: 10px 2em 10px 2.2em;\\n display: block;\\n}\\n\\n.search input[type=\\\"search\\\"]::-ms-input-placeholder {\\n color: inherit;\\n opacity: .6;\\n}\\n\\n.search input[type=\\\"search\\\"]::placeholder {\\n color: inherit;\\n opacity: .6;\\n}\\n\\n.search input[type=\\\"search\\\"], .search input[type=\\\"search\\\"]::-webkit-search-decoration, .search input[type=\\\"search\\\"]::-webkit-search-cancel-button, .search input[type=\\\"search\\\"]::-webkit-search-results-button, .search input[type=\\\"search\\\"]::-webkit-search-results-decoration {\\n -webkit-appearance: none;\\n -ms-appearance: none;\\n appearance: none;\\n}\\n\\n.search input[type=\\\"search\\\"]:focus {\\n background-color: rgb(var(--em-rgb-input));\\n box-shadow: inset 0 0 0 1px rgb(var(--em-rgb-accent)), 0 1px 3px rgba(65, 69, 73, .2);\\n}\\n\\n.search .icon {\\n z-index: 1;\\n color: rgba(var(--em-rgb-color), .7);\\n position: absolute;\\n top: 50%;\\n transform: translateY(-50%);\\n}\\n\\n.search .loupe {\\n pointer-events: none;\\n left: .7em;\\n}\\n\\n.search .delete {\\n right: .7em;\\n}\\n\\nsvg {\\n fill: currentColor;\\n width: 1em;\\n height: 1em;\\n}\\n\\nbutton {\\n -webkit-appearance: none;\\n -ms-appearance: none;\\n appearance: none;\\n cursor: pointer;\\n color: currentColor;\\n background-color: rgba(0, 0, 0, 0);\\n border: 0;\\n}\\n\\n#nav {\\n z-index: 2;\\n padding-top: 12px;\\n padding-bottom: 12px;\\n padding-right: var(--sidebar-width);\\n position: relative;\\n}\\n\\n#nav button {\\n color: var(--color-b);\\n transition: color var(--duration) var(--easing);\\n}\\n\\n#nav button:hover {\\n color: var(--color-a);\\n}\\n\\n#nav svg, #nav img {\\n width: var(--category-icon-size);\\n height: var(--category-icon-size);\\n}\\n\\n#nav[dir=\\\"rtl\\\"] .bar {\\n left: auto;\\n right: 0;\\n}\\n\\n#nav .bar {\\n width: 100%;\\n height: 3px;\\n background-color: rgb(var(--em-rgb-accent));\\n transition: transform var(--duration) var(--easing);\\n border-radius: 3px 3px 0 0;\\n position: absolute;\\n bottom: -12px;\\n left: 0;\\n}\\n\\n#nav button[aria-selected] {\\n color: rgb(var(--em-rgb-accent));\\n}\\n\\n#preview {\\n z-index: 2;\\n padding: calc(var(--padding) + 4px) var(--padding);\\n padding-right: var(--sidebar-width);\\n position: relative;\\n}\\n\\n#preview .preview-placeholder {\\n font-size: var(--preview-placeholder-size);\\n}\\n\\n#preview .preview-title {\\n font-size: var(--preview-title-size);\\n}\\n\\n#preview .preview-subtitle {\\n font-size: var(--preview-subtitle-size);\\n}\\n\\n#nav:before, #preview:before {\\n content: \\\"\\\";\\n height: 2px;\\n position: absolute;\\n left: 0;\\n right: 0;\\n}\\n\\n#nav[data-position=\\\"top\\\"]:before, #preview[data-position=\\\"top\\\"]:before {\\n background: linear-gradient(to bottom, var(--em-color-border), transparent);\\n top: 100%;\\n}\\n\\n#nav[data-position=\\\"bottom\\\"]:before, #preview[data-position=\\\"bottom\\\"]:before {\\n background: linear-gradient(to top, var(--em-color-border), transparent);\\n bottom: 100%;\\n}\\n\\n.category:last-child {\\n min-height: calc(100% + 1px);\\n}\\n\\n.category button {\\n font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, sans-serif;\\n position: relative;\\n}\\n\\n.category button > * {\\n position: relative;\\n}\\n\\n.category button .background {\\n opacity: 0;\\n background-color: var(--em-color-border);\\n transition: opacity var(--duration-fast) var(--easing) var(--duration-instant);\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n}\\n\\n.category button:hover .background {\\n transition-duration: var(--duration-instant);\\n transition-delay: 0s;\\n}\\n\\n.category button[aria-selected] .background {\\n opacity: 1;\\n}\\n\\n.category button[data-keyboard] .background {\\n transition: none;\\n}\\n\\n.row {\\n width: 100%;\\n position: absolute;\\n top: 0;\\n left: 0;\\n}\\n\\n.skin-tone-button {\\n border: 1px solid rgba(0, 0, 0, 0);\\n border-radius: 100%;\\n}\\n\\n.skin-tone-button:hover {\\n border-color: var(--em-color-border);\\n}\\n\\n.skin-tone-button:active .skin-tone {\\n transform: scale(.85) !important;\\n}\\n\\n.skin-tone-button .skin-tone {\\n transition: transform var(--duration) var(--easing);\\n}\\n\\n.skin-tone-button[aria-selected] {\\n background-color: var(--em-color-border);\\n border-top-color: rgba(0, 0, 0, .05);\\n border-bottom-color: rgba(0, 0, 0, 0);\\n border-left-width: 0;\\n border-right-width: 0;\\n}\\n\\n.skin-tone-button[aria-selected] .skin-tone {\\n transform: scale(.9);\\n}\\n\\n.menu {\\n z-index: 2;\\n white-space: nowrap;\\n border: 1px solid var(--em-color-border);\\n background-color: rgba(var(--em-rgb-background), .9);\\n -webkit-backdrop-filter: blur(4px);\\n backdrop-filter: blur(4px);\\n transition-property: opacity, transform;\\n transition-duration: var(--duration);\\n transition-timing-function: var(--easing);\\n border-radius: 10px;\\n padding: 4px;\\n position: absolute;\\n box-shadow: 1px 1px 5px rgba(0, 0, 0, .05);\\n}\\n\\n.menu.hidden {\\n opacity: 0;\\n}\\n\\n.menu[data-position=\\\"bottom\\\"] {\\n transform-origin: 100% 100%;\\n}\\n\\n.menu[data-position=\\\"bottom\\\"].hidden {\\n transform: scale(.9)rotate(-3deg)translateY(5%);\\n}\\n\\n.menu[data-position=\\\"top\\\"] {\\n transform-origin: 100% 0;\\n}\\n\\n.menu[data-position=\\\"top\\\"].hidden {\\n transform: scale(.9)rotate(3deg)translateY(-5%);\\n}\\n\\n.menu input[type=\\\"radio\\\"] {\\n clip: rect(0 0 0 0);\\n width: 1px;\\n height: 1px;\\n border: 0;\\n margin: 0;\\n padding: 0;\\n position: absolute;\\n overflow: hidden;\\n}\\n\\n.menu input[type=\\\"radio\\\"]:checked + .option {\\n box-shadow: 0 0 0 2px rgb(var(--em-rgb-accent));\\n}\\n\\n.option {\\n width: 100%;\\n border-radius: 6px;\\n padding: 4px 6px;\\n}\\n\\n.option:hover {\\n color: #fff;\\n background-color: rgb(var(--em-rgb-accent));\\n}\\n\\n.skin-tone {\\n width: 16px;\\n height: 16px;\\n border-radius: 100%;\\n display: inline-block;\\n position: relative;\\n overflow: hidden;\\n}\\n\\n.skin-tone:after {\\n content: \\\"\\\";\\n mix-blend-mode: overlay;\\n background: linear-gradient(rgba(255, 255, 255, .2), rgba(0, 0, 0, 0));\\n border: 1px solid rgba(0, 0, 0, .8);\\n border-radius: 100%;\\n position: absolute;\\n top: 0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n box-shadow: inset 0 -2px 3px #000, inset 0 1px 2px #fff;\\n}\\n\\n.skin-tone-1 {\\n background-color: #ffc93a;\\n}\\n\\n.skin-tone-2 {\\n background-color: #ffdab7;\\n}\\n\\n.skin-tone-3 {\\n background-color: #e7b98f;\\n}\\n\\n.skin-tone-4 {\\n background-color: #c88c61;\\n}\\n\\n.skin-tone-5 {\\n background-color: #a46134;\\n}\\n\\n.skin-tone-6 {\\n background-color: #5d4437;\\n}\\n\\n[data-index] {\\n justify-content: space-between;\\n}\\n\\n[data-emoji-set=\\\"twitter\\\"] .skin-tone:after {\\n box-shadow: none;\\n border-color: rgba(0, 0, 0, .5);\\n}\\n\\n[data-emoji-set=\\\"twitter\\\"] .skin-tone-1 {\\n background-color: #fade72;\\n}\\n\\n[data-emoji-set=\\\"twitter\\\"] .skin-tone-2 {\\n background-color: #f3dfd0;\\n}\\n\\n[data-emoji-set=\\\"twitter\\\"] .skin-tone-3 {\\n background-color: #eed3a8;\\n}\\n\\n[data-emoji-set=\\\"twitter\\\"] .skin-tone-4 {\\n background-color: #cfad8d;\\n}\\n\\n[data-emoji-set=\\\"twitter\\\"] .skin-tone-5 {\\n background-color: #a8805d;\\n}\\n\\n[data-emoji-set=\\\"twitter\\\"] .skin-tone-6 {\\n background-color: #765542;\\n}\\n\\n[data-emoji-set=\\\"google\\\"] .skin-tone:after {\\n box-shadow: inset 0 0 2px 2px rgba(0, 0, 0, .4);\\n}\\n\\n[data-emoji-set=\\\"google\\\"] .skin-tone-1 {\\n background-color: #f5c748;\\n}\\n\\n[data-emoji-set=\\\"google\\\"] .skin-tone-2 {\\n background-color: #f1d5aa;\\n}\\n\\n[data-emoji-set=\\\"google\\\"] .skin-tone-3 {\\n background-color: #d4b48d;\\n}\\n\\n[data-emoji-set=\\\"google\\\"] .skin-tone-4 {\\n background-color: #aa876b;\\n}\\n\\n[data-emoji-set=\\\"google\\\"] .skin-tone-5 {\\n background-color: #916544;\\n}\\n\\n[data-emoji-set=\\\"google\\\"] .skin-tone-6 {\\n background-color: #61493f;\\n}\\n\\n[data-emoji-set=\\\"facebook\\\"] .skin-tone:after {\\n border-color: rgba(0, 0, 0, .4);\\n box-shadow: inset 0 -2px 3px #000, inset 0 1px 4px #fff;\\n}\\n\\n[data-emoji-set=\\\"facebook\\\"] .skin-tone-1 {\\n background-color: #f5c748;\\n}\\n\\n[data-emoji-set=\\\"facebook\\\"] .skin-tone-2 {\\n background-color: #f1d5aa;\\n}\\n\\n[data-emoji-set=\\\"facebook\\\"] .skin-tone-3 {\\n background-color: #d4b48d;\\n}\\n\\n[data-emoji-set=\\\"facebook\\\"] .skin-tone-4 {\\n background-color: #aa876b;\\n}\\n\\n[data-emoji-set=\\\"facebook\\\"] .skin-tone-5 {\\n background-color: #916544;\\n}\\n\\n[data-emoji-set=\\\"facebook\\\"] .skin-tone-6 {\\n background-color: #61493f;\\n}\\n\\n\";\n\n\n\n\n\n\n\n\n\n\nexport {$efa000751917694d$export$2e2bcd8739ae039 as Picker, $331b4160623139bf$export$2e2bcd8739ae039 as Emoji, $b22cfd0a55410b4f$export$2e2bcd8739ae039 as FrequentlyUsed, $e6eae5155b87f591$export$bcb25aa587e9cb13 as SafeFlags, $c4d155af13ad4d4b$export$2e2bcd8739ae039 as SearchIndex, $f72b75cf796873c7$export$2e2bcd8739ae039 as Store, $7adb23b0109cc36a$export$2cd8252107eb640b as init, $7adb23b0109cc36a$export$2d0294657ab35f1b as Data, $7adb23b0109cc36a$export$dbe3113d60765c1a as I18n, $693b183b0a78708f$export$5ef5574deca44bc0 as getEmojiDataFromNative};\n//# sourceMappingURL=module.js.map\n","import $dvPge$react, {useRef as $dvPge$useRef, useEffect as $dvPge$useEffect} from \"react\";\nimport {Picker as $dvPge$Picker} from \"emoji-mart\";\n\n\n\nfunction $e5534fc185f7111e$export$2e2bcd8739ae039(props) {\n const ref = (0, $dvPge$useRef)(null);\n const instance = (0, $dvPge$useRef)(null);\n if (instance.current) instance.current.update(props);\n (0, $dvPge$useEffect)(()=>{\n instance.current = new (0, $dvPge$Picker)({\n ...props,\n ref: ref\n });\n return ()=>{\n instance.current = null;\n };\n }, []);\n return /*#__PURE__*/ (0, $dvPge$react).createElement(\"div\", {\n ref: ref\n });\n}\n\n\nexport {$e5534fc185f7111e$export$2e2bcd8739ae039 as default};\n//# sourceMappingURL=module.js.map\n","// vendors\nimport React, { memo, useMemo } from \"react\";\nimport data from \"@emoji-mart/data\";\nimport Picker from \"@emoji-mart/react\";\nimport t from \"prop-types\";\n\n/**\n * @typedef {object} Props\n * @property {'light' | 'dark' | 'auto'} theme\n * @property {function(import(\"../types/types\").EmojiMartItem): void} onSelectEmoji\n * @property {boolean} disableRecent\n * @property {import(\"emoji-mart\").CustomEmoji[]=} customEmojis\n */\n\n/**\n * Emoji Picker Component\n * @param {Props} props\n * @return {React.FC}\n */\nfunction EmojiPicker(props) {\n const { theme, onSelectEmoji, disableRecent, customEmojis } = props;\n\n /** @type {string[]} */\n const categories = useMemo(() => {\n /** @type {string[]} */\n let categoryies = [];\n\n if (!disableRecent) {\n categoryies.push(\"frequent\");\n }\n\n categoryies = [\n ...categoryies,\n \"people\",\n \"nature\",\n \"foods\",\n \"activity\",\n \"places\",\n \"objects\",\n \"symbols\",\n \"flags\"\n ];\n\n return categoryies;\n }, [disableRecent]);\n\n return (\n <Picker\n data={data}\n theme={theme}\n previewPosition=\"none\"\n onEmojiSelect={onSelectEmoji}\n custom={customEmojis}\n categories={categories}\n />\n );\n}\n\nEmojiPicker.propTypes = {\n theme: t.oneOf([\"light\", \"dark\", \"auto\"]),\n onSelectEmoji: t.func,\n disableRecent: t.bool,\n customEmojis: t.array\n};\n\nexport default memo(EmojiPicker);\n","import React from \"react\";\nimport EmojiPicker from \"./emoji-picker\";\n\n/**\n * @typedef {object} Props\n * @property {boolean} showPicker\n * @property {'light' | 'dark' | 'auto'} theme\n * @property {(emoji: import(\"../types/types\").EmojiMartItem) => void} handleSelectEmoji\n * @property {boolean} disableRecent\n * @property {import(\"emoji-mart\").CustomEmoji[]=} customEmojis\n */\n\n/**\n * Emoji Picker Button Component\n * @param {Props} props\n * @return {JSX.Element}\n */\nfunction EmojiPickerContainer({\n showPicker,\n theme,\n handleSelectEmoji,\n disableRecent,\n customEmojis\n}) {\n return (\n <div className=\"react-emoji-picker--container\">\n {showPicker && (\n <div\n className=\"react-emoji-picker--wrapper\"\n onClick={evt => evt.stopPropagation()}\n >\n <div className=\"react-emoji-picker\">\n <EmojiPicker\n theme={theme}\n onSelectEmoji={handleSelectEmoji}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n />\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport default EmojiPickerContainer;\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useState } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport {\n getImageEmoji,\n replaceAllTextEmojis,\n replaceAllTextEmojiToString\n} from \"../utils/emoji-utils\";\n\nimport EmojiPickerButton from \"./emoji-picker-button\";\nimport EmojiPickerContainer from \"./emoji-picker-container\";\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n/**\n * @typedef {import('../types/types').PolluteFn} PolluteFn\n */\n\n/**\n * @typedef {Object} Props\n * @property {'light' | 'dark' | 'auto'} theme\n * @property {boolean} keepOpened\n * @property {boolean} disableRecent\n * @property {import(\"emoji-mart\").CustomEmoji[]=} customEmojis\n * @property {(fn: SanitizeFn) => void} addSanitizeFn\n * @property {(fn: PolluteFn) => void} addPolluteFn\n * @property {(html: string) => void} appendContent\n * @property {HTMLDivElement=} buttonElement\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.FC<Props>} */\nconst EmojiPickerWrapper = props => {\n const {\n theme,\n keepOpened,\n disableRecent,\n customEmojis,\n addSanitizeFn,\n addPolluteFn,\n appendContent,\n buttonElement\n } = props;\n\n const [showPicker, setShowPicker] = useState(false);\n /** @type {[HTMLDivElement | undefined, React.Dispatch<React.SetStateAction<HTMLDivElement | undefined>>]} */\n const [customButton, setCustomButton] = useState();\n\n useEffect(() => {\n addSanitizeFn(replaceAllTextEmojiToString);\n }, [addSanitizeFn]);\n\n useEffect(() => {\n addPolluteFn(replaceAllTextEmojis);\n }, [addPolluteFn]);\n\n useEffect(() => {\n /**\n *\n * @param {MouseEvent} event\n */\n function checkClickOutside(event) {\n /** @type {HTMLElement} */\n // @ts-ignore\n const element = event.target;\n\n if (\n element.classList.contains(\"react-input-emoji--button\") ||\n element.classList.contains(\"react-input-emoji--button--icon\")\n ) {\n return;\n }\n\n setShowPicker(false);\n }\n\n document.addEventListener(\"click\", checkClickOutside);\n\n return () => {\n document.removeEventListener(\"click\", checkClickOutside);\n };\n }, []);\n\n /**\n *\n * @param {React.MouseEvent} event\n */\n function toggleShowPicker(event) {\n event.stopPropagation();\n event.preventDefault();\n\n setShowPicker(currentShowPicker => !currentShowPicker);\n }\n\n // eslint-disable-next-line valid-jsdoc\n /**\n *\n * @param {import(\"../types/types\").EmojiMartItem} emoji\n */\n function handleSelectEmoji(emoji) {\n appendContent(getImageEmoji(emoji));\n\n if (!keepOpened) {\n setShowPicker(currentShowPicker => !currentShowPicker);\n }\n }\n\n useEffect(() => {\n if (buttonElement?.style) {\n buttonElement.style.position = \"relative\";\n setCustomButton(buttonElement);\n }\n }, [buttonElement]);\n\n return customButton ? (\n (ReactDOM.createPortal(\n <>\n <EmojiPickerContainer\n showPicker={showPicker}\n theme={theme}\n handleSelectEmoji={handleSelectEmoji}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n />\n <EmojiPickerButton\n showPicker={showPicker}\n toggleShowPicker={toggleShowPicker}\n buttonElement={customButton}\n />\n </>,\n customButton\n ))\n ) : (\n (<>\n <EmojiPickerContainer\n showPicker={showPicker}\n theme={theme}\n handleSelectEmoji={handleSelectEmoji}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n />\n <EmojiPickerButton\n showPicker={showPicker}\n toggleShowPicker={toggleShowPicker}\n />\n </>)\n );\n};\n\nexport default EmojiPickerWrapper;\n","// @ts-check\n\n/**\n *\n * @return {string | null}\n */\nexport function getTextFromAtToCaret() {\n const range = getRangeFromAtToCaret();\n\n if (!range) return null;\n\n const text = range.text.substring(range.begin, range.end);\n\n return text || null;\n}\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function deleteTextFromAtToCaret() {\n const range = getRangeFromAtToCaret();\n\n if (!range) return;\n\n // @ts-ignore\n range.element.deleteData(range.begin, range.end - range.begin);\n}\n\n/**\n *\n * @return {{begin: number, end: number, text: string, element: Node} | null}\n */\nfunction getRangeFromAtToCaret() {\n const elementWithFocus = getElementWithFocus();\n\n if (!elementWithFocus) {\n return null;\n }\n\n const { element, caretOffset } = elementWithFocus;\n const text = element.textContent;\n const lastAt = text.lastIndexOf(\"@\");\n\n if (\n lastAt === -1 ||\n lastAt >= caretOffset ||\n (lastAt !== 0 && text[lastAt - 1] !== \" \")\n ) {\n return null;\n }\n\n return { begin: lastAt, end: caretOffset, text, element };\n}\n\n/**\n *\n * @return {{element: Node, caretOffset: number}}\n */\nexport function getElementWithFocus() {\n const element = getSelectionStart();\n\n if (element === null) {\n return null;\n }\n\n let caretOffset = 0;\n if (typeof window.getSelection != \"undefined\") {\n const range = window.getSelection().getRangeAt(0);\n const preCaretRange = range.cloneRange();\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(range.endContainer, range.endOffset);\n caretOffset = preCaretRange.toString().length;\n } else if (\n // @ts-ignore\n typeof document.selection != \"undefined\" &&\n // @ts-ignore\n document.selection.type != \"Control\"\n ) {\n // @ts-ignore\n const textRange = document.selection.createRange();\n // @ts-ignore\n const preCaretTextRange = document.body.createTextRange();\n preCaretTextRange.moveToElementText(element);\n preCaretTextRange.setEndPoint(\"EndToEnd\", textRange);\n caretOffset = preCaretTextRange.text.length;\n }\n\n return { element, caretOffset };\n}\n\n/**\n *\n * @return {Node | null}\n */\nfunction getSelectionStart() {\n const node = document.getSelection().anchorNode;\n return node?.nodeType == 3 ? node : null;\n}\n","// @ts-check\nimport { useCallback, useState } from \"react\";\nimport {\n deleteTextFromAtToCaret,\n getElementWithFocus,\n getTextFromAtToCaret\n} from \"../utils/mention-utils\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MentionUser\n */\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * @param {(text: string) => Promise<MentionUser[]>=} searchMention\n * @returns {{mentionSearchText: string | null, mentionUsers: MentionUser[], onKeyUp: (event: React.KeyboardEvent) => void, onFocus: () => void, onSelectUser: () => void, loading: boolean}}\n */\nexport function useMention(searchMention) {\n const [loading, setLoading] = useState(false);\n\n /** @type {[MentionUser[], React.Dispatch<React.SetStateAction<MentionUser[]>>]} */\n const [mentionUsers, setMentionUsers] = useState([]);\n\n /** @type {[string | null, React.Dispatch<React.SetStateAction<string | null>>]} */\n const [mentionSearchText, setMentionSearchText] = useState(null);\n\n const onSelectUser = useCallback(() => {\n deleteTextFromAtToCaret();\n setMentionUsers([]);\n }, []);\n\n /** */\n const checkMentionText = useCallback(async () => {\n const metionText = getTextFromAtToCaret();\n\n setMentionSearchText(metionText);\n\n if (metionText === null) {\n setMentionUsers([]);\n } else {\n setLoading(true);\n const users = await searchMention(metionText);\n setLoading(false);\n setMentionUsers(users);\n }\n }, [searchMention]);\n\n /** @type {(event: React.KeyboardEvent) => void} */\n const onKeyUp = useCallback(\n async event => {\n if (typeof searchMention !== \"function\") return;\n\n if (\n event.key === \"Backspace\" &&\n getElementWithFocus()?.element.parentElement.hasAttribute(\n \"data-mention-id\"\n )\n ) {\n const elementWithFocus = getElementWithFocus();\n elementWithFocus.element.parentElement.remove();\n } else if (\n ![\"ArrowUp\", \"ArrowDown\", \"Esc\", \"Escape\"].includes(event.key)\n ) {\n checkMentionText();\n }\n },\n [checkMentionText, searchMention]\n );\n\n const onFocus = useCallback(() => {\n checkMentionText();\n }, [checkMentionText]);\n\n return {\n mentionSearchText,\n mentionUsers,\n onKeyUp,\n onFocus,\n onSelectUser,\n loading\n };\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, {\n useImperativeHandle,\n useState,\n forwardRef,\n useMemo,\n useEffect\n} from \"react\";\nimport t from \"prop-types\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MentionUser\n */\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n/**\n * @typedef {Object} Props\n * @property {MentionUser[]} users\n * @property {string | null} mentionSearchText\n * @property {(user: MentionUser) => void} onSelect\n * @property {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void} addEventListener\n */\n\n/**\n * @typedef {{prevUser: () => void; nextUser: () => void;}} Ref\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.ForwardRefRenderFunction<Ref, Props>} */\nconst MentionUserList = (\n { users, mentionSearchText, onSelect, addEventListener },\n ref\n) => {\n const [selectedUser, setSelectedUser] = useState(0);\n\n useImperativeHandle(ref, () => ({\n prevUser: () => {\n setSelectedUser(currentSelectedUser => {\n if (currentSelectedUser === 0) {\n return 0;\n }\n\n return currentSelectedUser - 1;\n });\n },\n nextUser: () => {\n setSelectedUser(currentSelectedUser => {\n if (currentSelectedUser === users.length - 1) {\n return users.length - 1;\n }\n\n return currentSelectedUser + 1;\n });\n }\n }));\n\n useEffect(() => {\n setSelectedUser(0);\n }, [users]);\n\n /**\n *\n * @param {string} selectedText\n * @param {string} rest\n * @return {string}\n */\n function getMentionSelectedNameEl(selectedText, rest) {\n return `<span class=\"react-input-emoji--mention--item--name__selected\" data-testid=\"metion-selected-word\">${selectedText}</span>${rest}`;\n }\n\n /** @type {(MentionUser & {nameHtml: string})[]} */\n const usersFiltered = useMemo(() => {\n const searchText = mentionSearchText\n ? mentionSearchText.substring(1).toLocaleLowerCase()\n : \"\";\n return users.map(user => {\n let nameHtml = user.name;\n\n if (mentionSearchText && mentionSearchText.length > 1) {\n if (user.name.toLowerCase().startsWith(searchText)) {\n nameHtml = getMentionSelectedNameEl(\n user.name.substring(0, searchText.length),\n user.name.substring(searchText.length)\n );\n } else {\n const names = user.name.split(\" \");\n\n nameHtml = names\n .map(name => {\n if (name.toLocaleLowerCase().startsWith(searchText)) {\n return getMentionSelectedNameEl(\n name.substring(0, searchText.length),\n name.substring(searchText.length)\n );\n }\n return name;\n })\n .join(\" \");\n }\n }\n\n return {\n ...user,\n nameHtml\n };\n });\n }, [mentionSearchText, users]);\n\n // eslint-disable-next-line valid-jsdoc\n /**\n *\n * @param {MentionUser} user\n * @returns {(event: React.MouseEvent) => void} event\n */\n function handleClick(user) {\n return event => {\n event.stopPropagation();\n event.preventDefault();\n\n onSelect(user);\n };\n }\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"enter\", event => {\n event.stopPropagation();\n event.preventDefault();\n onSelect(usersFiltered[selectedUser]);\n });\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onSelect, selectedUser, usersFiltered]);\n\n return (\n <ul\n className=\"react-input-emoji--mention--list\"\n data-testid=\"mention-user-list\"\n >\n {usersFiltered.map((user, index) => (\n <li key={user.id}>\n <button\n type=\"button\"\n onClick={handleClick(user)}\n className={`react-input-emoji--mention--item${\n selectedUser === index\n ? \" react-input-emoji--mention--item__selected\"\n : \"\"\n }`}\n onMouseOver={() => setSelectedUser(index)}\n >\n <img\n className=\"react-input-emoji--mention--item--img\"\n src={user.image}\n />\n <div\n className=\"react-input-emoji--mention--item--name\"\n dangerouslySetInnerHTML={{ __html: user.nameHtml }}\n />\n </button>\n </li>\n ))}\n </ul>\n );\n};\n\nconst MentionUserListWithRef = forwardRef(MentionUserList);\n\nMentionUserListWithRef.propTypes = {\n users: t.array.isRequired\n};\n\nexport default MentionUserListWithRef;\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useRef, useState } from \"react\";\n\n// hooks\nimport { useMention } from \"../hooks/use-mention\";\n\n// components\nimport MentionUserList from \"./mention-user-list\";\n\n/**\n * @typedef {import('../types/types').MentionUser} MetionUser\n */\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n/**\n * @typedef {import('../types/types').SanitizeFn} SanitizeFn\n */\n\n/**\n * @typedef {Object} Props\n * @property {(text: string) => Promise<MetionUser[]>=} searchMention\n * @property {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void} addEventListener\n * @property {(html: string) => void} appendContent\n * @property {(fn: SanitizeFn) => void} addSanitizeFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {React.FC<Props>} */\nconst MentionWrapper = ({\n searchMention,\n addEventListener,\n appendContent,\n addSanitizeFn\n}) => {\n /** @type {React.MutableRefObject<import('./mention-user-list').Ref | null>} */\n const metionUserListRef = useRef(null);\n const [showUserList, setShowUserList] = useState(false);\n\n const {\n mentionSearchText,\n mentionUsers,\n loading,\n onKeyUp,\n onFocus,\n onSelectUser\n } = useMention(searchMention);\n\n useEffect(() => {\n addSanitizeFn(html => {\n const container = document.createElement(\"div\");\n container.innerHTML = html;\n\n const mentionsEl = Array.prototype.slice.call(\n container.querySelectorAll(\".react-input-emoji--mention--text\")\n );\n\n mentionsEl.forEach(mentionEl => {\n container.innerHTML = container.innerHTML.replace(\n mentionEl.outerHTML,\n `@[${mentionEl.dataset.mentionName}](userId:${mentionEl.dataset.mentionId})`\n );\n });\n\n return container.innerHTML;\n });\n }, [addSanitizeFn]);\n\n useEffect(() => {\n setShowUserList(mentionUsers.length > 0);\n }, [mentionUsers]);\n\n useEffect(() => {\n /** */\n function checkClickOutside() {\n setShowUserList(false);\n }\n\n document.addEventListener(\"click\", checkClickOutside);\n\n return () => {\n document.removeEventListener(\"click\", checkClickOutside);\n };\n }, []);\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"keyUp\", onKeyUp);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onKeyUp]);\n\n useEffect(() => {\n /**\n *\n * @param {React.KeyboardEvent} event\n */\n function handleKeyDown(event) {\n switch (event.key) {\n case \"Esc\": // IE/Edge specific value\n case \"Escape\":\n setShowUserList(false);\n break;\n default:\n break;\n }\n }\n\n const unsubscribe = addEventListener(\"keyDown\", handleKeyDown);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener]);\n\n useEffect(() => {\n const unsubscribe = addEventListener(\"focus\", onFocus);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onFocus]);\n\n useEffect(() => {\n if (showUserList) {\n const unsubscribeArrowUp = addEventListener(\"arrowUp\", event => {\n event.stopPropagation();\n event.preventDefault();\n metionUserListRef.current.prevUser();\n });\n\n const unsubscribeArrowDown = addEventListener(\"arrowDown\", event => {\n event.stopPropagation();\n event.preventDefault();\n metionUserListRef.current.nextUser();\n });\n\n return () => {\n unsubscribeArrowUp();\n unsubscribeArrowDown();\n };\n }\n }, [addEventListener, showUserList]);\n\n /**\n *\n * @param {MetionUser} user\n */\n function handleSelect(user) {\n onSelectUser();\n appendContent(\n `<span class=\"react-input-emoji--mention--text\" data-mention-id=\"${user.id}\" data-mention-name=\"${user.name}\">@${user.name}</span> `\n );\n }\n\n return (\n <>\n {loading ? (\n <div className=\"react-input-emoji--mention--container\">\n <div className=\"react-input-emoji--mention--loading\">\n <div className=\"react-input-emoji--mention--loading--spinner\">\n Loading...\n </div>\n </div>\n </div>\n ) : (\n showUserList && (\n <div\n className=\"react-input-emoji--mention--container\"\n onClick={evt => evt.stopPropagation()}\n >\n <MentionUserList\n ref={metionUserListRef}\n mentionSearchText={mentionSearchText}\n users={mentionUsers}\n onSelect={handleSelect}\n addEventListener={addEventListener}\n />\n </div>\n )\n )}\n </>\n );\n};\n\nexport default MentionWrapper;\n","// @ts-check\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * @template T\n * @returns {import('../types/types').ListenerObj<T>}\n */\nexport function createObserver() {\n /** @type {import('../types/types').Listerner<T>[]} */\n let listeners = [];\n\n return {\n subscribe: listener => {\n listeners.push(listener);\n return () => {\n listeners = listeners.filter(l => l !== listener);\n };\n },\n publish: event => {\n listeners.forEach(listener => listener(event));\n },\n get currentListerners() {\n return listeners;\n }\n };\n}\n","// @ts-check\n\nimport { useCallback, useMemo } from \"react\";\nimport { createObserver } from \"../utils/observer\";\n\n/**\n * @typedef {import('../types/types').TextInputListeners} TextInputListeners\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function useEventListeners() {\n /** @type {TextInputListeners} */\n const listeners = useMemo(\n () => ({\n keyDown: createObserver(),\n keyUp: createObserver(),\n arrowUp: createObserver(),\n arrowDown: createObserver(),\n enter: createObserver(),\n focus: createObserver(),\n blur: createObserver()\n }),\n []\n );\n\n /**\n * @template {keyof TextInputListeners} T, K\n * @type {(event: keyof TextInputListeners, fn: import('../types/types').Listerner<any>) => () => void}\n */\n const addEventListener = useCallback(\n (event, fn) => {\n return listeners[event].subscribe(fn);\n },\n [listeners]\n );\n\n return { addEventListener, listeners };\n}\n","// @ts-check\n\nimport { useCallback, useRef } from \"react\";\n\n/**\n * @typedef {import('../types/types').PolluteFn} PolluteFn\n */\n\n// eslint-disable-next-line valid-jsdoc\n/** */\nexport function usePollute() {\n /** @type {React.MutableRefObject<PolluteFn[]>} */\n const polluteFnsRef = useRef([]);\n\n /** @type {(fn: PolluteFn) => void} */\n const addPolluteFn = useCallback(fn => {\n polluteFnsRef.current.push(fn);\n }, []);\n\n /** @type {(html: string) => string} */\n const pollute = useCallback(text => {\n const result = polluteFnsRef.current.reduce((acc, fn) => {\n return fn(acc);\n }, text);\n\n return result;\n }, []);\n\n return { addPolluteFn, pollute };\n}\n","// @ts-check\n/* eslint-disable react/prop-types */\n// vendors\nimport React, { useEffect, useRef, forwardRef, useCallback } from \"react\";\n\n// css\nimport \"./styles.css\";\n\n// utils\nimport { replaceAllTextEmojis } from \"./utils/emoji-utils\";\nimport { totalCharacters } from \"./utils/input-event-utils\";\n\n// hooks\nimport { useExpose } from \"./hooks/use-expose\";\nimport { useEmit } from \"./hooks/use-emit\";\n\n// components\nimport TextInput from \"./text-input\";\nimport EmojiPickerWrapper from \"./components/emoji-picker-wrapper\";\nimport MentionWrapper from \"./components/mention-wrapper\";\nimport { useEventListeners } from \"./hooks/use-event-listeners\";\nimport { useSanitize } from \"./hooks/use-sanitize\";\nimport { usePollute } from \"./hooks/user-pollute\";\n\n/**\n * @typedef {import('./types/types').MentionUser} MetionUser\n */\n\n/**\n * @typedef {import('./types/types').ListenerObj<any>} ListenerObj\n */\n\n/**\n * @typedef {object} Props\n * @property {string} value\n * @property {(value: string) => void} onChange\n * @property {\"light\" | \"dark\" | \"auto\"} theme\n * @property {boolean} cleanOnEnter\n * @property {(text: string) => void} onEnter\n * @property {string} placeholder\n * @property {(size: {width: number, height: number}) => void} onResize\n * @property {() => void} onClick\n * @property {() => void} onFocus\n * @property {() => void=} onBlur\n * @property {number} maxLength\n * @property {boolean} keepOpened\n * @property {(event: KeyboardEvent) => void} onKeyDown\n * @property {string} inputClass\n * @property {boolean} disableRecent\n * @property {number} tabIndex\n * @property {number} height\n * @property {number} borderRadius\n * @property {string} borderColor\n * @property {number} fontSize\n * @property {string} fontFamily\n * @property {{id: string; name: string; emojis: {id: string; name: string; keywords: string[], skins: {src: string}[]}}[]=} customEmojis\n * @property {(text: string) => Promise<MetionUser[]>=} searchMention\n * @property {HTMLDivElement=} buttonElement\n */\n\n/**\n * Input Emoji Component\n * @param {Props} props\n * @param {React.Ref<any>} ref\n * @return {JSX.Element}\n */\nfunction InputEmoji(props, ref) {\n const {\n onChange,\n onEnter,\n onResize,\n onClick,\n onFocus,\n onBlur,\n onKeyDown,\n theme,\n cleanOnEnter,\n placeholder,\n maxLength,\n keepOpened,\n inputClass,\n disableRecent,\n tabIndex,\n value,\n customEmojis,\n searchMention,\n buttonElement,\n // style\n borderRadius,\n borderColor,\n fontSize,\n fontFamily\n } = props;\n\n /** @type {React.MutableRefObject<import('./text-input').Ref | null>} */\n const textInputRef = useRef(null);\n\n const { addEventListener, listeners } = useEventListeners();\n\n const { addSanitizeFn, sanitize, sanitizedTextRef } = useSanitize();\n\n const { addPolluteFn, pollute } = usePollute();\n\n const updateHTML = useCallback(\n (nextValue = \"\") => {\n if (textInputRef.current === null) return;\n\n textInputRef.current.html = replaceAllTextEmojis(nextValue);\n sanitizedTextRef.current = nextValue;\n },\n [sanitizedTextRef]\n );\n\n const setValue = useCallback(\n value => {\n updateHTML(value);\n },\n [updateHTML]\n );\n\n const emitChange = useEmit(textInputRef, onResize, onChange);\n\n useExpose({\n ref,\n setValue,\n textInputRef,\n emitChange\n });\n\n useEffect(() => {\n if (sanitizedTextRef.current !== value) {\n setValue(value);\n }\n }, [sanitizedTextRef, setValue, value]);\n\n useEffect(() => {\n updateHTML();\n }, [updateHTML]);\n\n useEffect(() => {\n /**\n * Handle keydown event\n * @param {React.KeyboardEvent} event\n * @return {boolean}\n */\n function handleKeydown(event) {\n if (\n typeof maxLength !== \"undefined\" &&\n event.key !== \"Backspace\" &&\n textInputRef.current !== null &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n event.preventDefault();\n }\n\n if (event.key === \"Enter\" && textInputRef.current) {\n event.preventDefault();\n\n const text = sanitize(textInputRef.current.html);\n\n emitChange(sanitizedTextRef.current);\n\n if (\n typeof onEnter === \"function\" &&\n listeners.enter.currentListerners.length === 0\n ) {\n onEnter(text);\n }\n\n if (cleanOnEnter && listeners.enter.currentListerners.length === 0) {\n updateHTML(\"\");\n }\n\n if (typeof onKeyDown === \"function\") {\n onKeyDown(event.nativeEvent);\n }\n\n return false;\n }\n\n if (typeof onKeyDown === \"function\") {\n onKeyDown(event.nativeEvent);\n }\n\n return true;\n }\n\n const unsubscribe = addEventListener(\"keyDown\", handleKeydown);\n\n return () => {\n unsubscribe();\n };\n }, [\n addEventListener,\n cleanOnEnter,\n emitChange,\n listeners.enter.currentListerners.length,\n maxLength,\n onEnter,\n onKeyDown,\n sanitize,\n sanitizedTextRef,\n updateHTML\n ]);\n\n useEffect(() => {\n /** */\n function handleFocus() {\n if (typeof onClick === \"function\") {\n onClick();\n }\n\n if (typeof onFocus === \"function\") {\n onFocus();\n }\n }\n\n const unsubscribe = addEventListener(\"focus\", handleFocus);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onClick, onFocus]);\n\n useEffect(() => {\n /** */\n function handleBlur() {\n if (typeof onBlur === \"function\") {\n onBlur();\n }\n }\n\n const unsubscribe = addEventListener(\"blur\", handleBlur);\n\n return () => {\n unsubscribe();\n };\n }, [addEventListener, onBlur]);\n\n /**\n *\n * @param {string} html\n */\n function handleTextInputChange(html) {\n sanitize(html);\n emitChange(sanitizedTextRef.current);\n }\n\n /**\n *\n * @param {string} html\n */\n function appendContent(html) {\n if (\n typeof maxLength !== \"undefined\" &&\n textInputRef.current !== null &&\n totalCharacters(textInputRef.current) >= maxLength\n ) {\n return;\n }\n\n if (textInputRef.current !== null) {\n textInputRef.current.appendContent(html);\n }\n }\n\n /**\n * Handle copy of current selected text\n * @param {React.ClipboardEvent} event\n */\n function handleCopy(event) {\n event.clipboardData.setData(\"text\", sanitizedTextRef.current);\n event.preventDefault();\n }\n\n /**\n * Handle past on input\n * @param {React.ClipboardEvent} event\n */\n function handlePaste(event) {\n event.preventDefault();\n let content;\n if (event.clipboardData) {\n content = event.clipboardData.getData(\"text/plain\");\n content = pollute(content);\n document.execCommand(\"insertHTML\", false, content);\n }\n }\n\n return (\n <div className=\"react-emoji\">\n <MentionWrapper\n searchMention={searchMention}\n addEventListener={addEventListener}\n appendContent={appendContent}\n addSanitizeFn={addSanitizeFn}\n />\n <TextInput\n ref={textInputRef}\n onCopy={handleCopy}\n onPaste={handlePaste}\n onBlur={listeners.blur.publish}\n onFocus={listeners.focus.publish}\n onArrowUp={listeners.arrowUp.publish}\n onArrowDown={listeners.arrowDown.publish}\n onKeyUp={listeners.keyUp.publish}\n onKeyDown={listeners.keyDown.publish}\n onEnter={listeners.enter.publish}\n placeholder={placeholder}\n style={{\n borderRadius,\n borderColor,\n fontSize,\n fontFamily\n }}\n tabIndex={tabIndex}\n className={inputClass}\n onChange={handleTextInputChange}\n />\n <EmojiPickerWrapper\n theme={theme}\n keepOpened={keepOpened}\n disableRecent={disableRecent}\n customEmojis={customEmojis}\n addSanitizeFn={addSanitizeFn}\n addPolluteFn={addPolluteFn}\n appendContent={appendContent}\n buttonElement={buttonElement}\n />\n </div>\n );\n}\n\nconst InputEmojiWithRef = forwardRef(InputEmoji);\n\nInputEmojiWithRef.defaultProps = {\n theme: /** @type {const} */ (\"auto\"),\n height: 30,\n placeholder: \"Type a message\",\n borderRadius: 21,\n borderColor: \"#EAEAEA\",\n fontSize: 15,\n fontFamily: \"sans-serif\",\n tabIndex: 0,\n customEmojis: []\n};\n\nexport default InputEmojiWithRef;\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","replaceAllTextEmojis","text","allEmojis","getAllEmojisFromText","Set","forEach","emoji","replaceAll","getInputEmojiHTML","str","find","replace","RegExp","match","getImageEmoji","native","replaceAllTextEmojiToString","html","container","innerHTML","images","Array","prototype","slice","call","querySelectorAll","image","outerHTML","dataset","handlePasteHtmlAtCaret","sel","range","window","getSelection","getRangeAt","rangeCount","deleteContents","el","frag","createDocumentFragment","node","lastNode","insertNode","cloneRange","setStartAfter","collapse","removeAllRanges","addRange","totalCharacters","textCount","length","emojisCount","useSanitize","sanitizeFnsRef","useRef","sanitizedTextRef","addSanitizeFn","useCallback","fn","current","push","sanitize","result","reduce","acc","replaceAllHtmlToString","innerText","useExpose","textInputRef","setValue","emitChange","useImperativeHandle","value","focus","blur","useEmit","onResize","onChange","currentSizeRef","onChangeFn","checkAndEmitResize","currentSize","nextSize","size","width","height","sanitizedText","useEffect","TextInput","placeholder","tabIndex","className","props","appendContent","placeholderRef","trim","visibility","offsetWidth","offsetHeight","handleKeyDown","event","key","onEnter","onArrowUp","onArrowDown","onKeyDown","handleClick","onFocus","handleKeyUp","onKeyUp","input","React","onBlur","onCopy","onPaste","TextInputWithRef","forwardRef","EmojiPickerButton","showPicker","toggleShowPicker","buttonElement","buttonRef","showCustomButtonContent","setShowCustomButtonContent","useState","childNodes","obj","Object","defineProperty","enumerable","configurable","writable","$dvPge$useRef","instance","update","$dvPge$useEffect","EmojiPicker","theme","onSelectEmoji","disableRecent","customEmojis","categories","useMemo","categoryies","Picker","data","propTypes","t","oneOf","func","bool","array","memo","EmojiPickerContainer","handleSelectEmoji","evt","stopPropagation","EmojiPickerWrapper","keepOpened","addPolluteFn","setShowPicker","customButton","setCustomButton","checkClickOutside","element","target","classList","contains","addEventListener","removeEventListener","preventDefault","currentShowPicker","position","ReactDOM","createPortal","getTextFromAtToCaret","getRangeFromAtToCaret","substring","begin","end","deleteTextFromAtToCaret","deleteData","elementWithFocus","getElementWithFocus","caretOffset","textContent","lastAt","lastIndexOf","getSelectionStart","preCaretRange","selectNodeContents","setEnd","endContainer","endOffset","toString","selection","textRange","createRange","preCaretTextRange","body","createTextRange","moveToElementText","setEndPoint","anchorNode","nodeType","useMention","searchMention","loading","setLoading","mentionUsers","setMentionUsers","mentionSearchText","setMentionSearchText","onSelectUser","checkMentionText","metionText","users","parentElement","hasAttribute","remove","includes","MentionUserList","onSelect","selectedUser","setSelectedUser","prevUser","currentSelectedUser","nextUser","getMentionSelectedNameEl","selectedText","rest","usersFiltered","searchText","toLocaleLowerCase","map","user","nameHtml","name","toLowerCase","startsWith","names","split","join","unsubscribe","index","id","__html","MentionUserListWithRef","isRequired","MentionWrapper","metionUserListRef","showUserList","setShowUserList","mentionsEl","mentionEl","mentionName","mentionId","unsubscribeArrowUp","unsubscribeArrowDown","handleSelect","createObserver","listeners","subscribe","listener","filter","l","publish","currentListerners","useEventListeners","keyDown","keyUp","arrowUp","arrowDown","enter","usePollute","polluteFnsRef","pollute","InputEmoji","onClick","cleanOnEnter","maxLength","inputClass","borderRadius","borderColor","fontSize","fontFamily","updateHTML","nextValue","handleKeydown","nativeEvent","handleFocus","handleBlur","handleTextInputChange","handleCopy","clipboardData","setData","handlePaste","content","getData","execCommand","InputEmojiWithRef","defaultProps"],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpDc,SAAA,wCAAA,CAAyBe,GAAzB,EAA8BzB,GAA9B,EAAmC7B,KAAnC,EAA0C;EACvD,IAAI6B,GAAG,IAAIyB,GAAX,EACEC,MAAM,CAACC,cAAP,CAAsBF,GAAtB,EAA2BzB,GAA3B,EAAgC;AAC9B7B,IAAAA,KAAK,EAAEA,KADuB;AAE9ByD,IAAAA,UAAU,EAAE,IAFkB;AAG9BC,IAAAA,YAAY,EAAE,IAHgB;AAI9BC,IAAAA,QAAQ,EAAE,IAAA;AAJoB,GAAhC,EADF,KAQEL,GAAG,CAACzB,GAAD,CAAH,GAAW7B,KAAX,CAAA;AAGF,EAAA,OAAOsD,GAAP,CAAA;AACD,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
|