diff --git a/.eslintignore.errorfiles b/.eslintignore.errorfiles
index ffe0ade5cc..3636a5e563 100644
--- a/.eslintignore.errorfiles
+++ b/.eslintignore.errorfiles
@@ -4,7 +4,6 @@ src/component-index.js
src/components/structures/BottomLeftMenu.js
src/components/structures/CreateRoom.js
src/components/structures/MessagePanel.js
-src/components/structures/NotificationPanel.js
src/components/structures/RoomDirectory.js
src/components/structures/RoomStatusBar.js
src/components/structures/RoomView.js
diff --git a/package.json b/package.json
index 9c55ff43c8..ac08372843 100644
--- a/package.json
+++ b/package.json
@@ -65,7 +65,8 @@
"classnames": "^2.1.2",
"commonmark": "^0.28.1",
"counterpart": "^0.18.0",
- "emojione": "2.2.7",
+ "emojibase-data": "^4.0.0",
+ "emojibase-regex": "^3.0.0",
"file-saver": "^1.3.3",
"filesize": "3.5.6",
"flux": "2.1.1",
diff --git a/res/css/_common.scss b/res/css/_common.scss
index d46f38bddb..973103899d 100644
--- a/res/css/_common.scss
+++ b/res/css/_common.scss
@@ -32,6 +32,11 @@ body {
margin: 0px;
}
+pre, code {
+ font-family: $monospace-font-family;
+ font-size: 100% !important;
+}
+
.error, .warning {
color: $warning-color;
}
@@ -110,6 +115,14 @@ textarea {
color: $primary-fg-color;
}
+// This is used to hide the standard outline added by browsers for
+// accessible (focusable) components. Not intended for buttons, but
+// should be used on things like focusable containers where the outline
+// is usually not helping anyone.
+.mx_HiddenFocusable {
+ outline: none;
+}
+
// .mx_textinput is a container for a text input
// + some other controls like buttons, ...
// it has the appearance of a text box so the controls
@@ -445,15 +458,6 @@ textarea {
background-color: $primary-bg-color;
}
-.mx_emojione {
- height: 1em;
- vertical-align: middle;
-}
-
-.mx_emojione_selected {
- background-color: $accent-color;
-}
-
::-moz-selection {
background-color: $accent-color;
color: $selection-fg-color;
diff --git a/res/css/views/elements/_MessageEditor.scss b/res/css/views/elements/_MessageEditor.scss
index cc5649a224..e721b267fa 100644
--- a/res/css/views/elements/_MessageEditor.scss
+++ b/res/css/views/elements/_MessageEditor.scss
@@ -21,6 +21,7 @@ limitations under the License.
// padding around and in the editor.
// Actual values from fiddling around in inspector
margin: -7px -10px -5px -10px;
+ overflow: visible !important; // override mx_EventTile_content
.mx_MessageEditor_editor {
border-radius: 4px;
@@ -33,20 +34,28 @@ limitations under the License.
max-height: 200px;
overflow-x: auto;
- span {
- display: inline-block;
- padding: 0 5px;
- border-radius: 4px;
- color: white;
- }
+ span.mx_UserPill, span.mx_RoomPill {
+ padding-left: 21px;
+ position: relative;
- span.user-pill, span.room-pill {
- border-radius: 16px;
- display: inline-block;
- color: $primary-fg-color;
- background-color: $other-user-pill-bg-color;
- padding-left: 5px;
- padding-right: 5px;
+ // avatar psuedo element
+ &::before {
+ position: absolute;
+ left: 2px;
+ top: 2px;
+ content: var(--avatar-letter);
+ width: 16px;
+ height: 16px;
+ background: var(--avatar-background), $avatar-bg-color;
+ color: $avatar-initial-color;
+ background-repeat: no-repeat;
+ background-size: 16px;
+ border-radius: 8px;
+ text-align: center;
+ font-weight: normal;
+ line-height: 16px;
+ font-size: 10.4px;
+ }
}
}
@@ -61,7 +70,7 @@ limitations under the License.
z-index: 100;
right: 0;
margin: 0 -110px 0 0;
- padding-right: 104px;
+ padding-right: 147px;
.mx_AccessibleButton {
margin-left: 5px;
@@ -77,5 +86,5 @@ limitations under the License.
.mx_EventTile_last .mx_MessageEditor_buttons {
position: static;
- margin-right: -103px;
+ margin-right: -147px;
}
diff --git a/res/css/views/rooms/_EventTile.scss b/res/css/views/rooms/_EventTile.scss
index 4442ccd1e4..72881231f8 100644
--- a/res/css/views/rooms/_EventTile.scss
+++ b/res/css/views/rooms/_EventTile.scss
@@ -40,7 +40,12 @@ limitations under the License.
}
.mx_EventTile_continuation {
- padding-top: 0px ! important;
+ padding-top: 0px !important;
+
+ &.mx_EventTile_isEditing {
+ padding-top: 5px !important;
+ margin-top: -5px;
+ }
}
.mx_EventTile_isEditing {
@@ -116,7 +121,7 @@ limitations under the License.
/* HACK to override line-height which is already marked important elsewhere */
.mx_EventTile_bigEmoji.mx_EventTile_bigEmoji {
font-size: 48px ! important;
- line-height: 48px ! important;
+ line-height: 52px ! important;
}
/* this is used for the tile for the event which is selected via the URL.
@@ -157,8 +162,7 @@ limitations under the License.
}
.mx_EventTile_sending .mx_UserPill,
-.mx_EventTile_sending .mx_RoomPill,
-.mx_EventTile_sending .mx_emojione {
+.mx_EventTile_sending .mx_RoomPill {
opacity: 0.5;
}
@@ -420,6 +424,7 @@ limitations under the License.
.mx_EventTile_content .markdown-body {
pre, code {
+ font-family: $monospace-font-family ! important;
// deliberate constants as we're behind an invert filter
color: #333;
}
diff --git a/res/fonts/Fira_Mono/FiraMono-Bold.ttf b/res/fonts/Fira_Mono/FiraMono-Bold.ttf
deleted file mode 100755
index 4b8b1cfbcb..0000000000
Binary files a/res/fonts/Fira_Mono/FiraMono-Bold.ttf and /dev/null differ
diff --git a/res/fonts/Fira_Mono/FiraMono-Regular.ttf b/res/fonts/Fira_Mono/FiraMono-Regular.ttf
deleted file mode 100755
index 5238c09eda..0000000000
Binary files a/res/fonts/Fira_Mono/FiraMono-Regular.ttf and /dev/null differ
diff --git a/res/fonts/Fira_Mono/OFL.txt b/res/fonts/Fira_Mono/OFL.txt
deleted file mode 100755
index ba853c049e..0000000000
--- a/res/fonts/Fira_Mono/OFL.txt
+++ /dev/null
@@ -1,92 +0,0 @@
-Copyright (c) 2012-2013, The Mozilla Corporation and Telefonica S.A.
-This Font Software is licensed under the SIL Open Font License, Version 1.1.
-This license is copied below, and is also available with a FAQ at:
-http://scripts.sil.org/OFL
-
-
------------------------------------------------------------
-SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
------------------------------------------------------------
-
-PREAMBLE
-The goals of the Open Font License (OFL) are to stimulate worldwide
-development of collaborative font projects, to support the font creation
-efforts of academic and linguistic communities, and to provide a free and
-open framework in which fonts may be shared and improved in partnership
-with others.
-
-The OFL allows the licensed fonts to be used, studied, modified and
-redistributed freely as long as they are not sold by themselves. The
-fonts, including any derivative works, can be bundled, embedded,
-redistributed and/or sold with any software provided that any reserved
-names are not used by derivative works. The fonts and derivatives,
-however, cannot be released under any other type of license. The
-requirement for fonts to remain under this license does not apply
-to any document created using the fonts or their derivatives.
-
-DEFINITIONS
-"Font Software" refers to the set of files released by the Copyright
-Holder(s) under this license and clearly marked as such. This may
-include source files, build scripts and documentation.
-
-"Reserved Font Name" refers to any names specified as such after the
-copyright statement(s).
-
-"Original Version" refers to the collection of Font Software components as
-distributed by the Copyright Holder(s).
-
-"Modified Version" refers to any derivative made by adding to, deleting,
-or substituting -- in part or in whole -- any of the components of the
-Original Version, by changing formats or by porting the Font Software to a
-new environment.
-
-"Author" refers to any designer, engineer, programmer, technical
-writer or other person who contributed to the Font Software.
-
-PERMISSION & CONDITIONS
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of the Font Software, to use, study, copy, merge, embed, modify,
-redistribute, and sell modified and unmodified copies of the Font
-Software, subject to the following conditions:
-
-1) Neither the Font Software nor any of its individual components,
-in Original or Modified Versions, may be sold by itself.
-
-2) Original or Modified Versions of the Font Software may be bundled,
-redistributed and/or sold with any software, provided that each copy
-contains the above copyright notice and this license. These can be
-included either as stand-alone text files, human-readable headers or
-in the appropriate machine-readable metadata fields within text or
-binary files as long as those fields can be easily viewed by the user.
-
-3) No Modified Version of the Font Software may use the Reserved Font
-Name(s) unless explicit written permission is granted by the corresponding
-Copyright Holder. This restriction only applies to the primary font name as
-presented to the users.
-
-4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
-Software shall not be used to promote, endorse or advertise any
-Modified Version, except to acknowledge the contribution(s) of the
-Copyright Holder(s) and the Author(s) or with their explicit written
-permission.
-
-5) The Font Software, modified or unmodified, in part or in whole,
-must be distributed entirely under this license, and must not be
-distributed under any other license. The requirement for fonts to
-remain under this license does not apply to any document created
-using the Font Software.
-
-TERMINATION
-This license becomes null and void if any of the above conditions are
-not met.
-
-DISCLAIMER
-THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
-OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
-COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
-DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
-OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/res/fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlX5qhExfHwNJU.woff2 b/res/fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlX5qhExfHwNJU.woff2
new file mode 100644
index 0000000000..880f06af78
Binary files /dev/null and b/res/fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlX5qhExfHwNJU.woff2 differ
diff --git a/res/fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlZ5qhExfHw.woff2 b/res/fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlZ5qhExfHw.woff2
new file mode 100644
index 0000000000..9fe96559d1
Binary files /dev/null and b/res/fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlZ5qhExfHw.woff2 differ
diff --git a/res/fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71n5_zaDpwm80E.woff2 b/res/fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71n5_zaDpwm80E.woff2
new file mode 100644
index 0000000000..cd79590d99
Binary files /dev/null and b/res/fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71n5_zaDpwm80E.woff2 differ
diff --git a/res/fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71p5_zaDpwm.woff2 b/res/fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71p5_zaDpwm.woff2
new file mode 100644
index 0000000000..cf26d38db4
Binary files /dev/null and b/res/fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71p5_zaDpwm.woff2 differ
diff --git a/res/fonts/Twemoji_Mozilla/TwemojiMozilla-colr.woff2 b/res/fonts/Twemoji_Mozilla/TwemojiMozilla-colr.woff2
new file mode 100644
index 0000000000..70f9b03c4d
Binary files /dev/null and b/res/fonts/Twemoji_Mozilla/TwemojiMozilla-colr.woff2 differ
diff --git a/res/themes/light/css/_fonts.scss b/res/themes/light/css/_fonts.scss
index ac15847e44..1bc9b5a4a3 100644
--- a/res/themes/light/css/_fonts.scss
+++ b/res/themes/light/css/_fonts.scss
@@ -15,39 +15,70 @@
/* the 'src' links are relative to the bundle.css, which is in a subdirectory.
*/
@font-face {
- font-family: 'Nunito';
- font-style: normal;
- font-weight: 400;
- src: url('$(res)/fonts/Nunito/Nunito-Regular.ttf') format('truetype');
-}
-@font-face {
- font-family: 'Nunito';
- font-style: normal;
- font-weight: 600;
- src: url('$(res)/fonts/Nunito/Nunito-SemiBold.ttf') format('truetype');
-}
-@font-face {
- font-family: 'Nunito';
- font-style: normal;
- font-weight: 700;
- src: url('$(res)/fonts/Nunito/Nunito-Bold.ttf') format('truetype');
-}
-
-/*
- * Fira Mono
- * Used for monospace copy, i.e. code
- */
-
-@font-face {
- font-family: 'Fira Mono';
- src: url('$(res)/fonts/Fira_Mono/FiraMono-Regular.ttf') format('truetype');
+ font-family: 'Nunito';
+ font-style: normal;
font-weight: 400;
+ src: url('$(res)/fonts/Nunito/Nunito-Regular.ttf') format('truetype');
+}
+@font-face {
+ font-family: 'Nunito';
font-style: normal;
+ font-weight: 600;
+ src: url('$(res)/fonts/Nunito/Nunito-SemiBold.ttf') format('truetype');
+}
+@font-face {
+ font-family: 'Nunito';
+ font-style: normal;
+ font-weight: 700;
+ src: url('$(res)/fonts/Nunito/Nunito-Bold.ttf') format('truetype');
}
+/* latin-ext */
@font-face {
- font-family: 'Fira Mono';
- src: url('$(res)/fonts/Fira_Mono/FiraMono-Bold.ttf') format('truetype');
- font-weight: 700;
+ font-family: 'Inconsolata';
font-style: normal;
+ font-weight: 400;
+ src: local('Inconsolata Regular'), local('Inconsolata-Regular'), url('$(res)/fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlX5qhExfHwNJU.woff2') format('woff2');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
+/* latin */
+@font-face {
+ font-family: 'Inconsolata';
+ font-style: normal;
+ font-weight: 400;
+ font-display: swap;
+ src: local('Inconsolata Regular'), local('Inconsolata-Regular'), url('$(res)/fonts/Inconsolata/QldKNThLqRwH-OJ1UHjlKGlZ5qhExfHw.woff2') format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+/* latin-ext */
+@font-face {
+ font-family: 'Inconsolata';
+ font-style: normal;
+ font-weight: 700;
+ font-display: swap;
+ src: local('Inconsolata Bold'), local('Inconsolata-Bold'), url('$(res)/fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71n5_zaDpwm80E.woff2') format('woff2');
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: 'Inconsolata';
+ font-style: normal;
+ font-weight: 700;
+ font-display: swap;
+ src: local('Inconsolata Bold'), local('Inconsolata-Bold'), url('$(res)/fonts/Inconsolata/QldXNThLqRwH-OJ1UHjlKGHiw71p5_zaDpwm.woff2') format('woff2');
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+
+/* a COLR/CPAL version of Twemoji used for consistent cross-browser emoji
+ * taken from https://github.com/mozilla/twemoji-colr
+ * using the fix from https://github.com/mozilla/twemoji-colr/issues/50 to
+ * work on macOS
+ */
+/*
+// except we now load it dynamically via FontManager to handle browsers
+// which can't render COLR/CPAL still
+@font-face {
+ font-family: "Twemoji Mozilla";
+ src: url('$(res)/fonts/Twemoji_Mozilla/TwemojiMozilla.woff2') format('woff2');
+}
+*/
\ No newline at end of file
diff --git a/res/themes/light/css/_light.scss b/res/themes/light/css/_light.scss
index d11dfebda3..712d905b43 100644
--- a/res/themes/light/css/_light.scss
+++ b/res/themes/light/css/_light.scss
@@ -1,10 +1,13 @@
// XXX: check this?
/* Nunito lacks combining diacritics, so these will fall through
to the next font. Helevetica's diacritics however do not combine
- nicely with Open Sans (on OSX, at least) and result in a huge
- horizontal mess. Arial empirically gets it right, hence prioritising
- Arial here. */
-$font-family: 'Nunito', Arial, Helvetica, Sans-Serif;
+ nicely (on OSX, at least) and result in a huge horizontal mess.
+ Arial empirically gets it right, hence prioritising Arial here. */
+/* We fall through to Twemoji for emoji rather than falling through
+ to native Emoji fonts (if any) to ensure cross-browser consistency */
+$font-family: Nunito, Twemoji, 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji', Arial, Helvetica, Sans-Serif;
+
+$monospace-font-family: Inconsolata, Twemoji, 'Apple Color Emoji', 'Segoe UI Emoji', 'Noto Color Emoji', Courier, monospace;
// unified palette
// try to use these colors when possible
diff --git a/scripts/emoji-data-strip.js b/scripts/emoji-data-strip.js
index 42bf2ac2de..1c3738cab1 100644
--- a/scripts/emoji-data-strip.js
+++ b/scripts/emoji-data-strip.js
@@ -1,28 +1,29 @@
#!/usr/bin/env node
-const EMOJI_DATA = require('emojione/emoji.json');
-const EMOJI_SUPPORTED = Object.keys(require('emojione').emojioneList);
+
+// This generates src/stripped-emoji.json as used by the EmojiProvider autocomplete
+// provider.
+
+const EMOJIBASE = require('emojibase-data/en/compact.json');
+
const fs = require('fs');
-const output = Object.keys(EMOJI_DATA).map(
- (key) => {
- const datum = EMOJI_DATA[key];
+const output = EMOJIBASE.map(
+ (datum) => {
const newDatum = {
- name: datum.name,
- shortname: datum.shortname,
- category: datum.category,
- emoji_order: datum.emoji_order,
+ name: datum.annotation,
+ shortname: `:${datum.shortcodes[0]}:`,
+ category: datum.group,
+ emoji_order: datum.order,
};
- if (datum.aliases.length > 0) {
- newDatum.aliases = datum.aliases;
+ if (datum.shortcodes.length > 1) {
+ newDatum.aliases = datum.shortcodes.slice(1).map(s => `:${s}:`);
}
- if (datum.aliases_ascii.length > 0) {
- newDatum.aliases_ascii = datum.aliases_ascii;
+ if (datum.emoticon) {
+ newDatum.aliases_ascii = [ datum.emoticon ];
}
return newDatum;
}
-).filter((datum) => {
- return EMOJI_SUPPORTED.includes(datum.shortname);
-});
+);
// Write to a file in src. Changes should be checked into git. This file is copied by
// babel using --copy-files
diff --git a/src/Avatar.js b/src/Avatar.js
index 99b558fa93..2e15874b4e 100644
--- a/src/Avatar.js
+++ b/src/Avatar.js
@@ -17,6 +17,7 @@ limitations under the License.
'use strict';
import {ContentRepo} from 'matrix-js-sdk';
import MatrixClientPeg from './MatrixClientPeg';
+import DMRoomMap from './utils/DMRoomMap';
module.exports = {
avatarUrlForMember: function(member, width, height, resizeMethod) {
@@ -58,4 +59,71 @@ module.exports = {
}
return require('../res/img/' + images[total % images.length] + '.png');
},
+
+ /**
+ * returns the first (non-sigil) character of 'name',
+ * converted to uppercase
+ * @param {string} name
+ * @return {string} the first letter
+ */
+ getInitialLetter(name) {
+ if (name.length < 1) {
+ return undefined;
+ }
+
+ let idx = 0;
+ const initial = name[0];
+ if ((initial === '@' || initial === '#' || initial === '+') && name[1]) {
+ idx++;
+ }
+
+ // string.codePointAt(0) would do this, but that isn't supported by
+ // some browsers (notably PhantomJS).
+ let chars = 1;
+ const first = name.charCodeAt(idx);
+
+ // check if it’s the start of a surrogate pair
+ if (first >= 0xD800 && first <= 0xDBFF && name[idx+1]) {
+ const second = name.charCodeAt(idx+1);
+ if (second >= 0xDC00 && second <= 0xDFFF) {
+ chars++;
+ }
+ }
+
+ const firstChar = name.substring(idx, idx+chars);
+ return firstChar.toUpperCase();
+ },
+
+ avatarUrlForRoom(room, width, height, resizeMethod) {
+ const explicitRoomAvatar = room.getAvatarUrl(
+ MatrixClientPeg.get().getHomeserverUrl(),
+ width,
+ height,
+ resizeMethod,
+ false,
+ );
+ if (explicitRoomAvatar) {
+ return explicitRoomAvatar;
+ }
+
+ let otherMember = null;
+ const otherUserId = DMRoomMap.shared().getUserIdForRoomId(room.roomId);
+ if (otherUserId) {
+ otherMember = room.getMember(otherUserId);
+ } else {
+ // if the room is not marked as a 1:1, but only has max 2 members
+ // then still try to show any avatar (pref. other member)
+ otherMember = room.getAvatarFallbackMember();
+ }
+ if (otherMember) {
+ return otherMember.getAvatarUrl(
+ MatrixClientPeg.get().getHomeserverUrl(),
+ width,
+ height,
+ resizeMethod,
+ false,
+ );
+ }
+ return null;
+ },
};
diff --git a/src/HtmlUtils.js b/src/HtmlUtils.js
index 97f547ceb4..d06c31682d 100644
--- a/src/HtmlUtils.js
+++ b/src/HtmlUtils.js
@@ -27,22 +27,18 @@ import linkifyMatrix from './linkify-matrix';
import _linkifyElement from 'linkifyjs/element';
import _linkifyString from 'linkifyjs/string';
import escape from 'lodash/escape';
-import emojione from 'emojione';
import classNames from 'classnames';
import MatrixClientPeg from './MatrixClientPeg';
import url from 'url';
-linkifyMatrix(linkify);
+import EMOJIBASE from 'emojibase-data/en/compact.json';
+import EMOJIBASE_REGEX from 'emojibase-regex';
-emojione.imagePathSVG = 'emojione/svg/';
-// Store PNG path for displaying many flags at once (for increased performance over SVG)
-emojione.imagePathPNG = 'emojione/png/';
-// Use SVGs for emojis
-emojione.imageType = 'svg';
+linkifyMatrix(linkify);
// Anything outside the basic multilingual plane will be a surrogate pair
const SURROGATE_PAIR_PATTERN = /([\ud800-\udbff])([\udc00-\udfff])/;
-// And there a bunch more symbol characters that emojione has within the
+// And there a bunch more symbol characters that emojibase has within the
// BMP, so this includes the ranges from 'letterlike symbols' to
// 'miscellaneous symbols and arrows' which should catch all of them
// (with plenty of false positives, but that's OK)
@@ -54,15 +50,15 @@ const ZWJ_REGEX = new RegExp("\u200D|\u2003", "g");
// Regex pattern for whitespace characters
const WHITESPACE_REGEX = new RegExp("\\s", "g");
-// And this is emojione's complete regex
-const EMOJI_REGEX = new RegExp(emojione.unicodeRegexp+"+", "gi");
+const BIGEMOJI_REGEX = new RegExp(`^(${EMOJIBASE_REGEX.source})+$`, 'i');
+
const COLOR_REGEX = /^#[0-9a-fA-F]{6}$/;
const PERMITTED_URL_SCHEMES = ['http', 'https', 'ftp', 'mailto', 'magnet'];
/*
* Return true if the given string contains emoji
- * Uses a much, much simpler regex than emojione's so will give false
+ * Uses a much, much simpler regex than emojibase's so will give false
* positives, but useful for fast-path testing strings to see if they
* need emojification.
* unicodeToImage uses this function.
@@ -71,73 +67,27 @@ export function containsEmoji(str) {
return SURROGATE_PAIR_PATTERN.test(str) || SYMBOL_PATTERN.test(str);
}
-/* modified from https://github.com/Ranks/emojione/blob/master/lib/js/emojione.js
- * because we want to include emoji shortnames in title text
- */
-function unicodeToImage(str, addAlt) {
- if (addAlt === undefined) addAlt = true;
-
- let replaceWith; let unicode; let short; let fname;
- const mappedUnicode = emojione.mapUnicodeToShort();
-
- str = str.replace(emojione.regUnicode, function(unicodeChar) {
- if ( (typeof unicodeChar === 'undefined') || (unicodeChar === '') || (!(unicodeChar in emojione.jsEscapeMap)) ) {
- // if the unicodeChar doesnt exist just return the entire match
- return unicodeChar;
- } else {
- // get the unicode codepoint from the actual char
- unicode = emojione.jsEscapeMap[unicodeChar];
-
- short = mappedUnicode[unicode];
- fname = emojione.emojioneList[short].fname;
-
- // depending on the settings, we'll either add the native unicode as the alt tag, otherwise the shortname
- const title = mappedUnicode[unicode];
-
- if (addAlt) {
- const alt = (emojione.unicodeAlt) ? emojione.convert(unicode.toUpperCase()) : mappedUnicode[unicode];
- replaceWith = ``;
- } else {
- replaceWith = ``;
- }
- return replaceWith;
- }
- });
-
- return str;
-}
-
/**
* Returns the shortcode for an emoji character.
*
* @param {String} char The emoji character
* @return {String} The shortcode (such as :thumbup:)
*/
-export function unicodeToShort(char) {
- const unicode = emojione.jsEscapeMap[char];
- return emojione.mapUnicodeToShort()[unicode];
+export function unicodeToShortcode(char) {
+ const data = EMOJIBASE.find(e => e.unicode === char);
+ return (data && data.shortcodes ? `:${data.shortcodes[0]}:` : '');
}
/**
- * Given one or more unicode characters (represented by unicode
- * character number), return an image node with the corresponding
- * emoji.
+ * Returns the unicode character for an emoji shortcode
*
- * @param alt {string} String to use for the image alt text
- * @param useSvg {boolean} Whether to use SVG image src. If False, PNG will be used.
- * @param unicode {integer} One or more integers representing unicode characters
- * @returns A img node with the corresponding emoji
+ * @param {String} shortcode The shortcode (such as :thumbup:)
+ * @return {String} The emoji character; null if none exists
*/
-export function charactersToImageNode(alt, useSvg, ...unicode) {
- const fileName = unicode.map((u) => {
- return u.toString(16);
- }).join('-');
- const path = useSvg ? emojione.imagePathSVG : emojione.imagePathPNG;
- const fileType = useSvg ? 'svg' : 'png';
- return ;
+export function shortcodeToUnicode(shortcode) {
+ shortcode = shortcode.slice(1, shortcode.length - 1);
+ const data = EMOJIBASE.find(e => e.shortcodes && e.shortcodes.includes(shortcode));
+ return data ? data.unicode : null;
}
export function processHtmlForSending(html: string): string {
@@ -444,13 +394,10 @@ class TextHighlighter extends BaseHighlighter {
* opts.disableBigEmoji: optional argument to disable the big emoji class.
* opts.stripReplyFallback: optional argument specifying the event is a reply and so fallback needs removing
* opts.returnString: return an HTML string rather than JSX elements
- * opts.emojiOne: optional param to do emojiOne (default true)
* opts.forComposerQuote: optional param to lessen the url rewriting done by sanitization, for quoting into composer
*/
export function bodyToHtml(content, highlights, opts={}) {
const isHtmlMessage = content.format === "org.matrix.custom.html" && content.formatted_body;
-
- const doEmojiOne = opts.emojiOne === undefined ? true : opts.emojiOne;
let bodyHasEmoji = false;
let sanitizeParams = sanitizeHtmlParams;
@@ -481,28 +428,12 @@ export function bodyToHtml(content, highlights, opts={}) {
if (opts.stripReplyFallback && formattedBody) formattedBody = ReplyThread.stripHTMLReply(formattedBody);
strippedBody = opts.stripReplyFallback ? ReplyThread.stripPlainReply(content.body) : content.body;
- if (doEmojiOne) {
- bodyHasEmoji = containsEmoji(isHtmlMessage ? formattedBody : content.body);
- }
+ bodyHasEmoji = containsEmoji(isHtmlMessage ? formattedBody : content.body);
// Only generate safeBody if the message was sent as org.matrix.custom.html
if (isHtmlMessage) {
isDisplayedWithHtml = true;
safeBody = sanitizeHtml(formattedBody, sanitizeParams);
- } else {
- // ... or if there are emoji, which we insert as HTML alongside the
- // escaped plaintext body.
- if (bodyHasEmoji) {
- isDisplayedWithHtml = true;
- safeBody = sanitizeHtml(escape(strippedBody), sanitizeParams);
- }
- }
-
- // An HTML message with emoji
- // or a plaintext message with emoji that was escaped and sanitized into
- // HTML.
- if (bodyHasEmoji) {
- safeBody = unicodeToImage(safeBody);
}
} finally {
delete sanitizeParams.textFilter;
@@ -514,7 +445,6 @@ export function bodyToHtml(content, highlights, opts={}) {
let emojiBody = false;
if (!opts.disableBigEmoji && bodyHasEmoji) {
- EMOJI_REGEX.lastIndex = 0;
let contentBodyTrimmed = strippedBody !== undefined ? strippedBody.trim() : '';
// Ignore spaces in body text. Emojis with spaces in between should
@@ -526,12 +456,14 @@ export function bodyToHtml(content, highlights, opts={}) {
// presented as large.
contentBodyTrimmed = contentBodyTrimmed.replace(ZWJ_REGEX, '');
- const match = EMOJI_REGEX.exec(contentBodyTrimmed);
- emojiBody = match && match[0] && match[0].length === contentBodyTrimmed.length
+ const match = BIGEMOJI_REGEX.exec(contentBodyTrimmed);
+ emojiBody = match && match[0] && match[0].length === contentBodyTrimmed.length &&
// Prevent user pills expanding for users with only emoji in
// their username
- && (content.formatted_body == undefined
- || !content.formatted_body.includes("https://matrix.to/"));
+ (
+ content.formatted_body == undefined ||
+ !content.formatted_body.includes("https://matrix.to/")
+ );
}
const className = classNames({
@@ -545,12 +477,6 @@ export function bodyToHtml(content, highlights, opts={}) {
{ strippedBody };
}
-export function emojifyText(text, addAlt) {
- return {
- __html: unicodeToImage(escape(text), addAlt),
- };
-}
-
/**
* Linkifies the given string. This is a wrapper around 'linkifyjs/string'.
*
diff --git a/src/RichText.js b/src/RichText.js
deleted file mode 100644
index 3e8f834da6..0000000000
--- a/src/RichText.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-Copyright 2015 - 2017 OpenMarket Ltd
-Copyright 2017 Vector Creations Ltd
-Copyright 2018 New Vector Ltd
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-import * as emojione from 'emojione';
-
-
-export function unicodeToEmojiUri(str) {
- const mappedUnicode = emojione.mapUnicodeToShort();
-
- // remove any zero width joiners/spaces used in conjugate emojis as the emojione URIs don't contain them
- return str.replace(emojione.regUnicode, function(unicodeChar) {
- if ((typeof unicodeChar === 'undefined') || (unicodeChar === '') || (!(unicodeChar in emojione.jsEscapeMap))) {
- // if the unicodeChar doesn't exist just return the entire match
- return unicodeChar;
- } else {
- // get the unicode codepoint from the actual char
- const unicode = emojione.jsEscapeMap[unicodeChar];
-
- const short = mappedUnicode[unicode];
- const fname = emojione.emojioneList[short].fname;
-
- return emojione.imagePathSVG+fname+'.svg'+emojione.cacheBustParam;
- }
- });
-}
diff --git a/src/autocomplete/EmojiProvider.js b/src/autocomplete/EmojiProvider.js
index 704cdbd55d..8afcba6ab0 100644
--- a/src/autocomplete/EmojiProvider.js
+++ b/src/autocomplete/EmojiProvider.js
@@ -19,47 +19,31 @@ limitations under the License.
import React from 'react';
import { _t } from '../languageHandler';
import AutocompleteProvider from './AutocompleteProvider';
-import {shortnameToUnicode, asciiRegexp, unicodeRegexp} from 'emojione';
import QueryMatcher from './QueryMatcher';
-import sdk from '../index';
import {PillCompletion} from './Components';
import type {Completion, SelectionRange} from './Autocompleter';
import _uniq from 'lodash/uniq';
import _sortBy from 'lodash/sortBy';
import SettingsStore from "../settings/SettingsStore";
+import { shortcodeToUnicode } from '../HtmlUtils';
+import EMOTICON_REGEX from 'emojibase-regex/emoticon';
import EmojiData from '../stripped-emoji.json';
const LIMIT = 20;
-const CATEGORY_ORDER = [
- 'people',
- 'food',
- 'objects',
- 'activity',
- 'nature',
- 'travel',
- 'flags',
- 'regional',
- 'symbols',
- 'modifier',
-];
-// Match for ":wink:" or ascii-style ";-)" provided by emojione
-// (^|\s|(emojiUnicode)) to make sure we're either at the start of the string or there's a
-// whitespace character or an emoji before the emoji. The reason for unicodeRegexp is
-// that we need to support inputting multiple emoji with no space between them.
-const EMOJI_REGEX = new RegExp('(?:^|\\s|' + unicodeRegexp + ')(' + asciiRegexp + '|:[+-\\w]*:?)$', 'g');
-
-// We also need to match the non-zero-length prefixes to remove them from the final match,
-// and update the range so that we don't replace the whitespace or the previous emoji.
-const MATCH_PREFIX_REGEX = new RegExp('(\\s|' + unicodeRegexp + ')');
+// Match for ascii-style ";-)" emoticons or ":wink:" shortcodes provided by emojibase
+const EMOJI_REGEX = new RegExp('(' + EMOTICON_REGEX.source + '|:[+-\\w]*:?)$', 'g');
+// XXX: it's very unclear why we bother with this generated emojidata file.
+// all it means is that we end up bloating the bundle with precomputed stuff
+// which would be trivial to calculate and cache on demand.
const EMOJI_SHORTNAMES = Object.keys(EmojiData).map((key) => EmojiData[key]).sort(
(a, b) => {
if (a.category === b.category) {
return a.emoji_order - b.emoji_order;
}
- return CATEGORY_ORDER.indexOf(a.category) - CATEGORY_ORDER.indexOf(b.category);
+ return a.category - b.category;
},
).map((a, index) => {
return {
@@ -101,26 +85,20 @@ export default class EmojiProvider extends AutocompleteProvider {
return []; // don't give any suggestions if the user doesn't want them
}
- const EmojiText = sdk.getComponent('views.elements.EmojiText');
-
let completions = [];
const {command, range} = this.getCurrentCommand(query, selection);
if (command) {
- let matchedString = command[0];
-
- // Remove prefix of any length (single whitespace or unicode emoji)
- const prefixMatch = MATCH_PREFIX_REGEX.exec(matchedString);
- if (prefixMatch) {
- matchedString = matchedString.slice(prefixMatch[0].length);
- range.start += prefixMatch[0].length;
- }
+ const matchedString = command[0];
completions = this.matcher.match(matchedString);
// Do second match with shouldMatchWordsOnly in order to match against 'name'
completions = completions.concat(this.nameMatcher.match(matchedString));
const sorters = [];
- // First, sort by score (Infinity if matchedString not in shortname)
+ // make sure that emoticons come first
+ sorters.push((c) => score(matchedString, c.aliases_ascii));
+
+ // then sort by score (Infinity if matchedString not in shortname)
sorters.push((c) => score(matchedString, c.shortname));
// If the matchedString is not empty, sort by length of shortname. Example:
// matchedString = ":bookmark"
@@ -133,12 +111,12 @@ export default class EmojiProvider extends AutocompleteProvider {
completions = _sortBy(_uniq(completions), sorters);
completions = completions.map((result) => {
- const {shortname} = result;
- const unicode = shortnameToUnicode(shortname);
+ const { shortname } = result;
+ const unicode = shortcodeToUnicode(shortname);
return {
completion: unicode,
component: (
- { unicode }} />
+ { unicode }} />
),
range,
};
diff --git a/src/components/structures/IndicatorScrollbar.js b/src/components/structures/IndicatorScrollbar.js
index a615717104..a62206b32b 100644
--- a/src/components/structures/IndicatorScrollbar.js
+++ b/src/components/structures/IndicatorScrollbar.js
@@ -129,7 +129,7 @@ export default class IndicatorScrollbar extends React.Component {
// the harshness of the scroll behaviour. Should be a value between 0 and 1.
const yRetention = 1.0;
- if (Math.abs(e.deltaX) < xyThreshold) {
+ if (Math.abs(e.deltaX) <= xyThreshold) {
// noinspection JSSuspiciousNameCombination
this._scrollElement.scrollLeft += e.deltaY * yRetention;
}
diff --git a/src/components/structures/InteractiveAuth.js b/src/components/structures/InteractiveAuth.js
index 89ff4d43a3..c893057022 100644
--- a/src/components/structures/InteractiveAuth.js
+++ b/src/components/structures/InteractiveAuth.js
@@ -1,5 +1,6 @@
/*
Copyright 2017 Vector Creations Ltd.
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -60,7 +61,7 @@ export default React.createClass({
inputs: PropTypes.object,
// As js-sdk interactive-auth
- makeRegistrationUrl: PropTypes.func,
+ requestEmailToken: PropTypes.func,
sessionId: PropTypes.string,
clientSecret: PropTypes.string,
emailSid: PropTypes.string,
@@ -96,6 +97,7 @@ export default React.createClass({
sessionId: this.props.sessionId,
clientSecret: this.props.clientSecret,
emailSid: this.props.emailSid,
+ requestEmailToken: this.props.requestEmailToken,
});
this._authLogic.attemptAuth().then((result) => {
@@ -202,7 +204,6 @@ export default React.createClass({
stageState={this.state.stageState}
fail={this._onAuthStageFailed}
setEmailSid={this._setEmailSid}
- makeRegistrationUrl={this.props.makeRegistrationUrl}
showContinue={!this.props.continueIsManaged}
/>
);
diff --git a/src/components/structures/LoggedInView.js b/src/components/structures/LoggedInView.js
index 4771c6f487..7a5c6e3006 100644
--- a/src/components/structures/LoggedInView.js
+++ b/src/components/structures/LoggedInView.js
@@ -24,6 +24,7 @@ import { DragDropContext } from 'react-beautiful-dnd';
import { KeyCode, isOnlyCtrlOrCmdKeyEvent } from '../../Keyboard';
import PageTypes from '../../PageTypes';
import CallMediaHandler from '../../CallMediaHandler';
+import { fixupColorFonts } from '../../utils/FontManager';
import sdk from '../../index';
import dis from '../../dispatcher';
import sessionStore from '../../stores/SessionStore';
@@ -118,6 +119,8 @@ const LoggedInView = React.createClass({
this._matrixClient.on("accountData", this.onAccountData);
this._matrixClient.on("sync", this.onSync);
this._matrixClient.on("RoomState.events", this.onRoomStateEvents);
+
+ fixupColorFonts();
},
componentDidUpdate(prevProps) {
@@ -322,6 +325,18 @@ const LoggedInView = React.createClass({
handled = true;
}
break;
+ case KeyCode.KEY_I:
+ // Ideally this would be CTRL+P for "Profile", but that's
+ // taken by the print dialog. CTRL+I for "Information"
+ // will have to do.
+
+ if (ctrlCmdOnly) {
+ dis.dispatch({
+ action: 'toggle_top_left_menu',
+ });
+ handled = true;
+ }
+ break;
}
if (handled) {
diff --git a/src/components/structures/MessagePanel.js b/src/components/structures/MessagePanel.js
index d61092c051..17e44f2a0f 100644
--- a/src/components/structures/MessagePanel.js
+++ b/src/components/structures/MessagePanel.js
@@ -96,6 +96,9 @@ module.exports = React.createClass({
// helper function to access relations for an event
getRelationsForEvent: PropTypes.func,
+
+ // whether to show reactions for an event
+ showReactions: PropTypes.bool,
},
componentWillMount: function() {
@@ -541,6 +544,7 @@ module.exports = React.createClass({
last={last}
isSelectedEvent={highlight}
getRelationsForEvent={this.props.getRelationsForEvent}
+ showReactions={this.props.showReactions}
/>
,
);
diff --git a/src/components/structures/NotificationPanel.js b/src/components/structures/NotificationPanel.js
index 3f1269f8a7..50f2683138 100644
--- a/src/components/structures/NotificationPanel.js
+++ b/src/components/structures/NotificationPanel.js
@@ -1,5 +1,6 @@
/*
Copyright 2016 OpenMarket Ltd
+Copyright 2019 New Vector Ltd
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -15,12 +16,9 @@ limitations under the License.
*/
const React = require('react');
-const ReactDOM = require("react-dom");
import { _t } from '../../languageHandler';
-const Matrix = require("matrix-js-sdk");
const sdk = require('../../index');
const MatrixClientPeg = require("../../MatrixClientPeg");
-const dis = require("../../dispatcher");
/*
* Component which shows the global notification list using a TimelinePanel
@@ -44,7 +42,7 @@ const NotificationPanel = React.createClass({
manageReadReceipts={false}
manageReadMarkers={false}
timelineSet={timelineSet}
- showUrlPreview = {false}
+ showUrlPreview={false}
tileShape="notif"
empty={_t('You have no visible notifications')}
/>
diff --git a/src/components/structures/RoomStatusBar.js b/src/components/structures/RoomStatusBar.js
index 1df0581b89..7ef080e235 100644
--- a/src/components/structures/RoomStatusBar.js
+++ b/src/components/structures/RoomStatusBar.js
@@ -304,8 +304,6 @@ module.exports = React.createClass({
// return suitable content for the main (text) part of the status bar.
_getContent: function() {
- const EmojiText = sdk.getComponent('elements.EmojiText');
-
if (this._shouldShowConnectionError()) {
return (
diff --git a/src/components/structures/RoomSubList.js b/src/components/structures/RoomSubList.js
index d094d88c24..9ca9d3261d 100644
--- a/src/components/structures/RoomSubList.js
+++ b/src/components/structures/RoomSubList.js
@@ -29,6 +29,7 @@ import { Group } from 'matrix-js-sdk';
import PropTypes from 'prop-types';
import RoomTile from "../views/rooms/RoomTile";
import LazyRenderList from "../views/elements/LazyRenderList";
+import {_t} from "../../languageHandler";
// turn this on for drop & drag console debugging galore
const debug = false;
@@ -42,6 +43,7 @@ const RoomSubList = React.createClass({
list: PropTypes.arrayOf(PropTypes.object).isRequired,
label: PropTypes.string.isRequired,
tagName: PropTypes.string,
+ addRoomLabel: PropTypes.string,
order: PropTypes.string.isRequired,
@@ -232,7 +234,11 @@ const RoomSubList = React.createClass({
let addRoomButton;
if (this.props.onAddRoom) {
addRoomButton = (
-
+
);
}
diff --git a/src/components/structures/RoomView.js b/src/components/structures/RoomView.js
index 5f4dc984d0..7c0710a18d 100644
--- a/src/components/structures/RoomView.js
+++ b/src/components/structures/RoomView.js
@@ -1832,6 +1832,7 @@ module.exports = React.createClass({
membersLoaded={this.state.membersLoaded}
permalinkCreator={this._getPermalinkCreatorForRoom(this.state.room)}
resizeNotifier={this.props.resizeNotifier}
+ showReactions={true}
/>);
let topUnreadMessagesBar = null;
diff --git a/src/components/structures/TimelinePanel.js b/src/components/structures/TimelinePanel.js
index 7c1afbe9c3..0b7b315915 100644
--- a/src/components/structures/TimelinePanel.js
+++ b/src/components/structures/TimelinePanel.js
@@ -106,6 +106,9 @@ const TimelinePanel = React.createClass({
// placeholder text to use if the timeline is empty
empty: PropTypes.string,
+
+ // whether to show reactions for an event
+ showReactions: PropTypes.bool,
},
statics: {
@@ -553,6 +556,9 @@ const TimelinePanel = React.createClass({
},
onEventDecrypted: function(ev) {
+ // Can be null for the notification timeline, etc.
+ if (!this.props.timelineSet.room) return;
+
// Need to update as we don't display event tiles for events that
// haven't yet been decrypted. The event will have just been updated
// in place so we just need to re-render.
@@ -1261,6 +1267,7 @@ const TimelinePanel = React.createClass({
resizeNotifier={this.props.resizeNotifier}
getRelationsForEvent={this.getRelationsForEvent}
editEvent={this.state.editEvent}
+ showReactions={this.props.showReactions}
/>
);
},
diff --git a/src/components/structures/TopLeftMenuButton.js b/src/components/structures/TopLeftMenuButton.js
index b68d3a95a0..f745a7f7bc 100644
--- a/src/components/structures/TopLeftMenuButton.js
+++ b/src/components/structures/TopLeftMenuButton.js
@@ -1,5 +1,6 @@
/*
Copyright 2018 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -23,6 +24,8 @@ import BaseAvatar from '../views/avatars/BaseAvatar';
import MatrixClientPeg from '../../MatrixClientPeg';
import Avatar from '../../Avatar';
import { _t } from '../../languageHandler';
+import dis from "../../dispatcher";
+import {focusCapturedRef} from "../../utils/Accessibility";
const AVATAR_SIZE = 28;
@@ -37,6 +40,7 @@ export default class TopLeftMenuButton extends React.Component {
super();
this.state = {
menuDisplayed: false,
+ menuFunctions: null, // should be { close: fn }
profileInfo: null,
};
@@ -59,6 +63,8 @@ export default class TopLeftMenuButton extends React.Component {
}
async componentDidMount() {
+ this._dispatcherRef = dis.register(this.onAction);
+
try {
const profileInfo = await this._getProfileInfo();
this.setState({profileInfo});
@@ -68,6 +74,17 @@ export default class TopLeftMenuButton extends React.Component {
}
}
+ componentWillUnmount() {
+ dis.unregister(this._dispatcherRef);
+ }
+
+ onAction = (payload) => {
+ // For accessibility
+ if (payload.action === "toggle_top_left_menu") {
+ if (this._buttonRef) this._buttonRef.click();
+ }
+ };
+
_getDisplayName() {
if (MatrixClientPeg.get().isGuest()) {
return _t("Guest");
@@ -88,7 +105,13 @@ export default class TopLeftMenuButton extends React.Component {
}
return (
-
+ this._buttonRef = r}
+ aria-label={_t("Your profile")}
+ >
{ nameElement }
-
+
);
}
@@ -107,20 +130,26 @@ export default class TopLeftMenuButton extends React.Component {
e.preventDefault();
e.stopPropagation();
+ if (this.state.menuDisplayed && this.state.menuFunctions) {
+ this.state.menuFunctions.close();
+ return;
+ }
+
const elementRect = e.currentTarget.getBoundingClientRect();
const x = elementRect.left;
const y = elementRect.top + elementRect.height;
- ContextualMenu.createMenu(TopLeftMenu, {
+ const menuFunctions = ContextualMenu.createMenu(TopLeftMenu, {
chevronFace: "none",
left: x,
top: y,
userId: MatrixClientPeg.get().getUserId(),
displayName: this._getDisplayName(),
+ containerRef: focusCapturedRef, // Focus the TopLeftMenu on first render
onFinished: () => {
- this.setState({ menuDisplayed: false });
+ this.setState({ menuDisplayed: false, menuFunctions: null });
},
});
- this.setState({ menuDisplayed: true });
+ this.setState({ menuDisplayed: true, menuFunctions });
}
}
diff --git a/src/components/structures/auth/Registration.js b/src/components/structures/auth/Registration.js
index f516816033..6e4f076091 100644
--- a/src/components/structures/auth/Registration.js
+++ b/src/components/structures/auth/Registration.js
@@ -2,6 +2,7 @@
Copyright 2015, 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
Copyright 2018, 2019 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -187,6 +188,20 @@ module.exports = React.createClass({
});
},
+ _requestEmailToken: function(emailAddress, clientSecret, sendAttempt, sessionId) {
+ return this._matrixClient.requestRegisterEmailToken(
+ emailAddress,
+ clientSecret,
+ sendAttempt,
+ this.props.makeRegistrationUrl({
+ client_secret: clientSecret,
+ hs_url: this._matrixClient.getHomeserverUrl(),
+ is_url: this._matrixClient.getIdentityServerUrl(),
+ session_id: sessionId,
+ }),
+ );
+ },
+
_onUIAuthFinished: async function(success, response, extra) {
if (!success) {
let msg = response.message || response.toString();
@@ -400,7 +415,7 @@ module.exports = React.createClass({
makeRequest={this._makeRegisterRequest}
onAuthFinished={this._onUIAuthFinished}
inputs={this._getUIAuthInputs()}
- makeRegistrationUrl={this.props.makeRegistrationUrl}
+ requestEmailToken={this._requestEmailToken}
sessionId={this.props.sessionId}
clientSecret={this.props.clientSecret}
emailSid={this.props.idSid}
diff --git a/src/components/views/auth/InteractiveAuthEntryComponents.js b/src/components/views/auth/InteractiveAuthEntryComponents.js
index 4851222e49..b3687db2bd 100644
--- a/src/components/views/auth/InteractiveAuthEntryComponents.js
+++ b/src/components/views/auth/InteractiveAuthEntryComponents.js
@@ -1,6 +1,7 @@
/*
Copyright 2016 OpenMarket Ltd
Copyright 2017 Vector Creations Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -57,7 +58,6 @@ import SettingsStore from "../../../settings/SettingsStore";
* session to be failed and the process to go back to the start.
* setEmailSid: m.login.email.identity only: a function to be called with the
* email sid after a token is requested.
- * makeRegistrationUrl A function that makes a registration URL
*
* Each component may also provide the following functions (beyond the standard React ones):
* focus: set the input focus appropriately in the form.
@@ -365,7 +365,6 @@ export const EmailIdentityAuthEntry = React.createClass({
stageState: PropTypes.object.isRequired,
fail: PropTypes.func.isRequired,
setEmailSid: PropTypes.func.isRequired,
- makeRegistrationUrl: PropTypes.func.isRequired,
},
getInitialState: function() {
@@ -374,38 +373,6 @@ export const EmailIdentityAuthEntry = React.createClass({
};
},
- componentWillMount: function() {
- if (this.props.stageState.emailSid === null) {
- this.setState({requestingToken: true});
- this._requestEmailToken().catch((e) => {
- this.props.fail(e);
- }).finally(() => {
- this.setState({requestingToken: false});
- }).done();
- }
- },
-
- /*
- * Requests a verification token by email.
- */
- _requestEmailToken: function() {
- const nextLink = this.props.makeRegistrationUrl({
- client_secret: this.props.clientSecret,
- hs_url: this.props.matrixClient.getHomeserverUrl(),
- is_url: this.props.matrixClient.getIdentityServerUrl(),
- session_id: this.props.authSessionId,
- });
-
- return this.props.matrixClient.requestRegisterEmailToken(
- this.props.inputs.emailAddress,
- this.props.clientSecret,
- 1, // TODO: Multiple send attempts?
- nextLink,
- ).then((result) => {
- this.props.setEmailSid(result.sid);
- });
- },
-
render: function() {
if (this.state.requestingToken) {
const Loader = sdk.getComponent("elements.Spinner");
diff --git a/src/components/views/avatars/BaseAvatar.js b/src/components/views/avatars/BaseAvatar.js
index 47de7c9dc4..5b299c2570 100644
--- a/src/components/views/avatars/BaseAvatar.js
+++ b/src/components/views/avatars/BaseAvatar.js
@@ -133,40 +133,7 @@ module.exports = React.createClass({
}
},
- /**
- * returns the first (non-sigil) character of 'name',
- * converted to uppercase
- */
- _getInitialLetter: function(name) {
- if (name.length < 1) {
- return undefined;
- }
-
- let idx = 0;
- const initial = name[0];
- if ((initial === '@' || initial === '#' || initial === '+') && name[1]) {
- idx++;
- }
-
- // string.codePointAt(0) would do this, but that isn't supported by
- // some browsers (notably PhantomJS).
- let chars = 1;
- const first = name.charCodeAt(idx);
-
- // check if it’s the start of a surrogate pair
- if (first >= 0xD800 && first <= 0xDBFF && name[idx+1]) {
- const second = name.charCodeAt(idx+1);
- if (second >= 0xDC00 && second <= 0xDFFF) {
- chars++;
- }
- }
-
- const firstChar = name.substring(idx, idx+chars);
- return firstChar.toUpperCase();
- },
-
render: function() {
- const EmojiText = sdk.getComponent('elements.EmojiText');
const imageUrl = this.state.imageUrls[this.state.urlsIndex];
const {
@@ -176,20 +143,20 @@ module.exports = React.createClass({
} = this.props;
if (imageUrl === this.state.defaultImageUrl) {
- const initialLetter = this._getInitialLetter(name);
+ const initialLetter = AvatarLogic.getInitialLetter(name);
const textNode = (
-
{ initialLetter }
-
+
);
const imgNode = (
+ width={width} height={height} aria-hidden="true" />
);
if (onClick != null) {
return (
diff --git a/src/components/views/avatars/RoomAvatar.js b/src/components/views/avatars/RoomAvatar.js
index 38f088238f..557a4d8dbf 100644
--- a/src/components/views/avatars/RoomAvatar.js
+++ b/src/components/views/avatars/RoomAvatar.js
@@ -19,7 +19,7 @@ import {ContentRepo} from "matrix-js-sdk";
import MatrixClientPeg from "../../../MatrixClientPeg";
import Modal from '../../../Modal';
import sdk from "../../../index";
-import DMRoomMap from '../../../utils/DMRoomMap';
+import Avatar from '../../../Avatar';
module.exports = React.createClass({
displayName: 'RoomAvatar',
@@ -89,7 +89,6 @@ module.exports = React.createClass({
props.resizeMethod,
), // highest priority
this.getRoomAvatarUrl(props),
- this.getOneToOneAvatar(props), // lowest priority
].filter(function(url) {
return (url != null && url != "");
});
@@ -98,41 +97,14 @@ module.exports = React.createClass({
getRoomAvatarUrl: function(props) {
if (!props.room) return null;
- return props.room.getAvatarUrl(
- MatrixClientPeg.get().getHomeserverUrl(),
+ return Avatar.avatarUrlForRoom(
+ props.room,
Math.floor(props.width * window.devicePixelRatio),
Math.floor(props.height * window.devicePixelRatio),
props.resizeMethod,
- false,
);
},
- getOneToOneAvatar: function(props) {
- const room = props.room;
- if (!room) {
- return null;
- }
- let otherMember = null;
- const otherUserId = DMRoomMap.shared().getUserIdForRoomId(room.roomId);
- if (otherUserId) {
- otherMember = room.getMember(otherUserId);
- } else {
- // if the room is not marked as a 1:1, but only has max 2 members
- // then still try to show any avatar (pref. other member)
- otherMember = room.getAvatarFallbackMember();
- }
- if (otherMember) {
- return otherMember.getAvatarUrl(
- MatrixClientPeg.get().getHomeserverUrl(),
- Math.floor(props.width * window.devicePixelRatio),
- Math.floor(props.height * window.devicePixelRatio),
- props.resizeMethod,
- false,
- );
- }
- return null;
- },
-
onRoomAvatarClick: function() {
const avatarUrl = this.props.room.getAvatarUrl(
MatrixClientPeg.get().getHomeserverUrl(),
diff --git a/src/components/views/context_menus/TopLeftMenu.js b/src/components/views/context_menus/TopLeftMenu.js
index 278c879404..09e9142201 100644
--- a/src/components/views/context_menus/TopLeftMenu.js
+++ b/src/components/views/context_menus/TopLeftMenu.js
@@ -1,5 +1,6 @@
/*
Copyright 2018, 2019 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -29,6 +30,10 @@ export class TopLeftMenu extends React.Component {
displayName: PropTypes.string.isRequired,
userId: PropTypes.string.isRequired,
onFinished: PropTypes.func,
+
+ // Optional function to collect a reference to the container
+ // of this component directly.
+ containerRef: PropTypes.func,
};
constructor() {
@@ -61,44 +66,48 @@ export class TopLeftMenu extends React.Component {
{_t(
"Upgrade to your own domain", {},
{
- a: sub => {sub},
+ a: sub => {sub},
},
)}
-
+
;
}
- let homePageSection = null;
+ let homePageItem = null;
if (this.hasHomePage()) {
- homePageSection =
-
{_t("Home")}
-
;
+ homePageItem =
+ {_t("Home")}
+
;
}
- let signInOutSection;
+ let signInOutItem;
if (isGuest) {
- signInOutSection =
);
} else if (this.props.subtextLabel) {
nameEl = (
-
+
{name}
-
+
{this.props.subtextLabel}
);
} else {
nameEl = (
- { name }
+
{ name }
);
}
diff --git a/src/components/views/rooms/EventTile.js b/src/components/views/rooms/EventTile.js
index 4c0f0e628e..3c7f3deec9 100644
--- a/src/components/views/rooms/EventTile.js
+++ b/src/components/views/rooms/EventTile.js
@@ -32,6 +32,7 @@ import withMatrixClient from '../../../wrappers/withMatrixClient';
import dis from '../../../dispatcher';
import SettingsStore from "../../../settings/SettingsStore";
import {EventStatus} from 'matrix-js-sdk';
+import MatrixClientPeg from "../../../MatrixClientPeg";
const ObjectUtils = require('../../../ObjectUtils');
@@ -160,8 +161,11 @@ module.exports = withMatrixClient(React.createClass({
// show twelve hour timestamps
isTwelveHour: PropTypes.bool,
- // helper function to access relations for an event
+ // helper function to access relations for this event
getRelationsForEvent: PropTypes.func,
+
+ // whether to show reactions for this event
+ showReactions: PropTypes.bool,
},
getDefaultProps: function() {
@@ -198,7 +202,7 @@ module.exports = withMatrixClient(React.createClass({
const client = this.props.matrixClient;
client.on("deviceVerificationChanged", this.onDeviceVerificationChanged);
this.props.mxEvent.on("Event.decrypted", this._onDecrypted);
- if (SettingsStore.isFeatureEnabled("feature_reactions")) {
+ if (this.props.showReactions && SettingsStore.isFeatureEnabled("feature_reactions")) {
this.props.mxEvent.on("Event.relationsCreated", this._onReactionsCreated);
}
},
@@ -223,7 +227,7 @@ module.exports = withMatrixClient(React.createClass({
const client = this.props.matrixClient;
client.removeListener("deviceVerificationChanged", this.onDeviceVerificationChanged);
this.props.mxEvent.removeListener("Event.decrypted", this._onDecrypted);
- if (SettingsStore.isFeatureEnabled("feature_reactions")) {
+ if (this.props.showReactions && SettingsStore.isFeatureEnabled("feature_reactions")) {
this.props.mxEvent.removeListener("Event.relationsCreated", this._onReactionsCreated);
}
},
@@ -485,6 +489,7 @@ module.exports = withMatrixClient(React.createClass({
getReactions() {
if (
+ !this.props.showReactions ||
!this.props.getRelationsForEvent ||
!SettingsStore.isFeatureEnabled("feature_reactions")
) {
@@ -541,6 +546,50 @@ module.exports = withMatrixClient(React.createClass({
const isRedacted = isMessageEvent(this.props.mxEvent) && this.props.isRedacted;
const isEncryptionFailure = this.props.mxEvent.isDecryptionFailure();
+ // TLDR: Screen readers are complicated and can watch for new DOM elements, but not
+ // changes to DOM elements. As such, we hack a bunch of conditions together.
+ //
+ // Screen readers do not react well to aria attributes changing dynamically after
+ // parsing them. Although readers watch the DOM, they cannot react to aria-hidden
+ // going from true to false. To work around that, we check to see if the eventSendStatus
+ // is something worthwhile for us to read out. We specifically don't want to read
+ // out pending/queued messages because they'll be read out again when they are sent.
+ //
+ // There's a small annoyance with doing this though: if we can't change the aria attrs,
+ // we need to track the entry state for when the component mounts. As it stands, the
+ // EventTile is unmounted/mounted when going pending->sent, and then a simple properties
+ // change is made to mxEvent for sent->null (the final state). We abuse this cycle to
+ // mute the pending state and react on the sent state.
+ //
+ // However there's then a bug where readers don't read messages from other people (they
+ // enter the component as eventSendStatus of null) - to counteract this, we look for a
+ // transaction_id under the unsigned object of the event. According to the spec, we can
+ // use this to determine if an event was sent by us (as it's bound to the access token
+ // which sent the event). This allows us to do a few checks on whether to speak:
+ // * If the event was sent by our user ID and the eventSendStatus is 'sent', then speak.
+ // We cannot check the transaction_id at this point because it is undefined. We can
+ // make the assumption that 'sent' means this exact device is handling it though.
+ // * If the event was sent by our user ID and the eventSendStatus is falsey (null), then
+ // only speak if the event was not sent by us (no transaction_id).
+ // * If the event was not sent by our user ID then speak.
+ //
+ // Note: although NVDA (a screen reader) does react to aria-hidden changing, it does so
+ // in a horrible way. Because multiple properties and DOM elements are changing, it reads
+ // the message twice when we limit the 'should speak' checks to just 'if eventSendStatus
+ // is null'. This is part of the reason for the complexity above.
+ //
+ // Hopefully all of that leads to us not reading out messages in duplicate or triplicate.
+ const sentByMyUserId = this.props.mxEvent.getSender() === MatrixClientPeg.get().getUserId();
+ const sentByThisDevice = !!this.props.mxEvent.getUnsigned()["transaction_id"];
+ let screenReaderShouldSpeak = false;
+ if (!isSending) {
+ if (this.props.eventSendStatus === 'sent') {
+ screenReaderShouldSpeak = sentByMyUserId;
+ } else if (!this.props.eventSendStatus) {
+ screenReaderShouldSpeak = !sentByMyUserId || !sentByThisDevice;
+ }
+ }
+
const classes = classNames({
mx_EventTile: true,
mx_EventTile_isEditing: this.props.isEditing,
@@ -597,9 +646,13 @@ module.exports = withMatrixClient(React.createClass({
if (this.props.mxEvent.sender && avatarSize) {
avatar = (
{
- // The avatar goes after the event tile as it's absolutly positioned to be over the
+ // The avatar goes after the event tile as it's absolutely positioned to be over the
// event tile line, so needs to be later in the DOM so it appears on top (this avoids
// the need for further z-indexing chaos)
}
diff --git a/src/components/views/rooms/MemberInfo.js b/src/components/views/rooms/MemberInfo.js
index b9eea2b455..3c098b3d7a 100644
--- a/src/components/views/rooms/MemberInfo.js
+++ b/src/components/views/rooms/MemberInfo.js
@@ -978,7 +978,6 @@ module.exports = withMatrixClient(React.createClass({
}
const GeminiScrollbarWrapper = sdk.getComponent("elements.GeminiScrollbarWrapper");
- const EmojiText = sdk.getComponent('elements.EmojiText');
let backButton;
if (this.props.member.roomId) {
@@ -993,7 +992,7 @@ module.exports = withMatrixClient(React.createClass({
{_t(capFirst(emoji[1]))}
diff --git a/src/editor/autocomplete.js b/src/editor/autocomplete.js
index d2f73b1dff..fa07ec56ff 100644
--- a/src/editor/autocomplete.js
+++ b/src/editor/autocomplete.js
@@ -1,5 +1,6 @@
/*
Copyright 2019 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -17,11 +18,12 @@ limitations under the License.
import {UserPillPart, RoomPillPart, PlainPart} from "./parts";
export default class AutocompleteWrapperModel {
- constructor(updateCallback, getAutocompleterComponent, updateQuery) {
+ constructor(updateCallback, getAutocompleterComponent, updateQuery, room) {
this._updateCallback = updateCallback;
this._getAutocompleterComponent = getAutocompleterComponent;
this._updateQuery = updateQuery;
this._query = null;
+ this._room = room;
}
onEscape(e) {
@@ -83,7 +85,8 @@ export default class AutocompleteWrapperModel {
case "@": {
const displayName = completion.completion;
const userId = completion.completionId;
- return new UserPillPart(userId, displayName);
+ const member = this._room.getMember(userId);
+ return new UserPillPart(userId, displayName, member);
}
case "#": {
const displayAlias = completion.completionId;
diff --git a/src/editor/caret.js b/src/editor/caret.js
index 3a784aa8eb..974c8802a4 100644
--- a/src/editor/caret.js
+++ b/src/editor/caret.js
@@ -1,5 +1,6 @@
/*
Copyright 2019 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/src/editor/deserialize.js b/src/editor/deserialize.js
index a7f28badb1..d440f9d336 100644
--- a/src/editor/deserialize.js
+++ b/src/editor/deserialize.js
@@ -1,5 +1,6 @@
/*
Copyright 2019 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -17,7 +18,7 @@ limitations under the License.
import { MATRIXTO_URL_PATTERN } from '../linkify-matrix';
import { PlainPart, UserPillPart, RoomPillPart, NewlinePart } from "./parts";
-function parseHtmlMessage(html) {
+function parseHtmlMessage(html, room) {
const REGEX_MATRIXTO = new RegExp(MATRIXTO_URL_PATTERN);
// no nodes from parsing here should be inserted in the document,
// as scripts in event handlers, etc would be executed then.
@@ -37,8 +38,8 @@ function parseHtmlMessage(html) {
const resourceId = pillMatch[1]; // The room/user ID
const prefix = pillMatch[2]; // The first character of prefix
switch (prefix) {
- case "@": return new UserPillPart(resourceId, n.textContent);
- case "#": return new RoomPillPart(resourceId, n.textContent);
+ case "@": return new UserPillPart(resourceId, n.textContent, room.getMember(resourceId));
+ case "#": return new RoomPillPart(resourceId);
default: return new PlainPart(n.textContent);
}
}
@@ -54,10 +55,10 @@ function parseHtmlMessage(html) {
return parts;
}
-export function parseEvent(event) {
+export function parseEvent(event, room) {
const content = event.getContent();
if (content.format === "org.matrix.custom.html") {
- return parseHtmlMessage(content.formatted_body || "");
+ return parseHtmlMessage(content.formatted_body || "", room);
} else {
const body = content.body || "";
const lines = body.split("\n");
diff --git a/src/editor/diff.js b/src/editor/diff.js
index 6dc8b746e4..2c82e22793 100644
--- a/src/editor/diff.js
+++ b/src/editor/diff.js
@@ -1,5 +1,6 @@
/*
Copyright 2019 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/src/editor/dom.js b/src/editor/dom.js
index 0899fd25b3..ffdb8bed68 100644
--- a/src/editor/dom.js
+++ b/src/editor/dom.js
@@ -1,5 +1,6 @@
/*
Copyright 2019 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/src/editor/model.js b/src/editor/model.js
index 13066897b9..6b9c57a23c 100644
--- a/src/editor/model.js
+++ b/src/editor/model.js
@@ -1,5 +1,6 @@
/*
Copyright 2019 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/src/editor/parts.js b/src/editor/parts.js
index bf792b1ab9..ad50009d49 100644
--- a/src/editor/parts.js
+++ b/src/editor/parts.js
@@ -1,5 +1,6 @@
/*
Copyright 2019 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -15,6 +16,8 @@ limitations under the License.
*/
import AutocompleteWrapperModel from "./autocomplete";
+import Avatar from "../Avatar";
+import MatrixClientPeg from "../MatrixClientPeg";
class BasePart {
constructor(text = "") {
@@ -150,21 +153,21 @@ class PillPart extends BasePart {
toDOMNode() {
const container = document.createElement("span");
- container.className = this.type;
+ container.className = this.className;
container.appendChild(document.createTextNode(this.text));
+ this.setAvatar(container);
return container;
}
updateDOMNode(node) {
const textNode = node.childNodes[0];
if (textNode.textContent !== this.text) {
- // console.log("changing pill text from", textNode.textContent, "to", this.text);
textNode.textContent = this.text;
}
- if (node.className !== this.type) {
- // console.log("turning", node.className, "into", this.type);
- node.className = this.type;
+ if (node.className !== this.className) {
+ node.className = this.className;
}
+ this.setAvatar(node);
}
canUpdateDOMNode(node) {
@@ -174,6 +177,20 @@ class PillPart extends BasePart {
node.childNodes[0].nodeType === Node.TEXT_NODE;
}
+ // helper method for subclasses
+ _setAvatarVars(node, avatarUrl, initialLetter) {
+ const avatarBackground = `url('${avatarUrl}')`;
+ const avatarLetter = `'${initialLetter}'`;
+ // check if the value is changing,
+ // otherwise the avatars flicker on every keystroke while updating.
+ if (node.style.getPropertyValue("--avatar-background") !== avatarBackground) {
+ node.style.setProperty("--avatar-background", avatarBackground);
+ }
+ if (node.style.getPropertyValue("--avatar-letter") !== avatarLetter) {
+ node.style.setProperty("--avatar-letter", avatarLetter);
+ }
+ }
+
get canEdit() {
return false;
}
@@ -218,17 +235,71 @@ export class NewlinePart extends BasePart {
export class RoomPillPart extends PillPart {
constructor(displayAlias) {
super(displayAlias, displayAlias);
+ this._room = this._findRoomByAlias(displayAlias);
+ }
+
+ _findRoomByAlias(alias) {
+ const client = MatrixClientPeg.get();
+ if (alias[0] === '#') {
+ return client.getRooms().find((r) => {
+ return r.getAliases().includes(alias);
+ });
+ } else {
+ return client.getRoom(alias);
+ }
+ }
+
+ setAvatar(node) {
+ let initialLetter = "";
+ let avatarUrl = Avatar.avatarUrlForRoom(this._room, 16 * window.devicePixelRatio, 16 * window.devicePixelRatio);
+ if (!avatarUrl) {
+ initialLetter = Avatar.getInitialLetter(this._room.name);
+ avatarUrl = `../../${Avatar.defaultAvatarUrlForString(this._room.roomId)}`;
+ }
+ this._setAvatarVars(node, avatarUrl, initialLetter);
}
get type() {
return "room-pill";
}
+
+ get className() {
+ return "mx_RoomPill mx_Pill";
+ }
}
export class UserPillPart extends PillPart {
+ constructor(userId, displayName, member) {
+ super(userId, displayName);
+ this._member = member;
+ }
+
+ setAvatar(node) {
+ const name = this._member.name || this._member.userId;
+ const defaultAvatarUrl = Avatar.defaultAvatarUrlForString(this._member.userId);
+ let avatarUrl = Avatar.avatarUrlForMember(
+ this._member,
+ 16 * window.devicePixelRatio,
+ 16 * window.devicePixelRatio);
+ let initialLetter = "";
+ if (avatarUrl === defaultAvatarUrl) {
+ // the url from defaultAvatarUrlForString is meant to go in an img element,
+ // which has the base of the document. we're using it in css,
+ // which has the base of the theme css file, two levels deeper than the document,
+ // so go up to the level of the document.
+ avatarUrl = `../../${avatarUrl}`;
+ initialLetter = Avatar.getInitialLetter(name);
+ }
+ this._setAvatarVars(node, avatarUrl, initialLetter);
+ }
+
get type() {
return "user-pill";
}
+
+ get className() {
+ return "mx_UserPill mx_Pill";
+ }
}
@@ -256,9 +327,14 @@ export class PillCandidatePart extends PlainPart {
}
export class PartCreator {
- constructor(getAutocompleterComponent, updateQuery) {
+ constructor(getAutocompleterComponent, updateQuery, room) {
this._autoCompleteCreator = (updateCallback) => {
- return new AutocompleteWrapperModel(updateCallback, getAutocompleterComponent, updateQuery);
+ return new AutocompleteWrapperModel(
+ updateCallback,
+ getAutocompleterComponent,
+ updateQuery,
+ room,
+ );
};
}
diff --git a/src/editor/render.js b/src/editor/render.js
index abc5d42fa1..caea18e3ca 100644
--- a/src/editor/render.js
+++ b/src/editor/render.js
@@ -1,5 +1,6 @@
/*
Copyright 2019 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
diff --git a/src/editor/serialize.js b/src/editor/serialize.js
index 57cc79b375..1724e4a2b7 100644
--- a/src/editor/serialize.js
+++ b/src/editor/serialize.js
@@ -1,3 +1,20 @@
+/*
+Copyright 2019 New Vector Ltd
+Copyright 2019 The Matrix.org Foundation C.I.C.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
export function htmlSerialize(model) {
return model.parts.reduce((html, part) => {
switch (part.type) {
diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json
index 0a79117310..0360b89f46 100644
--- a/src/i18n/strings/en_EN.json
+++ b/src/i18n/strings/en_EN.json
@@ -799,6 +799,7 @@
"Invites": "Invites",
"Favourites": "Favourites",
"People": "People",
+ "Start chat": "Start chat",
"Rooms": "Rooms",
"Low priority": "Low priority",
"Historical": "Historical",
@@ -1053,12 +1054,12 @@
"%(oneUser)schanged their avatar %(count)s times|one": "%(oneUser)schanged their avatar",
"collapse": "collapse",
"expand": "expand",
+ "Edit message": "Edit message",
"Power level": "Power level",
"Custom level": "Custom level",
"Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Unable to load event that was replied to, it either does not exist or you do not have permission to view it.",
"In reply to": "In reply to",
"Room directory": "Room directory",
- "Start chat": "Start chat",
"And %(count)s more...|other": "And %(count)s more...",
"ex. @bob:example.com": "ex. @bob:example.com",
"Add User": "Add User",
@@ -1475,6 +1476,7 @@
"Sent messages will be stored until your connection has returned.": "Sent messages will be stored until your connection has returned.",
"Active call": "Active call",
"There's no one else here! Would you like to invite others or stop warning about the empty room?": "There's no one else here! Would you like to invite others or stop warning about the empty room?",
+ "Add room": "Add room",
"You seem to be uploading files, are you sure you want to quit?": "You seem to be uploading files, are you sure you want to quit?",
"You seem to be in a call, are you sure you want to quit?": "You seem to be in a call, are you sure you want to quit?",
"Search failed": "Search failed",
@@ -1495,6 +1497,7 @@
"Tried to load a specific point in this room's timeline, but was unable to find it.": "Tried to load a specific point in this room's timeline, but was unable to find it.",
"Failed to load timeline position": "Failed to load timeline position",
"Guest": "Guest",
+ "Your profile": "Your profile",
"Uploading %(filename)s and %(count)s others|other": "Uploading %(filename)s and %(count)s others",
"Uploading %(filename)s and %(count)s others|zero": "Uploading %(filename)s",
"Uploading %(filename)s and %(count)s others|one": "Uploading %(filename)s and %(count)s other",
diff --git a/src/i18n/strings/eo.json b/src/i18n/strings/eo.json
index bc19f3ba06..3c5384e3bf 100644
--- a/src/i18n/strings/eo.json
+++ b/src/i18n/strings/eo.json
@@ -1392,5 +1392,79 @@
"Okay": "Bone",
"Success!": "Sukceso!",
"Retry": "Reprovi",
- "Set up": "Agordi"
+ "Set up": "Agordi",
+ "A conference call could not be started because the integrations server is not available": "Grupa voko ne povis komenciĝi, ĉar la kuniga servilo estas neatingebla",
+ "Replying With Files": "Respondado kun dosieroj",
+ "At this time it is not possible to reply with a file. Would you like to upload this file without replying?": "Nun ne eblas respondi kun dosiero. Ĉu vi volas alŝuti la dosieron sen respondo?",
+ "The file '%(fileName)s' failed to upload.": "Malsukcesis alŝuti dosieron «%(fileName)s».",
+ "The server does not support the room version specified.": "La servilo ne subtenas la donitan ĉambran version.",
+ "Name or Matrix ID": "Nomo aŭ Matrix-identigilo",
+ "Email, name or Matrix ID": "Retpoŝtadreso, nomo, aŭ Matrix-identigilo",
+ "Upgrades a room to a new version": "Gradaltigas ĉambron al nova versio",
+ "Room upgrade confirmation": "Konfirmo de ĉambra gradaltigo",
+ "Upgrading a room can be destructive and isn't always necessary.": "Gradaltigo de ĉambro povas esti detrua kaj ne estas ĉiam necesa.",
+ "Room upgrades are usually recommended when a room version is considered unstable. Unstable room versions might have bugs, missing features, or security vulnerabilities.": "Gradaltigoj de ĉambroj estas kutime rekomendataj kiam ĉambra versio estas opiniata malstabila. Malstabilaj ĉambraj versioj povas kunhavi erarojn, mankojn de funkcioj, aŭ malsekuraĵojn.",
+ "Room upgrades usually only affect server-side processing of the room. If you're having problems with your Riot client, please file an issue with .": "Ĉambraj gradaltigoj efikas nur sur servil-flanka funkciado de la ĉambro. Se vi havas problemon kun via kliento (Riot), bonvolu raparti problemon per .",
+ "Warning: Upgrading a room will not automatically migrate room members to the new version of the room. We'll post a link to the new room in the old version of the room - room members will have to click this link to join the new room.": "Averto: Gradaltigo de ĉambro ne transmetos ĉiujn ĉambranojn al la nova versio de la ĉambro. Ni afiŝos ligilon al la nova ĉambro en la malnova versio de la ĉambro – ĉambranoj devos tien klaki por aliĝi al la nova ĉambro.",
+ "Please confirm that you'd like to go forward with upgrading this room from to .": "Bonvolu konfirmi, ke vi certe volas gradaltigi ĉi tiun ĉambron de al .",
+ "Upgrade": "Gradaltigi",
+ "Changes your display nickname in the current room only": "Ŝanĝas vian vidigan nomon nur en la nuna ĉambro",
+ "Changes your avatar in this current room only": "Ŝanĝas vian profilbildon nur en la nuna ĉambro",
+ "Gets or sets the room topic": "Ekhavas aŭ agordas la temon de la ĉambro",
+ "This room has no topic.": "Ĉi tiu ĉambro ne havas temon.",
+ "Sets the room name": "Agordas nomon de la ĉambro",
+ "Sends the given message coloured as a rainbow": "Sendas la mesaĝon ĉielarke kolorigitan",
+ "Sends the given emote coloured as a rainbow": "Sendas la mienon ĉielarke kolorigitan",
+ "%(senderDisplayName)s upgraded this room.": "%(senderDisplayName)s gradaltigis ĉi tiun ĉambron.",
+ "%(senderDisplayName)s made the room public to whoever knows the link.": "%(senderDisplayName)s publikigis la ĉambron al kiu ajn konas la ligilon.",
+ "%(senderDisplayName)s made the room invite only.": "%(senderDisplayName)s necesigis invitojn por aliĝoj al la ĉambro.",
+ "%(senderDisplayName)s changed the join rule to %(rule)s": "%(senderDisplayName)s ŝanĝis la aliĝan regulon al %(rule)s",
+ "%(senderDisplayName)s has allowed guests to join the room.": "%(senderDisplayName)s permesis al gastoj aliĝi al la ĉambro.",
+ "%(senderDisplayName)s has prevented guests from joining the room.": "%(senderDisplayName)s malpermesis al gastoj aliĝi al la ĉambro.",
+ "Unbans user with given ID": "Malforbaras uzanton kun la donita identigilo",
+ "Please supply a https:// or http:// widget URL": "Bonvolu doni URL-on de fenestraĵo kun https:// aŭ http://",
+ "%(senderDisplayName)s changed guest access to %(rule)s": "%(senderDisplayName)s ŝanĝis aliron de gastoj al %(rule)s",
+ "%(displayName)s is typing …": "%(displayName)s tajpas…",
+ "%(names)s and %(count)s others are typing …|other": "%(names)s kaj %(count)s aliaj tajpas…",
+ "%(names)s and %(count)s others are typing …|one": "%(names)s kaj unu alia tajpas…",
+ "%(names)s and %(lastPerson)s are typing …": "%(names)s kaj %(lastPerson)s tajpas…",
+ "Unrecognised address": "Nerekonita adreso",
+ "User %(userId)s is already in the room": "Uzanto %(userId)s jam enas la ĉambron",
+ "User %(user_id)s may or may not exist": "Uzanto %(user_id)s eble ne ekzistas",
+ "The user must be unbanned before they can be invited.": "Necesas malforbari ĉi tiun uzanton antaŭ ol ĝin inviti.",
+ "The user's homeserver does not support the version of the room.": "Hejmservilo de ĉi tiu uzanto ne subtenas la version de la ĉambro.",
+ "No need for symbols, digits, or uppercase letters": "Ne necesas simboloj, cirefoj, aŭ majuskloj",
+ "Render simple counters in room header": "Bildigi simplajn kalkulilojn en la ĉapo de la fenestro",
+ "Edit messages after they have been sent (refresh to apply changes)": "Redakti mesaĝojn senditajn (aktualigu por apliki ŝanĝojn)",
+ "React to messages with emoji (refresh to apply changes)": "Reagi al mesaĝoj per bildsignoj (aktualigu por apliki ŝanĝojn)",
+ "Enable Emoji suggestions while typing": "Ŝalti proponojn de bildsignoj dum tajpado",
+ "Show a placeholder for removed messages": "Meti kovrilon anstataŭ forigitajn mesaĝojn",
+ "Show join/leave messages (invites/kicks/bans unaffected)": "Montri mesaĝojn pri aliĝo/foriro (neteme pri invitoj/forpeloj/forbaroj)",
+ "Show avatar changes": "Montri ŝanĝojn de profilbildoj",
+ "Show display name changes": "Montri ŝanĝojn de vidigaj nomoj",
+ "Show read receipts sent by other users": "Montri legokonfirmojn senditajn de aliaj uzantoj",
+ "Show avatars in user and room mentions": "Montri profilbildojn en mencioj de uzantoj kaj ĉambroj",
+ "Enable big emoji in chat": "Ŝalti grandajn bildsignojn en babilejo",
+ "Send typing notifications": "Sendi sciigojn pri tajpado",
+ "Allow Peer-to-Peer for 1:1 calls": "Permesi samtavolan teĥnikon por duopaj vokoj",
+ "Prompt before sending invites to potentially invalid matrix IDs": "Averti antaŭ ol sendi invitojn al eble nevalidaj Matrix-identigiloj",
+ "Order rooms in the room list by most important first instead of most recent": "Ordigi ĉambrojn en listo de ĉambroj laŭ graveco anstataŭ freŝeco",
+ "Messages containing my username": "Mesaĝoj kun mia salutnomo",
+ "When rooms are upgraded": "Kiam ĉambroj gradaltiĝas",
+ "The other party cancelled the verification.": "La alia kontrolano nuligis la kontrolon.",
+ "You've successfully verified this user.": "Vi sukcese kontrolis ĉi tiun uzanton.",
+ "Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Sekuraj mesaĝoj kun ĉi tiu uzanto estas tutvoje ĉirfitaj kaj nelegeblaj al ceteruloj.",
+ "Verify this user by confirming the following emoji appear on their screen.": "Kontrolu ĉi tiun uzanton per konfirmo, ke la jenaj bildsignoj aperis sur ĝia ekrano.",
+ "Verify this user by confirming the following number appears on their screen.": "Kontrolu ĉu tiun uzanton per konfirmo, ke la jena numero aperis sur ĝia ekrano.",
+ "Unable to find a supported verification method.": "Ne povas trovi subtenatan metodon de kontrolo.",
+ "For maximum security, we recommend you do this in person or use another trusted means of communication.": "Por la plej bona sekureco, ni rekomendas fari ĉi tion persone, aŭ per alia, fidata komunikilo.",
+ "Santa": "Kristnaska viro",
+ "Thumbs up": "Dikfingro supren",
+ "Paperclip": "Paperkuntenilo",
+ "Pin": "Pinglo",
+ "Your homeserver does not support device management.": "Via hejmservilo ne subtenas administradon de aparatoj.",
+ "We've sent you an email to verify your address. Please follow the instructions there and then click the button below.": "Ni sendis al vi retleteron por konfirmi vian adreson. Bonvolu sekvi la tieajn intrukciojn kaj poste klaki al la butono sube.",
+ "Are you sure? You will lose your encrypted messages if your keys are not backed up properly.": "Ĉu vi certas? Vi perdos ĉiujn viajn ĉifritajn mesaĝojn, se viaj ŝlosiloj ne estas savkopiitaj.",
+ "Encrypted messages are secured with end-to-end encryption. Only you and the recipient(s) have the keys to read these messages.": "Ĉifritaj mesaĝoj estas sekurigitaj per tutvoja ĉifrado. Nur vi kaj la ricevonto(j) havas la ŝlosilojn necesajn por legado.",
+ "This device is backing up your keys. ": "Ĉi tiu aparato savkopias viajn ŝlosilojn. "
}
diff --git a/src/i18n/strings/fi.json b/src/i18n/strings/fi.json
index 515ff416c1..e5970f70ca 100644
--- a/src/i18n/strings/fi.json
+++ b/src/i18n/strings/fi.json
@@ -37,7 +37,7 @@
"Default Device": "Oletuslaite",
"Microphone": "Mikrofoni",
"Camera": "Kamera",
- "Advanced": "Kehittyneet",
+ "Advanced": "Edistynyt",
"Algorithm": "Algoritmi",
"Hide removed messages": "Piilota poistetut viestit",
"Always show message timestamps": "Näytä aina viestien aikaleimat",
@@ -70,7 +70,7 @@
"and %(count)s others...|one": "ja yksi muu...",
"Ban": "Anna porttikielto",
"Banned users": "Porttikiellon saanneet käyttäjät",
- "Bans user with given id": "Antaa porttikiellon käyttäjälle jolla on annettu tunniste",
+ "Bans user with given id": "Antaa porttikiellon tunnuksen mukaiselle käyttäjälle",
"Bulk Options": "Bulkkiasetukset",
"Changes your display nickname": "Muuttaa näyttönimesi",
"Changes colour scheme of current room": "Muuttaa tamänhetkisen huoneen väritystä",
@@ -175,7 +175,7 @@
"Incoming call from %(name)s": "Saapuva puhelu käyttäjältä %(name)s",
"Incoming video call from %(name)s": "Saapuva videopuhelu käyttäjältä %(name)s",
"Incoming voice call from %(name)s": "Saapuva äänipuhelu käyttäjältä %(name)s",
- "Incorrect username and/or password.": "Virheellinen käyttäjänimi ja/tai salasana.",
+ "Incorrect username and/or password.": "Virheellinen käyttäjätunnus ja/tai salasana.",
"Incorrect verification code": "Virheellinen varmennuskoodi",
"Integrations Error": "Integraatiovirhe",
"Interface Language": "Käyttöliittymän kieli",
@@ -185,13 +185,13 @@
"Invite new room members": "Kutsu lisää jäseniä huoneeseen",
"Invited": "Kutsuttu",
"Invites": "Kutsut",
- "Invites user with given id to current room": "Kutsuu annetun käyttäjätunnisteen mukaisen käyttäjän huoneeseen",
+ "Invites user with given id to current room": "Kutsuu tunnuksen mukaisen käyttäjän huoneeseen",
"Sign in with": "Tunnistus",
"Join Room": "Liity huoneeseen",
"Joins room with given alias": "Liittyy huoneeseen jolla on annettu alias",
"Jump to first unread message.": "Hyppää ensimmäiseen lukemattomaan viestiin.",
"Kick": "Poista huoneesta",
- "Kicks user with given id": "Poistaa käyttäjätunnisteen mukaisen käyttäjän huoneesta",
+ "Kicks user with given id": "Poistaa tunnuksen mukaisen käyttäjän huoneesta",
"Labs": "Laboratorio",
"Last seen": "Viimeksi nähty",
"Leave room": "Poistu huoneesta",
@@ -217,8 +217,8 @@
"not specified": "ei määritetty",
"(not supported by this browser)": "(ei tuettu tässä selaimessa)",
"": "",
- "AM": "AM",
- "PM": "PM",
+ "AM": "ap.",
+ "PM": "ip.",
"NOT verified": "EI varmennettu",
"NOTE: Apps are not end-to-end encrypted": "Huom: Ohjelmat eivät käytä osapuolten välistä salausta",
"No display name": "Ei näyttönimeä",
@@ -328,7 +328,7 @@
"Turn Markdown off": "Ota Markdown pois käytöstä",
"Turn Markdown on": "Ota Markdown käyttöön",
"%(senderName)s turned on end-to-end encryption (algorithm %(algorithm)s).": "%(senderName)s otti osapuolten välisen salauksen käyttöön (algoritmi %(algorithm)s).",
- "Username invalid: %(errMessage)s": "Virheellinen käyttäjänimi: %(errMessage)s",
+ "Username invalid: %(errMessage)s": "Käyttäjätunnus ei kelpaa: %(errMessage)s",
"Users": "Käyttäjät",
"Verification": "Varmennus",
"verified": "varmennettu",
@@ -370,13 +370,13 @@
"Your password has been reset": "Salasanasi on palautettu",
"You should not yet trust it to secure data": "Sinun ei vielä kannata luottaa siihen turvataksesi dataa",
"Your home server does not support device management.": "Kotipalvelimesi ei tue laitteiden hallintaa.",
- "Sun": "Su",
- "Mon": "Ma",
- "Tue": "Ti",
- "Wed": "Ke",
- "Thu": "To",
- "Fri": "Pe",
- "Sat": "La",
+ "Sun": "su",
+ "Mon": "ma",
+ "Tue": "ti",
+ "Wed": "ke",
+ "Thu": "to",
+ "Fri": "pe",
+ "Sat": "la",
"Set a display name:": "Aseta näyttönimi:",
"This server does not support authentication with a phone number.": "Tämä palvelin ei tue autentikointia puhelinnumeron avulla.",
"Missing password.": "Salasana puuttuu.",
@@ -502,7 +502,7 @@
"Usage": "Käyttö",
"Use compact timeline layout": "Käytä tiivistä aikajanaa",
"Use with caution": "Käytä varoen",
- "User ID": "Käyttäjätunniste",
+ "User ID": "Käyttäjätunnus",
"User Interface": "Käyttöliittymä",
"User name": "Käyttäjänimi",
"%(senderDisplayName)s changed the topic to \"%(topic)s\".": "%(senderDisplayName)s asetti aiheeksi \"%(topic)s\".",
@@ -520,7 +520,7 @@
"Server unavailable, overloaded, or something else went wrong.": "Palvelin on saavuttamattomissa, ylikuormitettu tai jotain muuta meni vikaan.",
"The email address linked to your account must be entered.": "Sinun pitää syöttää tiliisi liitetty sähköpostiosoite.",
"The visibility of existing history will be unchanged": "Olemassaolevan viestihistorian näkyvyys ei muutu",
- "To get started, please pick a username!": "Valitse käyttäjänimi aloittaaksesi!",
+ "To get started, please pick a username!": "Aloita valitsemalla käyttäjätunnus!",
"To use it, just wait for autocomplete results to load and tab through them.": "Käyttääksesi sitä odota vain automaattitäydennyksiä ja selaa niiden läpi.",
"To reset your password, enter the email address linked to your account": "Syötä tiliisi liitetty sähköpostiosoite uudelleenalustaaksesi salasanasi",
"Tried to load a specific point in this room's timeline, but you do not have permission to view the message in question.": "Aikajanan tietty hetki yritettiin ladata, mutta sinulla ei ole oikeutta nähdä kyseistä viestiä.",
@@ -538,18 +538,18 @@
"Your password was successfully changed. You will not receive push notifications on other devices until you log back in to them": "Salasanan muuttaminen onnistui. Et saa push-ilmoituksia muilla laitteilla ennen kuin kirjaudut niihin sisään",
"You seem to be in a call, are you sure you want to quit?": "Sinulla näyttää olevan puhelu kesken. Haluatko varmasti lopettaa?",
"You seem to be uploading files, are you sure you want to quit?": "Näytät lataavan tiedostoja. Oletko varma että haluat lopettaa?",
- "Jan": "tammikuu",
- "Feb": "helmikuu",
- "Mar": "maaliskuu",
- "Apr": "huhtikuu",
- "May": "toukokuu",
- "Jun": "kesäkuu",
- "Jul": "heinäkuu",
- "Aug": "elokuu",
- "Sep": "syyskuu",
- "Oct": "lokakuu",
- "Nov": "marraskuu",
- "Dec": "joulukuu",
+ "Jan": "tammi",
+ "Feb": "helmi",
+ "Mar": "maalis",
+ "Apr": "huhti",
+ "May": "touko",
+ "Jun": "kesä",
+ "Jul": "heinä",
+ "Aug": "elo",
+ "Sep": "syys",
+ "Oct": "loka",
+ "Nov": "marras",
+ "Dec": "joulu",
"User names may only contain letters, numbers, dots, hyphens and underscores.": "Käyttäjänimet voivat sisältää vain kirjaimia, numeroita, pisteitä, viivoja ja alaviivoja.",
"To continue, please enter your password.": "Ole hyvä ja syötä salasanasi jatkaaksesi.",
"Verifies a user, device, and pubkey tuple": "Varmentaa käyttäjän, laitteen ja julkisen avaimen kolmikon",
@@ -580,8 +580,8 @@
"Start chatting": "Aloita keskustelu",
"Start Chatting": "Aloita keskustelu",
"Click on the button below to start chatting!": "Paina nappia alla aloittaaksesi keskustelu!",
- "Username available": "Käyttäjänimi saatavissa",
- "Username not available": "Käyttäjänimi ei ole saatavissa",
+ "Username available": "Käyttäjätunnus saatavilla",
+ "Username not available": "Käyttäjätunnus ei ole saatavissa",
"Something went wrong!": "Jokin meni vikaan!",
"This will be your account name on the homeserver, or you can pick a different server.": "Tästä tulee tilisi nimi -kotipalvelimella, tai voit valita toisen palvelimen.",
"If you already have a Matrix account you can log in instead.": "Jos sinulla on jo Matrix-tili voit kirjautua.",
@@ -715,7 +715,7 @@
"An email has been sent to %(emailAddress)s": "Sähköpostia lähetetty osoitteeseen %(emailAddress)s",
"Please check your email to continue registration.": "Ole hyvä ja tarkista sähköpostisi jatkaaksesi.",
"A text message has been sent to %(msisdn)s": "Tekstiviesti lähetetty numeroon %(msisdn)s",
- "Username on %(hs)s": "Käyttäjänimi palvelimella %(hs)s",
+ "Username on %(hs)s": "Käyttäjätunnus palvelimella %(hs)s",
"Custom server": "Muu palvelin",
"Remove from community": "Poista yhteisöstä",
"Disinvite this user from community?": "Peruuta tämän käyttäjän kutsu yhteisöön?",
@@ -736,8 +736,8 @@
"%(nameList)s %(transitionList)s": "%(nameList)s %(transitionList)s",
"were unbanned %(count)s times|other": "porttikiellot poistettiin %(count)s kertaa",
"And %(count)s more...|other": "Ja %(count)s lisää...",
- "Matrix ID": "Matrix ID",
- "Matrix Room ID": "Matrix huonetunniste",
+ "Matrix ID": "Matrix-tunnus",
+ "Matrix Room ID": "Matrix-huonetunnus",
"email address": "sähköpostiosoite",
"Try using one of the following valid address types: %(validTypesList)s.": "Kokeile käyttää yhtä näistä kelvollisista osoitetyypeistä: %(validTypesList)s.",
"You have entered an invalid address.": "Olet syöttänyt virheellisen sähköpostiosoitteen.",
@@ -796,7 +796,7 @@
"Please note you are logging into the %(hs)s server, not matrix.org.": "Huomaa että olet kirjautumassa palvelimelle %(hs)s, etkä palvelimelle matrix.org.",
"Sign in to get started": "Kirjaudu aloittaksesi",
"Upload an avatar:": "Lataa profiilikuva:",
- "Deops user with given id": "Poistaa annetun tunnisteen omaavalta käyttäjältä ylläpito-oikeudet",
+ "Deops user with given id": "Poistaa tunnuksen mukaiselta käyttäjältä ylläpito-oikeudet",
"Ignores a user, hiding their messages from you": "Jättää käyttäjän huomioimatta, jotta hänen viestejään ei näytetä sinulle",
"Stops ignoring a user, showing their messages going forward": "Lopettaa käyttäjän huomiotta jättämisen, jotta hänen viestinsä näytetään sinulle",
"Notify the whole room": "Ilmoita koko huoneelle",
@@ -810,8 +810,8 @@
"Answer": "Vastaa",
"Call Timeout": "Puhelun aikakatkaisu",
"%(weekDayName)s %(time)s": "%(weekDayName)s %(time)s",
- "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(time)s",
- "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(time)s": "%(weekDayName)s %(day)s. %(monthName)s %(time)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s %(time)s": "%(weekDayName)s %(day)s. %(monthName)s %(fullYear)s %(time)s",
"Ignored user": "Estetyt käyttäjät",
"Unignored user": "Sallitut käyttäjät",
"%(userId)s from %(fromPowerLevel)s to %(toPowerLevel)s": "%(userId)s tasolta %(fromPowerLevel)s tasolle %(toPowerLevel)s",
@@ -1345,11 +1345,11 @@
"We encountered an error trying to restore your previous session.": "Törmäsimme ongelmaan yrittäessämme palauttaa edellistä istuntoasi.",
"If you have previously used a more recent version of Riot, your session may be incompatible with this version. Close this window and return to the more recent version.": "Jos olet aikaisemmin käyttänyt uudempaa versiota Riotista, istuntosi voi olla epäyhteensopiva tämän version kanssa. Sulje tämä ikkuna ja yritä uudemman version kanssa.",
"The platform you're on": "Alusta, jolla olet",
- "Whether or not you're logged in (we don't record your username)": "Riippumatta siitä oletko kirjautunut sisään (emme tallenna käyttäjätunnustasi)",
+ "Whether or not you're logged in (we don't record your username)": "Riippumatta siitä, oletko kirjautunut sisään (emme tallenna käyttäjätunnustasi)",
"Whether or not you're using the Richtext mode of the Rich Text Editor": "Riippumatta siitä, käytätkö muotoillun tekstin tilaa muotoilueditorissa",
"Your User Agent": "Selaintunnisteesi",
"The information being sent to us to help make Riot.im better includes:": "Tietoihin, jota lähetetään Riot.im:ään palvelun parantamiseksi, sisältyy:",
- "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Niissä kohdissa, missä tämä sivu sisältää yksilöivää tietoa, kuten huoneen, käyttäjän tai ryhmän ID:n, kyseinen tieto poistetaan ennen tiedon lähetystä palvelimelle.",
+ "Where this page includes identifiable information, such as a room, user or group ID, that data is removed before being sent to the server.": "Kohdissa, joissa tämä sivu sisältää yksilöivää tietoa, kuten huoneen, käyttäjän tai ryhmän tunnuksen, kyseinen tieto poistetaan ennen palvelimelle lähettämistä.",
"A conference call could not be started because the intgrations server is not available": "Konferenssipuhelua ei voitu aloittaa, koska integraatiopalvelin ei ole käytettävissä",
"A call is currently being placed!": "Puhelua ollaan aloittamassa!",
"A call is already in progress!": "Puhelu on jo meneillään!",
@@ -1406,7 +1406,7 @@
"Enable Community Filter Panel": "Ota käyttöön yhteisön suodatinpaneeli",
"Allow Peer-to-Peer for 1:1 calls": "Salli vertaisten väliset yhteydet kahdenkeskisissä puheluissa",
"Prompt before sending invites to potentially invalid matrix IDs": "Kysy varmistus ennen kutsujen lähettämistä mahdollisesti epäkelpoihin Matrix ID:hin",
- "Messages containing my username": "Viestit, jotka sisältävät käyttäjänimeni",
+ "Messages containing my username": "Viestit, jotka sisältävät käyttäjätunnukseni",
"Messages containing @room": "Viestit, jotka sisältävät sanan ”@room”",
"Secure messages with this user are end-to-end encrypted and not able to be read by third parties.": "Turvalliset viestit tämän käyttäjän kanssa ovat salattuja päästä päähän, eivätkä kolmannet osapuolet voi lukea niitä.",
"Thumbs up": "Peukut ylös",
@@ -1438,7 +1438,7 @@
"For help with using Riot, click here.": "Saadaksesi apua Riotin käyttämisessä, klikkaa tästä.",
"For help with using Riot, click here or start a chat with our bot using the button below.": "Saadaksesi apua Riotin käytössä, klikkaa tästä tai aloita keskustelu bottimme kanssa alla olevasta painikkeesta.",
"Bug reporting": "Virheiden raportointi",
- "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Jos olet ilmoittanut virheestä Githubin kautta, debug-lokit voivat auttaa meitä ongelman jäljittämisessä. Debug-lokit sisältävät ohjelman käyttödataa sisältäen käyttäjätunnuksen, vierailemiesi huoneiden tai ryhmien ID:t tai aliakset ja muiden käyttäjien käyttäjätunnukset. Debug-lokit eivät sisällä viestejä.",
+ "If you've submitted a bug via GitHub, debug logs can help us track down the problem. Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Jos olet ilmoittanut virheestä Githubin kautta, debug-lokit voivat auttaa meitä ongelman jäljittämisessä. Debug-lokit sisältävät sovelluksen käyttödataa sisältäen käyttäjätunnuksen, vierailemiesi huoneiden tai ryhmien tunnukset tai aliakset ja muiden käyttäjien käyttäjätunnukset. Debug-lokit eivät sisällä viestejä.",
"Autocomplete delay (ms)": "Automaattisen täydennyksen viive (ms)",
"To link to this room, please add an alias.": "Lisää alias linkittääksesi tähän huoneeseen.",
"Ignored users": "Hiljennetyt käyttäjät",
@@ -1465,7 +1465,7 @@
"For maximum security, we recommend you do this in person or use another trusted means of communication.": "Parhaan turvallisuuden takaamiseksi suosittelemme, että teet tämän kasvotusten tai muun luotetun viestintäkeinon avulla.",
"Scissors": "Sakset",
"Which officially provided instance you are using, if any": "Mitä virallisesti saatavilla olevaa instanssia käytät, jos mitään",
- "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s, %(day)s %(monthName)s %(fullYear)s",
+ "%(weekDayName)s, %(monthName)s %(day)s %(fullYear)s": "%(weekDayName)s %(day)s. %(monthName)s %(fullYear)s",
"Missing roomId.": "roomId puuttuu.",
"Forces the current outbound group session in an encrypted room to be discarded": "Pakottaa hylkäämään nykyisen ulospäin suuntautuvan ryhmäistunnon salatussa huoneessa",
"%(senderDisplayName)s enabled flair for %(groups)s in this room.": "%(senderDisplayName)s otti käyttöön tyylin ryhmille %(groups)s tässä huoneessa.",
@@ -1558,7 +1558,7 @@
"Unable to load event that was replied to, it either does not exist or you do not have permission to view it.": "Tapahtuman, johon oli vastattu, lataaminen epäonnistui. Se joko ei ole olemassa tai sinulla ei ole oikeutta katsoa sitä.",
"The following users may not exist": "Seuraavat käyttäjät eivät välttämättä ole olemassa",
"Unable to find profiles for the Matrix IDs listed below - would you like to invite them anyway?": "Alla luetelluille Matrix ID:ille ei löytynyt profiileja. Haluaisitko kutsua ne siitä huolimatta?",
- "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Debug-lokit sisältävät ohjelman käyttödataa, kuten käyttäjätunnuksesi, huoneiden ja ryhmien ID:t tai aliakset, joissa olet vieraillut sekä muiden käyttäjien käyttäjätunnukset. Ne eivät sisällä viestejä.",
+ "Debug logs contain application usage data including your username, the IDs or aliases of the rooms or groups you have visited and the usernames of other users. They do not contain messages.": "Debug-lokit sisältävät sovelluksen käyttödataa, kuten käyttäjätunnuksesi, vierailemiesi huoneiden ja ryhmien tunnukset tai aliakset, sekä muiden käyttäjien käyttäjätunnukset. Ne eivät sisällä viestejä.",
"Before submitting logs, you must create a GitHub issue to describe your problem.": "Ennen lokien lähettämistä sinun täytyy luoda Githubiin issue (kysymys/ongelma), joka sisältää kuvauksen ongelmastasi.",
"What GitHub issue are these logs for?": "Mihin Github-issueen nämä lokit liittyvät?",
"Notes:": "Huomiot:",
@@ -1566,7 +1566,7 @@
"Community IDs cannot be empty.": "Yhteisön ID:t eivät voi olla tyhjänä.",
"To avoid losing your chat history, you must export your room keys before logging out. You will need to go back to the newer version of Riot to do this": "Jotta et menetä keskusteluhistoriaasi, sinun täytyy tallentaa huoneen avaimet ennen kuin kirjaudut ulos. Joudut käyttämään uudempaa Riotin versiota tätä varten",
"You've previously used a newer version of Riot on %(host)s. To use this version again with end to end encryption, you will need to sign out and back in again. ": "Olet aikaisemmin käyttänyt uudempaa Riotin versiota koneella %(host)s. Jotta voit käyttää tätä versiota osapuolten välisellä salauksella, sinun täytyy kirjautua ulos ja kirjautua takaisin sisään. ",
- "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Tämä tekee tilistäsi lopullisesti käyttökelvottoman. Et voi kirjautua sisään, eikä kukaan voi rekisteröidä tunnusta samalla käyttäjä-ID:llä. Tunnuksesi poistuu kaikista huoneista, joihin se on liittynyt, ja tilisi tiedot poistetaan identiteettipalvelimelta. Tämä toimenpide on lopullinen eikä sitä voi kumota.",
+ "This will make your account permanently unusable. You will not be able to log in, and no one will be able to re-register the same user ID. This will cause your account to leave all rooms it is participating in, and it will remove your account details from your identity server. This action is irreversible.": "Tämä tekee tilistäsi lopullisesti käyttökelvottoman. Et voi kirjautua sisään, eikä kukaan voi rekisteröidä samaa käyttäjätunnusta. Tilisi poistuu kaikista huoneista, joihin se on liittynyt, ja tilisi tiedot poistetaan identiteettipalvelimeltasi. Tämä toimenpidettä ei voi kumota.",
"Deactivating your account does not by default cause us to forget messages you have sent. If you would like us to forget your messages, please tick the box below.": "Tilisi poistaminen käytöstä ei oletuksena saa meitä unohtamaan lähettämiäsi viestejä. Jos haluaisit meidän unohtavan viestisi, rastita alla oleva ruutu.",
"Message visibility in Matrix is similar to email. Our forgetting your messages means that messages you have sent will not be shared with any new or unregistered users, but registered users who already have access to these messages will still have access to their copy.": "Viestien näkyvyys Matrixissa on samantapainen kuin sähköpostissa. Vaikka se, että unohdamme viestisi, tarkoittaa, ettei viestejäsi jaeta enää uusille tai rekisteröitymättömille käyttäjille, käyttäjät, jotka ovat jo saaneet viestisi pystyvät lukemaan jatkossakin omaa kopiotaan viesteistäsi.",
"Please forget all messages I have sent when my account is deactivated (Warning: this will cause future users to see an incomplete view of conversations)": "Unohda kaikki viestit, jotka olen lähettänyt, kun tilini on poistettu käytöstä (b>Varoitus: tästä seuraa, että tulevat käyttäjät näkevät epätäydellisen version keskusteluista)",
@@ -1627,7 +1627,7 @@
"Use an email address to recover your account. Other users can invite you to rooms using your contact details.": "Käytä sähköpostia tilisi palauttamiseen. Muut käyttäjät voivat kutsua sinut huoneisiin yhteystiedoillasi.",
"Other servers": "Muut palvelimet",
"Enter custom server URLs What does this mean?": "Syötä mukautettujen palvelinten osoitteet. Mitä tämä tarkoittaa?",
- "Free": "Vapaa",
+ "Free": "Ilmainen",
"Join millions for free on the largest public server": "Liity ilmaiseksi miljoonien joukkoon suurimmalla julkisella palvelimella",
"Premium": "Premium",
"Premium hosting for organisations Learn more": "Premium-ylläpitoa organisaatioille. Lue lisää",
@@ -1713,7 +1713,7 @@
"Send debug logs and reload Riot": "Lähetä debug-lokit ja päivitä Riot",
"Reload Riot without sending logs": "Päivitä Riot lähettämättä lokeja",
"A widget would like to verify your identity": "Sovelma haluaisi vahvistaa identiteettisi",
- "A widget located at %(widgetUrl)s would like to verify your identity. By allowing this, the widget will be able to verify your user ID, but not perform actions as you.": "Sovelma osoitteessa %(widgetUrl)s haluaisi vahvistaa identiteettisi. Jos sallit tämän, sovelma pystyy vahvistamaan käyttäjä-ID:si, mutta ei voi toimia nimelläsi.",
+ "A widget located at %(widgetUrl)s would like to verify your identity. By allowing this, the widget will be able to verify your user ID, but not perform actions as you.": "Sovelma osoitteessa %(widgetUrl)s haluaisi todentaa henkilöllisyytesi. Jos sallit tämän, sovelma pystyy todentamaan käyttäjätunnuksesi, muttei voi toimia nimissäsi.",
"Remember my selection for this widget": "Muista valintani tälle sovelmalle",
"Deny": "Kiellä",
"Data from an older version of Riot has been detected. This will have caused end-to-end cryptography to malfunction in the older version. End-to-end encrypted messages exchanged recently whilst using the older version may not be decryptable in this version. This may also cause messages exchanged with this version to fail. If you experience problems, log out and back in again. To retain message history, export and re-import your keys.": "Tunnistimme dataa, joka on lähtöisin vanhasta Riotin versiosta. Tämä aiheuttaa toimintahäiriöitä osapuolten välisessä salauksessa vanhassa versiossa. Viestejä, jotka ovat salattu osapuolten välisellä salauksella, ei välttämättä voida purkaa tällä versiolla. Tämä voi myös aiheuttaa epäonnistumisia viestien välityksessä tämän version kanssa. Jos kohtaat ongelmia, kirjaudu ulos ja takaisin sisään. Säilyttääksesi viestihistoriasi, tallenna salausavaimesi ja tuo ne takaisin kirjauduttuasi takaisin sisälle.",
@@ -1830,12 +1830,25 @@
"Enter phone number (required on this homeserver)": "Syötä puhelinnumero (vaaditaan tällä kotipalvelimella)",
"Doesn't look like a valid phone number": "Ei näytä kelvolliselta puhelinnumerolta",
"Use letters, numbers, dashes and underscores only": "Käytä vain kirjaimia, numeroita, viivoja ja alaviivoja",
- "Enter username": "Syötä käyttäjänimi",
+ "Enter username": "Syötä käyttäjätunnus",
"Some characters not allowed": "Osaa merkeistä ei sallita",
"Use an email address to recover your account.": "Palauta tilisi sähköpostiosoitteen avulla.",
"Other users can invite you to rooms using your contact details.": "Muut käyttäjät voivat kutsua sinut huoneisiin yhteystietojesi avulla.",
"Error loading Riot": "Virhe Riotin lataamisessa",
"If this is unexpected, please contact your system administrator or technical support representative.": "Jos et odottanut tätä, ota yhteyttä järjestelmänvalvojaan tai tekniseen tukeen.",
"Homeserver URL does not appear to be a valid Matrix homeserver": "Kotipalvelimen osoite ei näytä olevan kelvollinen Matrix-kotipalvelin",
- "Identity server URL does not appear to be a valid identity server": "Identiteettipalvelimen osoite ei näytä olevan kelvollinen identiteettipalvelin"
+ "Identity server URL does not appear to be a valid identity server": "Identiteettipalvelimen osoite ei näytä olevan kelvollinen identiteettipalvelin",
+ "A conference call could not be started because the integrations server is not available": "Konferenssipuhelua ei voitu aloittaa, koska integraatiopalvelin ei ole käytettävissä",
+ "When rooms are upgraded": "Kun huoneet päivitetään",
+ "Connect this device to key backup before signing out to avoid losing any keys that may only be on this device.": "Yhdistä tämä laite avainten varmuuskopiointiin ennen kuin kirjaudut ulos, jotta et menetä mahdollisia vain tällä laitteella olevia avaimia.",
+ "Rejecting invite …": "Hylätään kutsua …",
+ "You were kicked from %(roomName)s by %(memberName)s": "%(memberName)s poisti sinut huoneesta %(roomName)s",
+ "Edited at %(date)s.": "Muokattu %(date)s.",
+ "edited": "muokattu",
+ "To help us prevent this in future, please send us logs.": "Voit auttaa meitä estämään tämän toistumisen lähettämällä meille lokeja.",
+ "Name or Matrix ID": "Nimi tai Matrix-tunnus",
+ "Email, name or Matrix ID": "Sähköposti, nimi tai Matrix-tunnus",
+ "Edited at %(date)s": "Muokattu %(date)s",
+ "This file is too large to upload. The file size limit is %(limit)s but this file is %(sizeOfThisFile)s.": "Tiedosto on liian iso ladattavaksi. Tiedostojen kokoraja on %(limit)s mutta tämä tiedosto on %(sizeOfThisFile)s.",
+ "Unbans user with given ID": "Poistaa porttikiellon tunnuksen mukaiselta käyttäjältä"
}
diff --git a/src/i18n/strings/fr.json b/src/i18n/strings/fr.json
index 4da12b701d..a23ef4372a 100644
--- a/src/i18n/strings/fr.json
+++ b/src/i18n/strings/fr.json
@@ -198,7 +198,7 @@
"No devices with registered encryption keys": "Pas d’appareil avec des clés de chiffrement enregistrées",
"No more results": "Fin des résultats",
"No results": "Pas de résultat",
- "unknown error code": "Code d'erreur inconnu",
+ "unknown error code": "code d’erreur inconnu",
"OK": "OK",
"Once encryption is enabled for a room it cannot be turned off again (for now)": "Une fois le chiffrement activé dans un salon il ne peut pas être désactivé (pour le moment)",
"Only people who have been invited": "Seules les personnes ayant été invitées",
@@ -313,7 +313,7 @@
"Unknown room %(roomId)s": "Salon inconnu %(roomId)s",
"Unmute": "Activer le son",
"Upload avatar": "Télécharger une photo de profil",
- "Upload Failed": "Erreur lors de l'envoi",
+ "Upload Failed": "Échec de l’envoi",
"Upload Files": "Télécharger les fichiers",
"Upload file": "Envoyer un fichier",
"Usage": "Utilisation",
@@ -422,9 +422,9 @@
"You must join the room to see its files": "Vous devez rejoindre le salon pour voir ses fichiers",
"Reject all %(invitedRooms)s invites": "Rejeter la totalité des %(invitedRooms)s invitations",
"Start new chat": "Démarrer une nouvelle discussion",
- "Failed to invite": "Echec de l'invitation",
- "Failed to invite user": "Echec lors de l'invitation de l'utilisateur",
- "Failed to invite the following users to the %(roomName)s room:": "Echec lors de l’invitation des utilisateurs suivants dans le salon %(roomName)s :",
+ "Failed to invite": "Échec de l’invitation",
+ "Failed to invite user": "Échec lors de l'invitation de l'utilisateur",
+ "Failed to invite the following users to the %(roomName)s room:": "Échec de l’invitation des utilisateurs suivants dans le salon %(roomName)s :",
"Confirm Removal": "Confirmer la suppression",
"Are you sure you wish to remove (delete) this event? Note that if you delete a room name or topic change, it could undo the change.": "Voulez-vous vraiment supprimer cet événement ? Notez que si vous supprimez le changement du nom ou du sujet d’un salon, il est possible que ce changement soit annulé.",
"Unknown error": "Erreur inconnue",
@@ -641,7 +641,7 @@
"Revoke widget access": "Révoquer les accès du widget",
"Sets the room topic": "Défini le sujet du salon",
"To get started, please pick a username!": "Pour commencer, choisissez un nom d'utilisateur !",
- "Unable to create widget.": "Impossible de créer un widget.",
+ "Unable to create widget.": "Impossible de créer le widget.",
"Unbans user with given id": "Révoque le bannissement de l'utilisateur à partir de son identifiant",
"You are not in this room.": "Vous n'êtes pas dans ce salon.",
"You do not have permission to do that in this room.": "Vous n'avez pas la permission d'effectuer cette action dans ce salon.",
@@ -716,7 +716,7 @@
"%(names)s and %(count)s others are typing|other": "%(names)s et %(count)s autres écrivent",
"Jump to read receipt": "Aller à l'accusé de lecture",
"World readable": "Lisible publiquement",
- "Guests can join": "Les invités peuvent rejoindre le salon",
+ "Guests can join": "Accessible aux invités",
"To invite users into the room, you must be a": "Pour inviter des utilisateurs dans le salon, vous devez être un(e)",
"To configure the room, you must be a": "Pour configurer le salon, vous devez être un(e)",
"To kick users, you must be a": "Pour expulser des utilisateurs, vous devez être",
@@ -1019,7 +1019,7 @@
"Cancel Sending": "Annuler l'envoi",
"This Room": "Ce salon",
"The Home Server may be too old to support third party networks": "Le serveur d'accueil semble trop ancien pour supporter des réseaux tiers",
- "Noisy": "Bruyant",
+ "Noisy": "Sonore",
"Room not found": "Salon non trouvé",
"Messages containing my display name": "Messages contenant mon nom affiché",
"Messages in one-to-one chats": "Messages dans les discussions directes",
@@ -1892,5 +1892,86 @@
"Upload %(count)s other files|other": "Envoyer %(count)s autres fichiers",
"Upload %(count)s other files|one": "Envoyer %(count)s autre fichier",
"Cancel All": "Tout annuler",
- "Upload Error": "Erreur d’envoi"
+ "Upload Error": "Erreur d’envoi",
+ "A conference call could not be started because the integrations server is not available": "L’appel en téléconférence n’a pas pu être lancé car les intégrations du serveur ne sont pas disponibles",
+ "The server does not support the room version specified.": "Le serveur ne prend pas en charge la version de salon spécifiée.",
+ "Name or Matrix ID": "Nom ou identifiant Matrix",
+ "Email, name or Matrix ID": "E-mail, nom ou identifiant Matrix",
+ "Please confirm that you'd like to go forward with upgrading this room from to .": "Veuillez confirmer la mise à niveau de ce salon de à .",
+ "Changes your avatar in this current room only": "Change votre avatar seulement dans le salon actuel",
+ "Unbans user with given ID": "Révoque le bannissement de l’utilisateur ayant l’identifiant fourni",
+ "Sends the given message coloured as a rainbow": "Envoie le message coloré aux couleurs de l’arc-en-ciel",
+ "Sends the given emote coloured as a rainbow": "Envoie l’émoji coloré aux couleurs de l’arc-en-ciel",
+ "The user's homeserver does not support the version of the room.": "Le serveur d’accueil de l’utilisateur ne prend pas en charge la version de ce salon.",
+ "Edit messages after they have been sent (refresh to apply changes)": "Éditer les messages après leur envoi (actualiser pour appliquer les changements)",
+ "React to messages with emoji (refresh to apply changes)": "Réagir aux messages avec des émojis (actualiser pour appliquer les changements)",
+ "When rooms are upgraded": "Quand les salons sont mis à niveau",
+ "This device is not backing up your keys, but you do have an existing backup you can restore from and add to going forward.": "Cet appareil ne sauvegarde pas vos clés, mais vous avez une sauvegarde existante que vous pouvez restaurer et joindre.",
+ "Connect this device to key backup before signing out to avoid losing any keys that may only be on this device.": "Connecter cet appareil à la sauvegarde de clés avant de vous déconnecter pour éviter de perdre des clés qui pourraient n’être présentes que sur cet appareil.",
+ "Connect this device to Key Backup": "Connecter cet appareil à la sauvegarde de clés",
+ "Backup has an invalid signature from this device": "La sauvegarde a une signature invalide depuis cet appareil",
+ "this room": "ce salon",
+ "View older messages in %(roomName)s.": "Voir les messages plus anciens dans %(roomName)s.",
+ "Joining room …": "Inscription au salon…",
+ "Loading …": "Chargement…",
+ "Rejecting invite …": "Rejet de l’invitation…",
+ "Join the conversation with an account": "Rejoindre la conversation avec un compte",
+ "Sign Up": "S’inscrire",
+ "Sign In": "Se connecter",
+ "You were kicked from %(roomName)s by %(memberName)s": "Vous avez été expulsé(e) de %(roomName)s par %(memberName)s",
+ "Reason: %(reason)s": "Motif : %(reason)s",
+ "Forget this room": "Oublier ce salon",
+ "Re-join": "Revenir",
+ "You were banned from %(roomName)s by %(memberName)s": "Vous avez été banni(e) de %(roomName)s par %(memberName)s",
+ "Something went wrong with your invite to %(roomName)s": "Une erreur est survenue avec votre invitation à %(roomName)s",
+ "%(errcode)s was returned while trying to valide your invite. You could try to pass this information on to a room admin.": "%(errcode)s a été retourné en essayant de valider votre invitation. Vous pouvez essayer de transmettre cette information à l’administrateur du salon.",
+ "You can only join it with a working invite.": "Vous ne pouvez le rejoindre qu’avec une invitation fonctionnelle.",
+ "You can still join it because this is a public room.": "Vous pouvez quand même le rejoindre car c’est un salon public.",
+ "Join the discussion": "Rejoindre la discussion",
+ "Try to join anyway": "Essayer de le rejoindre quand même",
+ "This invite to %(roomName)s wasn't sent to your account": "Cette invitation à %(roomName)s n’a pas été envoyée à votre compte",
+ "Sign in with a different account, ask for another invite, or add the e-mail address %(email)s to this account.": "Connectez-vous avec un autre compte, demandez une autre invitation ou ajoutez l’adresse e-mail %(email)s à ce compte.",
+ "Do you want to chat with %(user)s?": "Voulez-vous discuter avec %(user)s ?",
+ "Do you want to join %(roomName)s?": "Voulez-vous rejoindre %(roomName)s ?",
+ " invited you": " vous a invité(e)",
+ "You're previewing %(roomName)s. Want to join it?": "Ceci est un aperçu de %(roomName)s. Voulez-vous le rejoindre ?",
+ "%(roomName)s can't be previewed. Do you want to join it?": "Vous ne pouvez pas avoir d’aperçu de %(roomName)s. Voulez-vous le rejoindre ?",
+ "This room doesn't exist. Are you sure you're at the right place?": "Ce salon n’existe pas. Êtes-vous vraiment au bon endroit ?",
+ "Try again later, or ask a room admin to check if you have access.": "Réessayez plus tard ou demandez à l’administrateur du salon si vous y avez accès.",
+ "%(errcode)s was returned while trying to access the room. If you think you're seeing this message in error, please submit a bug report.": "%(errcode)s a été retourné en essayant d’accéder au salon. Si vous pensez que vous ne devriez pas voir ce message, veuillez soumettre un rapport d’anomalie.",
+ "This room has already been upgraded.": "Ce salon a déjà été mis à niveau.",
+ "Agree or Disagree": "Accepter ou refuser",
+ "Like or Dislike": "Aimer ou ne pas aimer",
+ "reacted with %(shortName)s": "ont réagi avec %(shortName)s",
+ "Edited at %(date)s.": "Édité à %(date)s.",
+ "edited": "édité",
+ "Rotate Left": "Tourner à gauche",
+ "Rotate Right": "Tourner à droite",
+ "View Servers in Room": "Voir les serveurs dans le salon",
+ "Use an email address to recover your account": "Utiliser une adresse e-mail pour récupérer votre compte",
+ "Enter email address (required on this homeserver)": "Saisir l’adresse e-mail (obligatoire sur ce serveur d’accueil)",
+ "Doesn't look like a valid email address": "Cela ne ressemble pas a une adresse e-mail valide",
+ "Enter password": "Saisir le mot de passe",
+ "Password is allowed, but unsafe": "Ce mot de passe est autorisé, mais peu sûr",
+ "Nice, strong password!": "Bien joué, un mot de passe robuste !",
+ "Passwords don't match": "Les mots de passe ne correspondent pas",
+ "Other users can invite you to rooms using your contact details": "D’autres utilisateurs peuvent vous inviter à des salons grâce à vos informations de contact",
+ "Enter phone number (required on this homeserver)": "Saisir le numéro de téléphone (obligatoire sur ce serveur d’accueil)",
+ "Doesn't look like a valid phone number": "Cela ne ressemble pas à un numéro de téléphone valide",
+ "Use letters, numbers, dashes and underscores only": "Utilisez uniquement des lettres, chiffres, traits d’union et tirets bas",
+ "Enter username": "Saisir le nom d’utilisateur",
+ "Some characters not allowed": "Certains caractères ne sont pas autorisés",
+ "Use an email address to recover your account.": "Utilisez une adresse e-mail pour récupérer votre compte.",
+ "Other users can invite you to rooms using your contact details.": "D’autre utilisateurs peuvent vous inviter à des salons en utilisant vos informations de contact.",
+ "Error loading Riot": "Erreur lors du chargement de Riot",
+ "If this is unexpected, please contact your system administrator or technical support representative.": "Si cela est inattendu, veuillez contacter votre administrateur système ou un représentant du support technique.",
+ "Failed to get autodiscovery configuration from server": "Échec de la découverte automatique de la configuration depuis le serveur",
+ "Invalid base_url for m.homeserver": "base_url pour m.homeserver non valide",
+ "Homeserver URL does not appear to be a valid Matrix homeserver": "L’URL du serveur d’accueil ne semble pas être un serveur d’accueil Matrix valide",
+ "Invalid base_url for m.identity_server": "base_url pour m.identity_server non valide",
+ "Identity server URL does not appear to be a valid identity server": "L’URL du serveur d’identité ne semble pas être un serveur d’identité valide",
+ "Edited at %(date)s": "Édité à %(date)s",
+ "Show hidden events in timeline": "Afficher les évènements cachés dans l’historique",
+ "Your profile": "Votre profil",
+ "Add room": "Ajouter un salon"
}
diff --git a/src/i18n/strings/hu.json b/src/i18n/strings/hu.json
index c758badebb..45f219f1f7 100644
--- a/src/i18n/strings/hu.json
+++ b/src/i18n/strings/hu.json
@@ -1962,5 +1962,16 @@
"Invalid base_url for m.homeserver": "Hibás base_url az m.homeserver -hez",
"Homeserver URL does not appear to be a valid Matrix homeserver": "A matrix URL nem tűnik érvényesnek",
"Invalid base_url for m.identity_server": "Érvénytelen base_url az m.identity_server -hez",
- "Identity server URL does not appear to be a valid identity server": "Az Azonosító szerver URL nem tűnik érvényesnek"
+ "Identity server URL does not appear to be a valid identity server": "Az Azonosító szerver URL nem tűnik érvényesnek",
+ "A conference call could not be started because the integrations server is not available": "A konferencia hívást nem lehet elkezdeni mert az integrációs szerver nem érhető el",
+ "Name or Matrix ID": "Név vagy Matrix azon.",
+ "Email, name or Matrix ID": "E-mail, név vagy Matrix azon.",
+ "Unbans user with given ID": "Visszaengedi a megadott azonosítójú felhasználót",
+ "reacted with %(shortName)s": "ezzel reagált: %(shortName)s",
+ "Edited at %(date)s.": "Szerkesztve ekkor: %(date)s.",
+ "edited": "szerkesztve",
+ "Edited at %(date)s": "Szerkesztve: %(date)s",
+ "Show hidden events in timeline": "Rejtett események megmutatása az idővonalon",
+ "Add room": "Szoba hozzáadása",
+ "Your profile": "Profilod"
}
diff --git a/src/i18n/strings/lv.json b/src/i18n/strings/lv.json
index 09182ed776..efd66b8f0e 100644
--- a/src/i18n/strings/lv.json
+++ b/src/i18n/strings/lv.json
@@ -1126,5 +1126,10 @@
"Collapse panel": "Sakļaut (saritināt) paneli",
"With your current browser, the look and feel of the application may be completely incorrect, and some or all features may not function. If you want to try it anyway you can continue, but you are on your own in terms of any issues you may encounter!": "Tavā pašreizējā pārlūkā aplikācijas izskats un uzvedība var būt pilnīgi neatbilstoša, kā arī dažas no visām funkcijām var nedarboties. Ja vēlies turpināt izmantot šo pārlūku, Tu vari arī turpināt, apzinoties, ka šajā gadījumā esi viens/a ar iespējamo problēmu!",
"Checking for an update...": "Lūkojos pēc aktualizācijas...",
- "There are advanced notifications which are not shown here": "Pastāv papildus paziņojumi, kuri šeit netiek rādīti"
+ "There are advanced notifications which are not shown here": "Pastāv papildus paziņojumi, kuri šeit netiek rādīti",
+ "e.g. %(exampleValue)s": "piemēram %(exampleValue)s",
+ "e.g. ": "piemēram ",
+ "Your device resolution": "Tavas iekārtas izšķirtspēja",
+ "Sign In": "Ienākt",
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Varat arī iestatīt pielāgotu identitātes serveri, bet jūs nevarēsiet uzaicināt lietotājus izmantojot e-pasta adresi, kā arī tikt uzaicināts pēc e-pasta adreses."
}
diff --git a/src/i18n/strings/pl.json b/src/i18n/strings/pl.json
index 840595c5f7..0e7eabb73f 100644
--- a/src/i18n/strings/pl.json
+++ b/src/i18n/strings/pl.json
@@ -128,7 +128,7 @@
"Are you sure you want to reject the invitation?": "Czy na pewno chcesz odrzucić zaproszenie?",
"Are you sure you want to upload the following files?": "Czy na pewno chcesz przesłać następujące pliki?",
"Autoplay GIFs and videos": "Automatycznie odtwarzaj GIFy i filmiki",
- "%(senderName)s banned %(targetName)s.": "%(senderName)s zbanował %(targetName)s.",
+ "%(senderName)s banned %(targetName)s.": "%(senderName)s zbanował(a) %(targetName)s.",
"Ban": "Zbanuj",
"Bans user with given id": "Blokuje użytkownika o podanym ID",
"Blacklisted": "Umieszczono na czarnej liście",
@@ -456,7 +456,7 @@
"Unable to create widget.": "Nie można utworzyć widżetu.",
"Unable to remove contact information": "Nie można usunąć informacji kontaktowych",
"Unable to verify email address.": "Weryfikacja adresu e-mail nie powiodła się.",
- "%(senderName)s unbanned %(targetName)s.": "%(senderName)s odblokował/a %(targetName)s.",
+ "%(senderName)s unbanned %(targetName)s.": "%(senderName)s odblokował(a) %(targetName)s.",
"Unable to capture screen": "Nie można zrobić zrzutu ekranu",
"Unable to enable Notifications": "Nie można włączyć powiadomień",
"Unable to load device list": "Nie można załadować listy urządzeń",
@@ -1337,5 +1337,103 @@
"Show read receipts": "Wyświetl potwierdzenia odczytu",
"Send typing notifications": "Wyślij powiadomienia o pisaniu",
"I don't want my encrypted messages": "Nie chcę moich zaszyfrowanych wiadomości",
- "You'll lose access to your encrypted messages": "Utracisz dostęp do zaszyfrowanych wiadomości"
+ "You'll lose access to your encrypted messages": "Utracisz dostęp do zaszyfrowanych wiadomości",
+ "Verified!": "Zweryfikowano!",
+ "Dog": "Pies",
+ "Cat": "Kot",
+ "Lion": "Lew",
+ "Horse": "Koń",
+ "Unicorn": "Jednorożec",
+ "Pig": "Świnia",
+ "Elephant": "Słoń",
+ "Rabbit": "Królik",
+ "Panda": "Panda",
+ "Rooster": "Kogut",
+ "Penguin": "Pingwin",
+ "Turtle": "Żółw",
+ "Fish": "Ryba",
+ "Octopus": "Ośmiornica",
+ "Butterfly": "Motyl",
+ "Flower": "Kwiat",
+ "Tree": "Drzewo",
+ "Cactus": "Kaktus",
+ "Mushroom": "Grzyb",
+ "Moon": "Księżyc",
+ "Cloud": "Chmura",
+ "Fire": "Ogień",
+ "Banana": "Banan",
+ "Apple": "Jabłko",
+ "Strawberry": "Truskawka",
+ "Corn": "Kukurydza",
+ "Pizza": "Pizza",
+ "Cake": "Ciasto",
+ "Heart": "Serce",
+ "Robot": "Robot",
+ "Hat": "Kapelusz",
+ "Glasses": "Okulary",
+ "Umbrella": "Parasol",
+ "Hourglass": "Klepsydra",
+ "Clock": "Zegar",
+ "Light bulb": "Żarówka",
+ "Book": "Książka",
+ "Pencil": "Ołówek",
+ "Paperclip": "Spinacz",
+ "Scissors": "Nożyczki",
+ "Padlock": "Kłódka",
+ "Key": "Klucz",
+ "Telephone": "Telefon",
+ "Flag": "Flaga",
+ "Train": "Pociąg",
+ "Bicycle": "Rower",
+ "Aeroplane": "Samolot",
+ "Rocket": "Rakieta",
+ "Trophy": "Trofeum",
+ "Guitar": "Gitara",
+ "Trumpet": "Trąbka",
+ "Bell": "Dzwonek",
+ "Anchor": "Kotwica",
+ "Headphones": "Słuchawki",
+ "Folder": "Folder",
+ "For maximum security, we recommend you do this in person or use another trusted means of communication.": "W celu zapewnienia maksymalnego bezpieczeństwa zalecamy, abyś zrobił to osobiście lub skorzystał z innego zaufanego środka komunikacji.",
+ "Phone Number": "Numer telefonu",
+ "Display Name": "Wyświetlana nazwa",
+ "Set a new account password...": "Ustaw nowe hasło do konta…",
+ "Email addresses": "Adresy E-mail",
+ "Phone numbers": "Numery telefonów",
+ "Language and region": "Język i region",
+ "Theme": "Motyw",
+ "Account management": "Zarządzanie kontem",
+ "Bug reporting": "Zgłaszanie błędów",
+ "Versions": "Wersje",
+ "Preferences": "Preferencje",
+ "Timeline": "Oś czasu",
+ "Room list": "Lista pokoi",
+ "Security & Privacy": "Bezpieczeństwo i prywatność",
+ "Room Addresses": "Adresy pokoju",
+ "Change room avatar": "Zmień awatar pokoju",
+ "Change room name": "Zmień nazwę pokoju",
+ "Change permissions": "Zmieniać uprawnienia",
+ "Change topic": "Zmieniać temat",
+ "Default role": "Domyślna rola",
+ "Send messages": "Wysyłanie wiadomości",
+ "Change settings": "Zmieniać ustawienia",
+ "Remove messages": "Usuwanie wiadomości",
+ "Notify everyone": "Powiadamianie wszystkich",
+ "Roles & Permissions": "Role i uprawnienia",
+ "Encryption": "Szyfrowanie",
+ "Join the conversation with an account": "Przyłącz się do rozmowy przy użyciu konta",
+ "Sign Up": "Zarejestruj się",
+ "Join the discussion": "Dołącz do dyskusji",
+ "%(roomName)s can't be previewed. Do you want to join it?": "%(roomName)s nie może być wyświetlony. Chcesz do niego dołączyć?",
+ "Main address": "Główny adres",
+ "Room avatar": "Awatar pokoju",
+ "Upload room avatar": "Prześlij awatar pokoju",
+ "Room Name": "Nazwa pokoju",
+ "Room Topic": "Temat pokoju",
+ "Power level": "Poziom uprawnień",
+ "Verify by comparing a short text string.": "Weryfikuj, porównując krótki ciąg tekstu.",
+ "Begin Verifying": "Rozpocznij weryfikację",
+ "Waiting for partner to accept...": "Czekanie, aż partner zaakceptuje…",
+ "Room Settings - %(roomName)s": "Ustawienia pokoju - %(roomName)s",
+ "Doesn't look like a valid phone number": "To nie wygląda na poprawny numer telefonu"
}
diff --git a/src/i18n/strings/sl.json b/src/i18n/strings/sl.json
index 39297c8ae9..01da138193 100644
--- a/src/i18n/strings/sl.json
+++ b/src/i18n/strings/sl.json
@@ -9,5 +9,6 @@
"Sign In": "Prijava",
"powered by Matrix": "poganja Matrix",
"Custom Server Options": "Možnosti strežnika po meri",
- "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Nastavite lahko tudi strežnik za identiteto po meri, vendar ne boste mogli povabiti uporabnikov prek e-pošte, prav tako pa vas ne bodo mogli povabiti drugi."
+ "You can also set a custom identity server, but you won't be able to invite users by email address, or be invited by email address yourself.": "Nastavite lahko tudi strežnik za identiteto po meri, vendar ne boste mogli povabiti uporabnikov prek e-pošte, prav tako pa vas ne bodo mogli povabiti drugi.",
+ "Your language of choice": "Vaš jezik po izbiri"
}
diff --git a/src/stripped-emoji.json b/src/stripped-emoji.json
index 16b772ae51..a9debd7f95 100644
--- a/src/stripped-emoji.json
+++ b/src/stripped-emoji.json
@@ -1 +1 @@
-[{"name":"hundred points symbol","shortname":":100:","category":"symbols","emoji_order":"2119"},{"name":"input symbol for numbers","shortname":":1234:","category":"symbols","emoji_order":"2122"},{"name":"grinning face","shortname":":grinning:","category":"people","emoji_order":"1"},{"name":"grinning face with smiling eyes","shortname":":grin:","category":"people","emoji_order":"2"},{"name":"face with tears of joy","shortname":":joy:","category":"people","emoji_order":"3","aliases_ascii":[":')",":'-)"]},{"name":"rolling on the floor laughing","shortname":":rofl:","category":"people","emoji_order":"4","aliases":[":rolling_on_the_floor_laughing:"]},{"name":"smiling face with open mouth","shortname":":smiley:","category":"people","emoji_order":"5","aliases_ascii":[":D",":-D","=D"]},{"name":"smiling face with open mouth and smiling eyes","shortname":":smile:","category":"people","emoji_order":"6"},{"name":"smiling face with open mouth and cold sweat","shortname":":sweat_smile:","category":"people","emoji_order":"7","aliases_ascii":["':)","':-)","'=)","':D","':-D","'=D"]},{"name":"smiling face with open mouth and tightly-closed eyes","shortname":":laughing:","category":"people","emoji_order":"8","aliases":[":satisfied:"],"aliases_ascii":[">:)",">;)",">:-)",">=)"]},{"name":"winking face","shortname":":wink:","category":"people","emoji_order":"9","aliases_ascii":[";)",";-)","*-)","*)",";-]",";]",";D",";^)"]},{"name":"smiling face with smiling eyes","shortname":":blush:","category":"people","emoji_order":"10"},{"name":"face savouring delicious food","shortname":":yum:","category":"people","emoji_order":"11"},{"name":"smiling face with sunglasses","shortname":":sunglasses:","category":"people","emoji_order":"12","aliases_ascii":["B-)","B)","8)","8-)","B-D","8-D"]},{"name":"smiling face with heart-shaped eyes","shortname":":heart_eyes:","category":"people","emoji_order":"13"},{"name":"face throwing a kiss","shortname":":kissing_heart:","category":"people","emoji_order":"14","aliases_ascii":[":*",":-*","=*",":^*"]},{"name":"kissing face","shortname":":kissing:","category":"people","emoji_order":"15"},{"name":"kissing face with smiling eyes","shortname":":kissing_smiling_eyes:","category":"people","emoji_order":"16"},{"name":"kissing face with closed eyes","shortname":":kissing_closed_eyes:","category":"people","emoji_order":"17"},{"name":"white smiling face","shortname":":relaxed:","category":"people","emoji_order":"18"},{"name":"slightly smiling face","shortname":":slight_smile:","category":"people","emoji_order":"19","aliases":[":slightly_smiling_face:"],"aliases_ascii":[":)",":-)","=]","=)",":]"]},{"name":"hugging face","shortname":":hugging:","category":"people","emoji_order":"20","aliases":[":hugging_face:"]},{"name":"thinking face","shortname":":thinking:","category":"people","emoji_order":"21","aliases":[":thinking_face:"]},{"name":"neutral face","shortname":":neutral_face:","category":"people","emoji_order":"22"},{"name":"expressionless face","shortname":":expressionless:","category":"people","emoji_order":"23","aliases_ascii":["-_-","-__-","-___-"]},{"name":"face without mouth","shortname":":no_mouth:","category":"people","emoji_order":"24","aliases_ascii":[":-X",":X",":-#",":#","=X","=x",":x",":-x","=#"]},{"name":"face with rolling eyes","shortname":":rolling_eyes:","category":"people","emoji_order":"25","aliases":[":face_with_rolling_eyes:"]},{"name":"smirking face","shortname":":smirk:","category":"people","emoji_order":"26"},{"name":"persevering face","shortname":":persevere:","category":"people","emoji_order":"27","aliases_ascii":[">.<"]},{"name":"disappointed but relieved face","shortname":":disappointed_relieved:","category":"people","emoji_order":"28"},{"name":"face with open mouth","shortname":":open_mouth:","category":"people","emoji_order":"29","aliases_ascii":[":-O",":O",":-o",":o","O_O",">:O"]},{"name":"zipper-mouth face","shortname":":zipper_mouth:","category":"people","emoji_order":"30","aliases":[":zipper_mouth_face:"]},{"name":"hushed face","shortname":":hushed:","category":"people","emoji_order":"31"},{"name":"sleepy face","shortname":":sleepy:","category":"people","emoji_order":"32"},{"name":"tired face","shortname":":tired_face:","category":"people","emoji_order":"33"},{"name":"sleeping face","shortname":":sleeping:","category":"people","emoji_order":"34"},{"name":"relieved face","shortname":":relieved:","category":"people","emoji_order":"35"},{"name":"nerd face","shortname":":nerd:","category":"people","emoji_order":"36","aliases":[":nerd_face:"]},{"name":"face with stuck-out tongue","shortname":":stuck_out_tongue:","category":"people","emoji_order":"37","aliases_ascii":[":P",":-P","=P",":-p",":p","=p",":-Þ",":Þ",":þ",":-þ",":-b",":b","d:"]},{"name":"face with stuck-out tongue and winking eye","shortname":":stuck_out_tongue_winking_eye:","category":"people","emoji_order":"38","aliases_ascii":[">:P","X-P","x-p"]},{"name":"face with stuck-out tongue and tightly-closed eyes","shortname":":stuck_out_tongue_closed_eyes:","category":"people","emoji_order":"39"},{"name":"drooling face","shortname":":drooling_face:","category":"people","emoji_order":"40","aliases":[":drool:"]},{"name":"unamused face","shortname":":unamused:","category":"people","emoji_order":"41"},{"name":"face with cold sweat","shortname":":sweat:","category":"people","emoji_order":"42","aliases_ascii":["':(","':-(","'=("]},{"name":"pensive face","shortname":":pensive:","category":"people","emoji_order":"43"},{"name":"confused face","shortname":":confused:","category":"people","emoji_order":"44","aliases_ascii":[">:\\",">:/",":-/",":-.",":/",":\\","=/","=\\",":L","=L"]},{"name":"upside-down face","shortname":":upside_down:","category":"people","emoji_order":"45","aliases":[":upside_down_face:"]},{"name":"money-mouth face","shortname":":money_mouth:","category":"people","emoji_order":"46","aliases":[":money_mouth_face:"]},{"name":"astonished face","shortname":":astonished:","category":"people","emoji_order":"47"},{"name":"white frowning face","shortname":":frowning2:","category":"people","emoji_order":"48","aliases":[":white_frowning_face:"]},{"name":"slightly frowning face","shortname":":slight_frown:","category":"people","emoji_order":"49","aliases":[":slightly_frowning_face:"]},{"name":"confounded face","shortname":":confounded:","category":"people","emoji_order":"50"},{"name":"disappointed face","shortname":":disappointed:","category":"people","emoji_order":"51","aliases_ascii":[">:[",":-(",":(",":-[",":[","=("]},{"name":"worried face","shortname":":worried:","category":"people","emoji_order":"52"},{"name":"face with look of triumph","shortname":":triumph:","category":"people","emoji_order":"53"},{"name":"crying face","shortname":":cry:","category":"people","emoji_order":"54","aliases_ascii":[":'(",":'-(",";(",";-("]},{"name":"loudly crying face","shortname":":sob:","category":"people","emoji_order":"55"},{"name":"frowning face with open mouth","shortname":":frowning:","category":"people","emoji_order":"56"},{"name":"anguished face","shortname":":anguished:","category":"people","emoji_order":"57"},{"name":"fearful face","shortname":":fearful:","category":"people","emoji_order":"58","aliases_ascii":["D:"]},{"name":"weary face","shortname":":weary:","category":"people","emoji_order":"59"},{"name":"grimacing face","shortname":":grimacing:","category":"people","emoji_order":"60"},{"name":"face with open mouth and cold sweat","shortname":":cold_sweat:","category":"people","emoji_order":"61"},{"name":"face screaming in fear","shortname":":scream:","category":"people","emoji_order":"62"},{"name":"flushed face","shortname":":flushed:","category":"people","emoji_order":"63","aliases_ascii":[":$","=$"]},{"name":"dizzy face","shortname":":dizzy_face:","category":"people","emoji_order":"64","aliases_ascii":["#-)","#)","%-)","%)","X)","X-)"]},{"name":"pouting face","shortname":":rage:","category":"people","emoji_order":"65"},{"name":"angry face","shortname":":angry:","category":"people","emoji_order":"66","aliases_ascii":[">:(",">:-(",":@"]},{"name":"smiling face with halo","shortname":":innocent:","category":"people","emoji_order":"67","aliases_ascii":["O:-)","0:-3","0:3","0:-)","0:)","0;^)","O:)","O;-)","O=)","0;-)","O:-3","O:3"]},{"name":"face with cowboy hat","shortname":":cowboy:","category":"people","emoji_order":"68","aliases":[":face_with_cowboy_hat:"]},{"name":"clown face","shortname":":clown:","category":"people","emoji_order":"69","aliases":[":clown_face:"]},{"name":"lying face","shortname":":lying_face:","category":"people","emoji_order":"70","aliases":[":liar:"]},{"name":"face with medical mask","shortname":":mask:","category":"people","emoji_order":"71"},{"name":"face with thermometer","shortname":":thermometer_face:","category":"people","emoji_order":"72","aliases":[":face_with_thermometer:"]},{"name":"face with head-bandage","shortname":":head_bandage:","category":"people","emoji_order":"73","aliases":[":face_with_head_bandage:"]},{"name":"nauseated face","shortname":":nauseated_face:","category":"people","emoji_order":"74","aliases":[":sick:"]},{"name":"sneezing face","shortname":":sneezing_face:","category":"people","emoji_order":"75","aliases":[":sneeze:"]},{"name":"smiling face with horns","shortname":":smiling_imp:","category":"people","emoji_order":"76"},{"name":"imp","shortname":":imp:","category":"people","emoji_order":"77"},{"name":"japanese ogre","shortname":":japanese_ogre:","category":"people","emoji_order":"78"},{"name":"japanese goblin","shortname":":japanese_goblin:","category":"people","emoji_order":"79"},{"name":"skull","shortname":":skull:","category":"people","emoji_order":"80","aliases":[":skeleton:"]},{"name":"skull and crossbones","shortname":":skull_crossbones:","category":"objects","emoji_order":"81","aliases":[":skull_and_crossbones:"]},{"name":"ghost","shortname":":ghost:","category":"people","emoji_order":"82"},{"name":"extraterrestrial alien","shortname":":alien:","category":"people","emoji_order":"83"},{"name":"alien monster","shortname":":space_invader:","category":"activity","emoji_order":"84"},{"name":"robot face","shortname":":robot:","category":"people","emoji_order":"85","aliases":[":robot_face:"]},{"name":"pile of poo","shortname":":poop:","category":"people","emoji_order":"86","aliases":[":shit:",":hankey:",":poo:"]},{"name":"smiling cat face with open mouth","shortname":":smiley_cat:","category":"people","emoji_order":"87"},{"name":"grinning cat face with smiling eyes","shortname":":smile_cat:","category":"people","emoji_order":"88"},{"name":"cat face with tears of joy","shortname":":joy_cat:","category":"people","emoji_order":"89"},{"name":"smiling cat face with heart-shaped eyes","shortname":":heart_eyes_cat:","category":"people","emoji_order":"90"},{"name":"cat face with wry smile","shortname":":smirk_cat:","category":"people","emoji_order":"91"},{"name":"kissing cat face with closed eyes","shortname":":kissing_cat:","category":"people","emoji_order":"92"},{"name":"weary cat face","shortname":":scream_cat:","category":"people","emoji_order":"93"},{"name":"crying cat face","shortname":":crying_cat_face:","category":"people","emoji_order":"94"},{"name":"pouting cat face","shortname":":pouting_cat:","category":"people","emoji_order":"95"},{"name":"see-no-evil monkey","shortname":":see_no_evil:","category":"nature","emoji_order":"96"},{"name":"hear-no-evil monkey","shortname":":hear_no_evil:","category":"nature","emoji_order":"97"},{"name":"speak-no-evil monkey","shortname":":speak_no_evil:","category":"nature","emoji_order":"98"},{"name":"boy","shortname":":boy:","category":"people","emoji_order":"99"},{"name":"boy tone 1","shortname":":boy_tone1:","category":"people","emoji_order":"100"},{"name":"boy tone 2","shortname":":boy_tone2:","category":"people","emoji_order":"101"},{"name":"boy tone 3","shortname":":boy_tone3:","category":"people","emoji_order":"102"},{"name":"boy tone 4","shortname":":boy_tone4:","category":"people","emoji_order":"103"},{"name":"boy tone 5","shortname":":boy_tone5:","category":"people","emoji_order":"104"},{"name":"girl","shortname":":girl:","category":"people","emoji_order":"105"},{"name":"girl tone 1","shortname":":girl_tone1:","category":"people","emoji_order":"106"},{"name":"girl tone 2","shortname":":girl_tone2:","category":"people","emoji_order":"107"},{"name":"girl tone 3","shortname":":girl_tone3:","category":"people","emoji_order":"108"},{"name":"girl tone 4","shortname":":girl_tone4:","category":"people","emoji_order":"109"},{"name":"girl tone 5","shortname":":girl_tone5:","category":"people","emoji_order":"110"},{"name":"man","shortname":":man:","category":"people","emoji_order":"111"},{"name":"man tone 1","shortname":":man_tone1:","category":"people","emoji_order":"112"},{"name":"man tone 2","shortname":":man_tone2:","category":"people","emoji_order":"113"},{"name":"man tone 3","shortname":":man_tone3:","category":"people","emoji_order":"114"},{"name":"man tone 4","shortname":":man_tone4:","category":"people","emoji_order":"115"},{"name":"man tone 5","shortname":":man_tone5:","category":"people","emoji_order":"116"},{"name":"woman","shortname":":woman:","category":"people","emoji_order":"117"},{"name":"woman tone 1","shortname":":woman_tone1:","category":"people","emoji_order":"118"},{"name":"woman tone 2","shortname":":woman_tone2:","category":"people","emoji_order":"119"},{"name":"woman tone 3","shortname":":woman_tone3:","category":"people","emoji_order":"120"},{"name":"woman tone 4","shortname":":woman_tone4:","category":"people","emoji_order":"121"},{"name":"woman tone 5","shortname":":woman_tone5:","category":"people","emoji_order":"122"},{"name":"older man","shortname":":older_man:","category":"people","emoji_order":"123"},{"name":"older man tone 1","shortname":":older_man_tone1:","category":"people","emoji_order":"124"},{"name":"older man tone 2","shortname":":older_man_tone2:","category":"people","emoji_order":"125"},{"name":"older man tone 3","shortname":":older_man_tone3:","category":"people","emoji_order":"126"},{"name":"older man tone 4","shortname":":older_man_tone4:","category":"people","emoji_order":"127"},{"name":"older man tone 5","shortname":":older_man_tone5:","category":"people","emoji_order":"128"},{"name":"older woman","shortname":":older_woman:","category":"people","emoji_order":"129","aliases":[":grandma:"]},{"name":"older woman tone 1","shortname":":older_woman_tone1:","category":"people","emoji_order":"130","aliases":[":grandma_tone1:"]},{"name":"older woman tone 2","shortname":":older_woman_tone2:","category":"people","emoji_order":"131","aliases":[":grandma_tone2:"]},{"name":"older woman tone 3","shortname":":older_woman_tone3:","category":"people","emoji_order":"132","aliases":[":grandma_tone3:"]},{"name":"older woman tone 4","shortname":":older_woman_tone4:","category":"people","emoji_order":"133","aliases":[":grandma_tone4:"]},{"name":"older woman tone 5","shortname":":older_woman_tone5:","category":"people","emoji_order":"134","aliases":[":grandma_tone5:"]},{"name":"baby","shortname":":baby:","category":"people","emoji_order":"135"},{"name":"baby tone 1","shortname":":baby_tone1:","category":"people","emoji_order":"136"},{"name":"baby tone 2","shortname":":baby_tone2:","category":"people","emoji_order":"137"},{"name":"baby tone 3","shortname":":baby_tone3:","category":"people","emoji_order":"138"},{"name":"baby tone 4","shortname":":baby_tone4:","category":"people","emoji_order":"139"},{"name":"baby tone 5","shortname":":baby_tone5:","category":"people","emoji_order":"140"},{"name":"baby angel","shortname":":angel:","category":"people","emoji_order":"141"},{"name":"baby angel tone 1","shortname":":angel_tone1:","category":"people","emoji_order":"142"},{"name":"baby angel tone 2","shortname":":angel_tone2:","category":"people","emoji_order":"143"},{"name":"baby angel tone 3","shortname":":angel_tone3:","category":"people","emoji_order":"144"},{"name":"baby angel tone 4","shortname":":angel_tone4:","category":"people","emoji_order":"145"},{"name":"baby angel tone 5","shortname":":angel_tone5:","category":"people","emoji_order":"146"},{"name":"police officer","shortname":":cop:","category":"people","emoji_order":"339"},{"name":"police officer tone 1","shortname":":cop_tone1:","category":"people","emoji_order":"340"},{"name":"police officer tone 2","shortname":":cop_tone2:","category":"people","emoji_order":"341"},{"name":"police officer tone 3","shortname":":cop_tone3:","category":"people","emoji_order":"342"},{"name":"police officer tone 4","shortname":":cop_tone4:","category":"people","emoji_order":"343"},{"name":"police officer tone 5","shortname":":cop_tone5:","category":"people","emoji_order":"344"},{"name":"sleuth or spy","shortname":":spy:","category":"people","emoji_order":"357","aliases":[":sleuth_or_spy:"]},{"name":"sleuth or spy tone 1","shortname":":spy_tone1:","category":"people","emoji_order":"358","aliases":[":sleuth_or_spy_tone1:"]},{"name":"sleuth or spy tone 2","shortname":":spy_tone2:","category":"people","emoji_order":"359","aliases":[":sleuth_or_spy_tone2:"]},{"name":"sleuth or spy tone 3","shortname":":spy_tone3:","category":"people","emoji_order":"360","aliases":[":sleuth_or_spy_tone3:"]},{"name":"sleuth or spy tone 4","shortname":":spy_tone4:","category":"people","emoji_order":"361","aliases":[":sleuth_or_spy_tone4:"]},{"name":"sleuth or spy tone 5","shortname":":spy_tone5:","category":"people","emoji_order":"362","aliases":[":sleuth_or_spy_tone5:"]},{"name":"guardsman","shortname":":guardsman:","category":"people","emoji_order":"375"},{"name":"guardsman tone 1","shortname":":guardsman_tone1:","category":"people","emoji_order":"376"},{"name":"guardsman tone 2","shortname":":guardsman_tone2:","category":"people","emoji_order":"377"},{"name":"guardsman tone 3","shortname":":guardsman_tone3:","category":"people","emoji_order":"378"},{"name":"guardsman tone 4","shortname":":guardsman_tone4:","category":"people","emoji_order":"379"},{"name":"guardsman tone 5","shortname":":guardsman_tone5:","category":"people","emoji_order":"380"},{"name":"construction worker","shortname":":construction_worker:","category":"people","emoji_order":"393"},{"name":"construction worker tone 1","shortname":":construction_worker_tone1:","category":"people","emoji_order":"394"},{"name":"construction worker tone 2","shortname":":construction_worker_tone2:","category":"people","emoji_order":"395"},{"name":"construction worker tone 3","shortname":":construction_worker_tone3:","category":"people","emoji_order":"396"},{"name":"construction worker tone 4","shortname":":construction_worker_tone4:","category":"people","emoji_order":"397"},{"name":"construction worker tone 5","shortname":":construction_worker_tone5:","category":"people","emoji_order":"398"},{"name":"man with turban","shortname":":man_with_turban:","category":"people","emoji_order":"411"},{"name":"man with turban tone 1","shortname":":man_with_turban_tone1:","category":"people","emoji_order":"412"},{"name":"man with turban tone 2","shortname":":man_with_turban_tone2:","category":"people","emoji_order":"413"},{"name":"man with turban tone 3","shortname":":man_with_turban_tone3:","category":"people","emoji_order":"414"},{"name":"man with turban tone 4","shortname":":man_with_turban_tone4:","category":"people","emoji_order":"415"},{"name":"man with turban tone 5","shortname":":man_with_turban_tone5:","category":"people","emoji_order":"416"},{"name":"person with blond hair","shortname":":person_with_blond_hair:","category":"people","emoji_order":"429"},{"name":"person with blond hair tone 1","shortname":":person_with_blond_hair_tone1:","category":"people","emoji_order":"430"},{"name":"person with blond hair tone 2","shortname":":person_with_blond_hair_tone2:","category":"people","emoji_order":"431"},{"name":"person with blond hair tone 3","shortname":":person_with_blond_hair_tone3:","category":"people","emoji_order":"432"},{"name":"person with blond hair tone 4","shortname":":person_with_blond_hair_tone4:","category":"people","emoji_order":"433"},{"name":"person with blond hair tone 5","shortname":":person_with_blond_hair_tone5:","category":"people","emoji_order":"434"},{"name":"father christmas","shortname":":santa:","category":"people","emoji_order":"447"},{"name":"father christmas tone 1","shortname":":santa_tone1:","category":"people","emoji_order":"448"},{"name":"father christmas tone 2","shortname":":santa_tone2:","category":"people","emoji_order":"449"},{"name":"father christmas tone 3","shortname":":santa_tone3:","category":"people","emoji_order":"450"},{"name":"father christmas tone 4","shortname":":santa_tone4:","category":"people","emoji_order":"451"},{"name":"father christmas tone 5","shortname":":santa_tone5:","category":"people","emoji_order":"452"},{"name":"mother christmas","shortname":":mrs_claus:","category":"people","emoji_order":"453","aliases":[":mother_christmas:"]},{"name":"mother christmas tone 1","shortname":":mrs_claus_tone1:","category":"people","emoji_order":"454","aliases":[":mother_christmas_tone1:"]},{"name":"mother christmas tone 2","shortname":":mrs_claus_tone2:","category":"people","emoji_order":"455","aliases":[":mother_christmas_tone2:"]},{"name":"mother christmas tone 3","shortname":":mrs_claus_tone3:","category":"people","emoji_order":"456","aliases":[":mother_christmas_tone3:"]},{"name":"mother christmas tone 4","shortname":":mrs_claus_tone4:","category":"people","emoji_order":"457","aliases":[":mother_christmas_tone4:"]},{"name":"mother christmas tone 5","shortname":":mrs_claus_tone5:","category":"people","emoji_order":"458","aliases":[":mother_christmas_tone5:"]},{"name":"princess","shortname":":princess:","category":"people","emoji_order":"459"},{"name":"princess tone 1","shortname":":princess_tone1:","category":"people","emoji_order":"460"},{"name":"princess tone 2","shortname":":princess_tone2:","category":"people","emoji_order":"461"},{"name":"princess tone 3","shortname":":princess_tone3:","category":"people","emoji_order":"462"},{"name":"princess tone 4","shortname":":princess_tone4:","category":"people","emoji_order":"463"},{"name":"princess tone 5","shortname":":princess_tone5:","category":"people","emoji_order":"464"},{"name":"prince","shortname":":prince:","category":"people","emoji_order":"465"},{"name":"prince tone 1","shortname":":prince_tone1:","category":"people","emoji_order":"466"},{"name":"prince tone 2","shortname":":prince_tone2:","category":"people","emoji_order":"467"},{"name":"prince tone 3","shortname":":prince_tone3:","category":"people","emoji_order":"468"},{"name":"prince tone 4","shortname":":prince_tone4:","category":"people","emoji_order":"469"},{"name":"prince tone 5","shortname":":prince_tone5:","category":"people","emoji_order":"470"},{"name":"bride with veil","shortname":":bride_with_veil:","category":"people","emoji_order":"471"},{"name":"bride with veil tone 1","shortname":":bride_with_veil_tone1:","category":"people","emoji_order":"472"},{"name":"bride with veil tone 2","shortname":":bride_with_veil_tone2:","category":"people","emoji_order":"473"},{"name":"bride with veil tone 3","shortname":":bride_with_veil_tone3:","category":"people","emoji_order":"474"},{"name":"bride with veil tone 4","shortname":":bride_with_veil_tone4:","category":"people","emoji_order":"475"},{"name":"bride with veil tone 5","shortname":":bride_with_veil_tone5:","category":"people","emoji_order":"476"},{"name":"man in tuxedo","shortname":":man_in_tuxedo:","category":"people","emoji_order":"477"},{"name":"man in tuxedo tone 1","shortname":":man_in_tuxedo_tone1:","category":"people","emoji_order":"478","aliases":[":tuxedo_tone1:"]},{"name":"man in tuxedo tone 2","shortname":":man_in_tuxedo_tone2:","category":"people","emoji_order":"479","aliases":[":tuxedo_tone2:"]},{"name":"man in tuxedo tone 3","shortname":":man_in_tuxedo_tone3:","category":"people","emoji_order":"480","aliases":[":tuxedo_tone3:"]},{"name":"man in tuxedo tone 4","shortname":":man_in_tuxedo_tone4:","category":"people","emoji_order":"481","aliases":[":tuxedo_tone4:"]},{"name":"man in tuxedo tone 5","shortname":":man_in_tuxedo_tone5:","category":"people","emoji_order":"482","aliases":[":tuxedo_tone5:"]},{"name":"pregnant woman","shortname":":pregnant_woman:","category":"people","emoji_order":"483","aliases":[":expecting_woman:"]},{"name":"pregnant woman tone 1","shortname":":pregnant_woman_tone1:","category":"people","emoji_order":"484","aliases":[":expecting_woman_tone1:"]},{"name":"pregnant woman tone 2","shortname":":pregnant_woman_tone2:","category":"people","emoji_order":"485","aliases":[":expecting_woman_tone2:"]},{"name":"pregnant woman tone 3","shortname":":pregnant_woman_tone3:","category":"people","emoji_order":"486","aliases":[":expecting_woman_tone3:"]},{"name":"pregnant woman tone 4","shortname":":pregnant_woman_tone4:","category":"people","emoji_order":"487","aliases":[":expecting_woman_tone4:"]},{"name":"pregnant woman tone 5","shortname":":pregnant_woman_tone5:","category":"people","emoji_order":"488","aliases":[":expecting_woman_tone5:"]},{"name":"man with gua pi mao","shortname":":man_with_gua_pi_mao:","category":"people","emoji_order":"489"},{"name":"man with gua pi mao tone 1","shortname":":man_with_gua_pi_mao_tone1:","category":"people","emoji_order":"490"},{"name":"man with gua pi mao tone 2","shortname":":man_with_gua_pi_mao_tone2:","category":"people","emoji_order":"491"},{"name":"man with gua pi mao tone 3","shortname":":man_with_gua_pi_mao_tone3:","category":"people","emoji_order":"492"},{"name":"man with gua pi mao tone 4","shortname":":man_with_gua_pi_mao_tone4:","category":"people","emoji_order":"493"},{"name":"man with gua pi mao tone 5","shortname":":man_with_gua_pi_mao_tone5:","category":"people","emoji_order":"494"},{"name":"person frowning","shortname":":person_frowning:","category":"people","emoji_order":"495"},{"name":"person frowning tone 1","shortname":":person_frowning_tone1:","category":"people","emoji_order":"496"},{"name":"person frowning tone 2","shortname":":person_frowning_tone2:","category":"people","emoji_order":"497"},{"name":"person frowning tone 3","shortname":":person_frowning_tone3:","category":"people","emoji_order":"498"},{"name":"person frowning tone 4","shortname":":person_frowning_tone4:","category":"people","emoji_order":"499"},{"name":"person frowning tone 5","shortname":":person_frowning_tone5:","category":"people","emoji_order":"500"},{"name":"person with pouting face","shortname":":person_with_pouting_face:","category":"people","emoji_order":"513"},{"name":"person with pouting face tone1","shortname":":person_with_pouting_face_tone1:","category":"people","emoji_order":"514"},{"name":"person with pouting face tone2","shortname":":person_with_pouting_face_tone2:","category":"people","emoji_order":"515"},{"name":"person with pouting face tone3","shortname":":person_with_pouting_face_tone3:","category":"people","emoji_order":"516"},{"name":"person with pouting face tone4","shortname":":person_with_pouting_face_tone4:","category":"people","emoji_order":"517"},{"name":"person with pouting face tone5","shortname":":person_with_pouting_face_tone5:","category":"people","emoji_order":"518"},{"name":"face with no good gesture","shortname":":no_good:","category":"people","emoji_order":"531"},{"name":"face with no good gesture tone 1","shortname":":no_good_tone1:","category":"people","emoji_order":"532"},{"name":"face with no good gesture tone 2","shortname":":no_good_tone2:","category":"people","emoji_order":"533"},{"name":"face with no good gesture tone 3","shortname":":no_good_tone3:","category":"people","emoji_order":"534"},{"name":"face with no good gesture tone 4","shortname":":no_good_tone4:","category":"people","emoji_order":"535"},{"name":"face with no good gesture tone 5","shortname":":no_good_tone5:","category":"people","emoji_order":"536"},{"name":"face with ok gesture","shortname":":ok_woman:","category":"people","emoji_order":"549","aliases_ascii":["*\\0/*","\\0/","*\\O/*","\\O/"]},{"name":"face with ok gesture tone1","shortname":":ok_woman_tone1:","category":"people","emoji_order":"550"},{"name":"face with ok gesture tone2","shortname":":ok_woman_tone2:","category":"people","emoji_order":"551"},{"name":"face with ok gesture tone3","shortname":":ok_woman_tone3:","category":"people","emoji_order":"552"},{"name":"face with ok gesture tone4","shortname":":ok_woman_tone4:","category":"people","emoji_order":"553"},{"name":"face with ok gesture tone5","shortname":":ok_woman_tone5:","category":"people","emoji_order":"554"},{"name":"information desk person","shortname":":information_desk_person:","category":"people","emoji_order":"567"},{"name":"information desk person tone 1","shortname":":information_desk_person_tone1:","category":"people","emoji_order":"568"},{"name":"information desk person tone 2","shortname":":information_desk_person_tone2:","category":"people","emoji_order":"569"},{"name":"information desk person tone 3","shortname":":information_desk_person_tone3:","category":"people","emoji_order":"570"},{"name":"information desk person tone 4","shortname":":information_desk_person_tone4:","category":"people","emoji_order":"571"},{"name":"information desk person tone 5","shortname":":information_desk_person_tone5:","category":"people","emoji_order":"572"},{"name":"happy person raising one hand","shortname":":raising_hand:","category":"people","emoji_order":"585"},{"name":"happy person raising one hand tone1","shortname":":raising_hand_tone1:","category":"people","emoji_order":"586"},{"name":"happy person raising one hand tone2","shortname":":raising_hand_tone2:","category":"people","emoji_order":"587"},{"name":"happy person raising one hand tone3","shortname":":raising_hand_tone3:","category":"people","emoji_order":"588"},{"name":"happy person raising one hand tone4","shortname":":raising_hand_tone4:","category":"people","emoji_order":"589"},{"name":"happy person raising one hand tone5","shortname":":raising_hand_tone5:","category":"people","emoji_order":"590"},{"name":"person bowing deeply","shortname":":bow:","category":"people","emoji_order":"603"},{"name":"person bowing deeply tone 1","shortname":":bow_tone1:","category":"people","emoji_order":"604"},{"name":"person bowing deeply tone 2","shortname":":bow_tone2:","category":"people","emoji_order":"605"},{"name":"person bowing deeply tone 3","shortname":":bow_tone3:","category":"people","emoji_order":"606"},{"name":"person bowing deeply tone 4","shortname":":bow_tone4:","category":"people","emoji_order":"607"},{"name":"person bowing deeply tone 5","shortname":":bow_tone5:","category":"people","emoji_order":"608"},{"name":"face palm","shortname":":face_palm:","category":"people","emoji_order":"621","aliases":[":facepalm:"]},{"name":"face palm tone 1","shortname":":face_palm_tone1:","category":"people","emoji_order":"622","aliases":[":facepalm_tone1:"]},{"name":"face palm tone 2","shortname":":face_palm_tone2:","category":"people","emoji_order":"623","aliases":[":facepalm_tone2:"]},{"name":"face palm tone 3","shortname":":face_palm_tone3:","category":"people","emoji_order":"624","aliases":[":facepalm_tone3:"]},{"name":"face palm tone 4","shortname":":face_palm_tone4:","category":"people","emoji_order":"625","aliases":[":facepalm_tone4:"]},{"name":"face palm tone 5","shortname":":face_palm_tone5:","category":"people","emoji_order":"626","aliases":[":facepalm_tone5:"]},{"name":"shrug","shortname":":shrug:","category":"people","emoji_order":"639"},{"name":"shrug tone 1","shortname":":shrug_tone1:","category":"people","emoji_order":"640"},{"name":"shrug tone 2","shortname":":shrug_tone2:","category":"people","emoji_order":"641"},{"name":"shrug tone 3","shortname":":shrug_tone3:","category":"people","emoji_order":"642"},{"name":"shrug tone 4","shortname":":shrug_tone4:","category":"people","emoji_order":"643"},{"name":"shrug tone 5","shortname":":shrug_tone5:","category":"people","emoji_order":"644"},{"name":"face massage","shortname":":massage:","category":"people","emoji_order":"657"},{"name":"face massage tone 1","shortname":":massage_tone1:","category":"people","emoji_order":"658"},{"name":"face massage tone 2","shortname":":massage_tone2:","category":"people","emoji_order":"659"},{"name":"face massage tone 3","shortname":":massage_tone3:","category":"people","emoji_order":"660"},{"name":"face massage tone 4","shortname":":massage_tone4:","category":"people","emoji_order":"661"},{"name":"face massage tone 5","shortname":":massage_tone5:","category":"people","emoji_order":"662"},{"name":"haircut","shortname":":haircut:","category":"people","emoji_order":"675"},{"name":"haircut tone 1","shortname":":haircut_tone1:","category":"people","emoji_order":"676"},{"name":"haircut tone 2","shortname":":haircut_tone2:","category":"people","emoji_order":"677"},{"name":"haircut tone 3","shortname":":haircut_tone3:","category":"people","emoji_order":"678"},{"name":"haircut tone 4","shortname":":haircut_tone4:","category":"people","emoji_order":"679"},{"name":"haircut tone 5","shortname":":haircut_tone5:","category":"people","emoji_order":"680"},{"name":"pedestrian","shortname":":walking:","category":"people","emoji_order":"693"},{"name":"pedestrian tone 1","shortname":":walking_tone1:","category":"people","emoji_order":"694"},{"name":"pedestrian tone 2","shortname":":walking_tone2:","category":"people","emoji_order":"695"},{"name":"pedestrian tone 3","shortname":":walking_tone3:","category":"people","emoji_order":"696"},{"name":"pedestrian tone 4","shortname":":walking_tone4:","category":"people","emoji_order":"697"},{"name":"pedestrian tone 5","shortname":":walking_tone5:","category":"people","emoji_order":"698"},{"name":"runner","shortname":":runner:","category":"people","emoji_order":"711"},{"name":"runner tone 1","shortname":":runner_tone1:","category":"people","emoji_order":"712"},{"name":"runner tone 2","shortname":":runner_tone2:","category":"people","emoji_order":"713"},{"name":"runner tone 3","shortname":":runner_tone3:","category":"people","emoji_order":"714"},{"name":"runner tone 4","shortname":":runner_tone4:","category":"people","emoji_order":"715"},{"name":"runner tone 5","shortname":":runner_tone5:","category":"people","emoji_order":"716"},{"name":"dancer","shortname":":dancer:","category":"people","emoji_order":"729"},{"name":"dancer tone 1","shortname":":dancer_tone1:","category":"people","emoji_order":"730"},{"name":"dancer tone 2","shortname":":dancer_tone2:","category":"people","emoji_order":"731"},{"name":"dancer tone 3","shortname":":dancer_tone3:","category":"people","emoji_order":"732"},{"name":"dancer tone 4","shortname":":dancer_tone4:","category":"people","emoji_order":"733"},{"name":"dancer tone 5","shortname":":dancer_tone5:","category":"people","emoji_order":"734"},{"name":"man dancing","shortname":":man_dancing:","category":"people","emoji_order":"735","aliases":[":male_dancer:"]},{"name":"man dancing tone 1","shortname":":man_dancing_tone1:","category":"people","emoji_order":"736","aliases":[":male_dancer_tone1:"]},{"name":"man dancing tone 2","shortname":":man_dancing_tone2:","category":"people","emoji_order":"737","aliases":[":male_dancer_tone2:"]},{"name":"man dancing tone 3","shortname":":man_dancing_tone3:","category":"people","emoji_order":"738","aliases":[":male_dancer_tone3:"]},{"name":"man dancing tone 4","shortname":":man_dancing_tone4:","category":"people","emoji_order":"739","aliases":[":male_dancer_tone4:"]},{"name":"man dancing tone 5","shortname":":man_dancing_tone5:","category":"people","emoji_order":"740","aliases":[":male_dancer_tone5:"]},{"name":"woman with bunny ears","shortname":":dancers:","category":"people","emoji_order":"741"},{"name":"man in business suit levitating","shortname":":levitate:","category":"activity","emoji_order":"759","aliases":[":man_in_business_suit_levitating:"]},{"name":"speaking head in silhouette","shortname":":speaking_head:","category":"people","emoji_order":"765","aliases":[":speaking_head_in_silhouette:"]},{"name":"bust in silhouette","shortname":":bust_in_silhouette:","category":"people","emoji_order":"766"},{"name":"busts in silhouette","shortname":":busts_in_silhouette:","category":"people","emoji_order":"767"},{"name":"fencer","shortname":":fencer:","category":"activity","emoji_order":"768","aliases":[":fencing:"]},{"name":"horse racing","shortname":":horse_racing:","category":"activity","emoji_order":"769"},{"name":"horse racing tone 1","shortname":":horse_racing_tone1:","category":"activity","emoji_order":"770"},{"name":"horse racing tone 2","shortname":":horse_racing_tone2:","category":"activity","emoji_order":"771"},{"name":"horse racing tone 3","shortname":":horse_racing_tone3:","category":"activity","emoji_order":"772"},{"name":"horse racing tone 4","shortname":":horse_racing_tone4:","category":"activity","emoji_order":"773"},{"name":"horse racing tone 5","shortname":":horse_racing_tone5:","category":"activity","emoji_order":"774"},{"name":"skier","shortname":":skier:","category":"activity","emoji_order":"775"},{"name":"snowboarder","shortname":":snowboarder:","category":"activity","emoji_order":"776"},{"name":"golfer","shortname":":golfer:","category":"activity","emoji_order":"782"},{"name":"surfer","shortname":":surfer:","category":"activity","emoji_order":"800"},{"name":"surfer tone 1","shortname":":surfer_tone1:","category":"activity","emoji_order":"801"},{"name":"surfer tone 2","shortname":":surfer_tone2:","category":"activity","emoji_order":"802"},{"name":"surfer tone 3","shortname":":surfer_tone3:","category":"activity","emoji_order":"803"},{"name":"surfer tone 4","shortname":":surfer_tone4:","category":"activity","emoji_order":"804"},{"name":"surfer tone 5","shortname":":surfer_tone5:","category":"activity","emoji_order":"805"},{"name":"rowboat","shortname":":rowboat:","category":"activity","emoji_order":"818"},{"name":"rowboat tone 1","shortname":":rowboat_tone1:","category":"activity","emoji_order":"819"},{"name":"rowboat tone 2","shortname":":rowboat_tone2:","category":"activity","emoji_order":"820"},{"name":"rowboat tone 3","shortname":":rowboat_tone3:","category":"activity","emoji_order":"821"},{"name":"rowboat tone 4","shortname":":rowboat_tone4:","category":"activity","emoji_order":"822"},{"name":"rowboat tone 5","shortname":":rowboat_tone5:","category":"activity","emoji_order":"823"},{"name":"swimmer","shortname":":swimmer:","category":"activity","emoji_order":"836"},{"name":"swimmer tone 1","shortname":":swimmer_tone1:","category":"activity","emoji_order":"837"},{"name":"swimmer tone 2","shortname":":swimmer_tone2:","category":"activity","emoji_order":"838"},{"name":"swimmer tone 3","shortname":":swimmer_tone3:","category":"activity","emoji_order":"839"},{"name":"swimmer tone 4","shortname":":swimmer_tone4:","category":"activity","emoji_order":"840"},{"name":"swimmer tone 5","shortname":":swimmer_tone5:","category":"activity","emoji_order":"841"},{"name":"person with ball","shortname":":basketball_player:","category":"activity","emoji_order":"854","aliases":[":person_with_ball:"]},{"name":"person with ball tone 1","shortname":":basketball_player_tone1:","category":"activity","emoji_order":"855","aliases":[":person_with_ball_tone1:"]},{"name":"person with ball tone 2","shortname":":basketball_player_tone2:","category":"activity","emoji_order":"856","aliases":[":person_with_ball_tone2:"]},{"name":"person with ball tone 3","shortname":":basketball_player_tone3:","category":"activity","emoji_order":"857","aliases":[":person_with_ball_tone3:"]},{"name":"person with ball tone 4","shortname":":basketball_player_tone4:","category":"activity","emoji_order":"858","aliases":[":person_with_ball_tone4:"]},{"name":"person with ball tone 5","shortname":":basketball_player_tone5:","category":"activity","emoji_order":"859","aliases":[":person_with_ball_tone5:"]},{"name":"weight lifter","shortname":":lifter:","category":"activity","emoji_order":"872","aliases":[":weight_lifter:"]},{"name":"weight lifter tone 1","shortname":":lifter_tone1:","category":"activity","emoji_order":"873","aliases":[":weight_lifter_tone1:"]},{"name":"weight lifter tone 2","shortname":":lifter_tone2:","category":"activity","emoji_order":"874","aliases":[":weight_lifter_tone2:"]},{"name":"weight lifter tone 3","shortname":":lifter_tone3:","category":"activity","emoji_order":"875","aliases":[":weight_lifter_tone3:"]},{"name":"weight lifter tone 4","shortname":":lifter_tone4:","category":"activity","emoji_order":"876","aliases":[":weight_lifter_tone4:"]},{"name":"weight lifter tone 5","shortname":":lifter_tone5:","category":"activity","emoji_order":"877","aliases":[":weight_lifter_tone5:"]},{"name":"bicyclist","shortname":":bicyclist:","category":"activity","emoji_order":"890"},{"name":"bicyclist tone 1","shortname":":bicyclist_tone1:","category":"activity","emoji_order":"891"},{"name":"bicyclist tone 2","shortname":":bicyclist_tone2:","category":"activity","emoji_order":"892"},{"name":"bicyclist tone 3","shortname":":bicyclist_tone3:","category":"activity","emoji_order":"893"},{"name":"bicyclist tone 4","shortname":":bicyclist_tone4:","category":"activity","emoji_order":"894"},{"name":"bicyclist tone 5","shortname":":bicyclist_tone5:","category":"activity","emoji_order":"895"},{"name":"mountain bicyclist","shortname":":mountain_bicyclist:","category":"activity","emoji_order":"908"},{"name":"mountain bicyclist tone 1","shortname":":mountain_bicyclist_tone1:","category":"activity","emoji_order":"909"},{"name":"mountain bicyclist tone 2","shortname":":mountain_bicyclist_tone2:","category":"activity","emoji_order":"910"},{"name":"mountain bicyclist tone 3","shortname":":mountain_bicyclist_tone3:","category":"activity","emoji_order":"911"},{"name":"mountain bicyclist tone 4","shortname":":mountain_bicyclist_tone4:","category":"activity","emoji_order":"912"},{"name":"mountain bicyclist tone 5","shortname":":mountain_bicyclist_tone5:","category":"activity","emoji_order":"913"},{"name":"racing car","shortname":":race_car:","category":"travel","emoji_order":"926","aliases":[":racing_car:"]},{"name":"racing motorcycle","shortname":":motorcycle:","category":"travel","emoji_order":"927","aliases":[":racing_motorcycle:"]},{"name":"person doing cartwheel","shortname":":cartwheel:","category":"activity","emoji_order":"928","aliases":[":person_doing_cartwheel:"]},{"name":"person doing cartwheel tone 1","shortname":":cartwheel_tone1:","category":"activity","emoji_order":"929","aliases":[":person_doing_cartwheel_tone1:"]},{"name":"person doing cartwheel tone 2","shortname":":cartwheel_tone2:","category":"activity","emoji_order":"930","aliases":[":person_doing_cartwheel_tone2:"]},{"name":"person doing cartwheel tone 3","shortname":":cartwheel_tone3:","category":"activity","emoji_order":"931","aliases":[":person_doing_cartwheel_tone3:"]},{"name":"person doing cartwheel tone 4","shortname":":cartwheel_tone4:","category":"activity","emoji_order":"932","aliases":[":person_doing_cartwheel_tone4:"]},{"name":"person doing cartwheel tone 5","shortname":":cartwheel_tone5:","category":"activity","emoji_order":"933","aliases":[":person_doing_cartwheel_tone5:"]},{"name":"wrestlers","shortname":":wrestlers:","category":"activity","emoji_order":"946","aliases":[":wrestling:"]},{"name":"wrestlers tone 1","shortname":":wrestlers_tone1:","category":"activity","emoji_order":"947","aliases":[":wrestling_tone1:"]},{"name":"wrestlers tone 2","shortname":":wrestlers_tone2:","category":"activity","emoji_order":"948","aliases":[":wrestling_tone2:"]},{"name":"wrestlers tone 3","shortname":":wrestlers_tone3:","category":"activity","emoji_order":"949","aliases":[":wrestling_tone3:"]},{"name":"wrestlers tone 4","shortname":":wrestlers_tone4:","category":"activity","emoji_order":"950","aliases":[":wrestling_tone4:"]},{"name":"wrestlers tone 5","shortname":":wrestlers_tone5:","category":"activity","emoji_order":"951","aliases":[":wrestling_tone5:"]},{"name":"water polo","shortname":":water_polo:","category":"activity","emoji_order":"964"},{"name":"water polo tone 1","shortname":":water_polo_tone1:","category":"activity","emoji_order":"965"},{"name":"water polo tone 2","shortname":":water_polo_tone2:","category":"activity","emoji_order":"966"},{"name":"water polo tone 3","shortname":":water_polo_tone3:","category":"activity","emoji_order":"967"},{"name":"water polo tone 4","shortname":":water_polo_tone4:","category":"activity","emoji_order":"968"},{"name":"water polo tone 5","shortname":":water_polo_tone5:","category":"activity","emoji_order":"969"},{"name":"handball","shortname":":handball:","category":"activity","emoji_order":"982"},{"name":"handball tone 1","shortname":":handball_tone1:","category":"activity","emoji_order":"983"},{"name":"handball tone 2","shortname":":handball_tone2:","category":"activity","emoji_order":"984"},{"name":"handball tone 3","shortname":":handball_tone3:","category":"activity","emoji_order":"985"},{"name":"handball tone 4","shortname":":handball_tone4:","category":"activity","emoji_order":"986"},{"name":"handball tone 5","shortname":":handball_tone5:","category":"activity","emoji_order":"987"},{"name":"juggling","shortname":":juggling:","category":"activity","emoji_order":"1000","aliases":[":juggler:"]},{"name":"juggling tone 1","shortname":":juggling_tone1:","category":"activity","emoji_order":"1001","aliases":[":juggler_tone1:"]},{"name":"juggling tone 2","shortname":":juggling_tone2:","category":"activity","emoji_order":"1002","aliases":[":juggler_tone2:"]},{"name":"juggling tone 3","shortname":":juggling_tone3:","category":"activity","emoji_order":"1003","aliases":[":juggler_tone3:"]},{"name":"juggling tone 4","shortname":":juggling_tone4:","category":"activity","emoji_order":"1004","aliases":[":juggler_tone4:"]},{"name":"juggling tone 5","shortname":":juggling_tone5:","category":"activity","emoji_order":"1005","aliases":[":juggler_tone5:"]},{"name":"man and woman holding hands","shortname":":couple:","category":"people","emoji_order":"1018"},{"name":"two men holding hands","shortname":":two_men_holding_hands:","category":"people","emoji_order":"1024"},{"name":"two women holding hands","shortname":":two_women_holding_hands:","category":"people","emoji_order":"1030"},{"name":"kiss","shortname":":couplekiss:","category":"people","emoji_order":"1036"},{"name":"kiss (man,man)","shortname":":kiss_mm:","category":"people","emoji_order":"1038","aliases":[":couplekiss_mm:"]},{"name":"kiss (woman,woman)","shortname":":kiss_ww:","category":"people","emoji_order":"1039","aliases":[":couplekiss_ww:"]},{"name":"couple with heart","shortname":":couple_with_heart:","category":"people","emoji_order":"1040"},{"name":"couple (man,man)","shortname":":couple_mm:","category":"people","emoji_order":"1042","aliases":[":couple_with_heart_mm:"]},{"name":"couple (woman,woman)","shortname":":couple_ww:","category":"people","emoji_order":"1043","aliases":[":couple_with_heart_ww:"]},{"name":"family","shortname":":family:","category":"people","emoji_order":"1044"},{"name":"family (man,woman,girl)","shortname":":family_mwg:","category":"people","emoji_order":"1051"},{"name":"family (man,woman,girl,boy)","shortname":":family_mwgb:","category":"people","emoji_order":"1052"},{"name":"family (man,woman,boy,boy)","shortname":":family_mwbb:","category":"people","emoji_order":"1053"},{"name":"family (man,woman,girl,girl)","shortname":":family_mwgg:","category":"people","emoji_order":"1054"},{"name":"family (man,man,boy)","shortname":":family_mmb:","category":"people","emoji_order":"1055"},{"name":"family (man,man,girl)","shortname":":family_mmg:","category":"people","emoji_order":"1056"},{"name":"family (man,man,girl,boy)","shortname":":family_mmgb:","category":"people","emoji_order":"1057"},{"name":"family (man,man,boy,boy)","shortname":":family_mmbb:","category":"people","emoji_order":"1058"},{"name":"family (man,man,girl,girl)","shortname":":family_mmgg:","category":"people","emoji_order":"1059"},{"name":"family (woman,woman,boy)","shortname":":family_wwb:","category":"people","emoji_order":"1060"},{"name":"family (woman,woman,girl)","shortname":":family_wwg:","category":"people","emoji_order":"1061"},{"name":"family (woman,woman,girl,boy)","shortname":":family_wwgb:","category":"people","emoji_order":"1062"},{"name":"family (woman,woman,boy,boy)","shortname":":family_wwbb:","category":"people","emoji_order":"1063"},{"name":"family (woman,woman,girl,girl)","shortname":":family_wwgg:","category":"people","emoji_order":"1064"},{"name":"emoji modifier Fitzpatrick type-1-2","shortname":":tone1:","category":"modifier","emoji_order":"1075"},{"name":"emoji modifier Fitzpatrick type-3","shortname":":tone2:","category":"modifier","emoji_order":"1076"},{"name":"emoji modifier Fitzpatrick type-4","shortname":":tone3:","category":"modifier","emoji_order":"1077"},{"name":"emoji modifier Fitzpatrick type-5","shortname":":tone4:","category":"modifier","emoji_order":"1078"},{"name":"emoji modifier Fitzpatrick type-6","shortname":":tone5:","category":"modifier","emoji_order":"1079"},{"name":"flexed biceps","shortname":":muscle:","category":"people","emoji_order":"1080"},{"name":"flexed biceps tone 1","shortname":":muscle_tone1:","category":"people","emoji_order":"1081"},{"name":"flexed biceps tone 2","shortname":":muscle_tone2:","category":"people","emoji_order":"1082"},{"name":"flexed biceps tone 3","shortname":":muscle_tone3:","category":"people","emoji_order":"1083"},{"name":"flexed biceps tone 4","shortname":":muscle_tone4:","category":"people","emoji_order":"1084"},{"name":"flexed biceps tone 5","shortname":":muscle_tone5:","category":"people","emoji_order":"1085"},{"name":"selfie","shortname":":selfie:","category":"people","emoji_order":"1086"},{"name":"selfie tone 1","shortname":":selfie_tone1:","category":"people","emoji_order":"1087"},{"name":"selfie tone 2","shortname":":selfie_tone2:","category":"people","emoji_order":"1088"},{"name":"selfie tone 3","shortname":":selfie_tone3:","category":"people","emoji_order":"1089"},{"name":"selfie tone 4","shortname":":selfie_tone4:","category":"people","emoji_order":"1090"},{"name":"selfie tone 5","shortname":":selfie_tone5:","category":"people","emoji_order":"1091"},{"name":"white left pointing backhand index","shortname":":point_left:","category":"people","emoji_order":"1092"},{"name":"white left pointing backhand index tone 1","shortname":":point_left_tone1:","category":"people","emoji_order":"1093"},{"name":"white left pointing backhand index tone 2","shortname":":point_left_tone2:","category":"people","emoji_order":"1094"},{"name":"white left pointing backhand index tone 3","shortname":":point_left_tone3:","category":"people","emoji_order":"1095"},{"name":"white left pointing backhand index tone 4","shortname":":point_left_tone4:","category":"people","emoji_order":"1096"},{"name":"white left pointing backhand index tone 5","shortname":":point_left_tone5:","category":"people","emoji_order":"1097"},{"name":"white right pointing backhand index","shortname":":point_right:","category":"people","emoji_order":"1098"},{"name":"white right pointing backhand index tone 1","shortname":":point_right_tone1:","category":"people","emoji_order":"1099"},{"name":"white right pointing backhand index tone 2","shortname":":point_right_tone2:","category":"people","emoji_order":"1100"},{"name":"white right pointing backhand index tone 3","shortname":":point_right_tone3:","category":"people","emoji_order":"1101"},{"name":"white right pointing backhand index tone 4","shortname":":point_right_tone4:","category":"people","emoji_order":"1102"},{"name":"white right pointing backhand index tone 5","shortname":":point_right_tone5:","category":"people","emoji_order":"1103"},{"name":"white up pointing index","shortname":":point_up:","category":"people","emoji_order":"1104"},{"name":"white up pointing index tone 1","shortname":":point_up_tone1:","category":"people","emoji_order":"1105"},{"name":"white up pointing index tone 2","shortname":":point_up_tone2:","category":"people","emoji_order":"1106"},{"name":"white up pointing index tone 3","shortname":":point_up_tone3:","category":"people","emoji_order":"1107"},{"name":"white up pointing index tone 4","shortname":":point_up_tone4:","category":"people","emoji_order":"1108"},{"name":"white up pointing index tone 5","shortname":":point_up_tone5:","category":"people","emoji_order":"1109"},{"name":"white up pointing backhand index","shortname":":point_up_2:","category":"people","emoji_order":"1110"},{"name":"white up pointing backhand index tone 1","shortname":":point_up_2_tone1:","category":"people","emoji_order":"1111"},{"name":"white up pointing backhand index tone 2","shortname":":point_up_2_tone2:","category":"people","emoji_order":"1112"},{"name":"white up pointing backhand index tone 3","shortname":":point_up_2_tone3:","category":"people","emoji_order":"1113"},{"name":"white up pointing backhand index tone 4","shortname":":point_up_2_tone4:","category":"people","emoji_order":"1114"},{"name":"white up pointing backhand index tone 5","shortname":":point_up_2_tone5:","category":"people","emoji_order":"1115"},{"name":"reversed hand with middle finger extended","shortname":":middle_finger:","category":"people","emoji_order":"1116","aliases":[":reversed_hand_with_middle_finger_extended:"]},{"name":"reversed hand with middle finger extended tone 1","shortname":":middle_finger_tone1:","category":"people","emoji_order":"1117","aliases":[":reversed_hand_with_middle_finger_extended_tone1:"]},{"name":"reversed hand with middle finger extended tone 2","shortname":":middle_finger_tone2:","category":"people","emoji_order":"1118","aliases":[":reversed_hand_with_middle_finger_extended_tone2:"]},{"name":"reversed hand with middle finger extended tone 3","shortname":":middle_finger_tone3:","category":"people","emoji_order":"1119","aliases":[":reversed_hand_with_middle_finger_extended_tone3:"]},{"name":"reversed hand with middle finger extended tone 4","shortname":":middle_finger_tone4:","category":"people","emoji_order":"1120","aliases":[":reversed_hand_with_middle_finger_extended_tone4:"]},{"name":"reversed hand with middle finger extended tone 5","shortname":":middle_finger_tone5:","category":"people","emoji_order":"1121","aliases":[":reversed_hand_with_middle_finger_extended_tone5:"]},{"name":"white down pointing backhand index","shortname":":point_down:","category":"people","emoji_order":"1122"},{"name":"white down pointing backhand index tone 1","shortname":":point_down_tone1:","category":"people","emoji_order":"1123"},{"name":"white down pointing backhand index tone 2","shortname":":point_down_tone2:","category":"people","emoji_order":"1124"},{"name":"white down pointing backhand index tone 3","shortname":":point_down_tone3:","category":"people","emoji_order":"1125"},{"name":"white down pointing backhand index tone 4","shortname":":point_down_tone4:","category":"people","emoji_order":"1126"},{"name":"white down pointing backhand index tone 5","shortname":":point_down_tone5:","category":"people","emoji_order":"1127"},{"name":"victory hand","shortname":":v:","category":"people","emoji_order":"1128"},{"name":"victory hand tone 1","shortname":":v_tone1:","category":"people","emoji_order":"1129"},{"name":"victory hand tone 2","shortname":":v_tone2:","category":"people","emoji_order":"1130"},{"name":"victory hand tone 3","shortname":":v_tone3:","category":"people","emoji_order":"1131"},{"name":"victory hand tone 4","shortname":":v_tone4:","category":"people","emoji_order":"1132"},{"name":"victory hand tone 5","shortname":":v_tone5:","category":"people","emoji_order":"1133"},{"name":"hand with first and index finger crossed","shortname":":fingers_crossed:","category":"people","emoji_order":"1134","aliases":[":hand_with_index_and_middle_finger_crossed:"]},{"name":"hand with index and middle fingers crossed tone 1","shortname":":fingers_crossed_tone1:","category":"people","emoji_order":"1135","aliases":[":hand_with_index_and_middle_fingers_crossed_tone1:"]},{"name":"hand with index and middle fingers crossed tone 2","shortname":":fingers_crossed_tone2:","category":"people","emoji_order":"1136","aliases":[":hand_with_index_and_middle_fingers_crossed_tone2:"]},{"name":"hand with index and middle fingers crossed tone 3","shortname":":fingers_crossed_tone3:","category":"people","emoji_order":"1137","aliases":[":hand_with_index_and_middle_fingers_crossed_tone3:"]},{"name":"hand with index and middle fingers crossed tone 4","shortname":":fingers_crossed_tone4:","category":"people","emoji_order":"1138","aliases":[":hand_with_index_and_middle_fingers_crossed_tone4:"]},{"name":"hand with index and middle fingers crossed tone 5","shortname":":fingers_crossed_tone5:","category":"people","emoji_order":"1139","aliases":[":hand_with_index_and_middle_fingers_crossed_tone5:"]},{"name":"raised hand with part between middle and ring fingers","shortname":":vulcan:","category":"people","emoji_order":"1140","aliases":[":raised_hand_with_part_between_middle_and_ring_fingers:"]},{"name":"raised hand with part between middle and ring fingers tone 1","shortname":":vulcan_tone1:","category":"people","emoji_order":"1141","aliases":[":raised_hand_with_part_between_middle_and_ring_fingers_tone1:"]},{"name":"raised hand with part between middle and ring fingers tone 2","shortname":":vulcan_tone2:","category":"people","emoji_order":"1142","aliases":[":raised_hand_with_part_between_middle_and_ring_fingers_tone2:"]},{"name":"raised hand with part between middle and ring fingers tone 3","shortname":":vulcan_tone3:","category":"people","emoji_order":"1143","aliases":[":raised_hand_with_part_between_middle_and_ring_fingers_tone3:"]},{"name":"raised hand with part between middle and ring fingers tone 4","shortname":":vulcan_tone4:","category":"people","emoji_order":"1144","aliases":[":raised_hand_with_part_between_middle_and_ring_fingers_tone4:"]},{"name":"raised hand with part between middle and ring fingers tone 5","shortname":":vulcan_tone5:","category":"people","emoji_order":"1145","aliases":[":raised_hand_with_part_between_middle_and_ring_fingers_tone5:"]},{"name":"sign of the horns","shortname":":metal:","category":"people","emoji_order":"1146","aliases":[":sign_of_the_horns:"]},{"name":"sign of the horns tone 1","shortname":":metal_tone1:","category":"people","emoji_order":"1147","aliases":[":sign_of_the_horns_tone1:"]},{"name":"sign of the horns tone 2","shortname":":metal_tone2:","category":"people","emoji_order":"1148","aliases":[":sign_of_the_horns_tone2:"]},{"name":"sign of the horns tone 3","shortname":":metal_tone3:","category":"people","emoji_order":"1149","aliases":[":sign_of_the_horns_tone3:"]},{"name":"sign of the horns tone 4","shortname":":metal_tone4:","category":"people","emoji_order":"1150","aliases":[":sign_of_the_horns_tone4:"]},{"name":"sign of the horns tone 5","shortname":":metal_tone5:","category":"people","emoji_order":"1151","aliases":[":sign_of_the_horns_tone5:"]},{"name":"call me hand","shortname":":call_me:","category":"people","emoji_order":"1152","aliases":[":call_me_hand:"]},{"name":"call me hand tone 1","shortname":":call_me_tone1:","category":"people","emoji_order":"1153","aliases":[":call_me_hand_tone1:"]},{"name":"call me hand tone 2","shortname":":call_me_tone2:","category":"people","emoji_order":"1154","aliases":[":call_me_hand_tone2:"]},{"name":"call me hand tone 3","shortname":":call_me_tone3:","category":"people","emoji_order":"1155","aliases":[":call_me_hand_tone3:"]},{"name":"call me hand tone 4","shortname":":call_me_tone4:","category":"people","emoji_order":"1156","aliases":[":call_me_hand_tone4:"]},{"name":"call me hand tone 5","shortname":":call_me_tone5:","category":"people","emoji_order":"1157","aliases":[":call_me_hand_tone5:"]},{"name":"raised hand with fingers splayed","shortname":":hand_splayed:","category":"people","emoji_order":"1158","aliases":[":raised_hand_with_fingers_splayed:"]},{"name":"raised hand with fingers splayed tone 1","shortname":":hand_splayed_tone1:","category":"people","emoji_order":"1159","aliases":[":raised_hand_with_fingers_splayed_tone1:"]},{"name":"raised hand with fingers splayed tone 2","shortname":":hand_splayed_tone2:","category":"people","emoji_order":"1160","aliases":[":raised_hand_with_fingers_splayed_tone2:"]},{"name":"raised hand with fingers splayed tone 3","shortname":":hand_splayed_tone3:","category":"people","emoji_order":"1161","aliases":[":raised_hand_with_fingers_splayed_tone3:"]},{"name":"raised hand with fingers splayed tone 4","shortname":":hand_splayed_tone4:","category":"people","emoji_order":"1162","aliases":[":raised_hand_with_fingers_splayed_tone4:"]},{"name":"raised hand with fingers splayed tone 5","shortname":":hand_splayed_tone5:","category":"people","emoji_order":"1163","aliases":[":raised_hand_with_fingers_splayed_tone5:"]},{"name":"raised hand","shortname":":raised_hand:","category":"people","emoji_order":"1164"},{"name":"raised hand tone 1","shortname":":raised_hand_tone1:","category":"people","emoji_order":"1165"},{"name":"raised hand tone 2","shortname":":raised_hand_tone2:","category":"people","emoji_order":"1166"},{"name":"raised hand tone 3","shortname":":raised_hand_tone3:","category":"people","emoji_order":"1167"},{"name":"raised hand tone 4","shortname":":raised_hand_tone4:","category":"people","emoji_order":"1168"},{"name":"raised hand tone 5","shortname":":raised_hand_tone5:","category":"people","emoji_order":"1169"},{"name":"ok hand sign","shortname":":ok_hand:","category":"people","emoji_order":"1170"},{"name":"ok hand sign tone 1","shortname":":ok_hand_tone1:","category":"people","emoji_order":"1171"},{"name":"ok hand sign tone 2","shortname":":ok_hand_tone2:","category":"people","emoji_order":"1172"},{"name":"ok hand sign tone 3","shortname":":ok_hand_tone3:","category":"people","emoji_order":"1173"},{"name":"ok hand sign tone 4","shortname":":ok_hand_tone4:","category":"people","emoji_order":"1174"},{"name":"ok hand sign tone 5","shortname":":ok_hand_tone5:","category":"people","emoji_order":"1175"},{"name":"thumbs up sign","shortname":":thumbsup:","category":"people","emoji_order":"1176","aliases":[":+1:",":thumbup:"]},{"name":"thumbs up sign tone 1","shortname":":thumbsup_tone1:","category":"people","emoji_order":"1177","aliases":[":+1_tone1:",":thumbup_tone1:"]},{"name":"thumbs up sign tone 2","shortname":":thumbsup_tone2:","category":"people","emoji_order":"1178","aliases":[":+1_tone2:",":thumbup_tone2:"]},{"name":"thumbs up sign tone 3","shortname":":thumbsup_tone3:","category":"people","emoji_order":"1179","aliases":[":+1_tone3:",":thumbup_tone3:"]},{"name":"thumbs up sign tone 4","shortname":":thumbsup_tone4:","category":"people","emoji_order":"1180","aliases":[":+1_tone4:",":thumbup_tone4:"]},{"name":"thumbs up sign tone 5","shortname":":thumbsup_tone5:","category":"people","emoji_order":"1181","aliases":[":+1_tone5:",":thumbup_tone5:"]},{"name":"thumbs down sign","shortname":":thumbsdown:","category":"people","emoji_order":"1182","aliases":[":-1:",":thumbdown:"]},{"name":"thumbs down sign tone 1","shortname":":thumbsdown_tone1:","category":"people","emoji_order":"1183","aliases":[":-1_tone1:",":thumbdown_tone1:"]},{"name":"thumbs down sign tone 2","shortname":":thumbsdown_tone2:","category":"people","emoji_order":"1184","aliases":[":-1_tone2:",":thumbdown_tone2:"]},{"name":"thumbs down sign tone 3","shortname":":thumbsdown_tone3:","category":"people","emoji_order":"1185","aliases":[":-1_tone3:",":thumbdown_tone3:"]},{"name":"thumbs down sign tone 4","shortname":":thumbsdown_tone4:","category":"people","emoji_order":"1186","aliases":[":-1_tone4:",":thumbdown_tone4:"]},{"name":"thumbs down sign tone 5","shortname":":thumbsdown_tone5:","category":"people","emoji_order":"1187","aliases":[":-1_tone5:",":thumbdown_tone5:"]},{"name":"raised fist","shortname":":fist:","category":"people","emoji_order":"1188"},{"name":"raised fist tone 1","shortname":":fist_tone1:","category":"people","emoji_order":"1189"},{"name":"raised fist tone 2","shortname":":fist_tone2:","category":"people","emoji_order":"1190"},{"name":"raised fist tone 3","shortname":":fist_tone3:","category":"people","emoji_order":"1191"},{"name":"raised fist tone 4","shortname":":fist_tone4:","category":"people","emoji_order":"1192"},{"name":"raised fist tone 5","shortname":":fist_tone5:","category":"people","emoji_order":"1193"},{"name":"fisted hand sign","shortname":":punch:","category":"people","emoji_order":"1194"},{"name":"fisted hand sign tone 1","shortname":":punch_tone1:","category":"people","emoji_order":"1195"},{"name":"fisted hand sign tone 2","shortname":":punch_tone2:","category":"people","emoji_order":"1196"},{"name":"fisted hand sign tone 3","shortname":":punch_tone3:","category":"people","emoji_order":"1197"},{"name":"fisted hand sign tone 4","shortname":":punch_tone4:","category":"people","emoji_order":"1198"},{"name":"fisted hand sign tone 5","shortname":":punch_tone5:","category":"people","emoji_order":"1199"},{"name":"left-facing fist","shortname":":left_facing_fist:","category":"people","emoji_order":"1200","aliases":[":left_fist:"]},{"name":"left facing fist tone 1","shortname":":left_facing_fist_tone1:","category":"people","emoji_order":"1201","aliases":[":left_fist_tone1:"]},{"name":"left facing fist tone 2","shortname":":left_facing_fist_tone2:","category":"people","emoji_order":"1202","aliases":[":left_fist_tone2:"]},{"name":"left facing fist tone 3","shortname":":left_facing_fist_tone3:","category":"people","emoji_order":"1203","aliases":[":left_fist_tone3:"]},{"name":"left facing fist tone 4","shortname":":left_facing_fist_tone4:","category":"people","emoji_order":"1204","aliases":[":left_fist_tone4:"]},{"name":"left facing fist tone 5","shortname":":left_facing_fist_tone5:","category":"people","emoji_order":"1205","aliases":[":left_fist_tone5:"]},{"name":"right-facing fist","shortname":":right_facing_fist:","category":"people","emoji_order":"1206","aliases":[":right_fist:"]},{"name":"right facing fist tone 1","shortname":":right_facing_fist_tone1:","category":"people","emoji_order":"1207","aliases":[":right_fist_tone1:"]},{"name":"right facing fist tone 2","shortname":":right_facing_fist_tone2:","category":"people","emoji_order":"1208","aliases":[":right_fist_tone2:"]},{"name":"right facing fist tone 3","shortname":":right_facing_fist_tone3:","category":"people","emoji_order":"1209","aliases":[":right_fist_tone3:"]},{"name":"right facing fist tone 4","shortname":":right_facing_fist_tone4:","category":"people","emoji_order":"1210","aliases":[":right_fist_tone4:"]},{"name":"right facing fist tone 5","shortname":":right_facing_fist_tone5:","category":"people","emoji_order":"1211","aliases":[":right_fist_tone5:"]},{"name":"raised back of hand","shortname":":raised_back_of_hand:","category":"people","emoji_order":"1212","aliases":[":back_of_hand:"]},{"name":"raised back of hand tone 1","shortname":":raised_back_of_hand_tone1:","category":"people","emoji_order":"1213","aliases":[":back_of_hand_tone1:"]},{"name":"raised back of hand tone 2","shortname":":raised_back_of_hand_tone2:","category":"people","emoji_order":"1214","aliases":[":back_of_hand_tone2:"]},{"name":"raised back of hand tone 3","shortname":":raised_back_of_hand_tone3:","category":"people","emoji_order":"1215","aliases":[":back_of_hand_tone3:"]},{"name":"raised back of hand tone 4","shortname":":raised_back_of_hand_tone4:","category":"people","emoji_order":"1216","aliases":[":back_of_hand_tone4:"]},{"name":"raised back of hand tone 5","shortname":":raised_back_of_hand_tone5:","category":"people","emoji_order":"1217","aliases":[":back_of_hand_tone5:"]},{"name":"waving hand sign","shortname":":wave:","category":"people","emoji_order":"1218"},{"name":"waving hand sign tone 1","shortname":":wave_tone1:","category":"people","emoji_order":"1219"},{"name":"waving hand sign tone 2","shortname":":wave_tone2:","category":"people","emoji_order":"1220"},{"name":"waving hand sign tone 3","shortname":":wave_tone3:","category":"people","emoji_order":"1221"},{"name":"waving hand sign tone 4","shortname":":wave_tone4:","category":"people","emoji_order":"1222"},{"name":"waving hand sign tone 5","shortname":":wave_tone5:","category":"people","emoji_order":"1223"},{"name":"clapping hands sign","shortname":":clap:","category":"people","emoji_order":"1224"},{"name":"clapping hands sign tone 1","shortname":":clap_tone1:","category":"people","emoji_order":"1225"},{"name":"clapping hands sign tone 2","shortname":":clap_tone2:","category":"people","emoji_order":"1226"},{"name":"clapping hands sign tone 3","shortname":":clap_tone3:","category":"people","emoji_order":"1227"},{"name":"clapping hands sign tone 4","shortname":":clap_tone4:","category":"people","emoji_order":"1228"},{"name":"clapping hands sign tone 5","shortname":":clap_tone5:","category":"people","emoji_order":"1229"},{"name":"writing hand","shortname":":writing_hand:","category":"people","emoji_order":"1230"},{"name":"writing hand tone 1","shortname":":writing_hand_tone1:","category":"people","emoji_order":"1231"},{"name":"writing hand tone 2","shortname":":writing_hand_tone2:","category":"people","emoji_order":"1232"},{"name":"writing hand tone 3","shortname":":writing_hand_tone3:","category":"people","emoji_order":"1233"},{"name":"writing hand tone 4","shortname":":writing_hand_tone4:","category":"people","emoji_order":"1234"},{"name":"writing hand tone 5","shortname":":writing_hand_tone5:","category":"people","emoji_order":"1235"},{"name":"open hands sign","shortname":":open_hands:","category":"people","emoji_order":"1236"},{"name":"open hands sign tone 1","shortname":":open_hands_tone1:","category":"people","emoji_order":"1237"},{"name":"open hands sign tone 2","shortname":":open_hands_tone2:","category":"people","emoji_order":"1238"},{"name":"open hands sign tone 3","shortname":":open_hands_tone3:","category":"people","emoji_order":"1239"},{"name":"open hands sign tone 4","shortname":":open_hands_tone4:","category":"people","emoji_order":"1240"},{"name":"open hands sign tone 5","shortname":":open_hands_tone5:","category":"people","emoji_order":"1241"},{"name":"person raising both hands in celebration","shortname":":raised_hands:","category":"people","emoji_order":"1242"},{"name":"person raising both hands in celebration tone 1","shortname":":raised_hands_tone1:","category":"people","emoji_order":"1243"},{"name":"person raising both hands in celebration tone 2","shortname":":raised_hands_tone2:","category":"people","emoji_order":"1244"},{"name":"person raising both hands in celebration tone 3","shortname":":raised_hands_tone3:","category":"people","emoji_order":"1245"},{"name":"person raising both hands in celebration tone 4","shortname":":raised_hands_tone4:","category":"people","emoji_order":"1246"},{"name":"person raising both hands in celebration tone 5","shortname":":raised_hands_tone5:","category":"people","emoji_order":"1247"},{"name":"person with folded hands","shortname":":pray:","category":"people","emoji_order":"1248"},{"name":"person with folded hands tone 1","shortname":":pray_tone1:","category":"people","emoji_order":"1249"},{"name":"person with folded hands tone 2","shortname":":pray_tone2:","category":"people","emoji_order":"1250"},{"name":"person with folded hands tone 3","shortname":":pray_tone3:","category":"people","emoji_order":"1251"},{"name":"person with folded hands tone 4","shortname":":pray_tone4:","category":"people","emoji_order":"1252"},{"name":"person with folded hands tone 5","shortname":":pray_tone5:","category":"people","emoji_order":"1253"},{"name":"handshake","shortname":":handshake:","category":"people","emoji_order":"1254","aliases":[":shaking_hands:"]},{"name":"handshake tone 1","shortname":":handshake_tone1:","category":"people","emoji_order":"1255","aliases":[":shaking_hands_tone1:"]},{"name":"handshake tone 2","shortname":":handshake_tone2:","category":"people","emoji_order":"1256","aliases":[":shaking_hands_tone2:"]},{"name":"handshake tone 3","shortname":":handshake_tone3:","category":"people","emoji_order":"1257","aliases":[":shaking_hands_tone3:"]},{"name":"handshake tone 4","shortname":":handshake_tone4:","category":"people","emoji_order":"1258","aliases":[":shaking_hands_tone4:"]},{"name":"handshake tone 5","shortname":":handshake_tone5:","category":"people","emoji_order":"1259","aliases":[":shaking_hands_tone5:"]},{"name":"nail polish","shortname":":nail_care:","category":"people","emoji_order":"1260"},{"name":"nail polish tone 1","shortname":":nail_care_tone1:","category":"people","emoji_order":"1261"},{"name":"nail polish tone 2","shortname":":nail_care_tone2:","category":"people","emoji_order":"1262"},{"name":"nail polish tone 3","shortname":":nail_care_tone3:","category":"people","emoji_order":"1263"},{"name":"nail polish tone 4","shortname":":nail_care_tone4:","category":"people","emoji_order":"1264"},{"name":"nail polish tone 5","shortname":":nail_care_tone5:","category":"people","emoji_order":"1265"},{"name":"ear","shortname":":ear:","category":"people","emoji_order":"1266"},{"name":"ear tone 1","shortname":":ear_tone1:","category":"people","emoji_order":"1267"},{"name":"ear tone 2","shortname":":ear_tone2:","category":"people","emoji_order":"1268"},{"name":"ear tone 3","shortname":":ear_tone3:","category":"people","emoji_order":"1269"},{"name":"ear tone 4","shortname":":ear_tone4:","category":"people","emoji_order":"1270"},{"name":"ear tone 5","shortname":":ear_tone5:","category":"people","emoji_order":"1271"},{"name":"nose","shortname":":nose:","category":"people","emoji_order":"1272"},{"name":"nose tone 1","shortname":":nose_tone1:","category":"people","emoji_order":"1273"},{"name":"nose tone 2","shortname":":nose_tone2:","category":"people","emoji_order":"1274"},{"name":"nose tone 3","shortname":":nose_tone3:","category":"people","emoji_order":"1275"},{"name":"nose tone 4","shortname":":nose_tone4:","category":"people","emoji_order":"1276"},{"name":"nose tone 5","shortname":":nose_tone5:","category":"people","emoji_order":"1277"},{"name":"footprints","shortname":":footprints:","category":"people","emoji_order":"1278"},{"name":"eyes","shortname":":eyes:","category":"people","emoji_order":"1279"},{"name":"eye","shortname":":eye:","category":"people","emoji_order":"1280"},{"name":"eye in speech bubble","shortname":":eye_in_speech_bubble:","category":"symbols","emoji_order":"1281"},{"name":"tongue","shortname":":tongue:","category":"people","emoji_order":"1282"},{"name":"mouth","shortname":":lips:","category":"people","emoji_order":"1283"},{"name":"kiss mark","shortname":":kiss:","category":"people","emoji_order":"1284"},{"name":"heart with arrow","shortname":":cupid:","category":"symbols","emoji_order":"1285"},{"name":"heavy black heart","shortname":":heart:","category":"symbols","emoji_order":"1286","aliases_ascii":["<3"]},{"name":"beating heart","shortname":":heartbeat:","category":"symbols","emoji_order":"1287"},{"name":"broken heart","shortname":":broken_heart:","category":"symbols","emoji_order":"1288","aliases_ascii":["3"]},{"name":"two hearts","shortname":":two_hearts:","category":"symbols","emoji_order":"1289"},{"name":"sparkling heart","shortname":":sparkling_heart:","category":"symbols","emoji_order":"1290"},{"name":"growing heart","shortname":":heartpulse:","category":"symbols","emoji_order":"1291"},{"name":"blue heart","shortname":":blue_heart:","category":"symbols","emoji_order":"1292"},{"name":"green heart","shortname":":green_heart:","category":"symbols","emoji_order":"1293"},{"name":"yellow heart","shortname":":yellow_heart:","category":"symbols","emoji_order":"1294"},{"name":"purple heart","shortname":":purple_heart:","category":"symbols","emoji_order":"1295"},{"name":"black heart","shortname":":black_heart:","category":"symbols","emoji_order":"1296"},{"name":"heart with ribbon","shortname":":gift_heart:","category":"symbols","emoji_order":"1297"},{"name":"revolving hearts","shortname":":revolving_hearts:","category":"symbols","emoji_order":"1298"},{"name":"heart decoration","shortname":":heart_decoration:","category":"symbols","emoji_order":"1299"},{"name":"heavy heart exclamation mark ornament","shortname":":heart_exclamation:","category":"symbols","emoji_order":"1300","aliases":[":heavy_heart_exclamation_mark_ornament:"]},{"name":"love letter","shortname":":love_letter:","category":"objects","emoji_order":"1301"},{"name":"sleeping symbol","shortname":":zzz:","category":"people","emoji_order":"1302"},{"name":"anger symbol","shortname":":anger:","category":"symbols","emoji_order":"1303"},{"name":"bomb","shortname":":bomb:","category":"objects","emoji_order":"1304"},{"name":"collision symbol","shortname":":boom:","category":"symbols","emoji_order":"1305"},{"name":"splashing sweat symbol","shortname":":sweat_drops:","category":"nature","emoji_order":"1306"},{"name":"dash symbol","shortname":":dash:","category":"nature","emoji_order":"1307"},{"name":"dizzy symbol","shortname":":dizzy:","category":"symbols","emoji_order":"1308"},{"name":"speech balloon","shortname":":speech_balloon:","category":"symbols","emoji_order":"1309"},{"name":"left speech bubble","shortname":":speech_left:","category":"symbols","emoji_order":"1310","aliases":[":left_speech_bubble:"]},{"name":"right anger bubble","shortname":":anger_right:","category":"symbols","emoji_order":"1311","aliases":[":right_anger_bubble:"]},{"name":"thought balloon","shortname":":thought_balloon:","category":"symbols","emoji_order":"1312"},{"name":"hole","shortname":":hole:","category":"objects","emoji_order":"1313"},{"name":"eyeglasses","shortname":":eyeglasses:","category":"people","emoji_order":"1314"},{"name":"dark sunglasses","shortname":":dark_sunglasses:","category":"people","emoji_order":"1315"},{"name":"necktie","shortname":":necktie:","category":"people","emoji_order":"1316"},{"name":"t-shirt","shortname":":shirt:","category":"people","emoji_order":"1317"},{"name":"jeans","shortname":":jeans:","category":"people","emoji_order":"1318"},{"name":"dress","shortname":":dress:","category":"people","emoji_order":"1319"},{"name":"kimono","shortname":":kimono:","category":"people","emoji_order":"1320"},{"name":"bikini","shortname":":bikini:","category":"people","emoji_order":"1321"},{"name":"womans clothes","shortname":":womans_clothes:","category":"people","emoji_order":"1322"},{"name":"purse","shortname":":purse:","category":"people","emoji_order":"1323"},{"name":"handbag","shortname":":handbag:","category":"people","emoji_order":"1324"},{"name":"pouch","shortname":":pouch:","category":"people","emoji_order":"1325"},{"name":"shopping bags","shortname":":shopping_bags:","category":"objects","emoji_order":"1326"},{"name":"school satchel","shortname":":school_satchel:","category":"people","emoji_order":"1327"},{"name":"mans shoe","shortname":":mans_shoe:","category":"people","emoji_order":"1328"},{"name":"athletic shoe","shortname":":athletic_shoe:","category":"people","emoji_order":"1329"},{"name":"high-heeled shoe","shortname":":high_heel:","category":"people","emoji_order":"1330"},{"name":"womans sandal","shortname":":sandal:","category":"people","emoji_order":"1331"},{"name":"womans boots","shortname":":boot:","category":"people","emoji_order":"1332"},{"name":"crown","shortname":":crown:","category":"people","emoji_order":"1333"},{"name":"womans hat","shortname":":womans_hat:","category":"people","emoji_order":"1334"},{"name":"top hat","shortname":":tophat:","category":"people","emoji_order":"1335"},{"name":"graduation cap","shortname":":mortar_board:","category":"people","emoji_order":"1336"},{"name":"helmet with white cross","shortname":":helmet_with_cross:","category":"people","emoji_order":"1337","aliases":[":helmet_with_white_cross:"]},{"name":"prayer beads","shortname":":prayer_beads:","category":"objects","emoji_order":"1338"},{"name":"lipstick","shortname":":lipstick:","category":"people","emoji_order":"1339"},{"name":"ring","shortname":":ring:","category":"people","emoji_order":"1340"},{"name":"gem stone","shortname":":gem:","category":"objects","emoji_order":"1341"},{"name":"monkey face","shortname":":monkey_face:","category":"nature","emoji_order":"1342"},{"name":"monkey","shortname":":monkey:","category":"nature","emoji_order":"1343"},{"name":"gorilla","shortname":":gorilla:","category":"nature","emoji_order":"1344"},{"name":"dog face","shortname":":dog:","category":"nature","emoji_order":"1345"},{"name":"dog","shortname":":dog2:","category":"nature","emoji_order":"1346"},{"name":"poodle","shortname":":poodle:","category":"nature","emoji_order":"1347"},{"name":"wolf face","shortname":":wolf:","category":"nature","emoji_order":"1348"},{"name":"fox face","shortname":":fox:","category":"nature","emoji_order":"1349","aliases":[":fox_face:"]},{"name":"cat face","shortname":":cat:","category":"nature","emoji_order":"1350"},{"name":"cat","shortname":":cat2:","category":"nature","emoji_order":"1351"},{"name":"lion face","shortname":":lion_face:","category":"nature","emoji_order":"1352","aliases":[":lion:"]},{"name":"tiger face","shortname":":tiger:","category":"nature","emoji_order":"1353"},{"name":"tiger","shortname":":tiger2:","category":"nature","emoji_order":"1354"},{"name":"leopard","shortname":":leopard:","category":"nature","emoji_order":"1355"},{"name":"horse face","shortname":":horse:","category":"nature","emoji_order":"1356"},{"name":"horse","shortname":":racehorse:","category":"nature","emoji_order":"1357"},{"name":"deer","shortname":":deer:","category":"nature","emoji_order":"1358"},{"name":"unicorn face","shortname":":unicorn:","category":"nature","emoji_order":"1359","aliases":[":unicorn_face:"]},{"name":"cow face","shortname":":cow:","category":"nature","emoji_order":"1360"},{"name":"ox","shortname":":ox:","category":"nature","emoji_order":"1361"},{"name":"water buffalo","shortname":":water_buffalo:","category":"nature","emoji_order":"1362"},{"name":"cow","shortname":":cow2:","category":"nature","emoji_order":"1363"},{"name":"pig face","shortname":":pig:","category":"nature","emoji_order":"1364"},{"name":"pig","shortname":":pig2:","category":"nature","emoji_order":"1365"},{"name":"boar","shortname":":boar:","category":"nature","emoji_order":"1366"},{"name":"pig nose","shortname":":pig_nose:","category":"nature","emoji_order":"1367"},{"name":"ram","shortname":":ram:","category":"nature","emoji_order":"1368"},{"name":"sheep","shortname":":sheep:","category":"nature","emoji_order":"1369"},{"name":"goat","shortname":":goat:","category":"nature","emoji_order":"1370"},{"name":"dromedary camel","shortname":":dromedary_camel:","category":"nature","emoji_order":"1371"},{"name":"bactrian camel","shortname":":camel:","category":"nature","emoji_order":"1372"},{"name":"elephant","shortname":":elephant:","category":"nature","emoji_order":"1373"},{"name":"rhinoceros","shortname":":rhino:","category":"nature","emoji_order":"1374","aliases":[":rhinoceros:"]},{"name":"mouse face","shortname":":mouse:","category":"nature","emoji_order":"1375"},{"name":"mouse","shortname":":mouse2:","category":"nature","emoji_order":"1376"},{"name":"rat","shortname":":rat:","category":"nature","emoji_order":"1377"},{"name":"hamster face","shortname":":hamster:","category":"nature","emoji_order":"1378"},{"name":"rabbit face","shortname":":rabbit:","category":"nature","emoji_order":"1379"},{"name":"rabbit","shortname":":rabbit2:","category":"nature","emoji_order":"1380"},{"name":"chipmunk","shortname":":chipmunk:","category":"nature","emoji_order":"1381"},{"name":"bat","shortname":":bat:","category":"nature","emoji_order":"1382"},{"name":"bear face","shortname":":bear:","category":"nature","emoji_order":"1383"},{"name":"koala","shortname":":koala:","category":"nature","emoji_order":"1384"},{"name":"panda face","shortname":":panda_face:","category":"nature","emoji_order":"1385"},{"name":"paw prints","shortname":":feet:","category":"nature","emoji_order":"1386","aliases":[":paw_prints:"]},{"name":"turkey","shortname":":turkey:","category":"nature","emoji_order":"1387"},{"name":"chicken","shortname":":chicken:","category":"nature","emoji_order":"1388"},{"name":"rooster","shortname":":rooster:","category":"nature","emoji_order":"1389"},{"name":"hatching chick","shortname":":hatching_chick:","category":"nature","emoji_order":"1390"},{"name":"baby chick","shortname":":baby_chick:","category":"nature","emoji_order":"1391"},{"name":"front-facing baby chick","shortname":":hatched_chick:","category":"nature","emoji_order":"1392"},{"name":"bird","shortname":":bird:","category":"nature","emoji_order":"1393"},{"name":"penguin","shortname":":penguin:","category":"nature","emoji_order":"1394"},{"name":"dove of peace","shortname":":dove:","category":"nature","emoji_order":"1395","aliases":[":dove_of_peace:"]},{"name":"eagle","shortname":":eagle:","category":"nature","emoji_order":"1396"},{"name":"duck","shortname":":duck:","category":"nature","emoji_order":"1397"},{"name":"owl","shortname":":owl:","category":"nature","emoji_order":"1398"},{"name":"frog face","shortname":":frog:","category":"nature","emoji_order":"1399"},{"name":"crocodile","shortname":":crocodile:","category":"nature","emoji_order":"1400"},{"name":"turtle","shortname":":turtle:","category":"nature","emoji_order":"1401"},{"name":"lizard","shortname":":lizard:","category":"nature","emoji_order":"1402"},{"name":"snake","shortname":":snake:","category":"nature","emoji_order":"1403"},{"name":"dragon face","shortname":":dragon_face:","category":"nature","emoji_order":"1404"},{"name":"dragon","shortname":":dragon:","category":"nature","emoji_order":"1405"},{"name":"spouting whale","shortname":":whale:","category":"nature","emoji_order":"1406"},{"name":"whale","shortname":":whale2:","category":"nature","emoji_order":"1407"},{"name":"dolphin","shortname":":dolphin:","category":"nature","emoji_order":"1408"},{"name":"fish","shortname":":fish:","category":"nature","emoji_order":"1409"},{"name":"tropical fish","shortname":":tropical_fish:","category":"nature","emoji_order":"1410"},{"name":"blowfish","shortname":":blowfish:","category":"nature","emoji_order":"1411"},{"name":"shark","shortname":":shark:","category":"nature","emoji_order":"1412"},{"name":"octopus","shortname":":octopus:","category":"nature","emoji_order":"1413"},{"name":"spiral shell","shortname":":shell:","category":"nature","emoji_order":"1414"},{"name":"crab","shortname":":crab:","category":"nature","emoji_order":"1415"},{"name":"shrimp","shortname":":shrimp:","category":"nature","emoji_order":"1416"},{"name":"squid","shortname":":squid:","category":"nature","emoji_order":"1417"},{"name":"butterfly","shortname":":butterfly:","category":"nature","emoji_order":"1418"},{"name":"snail","shortname":":snail:","category":"nature","emoji_order":"1419"},{"name":"bug","shortname":":bug:","category":"nature","emoji_order":"1420"},{"name":"ant","shortname":":ant:","category":"nature","emoji_order":"1421"},{"name":"honeybee","shortname":":bee:","category":"nature","emoji_order":"1422"},{"name":"lady beetle","shortname":":beetle:","category":"nature","emoji_order":"1423"},{"name":"spider","shortname":":spider:","category":"nature","emoji_order":"1424"},{"name":"spider web","shortname":":spider_web:","category":"nature","emoji_order":"1425"},{"name":"scorpion","shortname":":scorpion:","category":"nature","emoji_order":"1426"},{"name":"bouquet","shortname":":bouquet:","category":"nature","emoji_order":"1427"},{"name":"cherry blossom","shortname":":cherry_blossom:","category":"nature","emoji_order":"1428"},{"name":"white flower","shortname":":white_flower:","category":"symbols","emoji_order":"1429"},{"name":"rosette","shortname":":rosette:","category":"nature","emoji_order":"1430"},{"name":"rose","shortname":":rose:","category":"nature","emoji_order":"1431"},{"name":"wilted flower","shortname":":wilted_rose:","category":"nature","emoji_order":"1432","aliases":[":wilted_flower:"]},{"name":"hibiscus","shortname":":hibiscus:","category":"nature","emoji_order":"1433"},{"name":"sunflower","shortname":":sunflower:","category":"nature","emoji_order":"1434"},{"name":"blossom","shortname":":blossom:","category":"nature","emoji_order":"1435"},{"name":"tulip","shortname":":tulip:","category":"nature","emoji_order":"1436"},{"name":"seedling","shortname":":seedling:","category":"nature","emoji_order":"1437"},{"name":"evergreen tree","shortname":":evergreen_tree:","category":"nature","emoji_order":"1438"},{"name":"deciduous tree","shortname":":deciduous_tree:","category":"nature","emoji_order":"1439"},{"name":"palm tree","shortname":":palm_tree:","category":"nature","emoji_order":"1440"},{"name":"cactus","shortname":":cactus:","category":"nature","emoji_order":"1441"},{"name":"ear of rice","shortname":":ear_of_rice:","category":"nature","emoji_order":"1442"},{"name":"herb","shortname":":herb:","category":"nature","emoji_order":"1443"},{"name":"shamrock","shortname":":shamrock:","category":"nature","emoji_order":"1444"},{"name":"four leaf clover","shortname":":four_leaf_clover:","category":"nature","emoji_order":"1445"},{"name":"maple leaf","shortname":":maple_leaf:","category":"nature","emoji_order":"1446"},{"name":"fallen leaf","shortname":":fallen_leaf:","category":"nature","emoji_order":"1447"},{"name":"leaf fluttering in wind","shortname":":leaves:","category":"nature","emoji_order":"1448"},{"name":"grapes","shortname":":grapes:","category":"food","emoji_order":"1449"},{"name":"melon","shortname":":melon:","category":"food","emoji_order":"1450"},{"name":"watermelon","shortname":":watermelon:","category":"food","emoji_order":"1451"},{"name":"tangerine","shortname":":tangerine:","category":"food","emoji_order":"1452"},{"name":"lemon","shortname":":lemon:","category":"food","emoji_order":"1453"},{"name":"banana","shortname":":banana:","category":"food","emoji_order":"1454"},{"name":"pineapple","shortname":":pineapple:","category":"food","emoji_order":"1455"},{"name":"red apple","shortname":":apple:","category":"food","emoji_order":"1456"},{"name":"green apple","shortname":":green_apple:","category":"food","emoji_order":"1457"},{"name":"pear","shortname":":pear:","category":"food","emoji_order":"1458"},{"name":"peach","shortname":":peach:","category":"food","emoji_order":"1459"},{"name":"cherries","shortname":":cherries:","category":"food","emoji_order":"1460"},{"name":"strawberry","shortname":":strawberry:","category":"food","emoji_order":"1461"},{"name":"kiwifruit","shortname":":kiwi:","category":"food","emoji_order":"1462","aliases":[":kiwifruit:"]},{"name":"tomato","shortname":":tomato:","category":"food","emoji_order":"1463"},{"name":"avocado","shortname":":avocado:","category":"food","emoji_order":"1464"},{"name":"aubergine","shortname":":eggplant:","category":"food","emoji_order":"1465"},{"name":"potato","shortname":":potato:","category":"food","emoji_order":"1466"},{"name":"carrot","shortname":":carrot:","category":"food","emoji_order":"1467"},{"name":"ear of maize","shortname":":corn:","category":"food","emoji_order":"1468"},{"name":"hot pepper","shortname":":hot_pepper:","category":"food","emoji_order":"1469"},{"name":"cucumber","shortname":":cucumber:","category":"food","emoji_order":"1470"},{"name":"mushroom","shortname":":mushroom:","category":"nature","emoji_order":"1471"},{"name":"peanuts","shortname":":peanuts:","category":"food","emoji_order":"1472","aliases":[":shelled_peanut:"]},{"name":"chestnut","shortname":":chestnut:","category":"nature","emoji_order":"1473"},{"name":"bread","shortname":":bread:","category":"food","emoji_order":"1474"},{"name":"croissant","shortname":":croissant:","category":"food","emoji_order":"1475"},{"name":"baguette bread","shortname":":french_bread:","category":"food","emoji_order":"1476","aliases":[":baguette_bread:"]},{"name":"pancakes","shortname":":pancakes:","category":"food","emoji_order":"1477"},{"name":"cheese wedge","shortname":":cheese:","category":"food","emoji_order":"1478","aliases":[":cheese_wedge:"]},{"name":"meat on bone","shortname":":meat_on_bone:","category":"food","emoji_order":"1479"},{"name":"poultry leg","shortname":":poultry_leg:","category":"food","emoji_order":"1480"},{"name":"bacon","shortname":":bacon:","category":"food","emoji_order":"1481"},{"name":"hamburger","shortname":":hamburger:","category":"food","emoji_order":"1482"},{"name":"french fries","shortname":":fries:","category":"food","emoji_order":"1483"},{"name":"slice of pizza","shortname":":pizza:","category":"food","emoji_order":"1484"},{"name":"hot dog","shortname":":hotdog:","category":"food","emoji_order":"1485","aliases":[":hot_dog:"]},{"name":"taco","shortname":":taco:","category":"food","emoji_order":"1486"},{"name":"burrito","shortname":":burrito:","category":"food","emoji_order":"1487"},{"name":"stuffed flatbread","shortname":":stuffed_flatbread:","category":"food","emoji_order":"1488","aliases":[":stuffed_pita:"]},{"name":"egg","shortname":":egg:","category":"food","emoji_order":"1489"},{"name":"cooking","shortname":":cooking:","category":"food","emoji_order":"1490"},{"name":"shallow pan of food","shortname":":shallow_pan_of_food:","category":"food","emoji_order":"1491","aliases":[":paella:"]},{"name":"pot of food","shortname":":stew:","category":"food","emoji_order":"1492"},{"name":"green salad","shortname":":salad:","category":"food","emoji_order":"1493","aliases":[":green_salad:"]},{"name":"popcorn","shortname":":popcorn:","category":"food","emoji_order":"1494"},{"name":"bento box","shortname":":bento:","category":"food","emoji_order":"1495"},{"name":"rice cracker","shortname":":rice_cracker:","category":"food","emoji_order":"1496"},{"name":"rice ball","shortname":":rice_ball:","category":"food","emoji_order":"1497"},{"name":"cooked rice","shortname":":rice:","category":"food","emoji_order":"1498"},{"name":"curry and rice","shortname":":curry:","category":"food","emoji_order":"1499"},{"name":"steaming bowl","shortname":":ramen:","category":"food","emoji_order":"1500"},{"name":"spaghetti","shortname":":spaghetti:","category":"food","emoji_order":"1501"},{"name":"roasted sweet potato","shortname":":sweet_potato:","category":"food","emoji_order":"1502"},{"name":"oden","shortname":":oden:","category":"food","emoji_order":"1503"},{"name":"sushi","shortname":":sushi:","category":"food","emoji_order":"1504"},{"name":"fried shrimp","shortname":":fried_shrimp:","category":"food","emoji_order":"1505"},{"name":"fish cake with swirl design","shortname":":fish_cake:","category":"food","emoji_order":"1506"},{"name":"dango","shortname":":dango:","category":"food","emoji_order":"1507"},{"name":"soft ice cream","shortname":":icecream:","category":"food","emoji_order":"1508"},{"name":"shaved ice","shortname":":shaved_ice:","category":"food","emoji_order":"1509"},{"name":"ice cream","shortname":":ice_cream:","category":"food","emoji_order":"1510"},{"name":"doughnut","shortname":":doughnut:","category":"food","emoji_order":"1511"},{"name":"cookie","shortname":":cookie:","category":"food","emoji_order":"1512"},{"name":"birthday cake","shortname":":birthday:","category":"food","emoji_order":"1513"},{"name":"shortcake","shortname":":cake:","category":"food","emoji_order":"1514"},{"name":"chocolate bar","shortname":":chocolate_bar:","category":"food","emoji_order":"1515"},{"name":"candy","shortname":":candy:","category":"food","emoji_order":"1516"},{"name":"lollipop","shortname":":lollipop:","category":"food","emoji_order":"1517"},{"name":"custard","shortname":":custard:","category":"food","emoji_order":"1518","aliases":[":pudding:",":flan:"]},{"name":"honey pot","shortname":":honey_pot:","category":"food","emoji_order":"1519"},{"name":"baby bottle","shortname":":baby_bottle:","category":"food","emoji_order":"1520"},{"name":"glass of milk","shortname":":milk:","category":"food","emoji_order":"1521","aliases":[":glass_of_milk:"]},{"name":"hot beverage","shortname":":coffee:","category":"food","emoji_order":"1522"},{"name":"teacup without handle","shortname":":tea:","category":"food","emoji_order":"1523"},{"name":"sake bottle and cup","shortname":":sake:","category":"food","emoji_order":"1524"},{"name":"bottle with popping cork","shortname":":champagne:","category":"food","emoji_order":"1525","aliases":[":bottle_with_popping_cork:"]},{"name":"wine glass","shortname":":wine_glass:","category":"food","emoji_order":"1526"},{"name":"cocktail glass","shortname":":cocktail:","category":"food","emoji_order":"1527"},{"name":"tropical drink","shortname":":tropical_drink:","category":"food","emoji_order":"1528"},{"name":"beer mug","shortname":":beer:","category":"food","emoji_order":"1529"},{"name":"clinking beer mugs","shortname":":beers:","category":"food","emoji_order":"1530"},{"name":"clinking glasses","shortname":":champagne_glass:","category":"food","emoji_order":"1531","aliases":[":clinking_glass:"]},{"name":"tumbler glass","shortname":":tumbler_glass:","category":"food","emoji_order":"1532","aliases":[":whisky:"]},{"name":"fork and knife with plate","shortname":":fork_knife_plate:","category":"food","emoji_order":"1533","aliases":[":fork_and_knife_with_plate:"]},{"name":"fork and knife","shortname":":fork_and_knife:","category":"food","emoji_order":"1534"},{"name":"spoon","shortname":":spoon:","category":"food","emoji_order":"1535"},{"name":"hocho","shortname":":knife:","category":"objects","emoji_order":"1536"},{"name":"amphora","shortname":":amphora:","category":"objects","emoji_order":"1537"},{"name":"earth globe europe-africa","shortname":":earth_africa:","category":"nature","emoji_order":"1538"},{"name":"earth globe americas","shortname":":earth_americas:","category":"nature","emoji_order":"1539"},{"name":"earth globe asia-australia","shortname":":earth_asia:","category":"nature","emoji_order":"1540"},{"name":"globe with meridians","shortname":":globe_with_meridians:","category":"symbols","emoji_order":"1541"},{"name":"world map","shortname":":map:","category":"objects","emoji_order":"1542","aliases":[":world_map:"]},{"name":"silhouette of japan","shortname":":japan:","category":"travel","emoji_order":"1543"},{"name":"snow capped mountain","shortname":":mountain_snow:","category":"travel","emoji_order":"1544","aliases":[":snow_capped_mountain:"]},{"name":"mountain","shortname":":mountain:","category":"travel","emoji_order":"1545"},{"name":"volcano","shortname":":volcano:","category":"travel","emoji_order":"1546"},{"name":"mount fuji","shortname":":mount_fuji:","category":"travel","emoji_order":"1547"},{"name":"camping","shortname":":camping:","category":"travel","emoji_order":"1548"},{"name":"beach with umbrella","shortname":":beach:","category":"travel","emoji_order":"1549","aliases":[":beach_with_umbrella:"]},{"name":"desert","shortname":":desert:","category":"travel","emoji_order":"1550"},{"name":"desert island","shortname":":island:","category":"travel","emoji_order":"1551","aliases":[":desert_island:"]},{"name":"national park","shortname":":park:","category":"travel","emoji_order":"1552","aliases":[":national_park:"]},{"name":"stadium","shortname":":stadium:","category":"travel","emoji_order":"1553"},{"name":"classical building","shortname":":classical_building:","category":"travel","emoji_order":"1554"},{"name":"building construction","shortname":":construction_site:","category":"travel","emoji_order":"1555","aliases":[":building_construction:"]},{"name":"house buildings","shortname":":homes:","category":"travel","emoji_order":"1556","aliases":[":house_buildings:"]},{"name":"cityscape","shortname":":cityscape:","category":"travel","emoji_order":"1557"},{"name":"derelict house building","shortname":":house_abandoned:","category":"travel","emoji_order":"1558","aliases":[":derelict_house_building:"]},{"name":"house building","shortname":":house:","category":"travel","emoji_order":"1559"},{"name":"house with garden","shortname":":house_with_garden:","category":"travel","emoji_order":"1560"},{"name":"office building","shortname":":office:","category":"travel","emoji_order":"1561"},{"name":"japanese post office","shortname":":post_office:","category":"travel","emoji_order":"1562"},{"name":"european post office","shortname":":european_post_office:","category":"travel","emoji_order":"1563"},{"name":"hospital","shortname":":hospital:","category":"travel","emoji_order":"1564"},{"name":"bank","shortname":":bank:","category":"travel","emoji_order":"1565"},{"name":"hotel","shortname":":hotel:","category":"travel","emoji_order":"1566"},{"name":"love hotel","shortname":":love_hotel:","category":"travel","emoji_order":"1567"},{"name":"convenience store","shortname":":convenience_store:","category":"travel","emoji_order":"1568"},{"name":"school","shortname":":school:","category":"travel","emoji_order":"1569"},{"name":"department store","shortname":":department_store:","category":"travel","emoji_order":"1570"},{"name":"factory","shortname":":factory:","category":"travel","emoji_order":"1571"},{"name":"japanese castle","shortname":":japanese_castle:","category":"travel","emoji_order":"1572"},{"name":"european castle","shortname":":european_castle:","category":"travel","emoji_order":"1573"},{"name":"wedding","shortname":":wedding:","category":"travel","emoji_order":"1574"},{"name":"tokyo tower","shortname":":tokyo_tower:","category":"travel","emoji_order":"1575"},{"name":"statue of liberty","shortname":":statue_of_liberty:","category":"travel","emoji_order":"1576"},{"name":"church","shortname":":church:","category":"travel","emoji_order":"1577"},{"name":"mosque","shortname":":mosque:","category":"travel","emoji_order":"1578"},{"name":"synagogue","shortname":":synagogue:","category":"travel","emoji_order":"1579"},{"name":"shinto shrine","shortname":":shinto_shrine:","category":"travel","emoji_order":"1580"},{"name":"kaaba","shortname":":kaaba:","category":"travel","emoji_order":"1581"},{"name":"fountain","shortname":":fountain:","category":"travel","emoji_order":"1582"},{"name":"tent","shortname":":tent:","category":"travel","emoji_order":"1583"},{"name":"foggy","shortname":":foggy:","category":"travel","emoji_order":"1584"},{"name":"night with stars","shortname":":night_with_stars:","category":"travel","emoji_order":"1585"},{"name":"sunrise over mountains","shortname":":sunrise_over_mountains:","category":"travel","emoji_order":"1586"},{"name":"sunrise","shortname":":sunrise:","category":"travel","emoji_order":"1587"},{"name":"cityscape at dusk","shortname":":city_dusk:","category":"travel","emoji_order":"1588"},{"name":"sunset over buildings","shortname":":city_sunset:","category":"travel","emoji_order":"1589","aliases":[":city_sunrise:"]},{"name":"bridge at night","shortname":":bridge_at_night:","category":"travel","emoji_order":"1590"},{"name":"hot springs","shortname":":hotsprings:","category":"symbols","emoji_order":"1591"},{"name":"milky way","shortname":":milky_way:","category":"travel","emoji_order":"1592"},{"name":"carousel horse","shortname":":carousel_horse:","category":"travel","emoji_order":"1593"},{"name":"ferris wheel","shortname":":ferris_wheel:","category":"travel","emoji_order":"1594"},{"name":"roller coaster","shortname":":roller_coaster:","category":"travel","emoji_order":"1595"},{"name":"barber pole","shortname":":barber:","category":"objects","emoji_order":"1596"},{"name":"circus tent","shortname":":circus_tent:","category":"activity","emoji_order":"1597"},{"name":"performing arts","shortname":":performing_arts:","category":"activity","emoji_order":"1598"},{"name":"frame with picture","shortname":":frame_photo:","category":"objects","emoji_order":"1599","aliases":[":frame_with_picture:"]},{"name":"artist palette","shortname":":art:","category":"activity","emoji_order":"1600"},{"name":"slot machine","shortname":":slot_machine:","category":"activity","emoji_order":"1601"},{"name":"steam locomotive","shortname":":steam_locomotive:","category":"travel","emoji_order":"1602"},{"name":"railway car","shortname":":railway_car:","category":"travel","emoji_order":"1603"},{"name":"high-speed train","shortname":":bullettrain_side:","category":"travel","emoji_order":"1604"},{"name":"high-speed train with bullet nose","shortname":":bullettrain_front:","category":"travel","emoji_order":"1605"},{"name":"train","shortname":":train2:","category":"travel","emoji_order":"1606"},{"name":"metro","shortname":":metro:","category":"travel","emoji_order":"1607"},{"name":"light rail","shortname":":light_rail:","category":"travel","emoji_order":"1608"},{"name":"station","shortname":":station:","category":"travel","emoji_order":"1609"},{"name":"tram","shortname":":tram:","category":"travel","emoji_order":"1610"},{"name":"monorail","shortname":":monorail:","category":"travel","emoji_order":"1611"},{"name":"mountain railway","shortname":":mountain_railway:","category":"travel","emoji_order":"1612"},{"name":"tram car","shortname":":train:","category":"travel","emoji_order":"1613"},{"name":"bus","shortname":":bus:","category":"travel","emoji_order":"1614"},{"name":"oncoming bus","shortname":":oncoming_bus:","category":"travel","emoji_order":"1615"},{"name":"trolleybus","shortname":":trolleybus:","category":"travel","emoji_order":"1616"},{"name":"minibus","shortname":":minibus:","category":"travel","emoji_order":"1617"},{"name":"ambulance","shortname":":ambulance:","category":"travel","emoji_order":"1618"},{"name":"fire engine","shortname":":fire_engine:","category":"travel","emoji_order":"1619"},{"name":"police car","shortname":":police_car:","category":"travel","emoji_order":"1620"},{"name":"oncoming police car","shortname":":oncoming_police_car:","category":"travel","emoji_order":"1621"},{"name":"taxi","shortname":":taxi:","category":"travel","emoji_order":"1622"},{"name":"oncoming taxi","shortname":":oncoming_taxi:","category":"travel","emoji_order":"1623"},{"name":"automobile","shortname":":red_car:","category":"travel","emoji_order":"1624"},{"name":"oncoming automobile","shortname":":oncoming_automobile:","category":"travel","emoji_order":"1625"},{"name":"recreational vehicle","shortname":":blue_car:","category":"travel","emoji_order":"1626"},{"name":"delivery truck","shortname":":truck:","category":"travel","emoji_order":"1627"},{"name":"articulated lorry","shortname":":articulated_lorry:","category":"travel","emoji_order":"1628"},{"name":"tractor","shortname":":tractor:","category":"travel","emoji_order":"1629"},{"name":"bicycle","shortname":":bike:","category":"travel","emoji_order":"1630"},{"name":"scooter","shortname":":scooter:","category":"travel","emoji_order":"1631"},{"name":"motor scooter","shortname":":motor_scooter:","category":"travel","emoji_order":"1632","aliases":[":motorbike:"]},{"name":"bus stop","shortname":":busstop:","category":"travel","emoji_order":"1633"},{"name":"motorway","shortname":":motorway:","category":"travel","emoji_order":"1634"},{"name":"railway track","shortname":":railway_track:","category":"travel","emoji_order":"1635","aliases":[":railroad_track:"]},{"name":"fuel pump","shortname":":fuelpump:","category":"travel","emoji_order":"1636"},{"name":"police cars revolving light","shortname":":rotating_light:","category":"travel","emoji_order":"1637"},{"name":"horizontal traffic light","shortname":":traffic_light:","category":"travel","emoji_order":"1638"},{"name":"vertical traffic light","shortname":":vertical_traffic_light:","category":"travel","emoji_order":"1639"},{"name":"construction sign","shortname":":construction:","category":"travel","emoji_order":"1640"},{"name":"octagonal sign","shortname":":octagonal_sign:","category":"symbols","emoji_order":"1641","aliases":[":stop_sign:"]},{"name":"anchor","shortname":":anchor:","category":"travel","emoji_order":"1642"},{"name":"sailboat","shortname":":sailboat:","category":"travel","emoji_order":"1643"},{"name":"canoe","shortname":":canoe:","category":"travel","emoji_order":"1644","aliases":[":kayak:"]},{"name":"speedboat","shortname":":speedboat:","category":"travel","emoji_order":"1645"},{"name":"passenger ship","shortname":":cruise_ship:","category":"travel","emoji_order":"1646","aliases":[":passenger_ship:"]},{"name":"ferry","shortname":":ferry:","category":"travel","emoji_order":"1647"},{"name":"motorboat","shortname":":motorboat:","category":"travel","emoji_order":"1648"},{"name":"ship","shortname":":ship:","category":"travel","emoji_order":"1649"},{"name":"airplane","shortname":":airplane:","category":"travel","emoji_order":"1650"},{"name":"small airplane","shortname":":airplane_small:","category":"travel","emoji_order":"1651","aliases":[":small_airplane:"]},{"name":"airplane departure","shortname":":airplane_departure:","category":"travel","emoji_order":"1652"},{"name":"airplane arriving","shortname":":airplane_arriving:","category":"travel","emoji_order":"1653"},{"name":"seat","shortname":":seat:","category":"travel","emoji_order":"1654"},{"name":"helicopter","shortname":":helicopter:","category":"travel","emoji_order":"1655"},{"name":"suspension railway","shortname":":suspension_railway:","category":"travel","emoji_order":"1656"},{"name":"mountain cableway","shortname":":mountain_cableway:","category":"travel","emoji_order":"1657"},{"name":"aerial tramway","shortname":":aerial_tramway:","category":"travel","emoji_order":"1658"},{"name":"rocket","shortname":":rocket:","category":"travel","emoji_order":"1659"},{"name":"satellite","shortname":":satellite_orbital:","category":"travel","emoji_order":"1660"},{"name":"bellhop bell","shortname":":bellhop:","category":"objects","emoji_order":"1661","aliases":[":bellhop_bell:"]},{"name":"door","shortname":":door:","category":"objects","emoji_order":"1662"},{"name":"sleeping accommodation","shortname":":sleeping_accommodation:","category":"objects","emoji_order":"1663"},{"name":"bed","shortname":":bed:","category":"objects","emoji_order":"1669"},{"name":"couch and lamp","shortname":":couch:","category":"objects","emoji_order":"1670","aliases":[":couch_and_lamp:"]},{"name":"toilet","shortname":":toilet:","category":"objects","emoji_order":"1671"},{"name":"shower","shortname":":shower:","category":"objects","emoji_order":"1672"},{"name":"bath","shortname":":bath:","category":"activity","emoji_order":"1673"},{"name":"bath tone 1","shortname":":bath_tone1:","category":"activity","emoji_order":"1674"},{"name":"bath tone 2","shortname":":bath_tone2:","category":"activity","emoji_order":"1675"},{"name":"bath tone 3","shortname":":bath_tone3:","category":"activity","emoji_order":"1676"},{"name":"bath tone 4","shortname":":bath_tone4:","category":"activity","emoji_order":"1677"},{"name":"bath tone 5","shortname":":bath_tone5:","category":"activity","emoji_order":"1678"},{"name":"bathtub","shortname":":bathtub:","category":"objects","emoji_order":"1679"},{"name":"hourglass","shortname":":hourglass:","category":"objects","emoji_order":"1680"},{"name":"hourglass with flowing sand","shortname":":hourglass_flowing_sand:","category":"objects","emoji_order":"1681"},{"name":"watch","shortname":":watch:","category":"objects","emoji_order":"1682"},{"name":"alarm clock","shortname":":alarm_clock:","category":"objects","emoji_order":"1683"},{"name":"stopwatch","shortname":":stopwatch:","category":"objects","emoji_order":"1684"},{"name":"timer clock","shortname":":timer:","category":"objects","emoji_order":"1685","aliases":[":timer_clock:"]},{"name":"mantlepiece clock","shortname":":clock:","category":"objects","emoji_order":"1686","aliases":[":mantlepiece_clock:"]},{"name":"clock face twelve oclock","shortname":":clock12:","category":"symbols","emoji_order":"1687"},{"name":"clock face twelve-thirty","shortname":":clock1230:","category":"symbols","emoji_order":"1688"},{"name":"clock face one oclock","shortname":":clock1:","category":"symbols","emoji_order":"1689"},{"name":"clock face one-thirty","shortname":":clock130:","category":"symbols","emoji_order":"1690"},{"name":"clock face two oclock","shortname":":clock2:","category":"symbols","emoji_order":"1691"},{"name":"clock face two-thirty","shortname":":clock230:","category":"symbols","emoji_order":"1692"},{"name":"clock face three oclock","shortname":":clock3:","category":"symbols","emoji_order":"1693"},{"name":"clock face three-thirty","shortname":":clock330:","category":"symbols","emoji_order":"1694"},{"name":"clock face four oclock","shortname":":clock4:","category":"symbols","emoji_order":"1695"},{"name":"clock face four-thirty","shortname":":clock430:","category":"symbols","emoji_order":"1696"},{"name":"clock face five oclock","shortname":":clock5:","category":"symbols","emoji_order":"1697"},{"name":"clock face five-thirty","shortname":":clock530:","category":"symbols","emoji_order":"1698"},{"name":"clock face six oclock","shortname":":clock6:","category":"symbols","emoji_order":"1699"},{"name":"clock face six-thirty","shortname":":clock630:","category":"symbols","emoji_order":"1700"},{"name":"clock face seven oclock","shortname":":clock7:","category":"symbols","emoji_order":"1701"},{"name":"clock face seven-thirty","shortname":":clock730:","category":"symbols","emoji_order":"1702"},{"name":"clock face eight oclock","shortname":":clock8:","category":"symbols","emoji_order":"1703"},{"name":"clock face eight-thirty","shortname":":clock830:","category":"symbols","emoji_order":"1704"},{"name":"clock face nine oclock","shortname":":clock9:","category":"symbols","emoji_order":"1705"},{"name":"clock face nine-thirty","shortname":":clock930:","category":"symbols","emoji_order":"1706"},{"name":"clock face ten oclock","shortname":":clock10:","category":"symbols","emoji_order":"1707"},{"name":"clock face ten-thirty","shortname":":clock1030:","category":"symbols","emoji_order":"1708"},{"name":"clock face eleven oclock","shortname":":clock11:","category":"symbols","emoji_order":"1709"},{"name":"clock face eleven-thirty","shortname":":clock1130:","category":"symbols","emoji_order":"1710"},{"name":"new moon symbol","shortname":":new_moon:","category":"nature","emoji_order":"1711"},{"name":"waxing crescent moon symbol","shortname":":waxing_crescent_moon:","category":"nature","emoji_order":"1712"},{"name":"first quarter moon symbol","shortname":":first_quarter_moon:","category":"nature","emoji_order":"1713"},{"name":"waxing gibbous moon symbol","shortname":":waxing_gibbous_moon:","category":"nature","emoji_order":"1714"},{"name":"full moon symbol","shortname":":full_moon:","category":"nature","emoji_order":"1715"},{"name":"waning gibbous moon symbol","shortname":":waning_gibbous_moon:","category":"nature","emoji_order":"1716"},{"name":"last quarter moon symbol","shortname":":last_quarter_moon:","category":"nature","emoji_order":"1717"},{"name":"waning crescent moon symbol","shortname":":waning_crescent_moon:","category":"nature","emoji_order":"1718"},{"name":"crescent moon","shortname":":crescent_moon:","category":"nature","emoji_order":"1719"},{"name":"new moon with face","shortname":":new_moon_with_face:","category":"nature","emoji_order":"1720"},{"name":"first quarter moon with face","shortname":":first_quarter_moon_with_face:","category":"nature","emoji_order":"1721"},{"name":"last quarter moon with face","shortname":":last_quarter_moon_with_face:","category":"nature","emoji_order":"1722"},{"name":"thermometer","shortname":":thermometer:","category":"objects","emoji_order":"1723"},{"name":"black sun with rays","shortname":":sunny:","category":"nature","emoji_order":"1724"},{"name":"full moon with face","shortname":":full_moon_with_face:","category":"nature","emoji_order":"1725"},{"name":"sun with face","shortname":":sun_with_face:","category":"nature","emoji_order":"1726"},{"name":"white medium star","shortname":":star:","category":"nature","emoji_order":"1727"},{"name":"glowing star","shortname":":star2:","category":"nature","emoji_order":"1728"},{"name":"shooting star","shortname":":stars:","category":"travel","emoji_order":"1729"},{"name":"cloud","shortname":":cloud:","category":"nature","emoji_order":"1730"},{"name":"sun behind cloud","shortname":":partly_sunny:","category":"nature","emoji_order":"1731"},{"name":"thunder cloud and rain","shortname":":thunder_cloud_rain:","category":"nature","emoji_order":"1732","aliases":[":thunder_cloud_and_rain:"]},{"name":"white sun with small cloud","shortname":":white_sun_small_cloud:","category":"nature","emoji_order":"1733","aliases":[":white_sun_with_small_cloud:"]},{"name":"white sun behind cloud","shortname":":white_sun_cloud:","category":"nature","emoji_order":"1734","aliases":[":white_sun_behind_cloud:"]},{"name":"white sun behind cloud with rain","shortname":":white_sun_rain_cloud:","category":"nature","emoji_order":"1735","aliases":[":white_sun_behind_cloud_with_rain:"]},{"name":"cloud with rain","shortname":":cloud_rain:","category":"nature","emoji_order":"1736","aliases":[":cloud_with_rain:"]},{"name":"cloud with snow","shortname":":cloud_snow:","category":"nature","emoji_order":"1737","aliases":[":cloud_with_snow:"]},{"name":"cloud with lightning","shortname":":cloud_lightning:","category":"nature","emoji_order":"1738","aliases":[":cloud_with_lightning:"]},{"name":"cloud with tornado","shortname":":cloud_tornado:","category":"nature","emoji_order":"1739","aliases":[":cloud_with_tornado:"]},{"name":"fog","shortname":":fog:","category":"nature","emoji_order":"1740"},{"name":"wind blowing face","shortname":":wind_blowing_face:","category":"nature","emoji_order":"1741"},{"name":"cyclone","shortname":":cyclone:","category":"symbols","emoji_order":"1742"},{"name":"rainbow","shortname":":rainbow:","category":"travel","emoji_order":"1743"},{"name":"closed umbrella","shortname":":closed_umbrella:","category":"people","emoji_order":"1744"},{"name":"umbrella","shortname":":umbrella2:","category":"nature","emoji_order":"1745"},{"name":"umbrella with rain drops","shortname":":umbrella:","category":"nature","emoji_order":"1746"},{"name":"umbrella on ground","shortname":":beach_umbrella:","category":"objects","emoji_order":"1747","aliases":[":umbrella_on_ground:"]},{"name":"high voltage sign","shortname":":zap:","category":"nature","emoji_order":"1748"},{"name":"snowflake","shortname":":snowflake:","category":"nature","emoji_order":"1749"},{"name":"snowman","shortname":":snowman2:","category":"nature","emoji_order":"1750"},{"name":"snowman without snow","shortname":":snowman:","category":"nature","emoji_order":"1751"},{"name":"comet","shortname":":comet:","category":"nature","emoji_order":"1752"},{"name":"fire","shortname":":fire:","category":"nature","emoji_order":"1753","aliases":[":flame:"]},{"name":"droplet","shortname":":droplet:","category":"nature","emoji_order":"1754"},{"name":"water wave","shortname":":ocean:","category":"nature","emoji_order":"1755"},{"name":"jack-o-lantern","shortname":":jack_o_lantern:","category":"nature","emoji_order":"1756"},{"name":"christmas tree","shortname":":christmas_tree:","category":"nature","emoji_order":"1757"},{"name":"fireworks","shortname":":fireworks:","category":"travel","emoji_order":"1758"},{"name":"firework sparkler","shortname":":sparkler:","category":"travel","emoji_order":"1759"},{"name":"sparkles","shortname":":sparkles:","category":"nature","emoji_order":"1760"},{"name":"balloon","shortname":":balloon:","category":"objects","emoji_order":"1761"},{"name":"party popper","shortname":":tada:","category":"objects","emoji_order":"1762"},{"name":"confetti ball","shortname":":confetti_ball:","category":"objects","emoji_order":"1763"},{"name":"tanabata tree","shortname":":tanabata_tree:","category":"nature","emoji_order":"1764"},{"name":"pine decoration","shortname":":bamboo:","category":"nature","emoji_order":"1765"},{"name":"japanese dolls","shortname":":dolls:","category":"objects","emoji_order":"1766"},{"name":"carp streamer","shortname":":flags:","category":"objects","emoji_order":"1767"},{"name":"wind chime","shortname":":wind_chime:","category":"objects","emoji_order":"1768"},{"name":"moon viewing ceremony","shortname":":rice_scene:","category":"travel","emoji_order":"1769"},{"name":"ribbon","shortname":":ribbon:","category":"objects","emoji_order":"1770"},{"name":"wrapped present","shortname":":gift:","category":"objects","emoji_order":"1771"},{"name":"reminder ribbon","shortname":":reminder_ribbon:","category":"activity","emoji_order":"1772"},{"name":"admission tickets","shortname":":tickets:","category":"activity","emoji_order":"1773","aliases":[":admission_tickets:"]},{"name":"ticket","shortname":":ticket:","category":"activity","emoji_order":"1774"},{"name":"military medal","shortname":":military_medal:","category":"activity","emoji_order":"1775"},{"name":"trophy","shortname":":trophy:","category":"activity","emoji_order":"1776"},{"name":"sports medal","shortname":":medal:","category":"activity","emoji_order":"1777","aliases":[":sports_medal:"]},{"name":"first place medal","shortname":":first_place:","category":"activity","emoji_order":"1778","aliases":[":first_place_medal:"]},{"name":"second place medal","shortname":":second_place:","category":"activity","emoji_order":"1779","aliases":[":second_place_medal:"]},{"name":"third place medal","shortname":":third_place:","category":"activity","emoji_order":"1780","aliases":[":third_place_medal:"]},{"name":"soccer ball","shortname":":soccer:","category":"activity","emoji_order":"1781"},{"name":"baseball","shortname":":baseball:","category":"activity","emoji_order":"1782"},{"name":"basketball and hoop","shortname":":basketball:","category":"activity","emoji_order":"1783"},{"name":"volleyball","shortname":":volleyball:","category":"activity","emoji_order":"1784"},{"name":"american football","shortname":":football:","category":"activity","emoji_order":"1785"},{"name":"rugby football","shortname":":rugby_football:","category":"activity","emoji_order":"1786"},{"name":"tennis racquet and ball","shortname":":tennis:","category":"activity","emoji_order":"1787"},{"name":"billiards","shortname":":8ball:","category":"activity","emoji_order":"1788"},{"name":"bowling","shortname":":bowling:","category":"activity","emoji_order":"1789"},{"name":"cricket bat and ball","shortname":":cricket:","category":"activity","emoji_order":"1790","aliases":[":cricket_bat_ball:"]},{"name":"field hockey stick and ball","shortname":":field_hockey:","category":"activity","emoji_order":"1791"},{"name":"ice hockey stick and puck","shortname":":hockey:","category":"activity","emoji_order":"1792"},{"name":"table tennis paddle and ball","shortname":":ping_pong:","category":"activity","emoji_order":"1793","aliases":[":table_tennis:"]},{"name":"badminton racquet","shortname":":badminton:","category":"activity","emoji_order":"1794"},{"name":"boxing glove","shortname":":boxing_glove:","category":"activity","emoji_order":"1795","aliases":[":boxing_gloves:"]},{"name":"martial arts uniform","shortname":":martial_arts_uniform:","category":"activity","emoji_order":"1796","aliases":[":karate_uniform:"]},{"name":"goal net","shortname":":goal:","category":"activity","emoji_order":"1797","aliases":[":goal_net:"]},{"name":"direct hit","shortname":":dart:","category":"activity","emoji_order":"1798"},{"name":"flag in hole","shortname":":golf:","category":"activity","emoji_order":"1799"},{"name":"ice skate","shortname":":ice_skate:","category":"activity","emoji_order":"1800"},{"name":"fishing pole and fish","shortname":":fishing_pole_and_fish:","category":"activity","emoji_order":"1801"},{"name":"running shirt with sash","shortname":":running_shirt_with_sash:","category":"activity","emoji_order":"1802"},{"name":"ski and ski boot","shortname":":ski:","category":"activity","emoji_order":"1803"},{"name":"video game","shortname":":video_game:","category":"activity","emoji_order":"1804"},{"name":"joystick","shortname":":joystick:","category":"objects","emoji_order":"1805"},{"name":"game die","shortname":":game_die:","category":"activity","emoji_order":"1806"},{"name":"black spade suit","shortname":":spades:","category":"symbols","emoji_order":"1807"},{"name":"black heart suit","shortname":":hearts:","category":"symbols","emoji_order":"1808"},{"name":"black diamond suit","shortname":":diamonds:","category":"symbols","emoji_order":"1809"},{"name":"black club suit","shortname":":clubs:","category":"symbols","emoji_order":"1810"},{"name":"playing card black joker","shortname":":black_joker:","category":"symbols","emoji_order":"1811"},{"name":"mahjong tile red dragon","shortname":":mahjong:","category":"symbols","emoji_order":"1812"},{"name":"flower playing cards","shortname":":flower_playing_cards:","category":"symbols","emoji_order":"1813"},{"name":"speaker with cancellation stroke","shortname":":mute:","category":"symbols","emoji_order":"1814"},{"name":"speaker","shortname":":speaker:","category":"symbols","emoji_order":"1815"},{"name":"speaker with one sound wave","shortname":":sound:","category":"symbols","emoji_order":"1816"},{"name":"speaker with three sound waves","shortname":":loud_sound:","category":"symbols","emoji_order":"1817"},{"name":"public address loudspeaker","shortname":":loudspeaker:","category":"symbols","emoji_order":"1818"},{"name":"cheering megaphone","shortname":":mega:","category":"symbols","emoji_order":"1819"},{"name":"postal horn","shortname":":postal_horn:","category":"objects","emoji_order":"1820"},{"name":"bell","shortname":":bell:","category":"symbols","emoji_order":"1821"},{"name":"bell with cancellation stroke","shortname":":no_bell:","category":"symbols","emoji_order":"1822"},{"name":"musical score","shortname":":musical_score:","category":"activity","emoji_order":"1823"},{"name":"musical note","shortname":":musical_note:","category":"symbols","emoji_order":"1824"},{"name":"multiple musical notes","shortname":":notes:","category":"symbols","emoji_order":"1825"},{"name":"studio microphone","shortname":":microphone2:","category":"objects","emoji_order":"1826","aliases":[":studio_microphone:"]},{"name":"level slider","shortname":":level_slider:","category":"objects","emoji_order":"1827"},{"name":"control knobs","shortname":":control_knobs:","category":"objects","emoji_order":"1828"},{"name":"microphone","shortname":":microphone:","category":"activity","emoji_order":"1829"},{"name":"headphone","shortname":":headphones:","category":"activity","emoji_order":"1830"},{"name":"radio","shortname":":radio:","category":"objects","emoji_order":"1831"},{"name":"saxophone","shortname":":saxophone:","category":"activity","emoji_order":"1832"},{"name":"guitar","shortname":":guitar:","category":"activity","emoji_order":"1833"},{"name":"musical keyboard","shortname":":musical_keyboard:","category":"activity","emoji_order":"1834"},{"name":"trumpet","shortname":":trumpet:","category":"activity","emoji_order":"1835"},{"name":"violin","shortname":":violin:","category":"activity","emoji_order":"1836"},{"name":"drum with drumsticks","shortname":":drum:","category":"activity","emoji_order":"1837","aliases":[":drum_with_drumsticks:"]},{"name":"mobile phone","shortname":":iphone:","category":"objects","emoji_order":"1838"},{"name":"mobile phone with rightwards arrow at left","shortname":":calling:","category":"objects","emoji_order":"1839"},{"name":"black telephone","shortname":":telephone:","category":"objects","emoji_order":"1840"},{"name":"telephone receiver","shortname":":telephone_receiver:","category":"objects","emoji_order":"1841"},{"name":"pager","shortname":":pager:","category":"objects","emoji_order":"1842"},{"name":"fax machine","shortname":":fax:","category":"objects","emoji_order":"1843"},{"name":"battery","shortname":":battery:","category":"objects","emoji_order":"1844"},{"name":"electric plug","shortname":":electric_plug:","category":"objects","emoji_order":"1845"},{"name":"personal computer","shortname":":computer:","category":"objects","emoji_order":"1846"},{"name":"desktop computer","shortname":":desktop:","category":"objects","emoji_order":"1847","aliases":[":desktop_computer:"]},{"name":"printer","shortname":":printer:","category":"objects","emoji_order":"1848"},{"name":"keyboard","shortname":":keyboard:","category":"objects","emoji_order":"1849"},{"name":"three button mouse","shortname":":mouse_three_button:","category":"objects","emoji_order":"1850","aliases":[":three_button_mouse:"]},{"name":"trackball","shortname":":trackball:","category":"objects","emoji_order":"1851"},{"name":"minidisc","shortname":":minidisc:","category":"objects","emoji_order":"1852"},{"name":"floppy disk","shortname":":floppy_disk:","category":"objects","emoji_order":"1853"},{"name":"optical disc","shortname":":cd:","category":"objects","emoji_order":"1854"},{"name":"dvd","shortname":":dvd:","category":"objects","emoji_order":"1855"},{"name":"movie camera","shortname":":movie_camera:","category":"objects","emoji_order":"1856"},{"name":"film frames","shortname":":film_frames:","category":"objects","emoji_order":"1857"},{"name":"film projector","shortname":":projector:","category":"objects","emoji_order":"1858","aliases":[":film_projector:"]},{"name":"clapper board","shortname":":clapper:","category":"activity","emoji_order":"1859"},{"name":"television","shortname":":tv:","category":"objects","emoji_order":"1860"},{"name":"camera","shortname":":camera:","category":"objects","emoji_order":"1861"},{"name":"camera with flash","shortname":":camera_with_flash:","category":"objects","emoji_order":"1862"},{"name":"video camera","shortname":":video_camera:","category":"objects","emoji_order":"1863"},{"name":"videocassette","shortname":":vhs:","category":"objects","emoji_order":"1864"},{"name":"left-pointing magnifying glass","shortname":":mag:","category":"objects","emoji_order":"1865"},{"name":"right-pointing magnifying glass","shortname":":mag_right:","category":"objects","emoji_order":"1866"},{"name":"microscope","shortname":":microscope:","category":"objects","emoji_order":"1867"},{"name":"telescope","shortname":":telescope:","category":"objects","emoji_order":"1868"},{"name":"satellite antenna","shortname":":satellite:","category":"objects","emoji_order":"1869"},{"name":"candle","shortname":":candle:","category":"objects","emoji_order":"1870"},{"name":"electric light bulb","shortname":":bulb:","category":"objects","emoji_order":"1871"},{"name":"electric torch","shortname":":flashlight:","category":"objects","emoji_order":"1872"},{"name":"izakaya lantern","shortname":":izakaya_lantern:","category":"objects","emoji_order":"1873"},{"name":"notebook with decorative cover","shortname":":notebook_with_decorative_cover:","category":"objects","emoji_order":"1874"},{"name":"closed book","shortname":":closed_book:","category":"objects","emoji_order":"1875"},{"name":"open book","shortname":":book:","category":"objects","emoji_order":"1876"},{"name":"green book","shortname":":green_book:","category":"objects","emoji_order":"1877"},{"name":"blue book","shortname":":blue_book:","category":"objects","emoji_order":"1878"},{"name":"orange book","shortname":":orange_book:","category":"objects","emoji_order":"1879"},{"name":"books","shortname":":books:","category":"objects","emoji_order":"1880"},{"name":"notebook","shortname":":notebook:","category":"objects","emoji_order":"1881"},{"name":"ledger","shortname":":ledger:","category":"objects","emoji_order":"1882"},{"name":"page with curl","shortname":":page_with_curl:","category":"objects","emoji_order":"1883"},{"name":"scroll","shortname":":scroll:","category":"objects","emoji_order":"1884"},{"name":"page facing up","shortname":":page_facing_up:","category":"objects","emoji_order":"1885"},{"name":"newspaper","shortname":":newspaper:","category":"objects","emoji_order":"1886"},{"name":"rolled-up newspaper","shortname":":newspaper2:","category":"objects","emoji_order":"1887","aliases":[":rolled_up_newspaper:"]},{"name":"bookmark tabs","shortname":":bookmark_tabs:","category":"objects","emoji_order":"1888"},{"name":"bookmark","shortname":":bookmark:","category":"objects","emoji_order":"1889"},{"name":"label","shortname":":label:","category":"objects","emoji_order":"1890"},{"name":"money bag","shortname":":moneybag:","category":"objects","emoji_order":"1891"},{"name":"banknote with yen sign","shortname":":yen:","category":"objects","emoji_order":"1892"},{"name":"banknote with dollar sign","shortname":":dollar:","category":"objects","emoji_order":"1893"},{"name":"banknote with euro sign","shortname":":euro:","category":"objects","emoji_order":"1894"},{"name":"banknote with pound sign","shortname":":pound:","category":"objects","emoji_order":"1895"},{"name":"money with wings","shortname":":money_with_wings:","category":"objects","emoji_order":"1896"},{"name":"credit card","shortname":":credit_card:","category":"objects","emoji_order":"1897"},{"name":"chart with upwards trend and yen sign","shortname":":chart:","category":"symbols","emoji_order":"1898"},{"name":"currency exchange","shortname":":currency_exchange:","category":"symbols","emoji_order":"1899"},{"name":"heavy dollar sign","shortname":":heavy_dollar_sign:","category":"symbols","emoji_order":"1900"},{"name":"envelope","shortname":":envelope:","category":"objects","emoji_order":"1901"},{"name":"e-mail symbol","shortname":":e-mail:","category":"objects","emoji_order":"1902","aliases":[":email:"]},{"name":"incoming envelope","shortname":":incoming_envelope:","category":"objects","emoji_order":"1903"},{"name":"envelope with downwards arrow above","shortname":":envelope_with_arrow:","category":"objects","emoji_order":"1904"},{"name":"outbox tray","shortname":":outbox_tray:","category":"objects","emoji_order":"1905"},{"name":"inbox tray","shortname":":inbox_tray:","category":"objects","emoji_order":"1906"},{"name":"package","shortname":":package:","category":"objects","emoji_order":"1907"},{"name":"closed mailbox with raised flag","shortname":":mailbox:","category":"objects","emoji_order":"1908"},{"name":"closed mailbox with lowered flag","shortname":":mailbox_closed:","category":"objects","emoji_order":"1909"},{"name":"open mailbox with raised flag","shortname":":mailbox_with_mail:","category":"objects","emoji_order":"1910"},{"name":"open mailbox with lowered flag","shortname":":mailbox_with_no_mail:","category":"objects","emoji_order":"1911"},{"name":"postbox","shortname":":postbox:","category":"objects","emoji_order":"1912"},{"name":"ballot box with ballot","shortname":":ballot_box:","category":"objects","emoji_order":"1913","aliases":[":ballot_box_with_ballot:"]},{"name":"pencil","shortname":":pencil2:","category":"objects","emoji_order":"1914"},{"name":"black nib","shortname":":black_nib:","category":"objects","emoji_order":"1915"},{"name":"lower left fountain pen","shortname":":pen_fountain:","category":"objects","emoji_order":"1916","aliases":[":lower_left_fountain_pen:"]},{"name":"lower left ballpoint pen","shortname":":pen_ballpoint:","category":"objects","emoji_order":"1917","aliases":[":lower_left_ballpoint_pen:"]},{"name":"lower left paintbrush","shortname":":paintbrush:","category":"objects","emoji_order":"1918","aliases":[":lower_left_paintbrush:"]},{"name":"lower left crayon","shortname":":crayon:","category":"objects","emoji_order":"1919","aliases":[":lower_left_crayon:"]},{"name":"memo","shortname":":pencil:","category":"objects","emoji_order":"1920"},{"name":"briefcase","shortname":":briefcase:","category":"people","emoji_order":"1921"},{"name":"file folder","shortname":":file_folder:","category":"objects","emoji_order":"1922"},{"name":"open file folder","shortname":":open_file_folder:","category":"objects","emoji_order":"1923"},{"name":"card index dividers","shortname":":dividers:","category":"objects","emoji_order":"1924","aliases":[":card_index_dividers:"]},{"name":"calendar","shortname":":date:","category":"objects","emoji_order":"1925"},{"name":"tear-off calendar","shortname":":calendar:","category":"objects","emoji_order":"1926"},{"name":"spiral note pad","shortname":":notepad_spiral:","category":"objects","emoji_order":"1927","aliases":[":spiral_note_pad:"]},{"name":"spiral calendar pad","shortname":":calendar_spiral:","category":"objects","emoji_order":"1928","aliases":[":spiral_calendar_pad:"]},{"name":"card index","shortname":":card_index:","category":"objects","emoji_order":"1929"},{"name":"chart with upwards trend","shortname":":chart_with_upwards_trend:","category":"objects","emoji_order":"1930"},{"name":"chart with downwards trend","shortname":":chart_with_downwards_trend:","category":"objects","emoji_order":"1931"},{"name":"bar chart","shortname":":bar_chart:","category":"objects","emoji_order":"1932"},{"name":"clipboard","shortname":":clipboard:","category":"objects","emoji_order":"1933"},{"name":"pushpin","shortname":":pushpin:","category":"objects","emoji_order":"1934"},{"name":"round pushpin","shortname":":round_pushpin:","category":"objects","emoji_order":"1935"},{"name":"paperclip","shortname":":paperclip:","category":"objects","emoji_order":"1936"},{"name":"linked paperclips","shortname":":paperclips:","category":"objects","emoji_order":"1937","aliases":[":linked_paperclips:"]},{"name":"straight ruler","shortname":":straight_ruler:","category":"objects","emoji_order":"1938"},{"name":"triangular ruler","shortname":":triangular_ruler:","category":"objects","emoji_order":"1939"},{"name":"black scissors","shortname":":scissors:","category":"objects","emoji_order":"1940"},{"name":"card file box","shortname":":card_box:","category":"objects","emoji_order":"1941","aliases":[":card_file_box:"]},{"name":"file cabinet","shortname":":file_cabinet:","category":"objects","emoji_order":"1942"},{"name":"wastebasket","shortname":":wastebasket:","category":"objects","emoji_order":"1943"},{"name":"lock","shortname":":lock:","category":"objects","emoji_order":"1944"},{"name":"open lock","shortname":":unlock:","category":"objects","emoji_order":"1945"},{"name":"lock with ink pen","shortname":":lock_with_ink_pen:","category":"objects","emoji_order":"1946"},{"name":"closed lock with key","shortname":":closed_lock_with_key:","category":"objects","emoji_order":"1947"},{"name":"key","shortname":":key:","category":"objects","emoji_order":"1948"},{"name":"old key","shortname":":key2:","category":"objects","emoji_order":"1949","aliases":[":old_key:"]},{"name":"hammer","shortname":":hammer:","category":"objects","emoji_order":"1950"},{"name":"pick","shortname":":pick:","category":"objects","emoji_order":"1951"},{"name":"hammer and pick","shortname":":hammer_pick:","category":"objects","emoji_order":"1952","aliases":[":hammer_and_pick:"]},{"name":"hammer and wrench","shortname":":tools:","category":"objects","emoji_order":"1953","aliases":[":hammer_and_wrench:"]},{"name":"dagger knife","shortname":":dagger:","category":"objects","emoji_order":"1954","aliases":[":dagger_knife:"]},{"name":"crossed swords","shortname":":crossed_swords:","category":"objects","emoji_order":"1955"},{"name":"pistol","shortname":":gun:","category":"objects","emoji_order":"1956"},{"name":"bow and arrow","shortname":":bow_and_arrow:","category":"activity","emoji_order":"1957","aliases":[":archery:"]},{"name":"shield","shortname":":shield:","category":"objects","emoji_order":"1958"},{"name":"wrench","shortname":":wrench:","category":"objects","emoji_order":"1959"},{"name":"nut and bolt","shortname":":nut_and_bolt:","category":"objects","emoji_order":"1960"},{"name":"gear","shortname":":gear:","category":"objects","emoji_order":"1961"},{"name":"compression","shortname":":compression:","category":"objects","emoji_order":"1962"},{"name":"alembic","shortname":":alembic:","category":"objects","emoji_order":"1963"},{"name":"scales","shortname":":scales:","category":"objects","emoji_order":"1964"},{"name":"link symbol","shortname":":link:","category":"objects","emoji_order":"1965"},{"name":"chains","shortname":":chains:","category":"objects","emoji_order":"1966"},{"name":"syringe","shortname":":syringe:","category":"objects","emoji_order":"1967"},{"name":"pill","shortname":":pill:","category":"objects","emoji_order":"1968"},{"name":"smoking symbol","shortname":":smoking:","category":"objects","emoji_order":"1969"},{"name":"coffin","shortname":":coffin:","category":"objects","emoji_order":"1970"},{"name":"funeral urn","shortname":":urn:","category":"objects","emoji_order":"1971","aliases":[":funeral_urn:"]},{"name":"moyai","shortname":":moyai:","category":"objects","emoji_order":"1972"},{"name":"oil drum","shortname":":oil:","category":"objects","emoji_order":"1973","aliases":[":oil_drum:"]},{"name":"crystal ball","shortname":":crystal_ball:","category":"objects","emoji_order":"1974"},{"name":"shopping trolley","shortname":":shopping_cart:","category":"objects","emoji_order":"1975","aliases":[":shopping_trolley:"]},{"name":"automated teller machine","shortname":":atm:","category":"symbols","emoji_order":"1976"},{"name":"put litter in its place symbol","shortname":":put_litter_in_its_place:","category":"symbols","emoji_order":"1977"},{"name":"potable water symbol","shortname":":potable_water:","category":"symbols","emoji_order":"1978"},{"name":"wheelchair symbol","shortname":":wheelchair:","category":"symbols","emoji_order":"1979"},{"name":"mens symbol","shortname":":mens:","category":"symbols","emoji_order":"1980"},{"name":"womens symbol","shortname":":womens:","category":"symbols","emoji_order":"1981"},{"name":"restroom","shortname":":restroom:","category":"symbols","emoji_order":"1982"},{"name":"baby symbol","shortname":":baby_symbol:","category":"symbols","emoji_order":"1983"},{"name":"water closet","shortname":":wc:","category":"symbols","emoji_order":"1984"},{"name":"passport control","shortname":":passport_control:","category":"symbols","emoji_order":"1985"},{"name":"customs","shortname":":customs:","category":"symbols","emoji_order":"1986"},{"name":"baggage claim","shortname":":baggage_claim:","category":"symbols","emoji_order":"1987"},{"name":"left luggage","shortname":":left_luggage:","category":"symbols","emoji_order":"1988"},{"name":"warning sign","shortname":":warning:","category":"symbols","emoji_order":"1989"},{"name":"children crossing","shortname":":children_crossing:","category":"symbols","emoji_order":"1990"},{"name":"no entry","shortname":":no_entry:","category":"symbols","emoji_order":"1991"},{"name":"no entry sign","shortname":":no_entry_sign:","category":"symbols","emoji_order":"1992"},{"name":"no bicycles","shortname":":no_bicycles:","category":"symbols","emoji_order":"1993"},{"name":"no smoking symbol","shortname":":no_smoking:","category":"symbols","emoji_order":"1994"},{"name":"do not litter symbol","shortname":":do_not_litter:","category":"symbols","emoji_order":"1995"},{"name":"non-potable water symbol","shortname":":non-potable_water:","category":"symbols","emoji_order":"1996"},{"name":"no pedestrians","shortname":":no_pedestrians:","category":"symbols","emoji_order":"1997"},{"name":"no mobile phones","shortname":":no_mobile_phones:","category":"symbols","emoji_order":"1998"},{"name":"no one under eighteen symbol","shortname":":underage:","category":"symbols","emoji_order":"1999"},{"name":"radioactive sign","shortname":":radioactive:","category":"symbols","emoji_order":"2000","aliases":[":radioactive_sign:"]},{"name":"biohazard sign","shortname":":biohazard:","category":"symbols","emoji_order":"2001","aliases":[":biohazard_sign:"]},{"name":"upwards black arrow","shortname":":arrow_up:","category":"symbols","emoji_order":"2002"},{"name":"north east arrow","shortname":":arrow_upper_right:","category":"symbols","emoji_order":"2003"},{"name":"black rightwards arrow","shortname":":arrow_right:","category":"symbols","emoji_order":"2004"},{"name":"south east arrow","shortname":":arrow_lower_right:","category":"symbols","emoji_order":"2005"},{"name":"downwards black arrow","shortname":":arrow_down:","category":"symbols","emoji_order":"2006"},{"name":"south west arrow","shortname":":arrow_lower_left:","category":"symbols","emoji_order":"2007"},{"name":"leftwards black arrow","shortname":":arrow_left:","category":"symbols","emoji_order":"2008"},{"name":"north west arrow","shortname":":arrow_upper_left:","category":"symbols","emoji_order":"2009"},{"name":"up down arrow","shortname":":arrow_up_down:","category":"symbols","emoji_order":"2010"},{"name":"left right arrow","shortname":":left_right_arrow:","category":"symbols","emoji_order":"2011"},{"name":"leftwards arrow with hook","shortname":":leftwards_arrow_with_hook:","category":"symbols","emoji_order":"2012"},{"name":"rightwards arrow with hook","shortname":":arrow_right_hook:","category":"symbols","emoji_order":"2013"},{"name":"arrow pointing rightwards then curving upwards","shortname":":arrow_heading_up:","category":"symbols","emoji_order":"2014"},{"name":"arrow pointing rightwards then curving downwards","shortname":":arrow_heading_down:","category":"symbols","emoji_order":"2015"},{"name":"clockwise downwards and upwards open circle arrows","shortname":":arrows_clockwise:","category":"symbols","emoji_order":"2016"},{"name":"anticlockwise downwards and upwards open circle arrows","shortname":":arrows_counterclockwise:","category":"symbols","emoji_order":"2017"},{"name":"back with leftwards arrow above","shortname":":back:","category":"symbols","emoji_order":"2018"},{"name":"end with leftwards arrow above","shortname":":end:","category":"symbols","emoji_order":"2019"},{"name":"on with exclamation mark with left right arrow abo","shortname":":on:","category":"symbols","emoji_order":"2020"},{"name":"soon with rightwards arrow above","shortname":":soon:","category":"symbols","emoji_order":"2021"},{"name":"top with upwards arrow above","shortname":":top:","category":"symbols","emoji_order":"2022"},{"name":"place of worship","shortname":":place_of_worship:","category":"symbols","emoji_order":"2023","aliases":[":worship_symbol:"]},{"name":"atom symbol","shortname":":atom:","category":"symbols","emoji_order":"2024","aliases":[":atom_symbol:"]},{"name":"om symbol","shortname":":om_symbol:","category":"symbols","emoji_order":"2025"},{"name":"star of david","shortname":":star_of_david:","category":"symbols","emoji_order":"2026"},{"name":"wheel of dharma","shortname":":wheel_of_dharma:","category":"symbols","emoji_order":"2027"},{"name":"yin yang","shortname":":yin_yang:","category":"symbols","emoji_order":"2028"},{"name":"latin cross","shortname":":cross:","category":"symbols","emoji_order":"2029","aliases":[":latin_cross:"]},{"name":"orthodox cross","shortname":":orthodox_cross:","category":"symbols","emoji_order":"2030"},{"name":"star and crescent","shortname":":star_and_crescent:","category":"symbols","emoji_order":"2031"},{"name":"peace symbol","shortname":":peace:","category":"symbols","emoji_order":"2032","aliases":[":peace_symbol:"]},{"name":"menorah with nine branches","shortname":":menorah:","category":"symbols","emoji_order":"2033"},{"name":"six pointed star with middle dot","shortname":":six_pointed_star:","category":"symbols","emoji_order":"2034"},{"name":"aries","shortname":":aries:","category":"symbols","emoji_order":"2035"},{"name":"taurus","shortname":":taurus:","category":"symbols","emoji_order":"2036"},{"name":"gemini","shortname":":gemini:","category":"symbols","emoji_order":"2037"},{"name":"cancer","shortname":":cancer:","category":"symbols","emoji_order":"2038"},{"name":"leo","shortname":":leo:","category":"symbols","emoji_order":"2039"},{"name":"virgo","shortname":":virgo:","category":"symbols","emoji_order":"2040"},{"name":"libra","shortname":":libra:","category":"symbols","emoji_order":"2041"},{"name":"scorpius","shortname":":scorpius:","category":"symbols","emoji_order":"2042"},{"name":"sagittarius","shortname":":sagittarius:","category":"symbols","emoji_order":"2043"},{"name":"capricorn","shortname":":capricorn:","category":"symbols","emoji_order":"2044"},{"name":"aquarius","shortname":":aquarius:","category":"symbols","emoji_order":"2045"},{"name":"pisces","shortname":":pisces:","category":"symbols","emoji_order":"2046"},{"name":"ophiuchus","shortname":":ophiuchus:","category":"symbols","emoji_order":"2047"},{"name":"twisted rightwards arrows","shortname":":twisted_rightwards_arrows:","category":"symbols","emoji_order":"2048"},{"name":"clockwise rightwards and leftwards open circle arrows","shortname":":repeat:","category":"symbols","emoji_order":"2049"},{"name":"clockwise rightwards and leftwards open circle arrows with circled one overlay","shortname":":repeat_one:","category":"symbols","emoji_order":"2050"},{"name":"black right-pointing triangle","shortname":":arrow_forward:","category":"symbols","emoji_order":"2051"},{"name":"black right-pointing double triangle","shortname":":fast_forward:","category":"symbols","emoji_order":"2052"},{"name":"black right-pointing double triangle with vertical bar","shortname":":track_next:","category":"symbols","emoji_order":"2053","aliases":[":next_track:"]},{"name":"black right-pointing double triangle with double vertical bar","shortname":":play_pause:","category":"symbols","emoji_order":"2054"},{"name":"black left-pointing triangle","shortname":":arrow_backward:","category":"symbols","emoji_order":"2055"},{"name":"black left-pointing double triangle","shortname":":rewind:","category":"symbols","emoji_order":"2056"},{"name":"black left-pointing double triangle with vertical bar","shortname":":track_previous:","category":"symbols","emoji_order":"2057","aliases":[":previous_track:"]},{"name":"up-pointing small red triangle","shortname":":arrow_up_small:","category":"symbols","emoji_order":"2058"},{"name":"black up-pointing double triangle","shortname":":arrow_double_up:","category":"symbols","emoji_order":"2059"},{"name":"down-pointing small red triangle","shortname":":arrow_down_small:","category":"symbols","emoji_order":"2060"},{"name":"black down-pointing double triangle","shortname":":arrow_double_down:","category":"symbols","emoji_order":"2061"},{"name":"double vertical bar","shortname":":pause_button:","category":"symbols","emoji_order":"2062","aliases":[":double_vertical_bar:"]},{"name":"black square for stop","shortname":":stop_button:","category":"symbols","emoji_order":"2063"},{"name":"black circle for record","shortname":":record_button:","category":"symbols","emoji_order":"2064"},{"name":"eject symbol","shortname":":eject:","category":"symbols","emoji_order":"2065","aliases":[":eject_symbol:"]},{"name":"cinema","shortname":":cinema:","category":"symbols","emoji_order":"2066"},{"name":"low brightness symbol","shortname":":low_brightness:","category":"symbols","emoji_order":"2067"},{"name":"high brightness symbol","shortname":":high_brightness:","category":"symbols","emoji_order":"2068"},{"name":"antenna with bars","shortname":":signal_strength:","category":"symbols","emoji_order":"2069"},{"name":"vibration mode","shortname":":vibration_mode:","category":"symbols","emoji_order":"2070"},{"name":"mobile phone off","shortname":":mobile_phone_off:","category":"symbols","emoji_order":"2071"},{"name":"black universal recycling symbol","shortname":":recycle:","category":"symbols","emoji_order":"2072"},{"name":"name badge","shortname":":name_badge:","category":"symbols","emoji_order":"2073"},{"name":"fleur-de-lis","shortname":":fleur-de-lis:","category":"symbols","emoji_order":"2074"},{"name":"japanese symbol for beginner","shortname":":beginner:","category":"symbols","emoji_order":"2075"},{"name":"trident emblem","shortname":":trident:","category":"symbols","emoji_order":"2076"},{"name":"heavy large circle","shortname":":o:","category":"symbols","emoji_order":"2077"},{"name":"white heavy check mark","shortname":":white_check_mark:","category":"symbols","emoji_order":"2078"},{"name":"ballot box with check","shortname":":ballot_box_with_check:","category":"symbols","emoji_order":"2079"},{"name":"heavy check mark","shortname":":heavy_check_mark:","category":"symbols","emoji_order":"2080"},{"name":"heavy multiplication x","shortname":":heavy_multiplication_x:","category":"symbols","emoji_order":"2081"},{"name":"cross mark","shortname":":x:","category":"symbols","emoji_order":"2082"},{"name":"negative squared cross mark","shortname":":negative_squared_cross_mark:","category":"symbols","emoji_order":"2083"},{"name":"heavy plus sign","shortname":":heavy_plus_sign:","category":"symbols","emoji_order":"2084"},{"name":"heavy minus sign","shortname":":heavy_minus_sign:","category":"symbols","emoji_order":"2088"},{"name":"heavy division sign","shortname":":heavy_division_sign:","category":"symbols","emoji_order":"2089"},{"name":"curly loop","shortname":":curly_loop:","category":"symbols","emoji_order":"2090"},{"name":"double curly loop","shortname":":loop:","category":"symbols","emoji_order":"2091"},{"name":"part alternation mark","shortname":":part_alternation_mark:","category":"symbols","emoji_order":"2092"},{"name":"eight spoked asterisk","shortname":":eight_spoked_asterisk:","category":"symbols","emoji_order":"2093"},{"name":"eight pointed black star","shortname":":eight_pointed_black_star:","category":"symbols","emoji_order":"2094"},{"name":"sparkle","shortname":":sparkle:","category":"symbols","emoji_order":"2095"},{"name":"double exclamation mark","shortname":":bangbang:","category":"symbols","emoji_order":"2096"},{"name":"exclamation question mark","shortname":":interrobang:","category":"symbols","emoji_order":"2097"},{"name":"black question mark ornament","shortname":":question:","category":"symbols","emoji_order":"2098"},{"name":"white question mark ornament","shortname":":grey_question:","category":"symbols","emoji_order":"2099"},{"name":"white exclamation mark ornament","shortname":":grey_exclamation:","category":"symbols","emoji_order":"2100"},{"name":"heavy exclamation mark symbol","shortname":":exclamation:","category":"symbols","emoji_order":"2101"},{"name":"wavy dash","shortname":":wavy_dash:","category":"symbols","emoji_order":"2102"},{"name":"copyright sign","shortname":":copyright:","category":"symbols","emoji_order":"2103"},{"name":"registered sign","shortname":":registered:","category":"symbols","emoji_order":"2104"},{"name":"trade mark sign","shortname":":tm:","category":"symbols","emoji_order":"2105"},{"name":"keycap number sign","shortname":":hash:","category":"symbols","emoji_order":"2106"},{"name":"keycap asterisk","shortname":":asterisk:","category":"symbols","emoji_order":"2107","aliases":[":keycap_asterisk:"]},{"name":"keycap digit zero","shortname":":zero:","category":"symbols","emoji_order":"2108"},{"name":"keycap digit one","shortname":":one:","category":"symbols","emoji_order":"2109"},{"name":"keycap digit two","shortname":":two:","category":"symbols","emoji_order":"2110"},{"name":"keycap digit three","shortname":":three:","category":"symbols","emoji_order":"2111"},{"name":"keycap digit four","shortname":":four:","category":"symbols","emoji_order":"2112"},{"name":"keycap digit five","shortname":":five:","category":"symbols","emoji_order":"2113"},{"name":"keycap digit six","shortname":":six:","category":"symbols","emoji_order":"2114"},{"name":"keycap digit seven","shortname":":seven:","category":"symbols","emoji_order":"2115"},{"name":"keycap digit eight","shortname":":eight:","category":"symbols","emoji_order":"2116"},{"name":"keycap digit nine","shortname":":nine:","category":"symbols","emoji_order":"2117"},{"name":"keycap ten","shortname":":keycap_ten:","category":"symbols","emoji_order":"2118"},{"name":"input symbol for latin capital letters","shortname":":capital_abcd:","category":"symbols","emoji_order":"2120"},{"name":"input symbol for latin small letters","shortname":":abcd:","category":"symbols","emoji_order":"2121"},{"name":"input symbol for symbols","shortname":":symbols:","category":"symbols","emoji_order":"2123"},{"name":"input symbol for latin letters","shortname":":abc:","category":"symbols","emoji_order":"2124"},{"name":"negative squared latin capital letter a","shortname":":a:","category":"symbols","emoji_order":"2125"},{"name":"negative squared ab","shortname":":ab:","category":"symbols","emoji_order":"2126"},{"name":"negative squared latin capital letter b","shortname":":b:","category":"symbols","emoji_order":"2127"},{"name":"squared cl","shortname":":cl:","category":"symbols","emoji_order":"2128"},{"name":"squared cool","shortname":":cool:","category":"symbols","emoji_order":"2129"},{"name":"squared free","shortname":":free:","category":"symbols","emoji_order":"2130"},{"name":"information source","shortname":":information_source:","category":"symbols","emoji_order":"2131"},{"name":"squared id","shortname":":id:","category":"symbols","emoji_order":"2132"},{"name":"circled latin capital letter m","shortname":":m:","category":"symbols","emoji_order":"2133"},{"name":"squared new","shortname":":new:","category":"symbols","emoji_order":"2134"},{"name":"squared ng","shortname":":ng:","category":"symbols","emoji_order":"2135"},{"name":"negative squared latin capital letter o","shortname":":o2:","category":"symbols","emoji_order":"2136"},{"name":"squared ok","shortname":":ok:","category":"symbols","emoji_order":"2137"},{"name":"negative squared latin capital letter p","shortname":":parking:","category":"symbols","emoji_order":"2138"},{"name":"squared sos","shortname":":sos:","category":"symbols","emoji_order":"2139"},{"name":"squared up with exclamation mark","shortname":":up:","category":"symbols","emoji_order":"2140"},{"name":"squared vs","shortname":":vs:","category":"symbols","emoji_order":"2141"},{"name":"squared katakana koko","shortname":":koko:","category":"symbols","emoji_order":"2142"},{"name":"squared katakana sa","shortname":":sa:","category":"symbols","emoji_order":"2143"},{"name":"squared cjk unified ideograph-6708","shortname":":u6708:","category":"symbols","emoji_order":"2144"},{"name":"squared cjk unified ideograph-6709","shortname":":u6709:","category":"symbols","emoji_order":"2145"},{"name":"squared cjk unified ideograph-6307","shortname":":u6307:","category":"symbols","emoji_order":"2146"},{"name":"circled ideograph advantage","shortname":":ideograph_advantage:","category":"symbols","emoji_order":"2147"},{"name":"squared cjk unified ideograph-5272","shortname":":u5272:","category":"symbols","emoji_order":"2148"},{"name":"squared cjk unified ideograph-7121","shortname":":u7121:","category":"symbols","emoji_order":"2149"},{"name":"squared cjk unified ideograph-7981","shortname":":u7981:","category":"symbols","emoji_order":"2150"},{"name":"circled ideograph accept","shortname":":accept:","category":"symbols","emoji_order":"2151"},{"name":"squared cjk unified ideograph-7533","shortname":":u7533:","category":"symbols","emoji_order":"2152"},{"name":"squared cjk unified ideograph-5408","shortname":":u5408:","category":"symbols","emoji_order":"2153"},{"name":"squared cjk unified ideograph-7a7a","shortname":":u7a7a:","category":"symbols","emoji_order":"2154"},{"name":"circled ideograph congratulation","shortname":":congratulations:","category":"symbols","emoji_order":"2155"},{"name":"circled ideograph secret","shortname":":secret:","category":"symbols","emoji_order":"2156"},{"name":"squared cjk unified ideograph-55b6","shortname":":u55b6:","category":"symbols","emoji_order":"2157"},{"name":"squared cjk unified ideograph-6e80","shortname":":u6e80:","category":"symbols","emoji_order":"2158"},{"name":"black small square","shortname":":black_small_square:","category":"symbols","emoji_order":"2159"},{"name":"white small square","shortname":":white_small_square:","category":"symbols","emoji_order":"2160"},{"name":"white medium square","shortname":":white_medium_square:","category":"symbols","emoji_order":"2161"},{"name":"black medium square","shortname":":black_medium_square:","category":"symbols","emoji_order":"2162"},{"name":"white medium small square","shortname":":white_medium_small_square:","category":"symbols","emoji_order":"2163"},{"name":"black medium small square","shortname":":black_medium_small_square:","category":"symbols","emoji_order":"2164"},{"name":"black large square","shortname":":black_large_square:","category":"symbols","emoji_order":"2165"},{"name":"white large square","shortname":":white_large_square:","category":"symbols","emoji_order":"2166"},{"name":"large orange diamond","shortname":":large_orange_diamond:","category":"symbols","emoji_order":"2167"},{"name":"large blue diamond","shortname":":large_blue_diamond:","category":"symbols","emoji_order":"2168"},{"name":"small orange diamond","shortname":":small_orange_diamond:","category":"symbols","emoji_order":"2169"},{"name":"small blue diamond","shortname":":small_blue_diamond:","category":"symbols","emoji_order":"2170"},{"name":"up-pointing red triangle","shortname":":small_red_triangle:","category":"symbols","emoji_order":"2171"},{"name":"down-pointing red triangle","shortname":":small_red_triangle_down:","category":"symbols","emoji_order":"2172"},{"name":"diamond shape with a dot inside","shortname":":diamond_shape_with_a_dot_inside:","category":"symbols","emoji_order":"2173"},{"name":"radio button","shortname":":radio_button:","category":"symbols","emoji_order":"2174"},{"name":"black square button","shortname":":black_square_button:","category":"symbols","emoji_order":"2175"},{"name":"white square button","shortname":":white_square_button:","category":"symbols","emoji_order":"2176"},{"name":"white circle","shortname":":white_circle:","category":"symbols","emoji_order":"2177"},{"name":"black circle","shortname":":black_circle:","category":"symbols","emoji_order":"2178"},{"name":"red circle","shortname":":red_circle:","category":"symbols","emoji_order":"2179"},{"name":"blue circle","shortname":":blue_circle:","category":"symbols","emoji_order":"2180"},{"name":"chequered flag","shortname":":checkered_flag:","category":"travel","emoji_order":"2181"},{"name":"triangular flag on post","shortname":":triangular_flag_on_post:","category":"objects","emoji_order":"2182"},{"name":"crossed flags","shortname":":crossed_flags:","category":"objects","emoji_order":"2183"},{"name":"waving black flag","shortname":":flag_black:","category":"objects","emoji_order":"2184","aliases":[":waving_black_flag:"]},{"name":"waving white flag","shortname":":flag_white:","category":"objects","emoji_order":"2185","aliases":[":waving_white_flag:"]},{"name":"rainbow_flag","shortname":":rainbow_flag:","category":"objects","emoji_order":"2186","aliases":[":gay_pride_flag:"]},{"name":"ascension","shortname":":flag_ac:","category":"flags","emoji_order":"2187","aliases":[":ac:"]},{"name":"andorra","shortname":":flag_ad:","category":"flags","emoji_order":"2188","aliases":[":ad:"]},{"name":"the united arab emirates","shortname":":flag_ae:","category":"flags","emoji_order":"2189","aliases":[":ae:"]},{"name":"afghanistan","shortname":":flag_af:","category":"flags","emoji_order":"2190","aliases":[":af:"]},{"name":"antigua and barbuda","shortname":":flag_ag:","category":"flags","emoji_order":"2191","aliases":[":ag:"]},{"name":"anguilla","shortname":":flag_ai:","category":"flags","emoji_order":"2192","aliases":[":ai:"]},{"name":"albania","shortname":":flag_al:","category":"flags","emoji_order":"2193","aliases":[":al:"]},{"name":"armenia","shortname":":flag_am:","category":"flags","emoji_order":"2194","aliases":[":am:"]},{"name":"angola","shortname":":flag_ao:","category":"flags","emoji_order":"2195","aliases":[":ao:"]},{"name":"antarctica","shortname":":flag_aq:","category":"flags","emoji_order":"2196","aliases":[":aq:"]},{"name":"argentina","shortname":":flag_ar:","category":"flags","emoji_order":"2197","aliases":[":ar:"]},{"name":"american samoa","shortname":":flag_as:","category":"flags","emoji_order":"2198","aliases":[":as:"]},{"name":"austria","shortname":":flag_at:","category":"flags","emoji_order":"2199","aliases":[":at:"]},{"name":"australia","shortname":":flag_au:","category":"flags","emoji_order":"2200","aliases":[":au:"]},{"name":"aruba","shortname":":flag_aw:","category":"flags","emoji_order":"2201","aliases":[":aw:"]},{"name":"åland islands","shortname":":flag_ax:","category":"flags","emoji_order":"2202","aliases":[":ax:"]},{"name":"azerbaijan","shortname":":flag_az:","category":"flags","emoji_order":"2203","aliases":[":az:"]},{"name":"bosnia and herzegovina","shortname":":flag_ba:","category":"flags","emoji_order":"2204","aliases":[":ba:"]},{"name":"barbados","shortname":":flag_bb:","category":"flags","emoji_order":"2205","aliases":[":bb:"]},{"name":"bangladesh","shortname":":flag_bd:","category":"flags","emoji_order":"2206","aliases":[":bd:"]},{"name":"belgium","shortname":":flag_be:","category":"flags","emoji_order":"2207","aliases":[":be:"]},{"name":"burkina faso","shortname":":flag_bf:","category":"flags","emoji_order":"2208","aliases":[":bf:"]},{"name":"bulgaria","shortname":":flag_bg:","category":"flags","emoji_order":"2209","aliases":[":bg:"]},{"name":"bahrain","shortname":":flag_bh:","category":"flags","emoji_order":"2210","aliases":[":bh:"]},{"name":"burundi","shortname":":flag_bi:","category":"flags","emoji_order":"2211","aliases":[":bi:"]},{"name":"benin","shortname":":flag_bj:","category":"flags","emoji_order":"2212","aliases":[":bj:"]},{"name":"saint barthélemy","shortname":":flag_bl:","category":"flags","emoji_order":"2213","aliases":[":bl:"]},{"name":"bermuda","shortname":":flag_bm:","category":"flags","emoji_order":"2214","aliases":[":bm:"]},{"name":"brunei","shortname":":flag_bn:","category":"flags","emoji_order":"2215","aliases":[":bn:"]},{"name":"bolivia","shortname":":flag_bo:","category":"flags","emoji_order":"2216","aliases":[":bo:"]},{"name":"caribbean netherlands","shortname":":flag_bq:","category":"flags","emoji_order":"2217","aliases":[":bq:"]},{"name":"brazil","shortname":":flag_br:","category":"flags","emoji_order":"2218","aliases":[":br:"]},{"name":"the bahamas","shortname":":flag_bs:","category":"flags","emoji_order":"2219","aliases":[":bs:"]},{"name":"bhutan","shortname":":flag_bt:","category":"flags","emoji_order":"2220","aliases":[":bt:"]},{"name":"bouvet island","shortname":":flag_bv:","category":"flags","emoji_order":"2221","aliases":[":bv:"]},{"name":"botswana","shortname":":flag_bw:","category":"flags","emoji_order":"2222","aliases":[":bw:"]},{"name":"belarus","shortname":":flag_by:","category":"flags","emoji_order":"2223","aliases":[":by:"]},{"name":"belize","shortname":":flag_bz:","category":"flags","emoji_order":"2224","aliases":[":bz:"]},{"name":"canada","shortname":":flag_ca:","category":"flags","emoji_order":"2225","aliases":[":ca:"]},{"name":"cocos (keeling) islands","shortname":":flag_cc:","category":"flags","emoji_order":"2226","aliases":[":cc:"]},{"name":"the democratic republic of the congo","shortname":":flag_cd:","category":"flags","emoji_order":"2227","aliases":[":congo:"]},{"name":"central african republic","shortname":":flag_cf:","category":"flags","emoji_order":"2228","aliases":[":cf:"]},{"name":"the republic of the congo","shortname":":flag_cg:","category":"flags","emoji_order":"2229","aliases":[":cg:"]},{"name":"switzerland","shortname":":flag_ch:","category":"flags","emoji_order":"2230","aliases":[":ch:"]},{"name":"côte d’ivoire","shortname":":flag_ci:","category":"flags","emoji_order":"2231","aliases":[":ci:"]},{"name":"cook islands","shortname":":flag_ck:","category":"flags","emoji_order":"2232","aliases":[":ck:"]},{"name":"chile","shortname":":flag_cl:","category":"flags","emoji_order":"2233","aliases":[":chile:"]},{"name":"cameroon","shortname":":flag_cm:","category":"flags","emoji_order":"2234","aliases":[":cm:"]},{"name":"china","shortname":":flag_cn:","category":"flags","emoji_order":"2235","aliases":[":cn:"]},{"name":"colombia","shortname":":flag_co:","category":"flags","emoji_order":"2236","aliases":[":co:"]},{"name":"clipperton island","shortname":":flag_cp:","category":"flags","emoji_order":"2237","aliases":[":cp:"]},{"name":"costa rica","shortname":":flag_cr:","category":"flags","emoji_order":"2238","aliases":[":cr:"]},{"name":"cuba","shortname":":flag_cu:","category":"flags","emoji_order":"2239","aliases":[":cu:"]},{"name":"cape verde","shortname":":flag_cv:","category":"flags","emoji_order":"2240","aliases":[":cv:"]},{"name":"curaçao","shortname":":flag_cw:","category":"flags","emoji_order":"2241","aliases":[":cw:"]},{"name":"christmas island","shortname":":flag_cx:","category":"flags","emoji_order":"2242","aliases":[":cx:"]},{"name":"cyprus","shortname":":flag_cy:","category":"flags","emoji_order":"2243","aliases":[":cy:"]},{"name":"the czech republic","shortname":":flag_cz:","category":"flags","emoji_order":"2244","aliases":[":cz:"]},{"name":"germany","shortname":":flag_de:","category":"flags","emoji_order":"2245","aliases":[":de:"]},{"name":"diego garcia","shortname":":flag_dg:","category":"flags","emoji_order":"2246","aliases":[":dg:"]},{"name":"djibouti","shortname":":flag_dj:","category":"flags","emoji_order":"2247","aliases":[":dj:"]},{"name":"denmark","shortname":":flag_dk:","category":"flags","emoji_order":"2248","aliases":[":dk:"]},{"name":"dominica","shortname":":flag_dm:","category":"flags","emoji_order":"2249","aliases":[":dm:"]},{"name":"the dominican republic","shortname":":flag_do:","category":"flags","emoji_order":"2250","aliases":[":do:"]},{"name":"algeria","shortname":":flag_dz:","category":"flags","emoji_order":"2251","aliases":[":dz:"]},{"name":"ceuta, melilla","shortname":":flag_ea:","category":"flags","emoji_order":"2252","aliases":[":ea:"]},{"name":"ecuador","shortname":":flag_ec:","category":"flags","emoji_order":"2253","aliases":[":ec:"]},{"name":"estonia","shortname":":flag_ee:","category":"flags","emoji_order":"2254","aliases":[":ee:"]},{"name":"egypt","shortname":":flag_eg:","category":"flags","emoji_order":"2255","aliases":[":eg:"]},{"name":"western sahara","shortname":":flag_eh:","category":"flags","emoji_order":"2256","aliases":[":eh:"]},{"name":"eritrea","shortname":":flag_er:","category":"flags","emoji_order":"2257","aliases":[":er:"]},{"name":"spain","shortname":":flag_es:","category":"flags","emoji_order":"2258","aliases":[":es:"]},{"name":"ethiopia","shortname":":flag_et:","category":"flags","emoji_order":"2259","aliases":[":et:"]},{"name":"european union","shortname":":flag_eu:","category":"flags","emoji_order":"2260","aliases":[":eu:"]},{"name":"finland","shortname":":flag_fi:","category":"flags","emoji_order":"2261","aliases":[":fi:"]},{"name":"fiji","shortname":":flag_fj:","category":"flags","emoji_order":"2262","aliases":[":fj:"]},{"name":"falkland islands","shortname":":flag_fk:","category":"flags","emoji_order":"2263","aliases":[":fk:"]},{"name":"micronesia","shortname":":flag_fm:","category":"flags","emoji_order":"2264","aliases":[":fm:"]},{"name":"faroe islands","shortname":":flag_fo:","category":"flags","emoji_order":"2265","aliases":[":fo:"]},{"name":"france","shortname":":flag_fr:","category":"flags","emoji_order":"2266","aliases":[":fr:"]},{"name":"gabon","shortname":":flag_ga:","category":"flags","emoji_order":"2267","aliases":[":ga:"]},{"name":"great britain","shortname":":flag_gb:","category":"flags","emoji_order":"2268","aliases":[":gb:"]},{"name":"grenada","shortname":":flag_gd:","category":"flags","emoji_order":"2269","aliases":[":gd:"]},{"name":"georgia","shortname":":flag_ge:","category":"flags","emoji_order":"2270","aliases":[":ge:"]},{"name":"french guiana","shortname":":flag_gf:","category":"flags","emoji_order":"2271","aliases":[":gf:"]},{"name":"guernsey","shortname":":flag_gg:","category":"flags","emoji_order":"2272","aliases":[":gg:"]},{"name":"ghana","shortname":":flag_gh:","category":"flags","emoji_order":"2273","aliases":[":gh:"]},{"name":"gibraltar","shortname":":flag_gi:","category":"flags","emoji_order":"2274","aliases":[":gi:"]},{"name":"greenland","shortname":":flag_gl:","category":"flags","emoji_order":"2275","aliases":[":gl:"]},{"name":"the gambia","shortname":":flag_gm:","category":"flags","emoji_order":"2276","aliases":[":gm:"]},{"name":"guinea","shortname":":flag_gn:","category":"flags","emoji_order":"2277","aliases":[":gn:"]},{"name":"guadeloupe","shortname":":flag_gp:","category":"flags","emoji_order":"2278","aliases":[":gp:"]},{"name":"equatorial guinea","shortname":":flag_gq:","category":"flags","emoji_order":"2279","aliases":[":gq:"]},{"name":"greece","shortname":":flag_gr:","category":"flags","emoji_order":"2280","aliases":[":gr:"]},{"name":"south georgia","shortname":":flag_gs:","category":"flags","emoji_order":"2281","aliases":[":gs:"]},{"name":"guatemala","shortname":":flag_gt:","category":"flags","emoji_order":"2282","aliases":[":gt:"]},{"name":"guam","shortname":":flag_gu:","category":"flags","emoji_order":"2283","aliases":[":gu:"]},{"name":"guinea-bissau","shortname":":flag_gw:","category":"flags","emoji_order":"2284","aliases":[":gw:"]},{"name":"guyana","shortname":":flag_gy:","category":"flags","emoji_order":"2285","aliases":[":gy:"]},{"name":"hong kong","shortname":":flag_hk:","category":"flags","emoji_order":"2286","aliases":[":hk:"]},{"name":"heard island and mcdonald islands","shortname":":flag_hm:","category":"flags","emoji_order":"2287","aliases":[":hm:"]},{"name":"honduras","shortname":":flag_hn:","category":"flags","emoji_order":"2288","aliases":[":hn:"]},{"name":"croatia","shortname":":flag_hr:","category":"flags","emoji_order":"2289","aliases":[":hr:"]},{"name":"haiti","shortname":":flag_ht:","category":"flags","emoji_order":"2290","aliases":[":ht:"]},{"name":"hungary","shortname":":flag_hu:","category":"flags","emoji_order":"2291","aliases":[":hu:"]},{"name":"canary islands","shortname":":flag_ic:","category":"flags","emoji_order":"2292","aliases":[":ic:"]},{"name":"indonesia","shortname":":flag_id:","category":"flags","emoji_order":"2293","aliases":[":indonesia:"]},{"name":"ireland","shortname":":flag_ie:","category":"flags","emoji_order":"2294","aliases":[":ie:"]},{"name":"israel","shortname":":flag_il:","category":"flags","emoji_order":"2295","aliases":[":il:"]},{"name":"isle of man","shortname":":flag_im:","category":"flags","emoji_order":"2296","aliases":[":im:"]},{"name":"india","shortname":":flag_in:","category":"flags","emoji_order":"2297","aliases":[":in:"]},{"name":"british indian ocean territory","shortname":":flag_io:","category":"flags","emoji_order":"2298","aliases":[":io:"]},{"name":"iraq","shortname":":flag_iq:","category":"flags","emoji_order":"2299","aliases":[":iq:"]},{"name":"iran","shortname":":flag_ir:","category":"flags","emoji_order":"2300","aliases":[":ir:"]},{"name":"iceland","shortname":":flag_is:","category":"flags","emoji_order":"2301","aliases":[":is:"]},{"name":"italy","shortname":":flag_it:","category":"flags","emoji_order":"2302","aliases":[":it:"]},{"name":"jersey","shortname":":flag_je:","category":"flags","emoji_order":"2303","aliases":[":je:"]},{"name":"jamaica","shortname":":flag_jm:","category":"flags","emoji_order":"2304","aliases":[":jm:"]},{"name":"jordan","shortname":":flag_jo:","category":"flags","emoji_order":"2305","aliases":[":jo:"]},{"name":"japan","shortname":":flag_jp:","category":"flags","emoji_order":"2306","aliases":[":jp:"]},{"name":"kenya","shortname":":flag_ke:","category":"flags","emoji_order":"2307","aliases":[":ke:"]},{"name":"kyrgyzstan","shortname":":flag_kg:","category":"flags","emoji_order":"2308","aliases":[":kg:"]},{"name":"cambodia","shortname":":flag_kh:","category":"flags","emoji_order":"2309","aliases":[":kh:"]},{"name":"kiribati","shortname":":flag_ki:","category":"flags","emoji_order":"2310","aliases":[":ki:"]},{"name":"the comoros","shortname":":flag_km:","category":"flags","emoji_order":"2311","aliases":[":km:"]},{"name":"saint kitts and nevis","shortname":":flag_kn:","category":"flags","emoji_order":"2312","aliases":[":kn:"]},{"name":"north korea","shortname":":flag_kp:","category":"flags","emoji_order":"2313","aliases":[":kp:"]},{"name":"korea","shortname":":flag_kr:","category":"flags","emoji_order":"2314","aliases":[":kr:"]},{"name":"kuwait","shortname":":flag_kw:","category":"flags","emoji_order":"2315","aliases":[":kw:"]},{"name":"cayman islands","shortname":":flag_ky:","category":"flags","emoji_order":"2316","aliases":[":ky:"]},{"name":"kazakhstan","shortname":":flag_kz:","category":"flags","emoji_order":"2317","aliases":[":kz:"]},{"name":"laos","shortname":":flag_la:","category":"flags","emoji_order":"2318","aliases":[":la:"]},{"name":"lebanon","shortname":":flag_lb:","category":"flags","emoji_order":"2319","aliases":[":lb:"]},{"name":"saint lucia","shortname":":flag_lc:","category":"flags","emoji_order":"2320","aliases":[":lc:"]},{"name":"liechtenstein","shortname":":flag_li:","category":"flags","emoji_order":"2321","aliases":[":li:"]},{"name":"sri lanka","shortname":":flag_lk:","category":"flags","emoji_order":"2322","aliases":[":lk:"]},{"name":"liberia","shortname":":flag_lr:","category":"flags","emoji_order":"2323","aliases":[":lr:"]},{"name":"lesotho","shortname":":flag_ls:","category":"flags","emoji_order":"2324","aliases":[":ls:"]},{"name":"lithuania","shortname":":flag_lt:","category":"flags","emoji_order":"2325","aliases":[":lt:"]},{"name":"luxembourg","shortname":":flag_lu:","category":"flags","emoji_order":"2326","aliases":[":lu:"]},{"name":"latvia","shortname":":flag_lv:","category":"flags","emoji_order":"2327","aliases":[":lv:"]},{"name":"libya","shortname":":flag_ly:","category":"flags","emoji_order":"2328","aliases":[":ly:"]},{"name":"morocco","shortname":":flag_ma:","category":"flags","emoji_order":"2329","aliases":[":ma:"]},{"name":"monaco","shortname":":flag_mc:","category":"flags","emoji_order":"2330","aliases":[":mc:"]},{"name":"moldova","shortname":":flag_md:","category":"flags","emoji_order":"2331","aliases":[":md:"]},{"name":"montenegro","shortname":":flag_me:","category":"flags","emoji_order":"2332","aliases":[":me:"]},{"name":"saint martin","shortname":":flag_mf:","category":"flags","emoji_order":"2333","aliases":[":mf:"]},{"name":"madagascar","shortname":":flag_mg:","category":"flags","emoji_order":"2334","aliases":[":mg:"]},{"name":"the marshall islands","shortname":":flag_mh:","category":"flags","emoji_order":"2335","aliases":[":mh:"]},{"name":"macedonia","shortname":":flag_mk:","category":"flags","emoji_order":"2336","aliases":[":mk:"]},{"name":"mali","shortname":":flag_ml:","category":"flags","emoji_order":"2337","aliases":[":ml:"]},{"name":"myanmar","shortname":":flag_mm:","category":"flags","emoji_order":"2338","aliases":[":mm:"]},{"name":"mongolia","shortname":":flag_mn:","category":"flags","emoji_order":"2339","aliases":[":mn:"]},{"name":"macau","shortname":":flag_mo:","category":"flags","emoji_order":"2340","aliases":[":mo:"]},{"name":"northern mariana islands","shortname":":flag_mp:","category":"flags","emoji_order":"2341","aliases":[":mp:"]},{"name":"martinique","shortname":":flag_mq:","category":"flags","emoji_order":"2342","aliases":[":mq:"]},{"name":"mauritania","shortname":":flag_mr:","category":"flags","emoji_order":"2343","aliases":[":mr:"]},{"name":"montserrat","shortname":":flag_ms:","category":"flags","emoji_order":"2344","aliases":[":ms:"]},{"name":"malta","shortname":":flag_mt:","category":"flags","emoji_order":"2345","aliases":[":mt:"]},{"name":"mauritius","shortname":":flag_mu:","category":"flags","emoji_order":"2346","aliases":[":mu:"]},{"name":"maldives","shortname":":flag_mv:","category":"flags","emoji_order":"2347","aliases":[":mv:"]},{"name":"malawi","shortname":":flag_mw:","category":"flags","emoji_order":"2348","aliases":[":mw:"]},{"name":"mexico","shortname":":flag_mx:","category":"flags","emoji_order":"2349","aliases":[":mx:"]},{"name":"malaysia","shortname":":flag_my:","category":"flags","emoji_order":"2350","aliases":[":my:"]},{"name":"mozambique","shortname":":flag_mz:","category":"flags","emoji_order":"2351","aliases":[":mz:"]},{"name":"namibia","shortname":":flag_na:","category":"flags","emoji_order":"2352","aliases":[":na:"]},{"name":"new caledonia","shortname":":flag_nc:","category":"flags","emoji_order":"2353","aliases":[":nc:"]},{"name":"niger","shortname":":flag_ne:","category":"flags","emoji_order":"2354","aliases":[":ne:"]},{"name":"norfolk island","shortname":":flag_nf:","category":"flags","emoji_order":"2355","aliases":[":nf:"]},{"name":"nigeria","shortname":":flag_ng:","category":"flags","emoji_order":"2356","aliases":[":nigeria:"]},{"name":"nicaragua","shortname":":flag_ni:","category":"flags","emoji_order":"2357","aliases":[":ni:"]},{"name":"the netherlands","shortname":":flag_nl:","category":"flags","emoji_order":"2358","aliases":[":nl:"]},{"name":"norway","shortname":":flag_no:","category":"flags","emoji_order":"2359","aliases":[":no:"]},{"name":"nepal","shortname":":flag_np:","category":"flags","emoji_order":"2360","aliases":[":np:"]},{"name":"nauru","shortname":":flag_nr:","category":"flags","emoji_order":"2361","aliases":[":nr:"]},{"name":"niue","shortname":":flag_nu:","category":"flags","emoji_order":"2362","aliases":[":nu:"]},{"name":"new zealand","shortname":":flag_nz:","category":"flags","emoji_order":"2363","aliases":[":nz:"]},{"name":"oman","shortname":":flag_om:","category":"flags","emoji_order":"2364","aliases":[":om:"]},{"name":"panama","shortname":":flag_pa:","category":"flags","emoji_order":"2365","aliases":[":pa:"]},{"name":"peru","shortname":":flag_pe:","category":"flags","emoji_order":"2366","aliases":[":pe:"]},{"name":"french polynesia","shortname":":flag_pf:","category":"flags","emoji_order":"2367","aliases":[":pf:"]},{"name":"papua new guinea","shortname":":flag_pg:","category":"flags","emoji_order":"2368","aliases":[":pg:"]},{"name":"the philippines","shortname":":flag_ph:","category":"flags","emoji_order":"2369","aliases":[":ph:"]},{"name":"pakistan","shortname":":flag_pk:","category":"flags","emoji_order":"2370","aliases":[":pk:"]},{"name":"poland","shortname":":flag_pl:","category":"flags","emoji_order":"2371","aliases":[":pl:"]},{"name":"saint pierre and miquelon","shortname":":flag_pm:","category":"flags","emoji_order":"2372","aliases":[":pm:"]},{"name":"pitcairn","shortname":":flag_pn:","category":"flags","emoji_order":"2373","aliases":[":pn:"]},{"name":"puerto rico","shortname":":flag_pr:","category":"flags","emoji_order":"2374","aliases":[":pr:"]},{"name":"palestinian authority","shortname":":flag_ps:","category":"flags","emoji_order":"2375","aliases":[":ps:"]},{"name":"portugal","shortname":":flag_pt:","category":"flags","emoji_order":"2376","aliases":[":pt:"]},{"name":"palau","shortname":":flag_pw:","category":"flags","emoji_order":"2377","aliases":[":pw:"]},{"name":"paraguay","shortname":":flag_py:","category":"flags","emoji_order":"2378","aliases":[":py:"]},{"name":"qatar","shortname":":flag_qa:","category":"flags","emoji_order":"2379","aliases":[":qa:"]},{"name":"réunion","shortname":":flag_re:","category":"flags","emoji_order":"2380","aliases":[":re:"]},{"name":"romania","shortname":":flag_ro:","category":"flags","emoji_order":"2381","aliases":[":ro:"]},{"name":"serbia","shortname":":flag_rs:","category":"flags","emoji_order":"2382","aliases":[":rs:"]},{"name":"russia","shortname":":flag_ru:","category":"flags","emoji_order":"2383","aliases":[":ru:"]},{"name":"rwanda","shortname":":flag_rw:","category":"flags","emoji_order":"2384","aliases":[":rw:"]},{"name":"saudi arabia","shortname":":flag_sa:","category":"flags","emoji_order":"2385","aliases":[":saudiarabia:",":saudi:"]},{"name":"the solomon islands","shortname":":flag_sb:","category":"flags","emoji_order":"2386","aliases":[":sb:"]},{"name":"the seychelles","shortname":":flag_sc:","category":"flags","emoji_order":"2387","aliases":[":sc:"]},{"name":"sudan","shortname":":flag_sd:","category":"flags","emoji_order":"2388","aliases":[":sd:"]},{"name":"sweden","shortname":":flag_se:","category":"flags","emoji_order":"2389","aliases":[":se:"]},{"name":"singapore","shortname":":flag_sg:","category":"flags","emoji_order":"2390","aliases":[":sg:"]},{"name":"saint helena","shortname":":flag_sh:","category":"flags","emoji_order":"2391","aliases":[":sh:"]},{"name":"slovenia","shortname":":flag_si:","category":"flags","emoji_order":"2392","aliases":[":si:"]},{"name":"svalbard and jan mayen","shortname":":flag_sj:","category":"flags","emoji_order":"2393","aliases":[":sj:"]},{"name":"slovakia","shortname":":flag_sk:","category":"flags","emoji_order":"2394","aliases":[":sk:"]},{"name":"sierra leone","shortname":":flag_sl:","category":"flags","emoji_order":"2395","aliases":[":sl:"]},{"name":"san marino","shortname":":flag_sm:","category":"flags","emoji_order":"2396","aliases":[":sm:"]},{"name":"senegal","shortname":":flag_sn:","category":"flags","emoji_order":"2397","aliases":[":sn:"]},{"name":"somalia","shortname":":flag_so:","category":"flags","emoji_order":"2398","aliases":[":so:"]},{"name":"suriname","shortname":":flag_sr:","category":"flags","emoji_order":"2399","aliases":[":sr:"]},{"name":"south sudan","shortname":":flag_ss:","category":"flags","emoji_order":"2400","aliases":[":ss:"]},{"name":"são tomé and príncipe","shortname":":flag_st:","category":"flags","emoji_order":"2401","aliases":[":st:"]},{"name":"el salvador","shortname":":flag_sv:","category":"flags","emoji_order":"2402","aliases":[":sv:"]},{"name":"sint maarten","shortname":":flag_sx:","category":"flags","emoji_order":"2403","aliases":[":sx:"]},{"name":"syria","shortname":":flag_sy:","category":"flags","emoji_order":"2404","aliases":[":sy:"]},{"name":"swaziland","shortname":":flag_sz:","category":"flags","emoji_order":"2405","aliases":[":sz:"]},{"name":"tristan da cunha","shortname":":flag_ta:","category":"flags","emoji_order":"2406","aliases":[":ta:"]},{"name":"turks and caicos islands","shortname":":flag_tc:","category":"flags","emoji_order":"2407","aliases":[":tc:"]},{"name":"chad","shortname":":flag_td:","category":"flags","emoji_order":"2408","aliases":[":td:"]},{"name":"french southern territories","shortname":":flag_tf:","category":"flags","emoji_order":"2409","aliases":[":tf:"]},{"name":"togo","shortname":":flag_tg:","category":"flags","emoji_order":"2410","aliases":[":tg:"]},{"name":"thailand","shortname":":flag_th:","category":"flags","emoji_order":"2411","aliases":[":th:"]},{"name":"tajikistan","shortname":":flag_tj:","category":"flags","emoji_order":"2412","aliases":[":tj:"]},{"name":"tokelau","shortname":":flag_tk:","category":"flags","emoji_order":"2413","aliases":[":tk:"]},{"name":"timor-leste","shortname":":flag_tl:","category":"flags","emoji_order":"2414","aliases":[":tl:"]},{"name":"turkmenistan","shortname":":flag_tm:","category":"flags","emoji_order":"2415","aliases":[":turkmenistan:"]},{"name":"tunisia","shortname":":flag_tn:","category":"flags","emoji_order":"2416","aliases":[":tn:"]},{"name":"tonga","shortname":":flag_to:","category":"flags","emoji_order":"2417","aliases":[":to:"]},{"name":"turkey","shortname":":flag_tr:","category":"flags","emoji_order":"2418","aliases":[":tr:"]},{"name":"trinidad and tobago","shortname":":flag_tt:","category":"flags","emoji_order":"2419","aliases":[":tt:"]},{"name":"tuvalu","shortname":":flag_tv:","category":"flags","emoji_order":"2420","aliases":[":tuvalu:"]},{"name":"the republic of china","shortname":":flag_tw:","category":"flags","emoji_order":"2421","aliases":[":tw:"]},{"name":"tanzania","shortname":":flag_tz:","category":"flags","emoji_order":"2422","aliases":[":tz:"]},{"name":"ukraine","shortname":":flag_ua:","category":"flags","emoji_order":"2423","aliases":[":ua:"]},{"name":"uganda","shortname":":flag_ug:","category":"flags","emoji_order":"2424","aliases":[":ug:"]},{"name":"united states minor outlying islands","shortname":":flag_um:","category":"flags","emoji_order":"2425","aliases":[":um:"]},{"name":"united states","shortname":":flag_us:","category":"flags","emoji_order":"2427","aliases":[":us:"]},{"name":"uruguay","shortname":":flag_uy:","category":"flags","emoji_order":"2428","aliases":[":uy:"]},{"name":"uzbekistan","shortname":":flag_uz:","category":"flags","emoji_order":"2429","aliases":[":uz:"]},{"name":"the vatican city","shortname":":flag_va:","category":"flags","emoji_order":"2430","aliases":[":va:"]},{"name":"saint vincent and the grenadines","shortname":":flag_vc:","category":"flags","emoji_order":"2431","aliases":[":vc:"]},{"name":"venezuela","shortname":":flag_ve:","category":"flags","emoji_order":"2432","aliases":[":ve:"]},{"name":"british virgin islands","shortname":":flag_vg:","category":"flags","emoji_order":"2433","aliases":[":vg:"]},{"name":"u.s. virgin islands","shortname":":flag_vi:","category":"flags","emoji_order":"2434","aliases":[":vi:"]},{"name":"vietnam","shortname":":flag_vn:","category":"flags","emoji_order":"2435","aliases":[":vn:"]},{"name":"vanuatu","shortname":":flag_vu:","category":"flags","emoji_order":"2436","aliases":[":vu:"]},{"name":"wallis and futuna","shortname":":flag_wf:","category":"flags","emoji_order":"2437","aliases":[":wf:"]},{"name":"samoa","shortname":":flag_ws:","category":"flags","emoji_order":"2438","aliases":[":ws:"]},{"name":"kosovo","shortname":":flag_xk:","category":"flags","emoji_order":"2439","aliases":[":xk:"]},{"name":"yemen","shortname":":flag_ye:","category":"flags","emoji_order":"2440","aliases":[":ye:"]},{"name":"mayotte","shortname":":flag_yt:","category":"flags","emoji_order":"2441","aliases":[":yt:"]},{"name":"south africa","shortname":":flag_za:","category":"flags","emoji_order":"2442","aliases":[":za:"]},{"name":"zambia","shortname":":flag_zm:","category":"flags","emoji_order":"2443","aliases":[":zm:"]},{"name":"zimbabwe","shortname":":flag_zw:","category":"flags","emoji_order":"2444","aliases":[":zw:"]},{"name":"regional indicator symbol letter z","shortname":":regional_indicator_z:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter y","shortname":":regional_indicator_y:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter x","shortname":":regional_indicator_x:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter w","shortname":":regional_indicator_w:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter v","shortname":":regional_indicator_v:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter u","shortname":":regional_indicator_u:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter t","shortname":":regional_indicator_t:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter s","shortname":":regional_indicator_s:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter r","shortname":":regional_indicator_r:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter q","shortname":":regional_indicator_q:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter p","shortname":":regional_indicator_p:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter o","shortname":":regional_indicator_o:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter n","shortname":":regional_indicator_n:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter m","shortname":":regional_indicator_m:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter l","shortname":":regional_indicator_l:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter k","shortname":":regional_indicator_k:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter j","shortname":":regional_indicator_j:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter i","shortname":":regional_indicator_i:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter h","shortname":":regional_indicator_h:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter g","shortname":":regional_indicator_g:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter f","shortname":":regional_indicator_f:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter e","shortname":":regional_indicator_e:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter d","shortname":":regional_indicator_d:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter c","shortname":":regional_indicator_c:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter b","shortname":":regional_indicator_b:","category":"regional","emoji_order":"12345"},{"name":"regional indicator symbol letter a","shortname":":regional_indicator_a:","category":"regional","emoji_order":"12345"}]
\ No newline at end of file
+[{"name":"grinning face","shortname":":gleeful:","category":0,"emoji_order":1},{"name":"grinning face with big eyes","shortname":":glad:","category":0,"emoji_order":2,"aliases":[":smile:"]},{"name":"grinning face with smiling eyes","shortname":":happy:","category":0,"emoji_order":3},{"name":"beaming face with smiling eyes","shortname":":blissful:","category":0,"emoji_order":4,"aliases":[":grin:"],"aliases_ascii":[":D"]},{"name":"grinning squinting face","shortname":":amused:","category":0,"emoji_order":5,"aliases":[":laugh:",":lol:"],"aliases_ascii":["xD"]},{"name":"grinning face with sweat","shortname":":embarassed:","category":0,"emoji_order":6},{"name":"rolling on the floor laughing","shortname":":entertained:","category":0,"emoji_order":7,"aliases":[":rofl:"],"aliases_ascii":[":'D"]},{"name":"face with tears of joy","shortname":":joyful:","category":0,"emoji_order":8,"aliases":[":haha:"],"aliases_ascii":[":')"]},{"name":"slightly smiling face","shortname":":pleased:","category":0,"emoji_order":9,"aliases_ascii":[":)"]},{"name":"upside-down face","shortname":":ecstatic:","category":0,"emoji_order":10,"aliases":[":upside_down:"]},{"name":"winking face","shortname":":coy:","category":0,"emoji_order":11,"aliases":[":wink:"],"aliases_ascii":[";)"]},{"name":"smiling face with smiling eyes","shortname":":anxious:","category":0,"emoji_order":12,"aliases":[":blush:"],"aliases_ascii":[":>"]},{"name":"smiling face with halo","shortname":":innocent:","category":0,"emoji_order":13,"aliases":[":halo:"],"aliases_ascii":["o:)"]},{"name":"smiling face with hearts","shortname":":love:","category":0,"emoji_order":14},{"name":"smiling face with heart-eyes","shortname":":lovestruck:","category":0,"emoji_order":15},{"name":"star-struck","shortname":":starstruck:","category":0,"emoji_order":16},{"name":"face blowing a kiss","shortname":":flirty:","category":0,"emoji_order":17,"aliases_ascii":[":x"]},{"name":"kissing face","shortname":":kiss:","category":0,"emoji_order":18},{"name":"smiling face","shortname":":relaxed:","category":0,"emoji_order":20},{"name":"kissing face with closed eyes","shortname":":loving_kiss:","category":0,"emoji_order":21,"aliases_ascii":[":*"]},{"name":"kissing face with smiling eyes","shortname":":happy_kiss:","category":0,"emoji_order":22},{"name":"face savoring food","shortname":":yum:","category":0,"emoji_order":23,"aliases":[":savour:"]},{"name":"face with tongue","shortname":":playful:","category":0,"emoji_order":24,"aliases":[":tongue_out:"],"aliases_ascii":[":p"]},{"name":"winking face with tongue","shortname":":mischievous:","category":0,"emoji_order":25,"aliases_ascii":[";p"]},{"name":"zany face","shortname":":crazy:","category":0,"emoji_order":26},{"name":"squinting face with tongue","shortname":":facetious:","category":0,"emoji_order":27,"aliases":[":lmao:"],"aliases_ascii":["xp"]},{"name":"money-mouth face","shortname":":pretentious:","category":0,"emoji_order":28,"aliases":[":money_mouth:"]},{"name":"hugging face","shortname":":hugging:","category":0,"emoji_order":29},{"name":"face with hand over mouth","shortname":":gasp:","category":0,"emoji_order":30},{"name":"shushing face","shortname":":shushing:","category":0,"emoji_order":31},{"name":"thinking face","shortname":":curious:","category":0,"emoji_order":32,"aliases":[":thinking:"],"aliases_ascii":[":l"]},{"name":"zipper-mouth face","shortname":":silenced:","category":0,"emoji_order":33,"aliases":[":zipper_mouth:"],"aliases_ascii":[":z"]},{"name":"face with raised eyebrow","shortname":":contempt:","category":0,"emoji_order":34},{"name":"neutral face","shortname":":indifferent:","category":0,"emoji_order":35,"aliases":[":neutral:"],"aliases_ascii":[":|"]},{"name":"expressionless face","shortname":":apathetic:","category":0,"emoji_order":36,"aliases":[":expressionless:"]},{"name":"face without mouth","shortname":":vacant:","category":0,"emoji_order":37,"aliases":[":no_mouth:"],"aliases_ascii":[":#"]},{"name":"smirking face","shortname":":cocky:","category":0,"emoji_order":38,"aliases":[":smirk:"],"aliases_ascii":[":j"]},{"name":"unamused face","shortname":":unamused:","category":0,"emoji_order":39,"aliases_ascii":[":?"]},{"name":"face with rolling eyes","shortname":":disbelief:","category":0,"emoji_order":40},{"name":"grimacing face","shortname":":grimaced:","category":0,"emoji_order":41,"aliases_ascii":["8D"]},{"name":"lying face","shortname":":lying:","category":0,"emoji_order":42},{"name":"relieved face","shortname":":relieved:","category":0,"emoji_order":43},{"name":"pensive face","shortname":":pensive:","category":0,"emoji_order":44},{"name":"sleepy face","shortname":":sleepy:","category":0,"emoji_order":45},{"name":"drooling face","shortname":":drooling:","category":0,"emoji_order":46},{"name":"sleeping face","shortname":":exhausted:","category":0,"emoji_order":47,"aliases":[":sleeping:"]},{"name":"face with medical mask","shortname":":ill:","category":0,"emoji_order":48,"aliases":[":mask:"]},{"name":"face with thermometer","shortname":":sick:","category":0,"emoji_order":49},{"name":"face with head-bandage","shortname":":injured:","category":0,"emoji_order":50},{"name":"nauseated face","shortname":":nauseated:","category":0,"emoji_order":51,"aliases_ascii":["%("]},{"name":"face vomiting","shortname":":vomiting:","category":0,"emoji_order":52},{"name":"sneezing face","shortname":":sneezing:","category":0,"emoji_order":53},{"name":"hot face","shortname":":overheating:","category":0,"emoji_order":54},{"name":"cold face","shortname":":freezing:","category":0,"emoji_order":55},{"name":"woozy face","shortname":":woozy:","category":0,"emoji_order":56,"aliases_ascii":[":&"]},{"name":"dizzy face","shortname":":dizzy:","category":0,"emoji_order":57,"aliases_ascii":["xo"]},{"name":"exploding head","shortname":":shocked:","category":0,"emoji_order":58,"aliases":[":exploding_head:"]},{"name":"cowboy hat face","shortname":":cowboy:","category":0,"emoji_order":59},{"name":"partying face","shortname":":partying:","category":0,"emoji_order":60,"aliases":[":celebrating:"]},{"name":"smiling face with sunglasses","shortname":":confident:","category":0,"emoji_order":61,"aliases_ascii":["8)"]},{"name":"nerd face","shortname":":nerd:","category":0,"emoji_order":62,"aliases_ascii":[":B"]},{"name":"face with monocle","shortname":":monocle:","category":0,"emoji_order":63},{"name":"confused face","shortname":":confused:","category":0,"emoji_order":64,"aliases_ascii":[":/"]},{"name":"worried face","shortname":":worried:","category":0,"emoji_order":65},{"name":"slightly frowning face","shortname":":cheerless:","category":0,"emoji_order":66},{"name":"frowning face","shortname":":sad:","category":0,"emoji_order":68,"aliases":[":frowning:"],"aliases_ascii":[":("]},{"name":"face with open mouth","shortname":":surprised:","category":0,"emoji_order":69},{"name":"hushed face","shortname":":hushed:","category":0,"emoji_order":70},{"name":"astonished face","shortname":":astonished:","category":0,"emoji_order":71,"aliases_ascii":[":o"]},{"name":"flushed face","shortname":":flushed:","category":0,"emoji_order":72,"aliases_ascii":[":$"]},{"name":"pleading face","shortname":":pleading:","category":0,"emoji_order":73},{"name":"frowning face with open mouth","shortname":":bored:","category":0,"emoji_order":74},{"name":"anguished face","shortname":":anguished:","category":0,"emoji_order":75,"aliases":[":wtf:"],"aliases_ascii":[":s"]},{"name":"fearful face","shortname":":fearful:","category":0,"emoji_order":76},{"name":"anxious face with sweat","shortname":":frustrated:","category":0,"emoji_order":77},{"name":"sad but relieved face","shortname":":hopeful:","category":0,"emoji_order":78},{"name":"crying face","shortname":":upset:","category":0,"emoji_order":79,"aliases":[":cry:"],"aliases_ascii":[":'("]},{"name":"loudly crying face","shortname":":distressed:","category":0,"emoji_order":80,"aliases":[":sob:"],"aliases_ascii":[":'o"]},{"name":"face screaming in fear","shortname":":frightened:","category":0,"emoji_order":81,"aliases":[":scream:"],"aliases_ascii":["Dx"]},{"name":"confounded face","shortname":":confounded:","category":0,"emoji_order":82,"aliases_ascii":["x("]},{"name":"persevering face","shortname":":persevered:","category":0,"emoji_order":83},{"name":"disappointed face","shortname":":disappointed:","category":0,"emoji_order":84},{"name":"downcast face with sweat","shortname":":shamed:","category":0,"emoji_order":85,"aliases_ascii":[":<"]},{"name":"weary face","shortname":":weary:","category":0,"emoji_order":86,"aliases_ascii":["D:"]},{"name":"tired face","shortname":":tired:","category":0,"emoji_order":87,"aliases_ascii":[":c"]},{"name":"yawning face","shortname":":yawn:","category":0,"emoji_order":88},{"name":"face with steam from nose","shortname":":annoyed:","category":0,"emoji_order":89,"aliases":[":hrmph:"]},{"name":"pouting face","shortname":":enraged:","category":0,"emoji_order":90,"aliases":[":pout:"],"aliases_ascii":[">:/"]},{"name":"angry face","shortname":":angry:","category":0,"emoji_order":91},{"name":"face with symbols on mouth","shortname":":censored:","category":0,"emoji_order":92,"aliases_ascii":[":@"]},{"name":"smiling face with horns","shortname":":imp:","category":0,"emoji_order":93,"aliases_ascii":[">:)"]},{"name":"angry face with horns","shortname":":angry_imp:","category":0,"emoji_order":94,"aliases_ascii":[">:("]},{"name":"skull","shortname":":skull:","category":0,"emoji_order":95},{"name":"skull and crossbones","shortname":":crossbones:","category":0,"emoji_order":97},{"name":"pile of poo","shortname":":poop:","category":0,"emoji_order":98},{"name":"clown face","shortname":":clown:","category":0,"emoji_order":99},{"name":"ogre","shortname":":ogre:","category":0,"emoji_order":100,"aliases_ascii":[">0)"]},{"name":"goblin","shortname":":goblin:","category":0,"emoji_order":101},{"name":"ghost","shortname":":ghost:","category":0,"emoji_order":102},{"name":"alien","shortname":":alien:","category":0,"emoji_order":103},{"name":"alien monster","shortname":":alien_monster:","category":0,"emoji_order":104,"aliases":[":space_invader:"]},{"name":"robot","shortname":":robot:","category":0,"emoji_order":105},{"name":"grinning cat","shortname":":smiling_cat:","category":0,"emoji_order":106},{"name":"grinning cat with smiling eyes","shortname":":grinning_cat:","category":0,"emoji_order":107},{"name":"cat with tears of joy","shortname":":joyful_cat:","category":0,"emoji_order":108},{"name":"smiling cat with heart-eyes","shortname":":lovestruck_cat:","category":0,"emoji_order":109},{"name":"cat with wry smile","shortname":":smirking_cat:","category":0,"emoji_order":110},{"name":"kissing cat","shortname":":kissing_cat:","category":0,"emoji_order":111,"aliases_ascii":[":3"]},{"name":"weary cat","shortname":":weary_cat:","category":0,"emoji_order":112},{"name":"crying cat","shortname":":crying_cat:","category":0,"emoji_order":113},{"name":"pouting cat","shortname":":pouting_cat:","category":0,"emoji_order":114},{"name":"see-no-evil monkey","shortname":":see_no_evil:","category":0,"emoji_order":115},{"name":"hear-no-evil monkey","shortname":":hear_no_evil:","category":0,"emoji_order":116},{"name":"speak-no-evil monkey","shortname":":speak_no_evil:","category":0,"emoji_order":117},{"name":"kiss mark","shortname":":kiss_lips:","category":0,"emoji_order":118},{"name":"love letter","shortname":":love_letter:","category":0,"emoji_order":119},{"name":"heart with arrow","shortname":":cupid:","category":0,"emoji_order":120},{"name":"heart with ribbon","shortname":":heart_ribbon:","category":0,"emoji_order":121},{"name":"sparkling heart","shortname":":sparkling_heart:","category":0,"emoji_order":122},{"name":"growing heart","shortname":":heartpulse:","category":0,"emoji_order":123},{"name":"beating heart","shortname":":heartbeat:","category":0,"emoji_order":124},{"name":"revolving hearts","shortname":":revolving_hearts:","category":0,"emoji_order":125},{"name":"two hearts","shortname":":two_hearts:","category":0,"emoji_order":126},{"name":"heart decoration","shortname":":heart_decoration:","category":0,"emoji_order":127},{"name":"heart exclamation","shortname":":heart_exclamation:","category":0,"emoji_order":129},{"name":"broken heart","shortname":":broken_heart:","category":0,"emoji_order":130,"aliases_ascii":["3"]},{"name":"red heart","shortname":":heart:","category":0,"emoji_order":132,"aliases_ascii":["<3"]},{"name":"orange heart","shortname":":orange_heart:","category":0,"emoji_order":133},{"name":"yellow heart","shortname":":yellow_heart:","category":0,"emoji_order":134},{"name":"green heart","shortname":":green_heart:","category":0,"emoji_order":135},{"name":"blue heart","shortname":":blue_heart:","category":0,"emoji_order":136},{"name":"purple heart","shortname":":purple_heart:","category":0,"emoji_order":137},{"name":"brown heart","shortname":":brown_heart:","category":0,"emoji_order":138},{"name":"black heart","shortname":":black_heart:","category":0,"emoji_order":139},{"name":"white heart","shortname":":white_heart:","category":0,"emoji_order":140},{"name":"hundred points","shortname":":100:","category":0,"emoji_order":141},{"name":"anger symbol","shortname":":anger:","category":0,"emoji_order":142},{"name":"collision","shortname":":boom:","category":0,"emoji_order":143,"aliases":[":collision:"]},{"name":"dizzy","shortname":":dizzy_star:","category":0,"emoji_order":144},{"name":"sweat droplets","shortname":":sweat_drops:","category":0,"emoji_order":145},{"name":"dashing away","shortname":":dash:","category":0,"emoji_order":146},{"name":"hole","shortname":":hole:","category":0,"emoji_order":148},{"name":"bomb","shortname":":bomb:","category":0,"emoji_order":149},{"name":"speech balloon","shortname":":speech:","category":0,"emoji_order":150},{"name":"eye in speech bubble","shortname":":eye_bubble:","category":0,"emoji_order":151},{"name":"left speech bubble","shortname":":left_speech:","category":0,"emoji_order":156},{"name":"right anger bubble","shortname":":right_anger_speech:","category":0,"emoji_order":158},{"name":"thought balloon","shortname":":thought:","category":0,"emoji_order":159},{"name":"zzz","shortname":":zzz:","category":0,"emoji_order":160},{"name":"waving hand","shortname":":wave:","category":1,"emoji_order":161},{"name":"raised back of hand","shortname":":raised_backhand:","category":1,"emoji_order":167},{"name":"hand with fingers splayed","shortname":":splayed_hand:","category":1,"emoji_order":174},{"name":"raised hand","shortname":":raised_hand:","category":1,"emoji_order":180},{"name":"vulcan salute","shortname":":vulcan:","category":1,"emoji_order":186},{"name":"OK hand","shortname":":ok_hand:","category":1,"emoji_order":192},{"name":"pinching hand","shortname":":pinch:","category":1,"emoji_order":198},{"name":"victory hand","shortname":":victory:","category":1,"emoji_order":205},{"name":"crossed fingers","shortname":":fingers_crossed:","category":1,"emoji_order":211},{"name":"love-you gesture","shortname":":love_you_gesture:","category":1,"emoji_order":217},{"name":"sign of the horns","shortname":":metal:","category":1,"emoji_order":223,"aliases_ascii":["\\m/"]},{"name":"call me hand","shortname":":call_me:","category":1,"emoji_order":229},{"name":"backhand index pointing left","shortname":":point_left:","category":1,"emoji_order":235},{"name":"backhand index pointing right","shortname":":point_right:","category":1,"emoji_order":241},{"name":"backhand index pointing up","shortname":":backhand_point_up:","category":1,"emoji_order":247},{"name":"middle finger","shortname":":middle_finger:","category":1,"emoji_order":253},{"name":"backhand index pointing down","shortname":":point_down:","category":1,"emoji_order":259},{"name":"index pointing up","shortname":":point_up:","category":1,"emoji_order":266},{"name":"thumbs up","shortname":":thumbsup:","category":1,"emoji_order":272,"aliases":[":+1:",":yes:"]},{"name":"thumbs down","shortname":":thumbsdown:","category":1,"emoji_order":278,"aliases":[":-1:",":no:"]},{"name":"raised fist","shortname":":fist:","category":1,"emoji_order":284},{"name":"oncoming fist","shortname":":punch:","category":1,"emoji_order":290},{"name":"left-facing fist","shortname":":left_facing_fist:","category":1,"emoji_order":296},{"name":"right-facing fist","shortname":":right_facing_fist:","category":1,"emoji_order":302},{"name":"clapping hands","shortname":":clap:","category":1,"emoji_order":308},{"name":"raising hands","shortname":":raised_hands:","category":1,"emoji_order":314},{"name":"open hands","shortname":":open_hands:","category":1,"emoji_order":320},{"name":"palms up together","shortname":":palms_up:","category":1,"emoji_order":326},{"name":"handshake","shortname":":handshake:","category":1,"emoji_order":332},{"name":"folded hands","shortname":":pray:","category":1,"emoji_order":333},{"name":"writing hand","shortname":":writing_hand:","category":1,"emoji_order":340},{"name":"nail polish","shortname":":nail_care:","category":1,"emoji_order":346},{"name":"selfie","shortname":":selfie:","category":1,"emoji_order":352},{"name":"flexed biceps","shortname":":muscle:","category":1,"emoji_order":358,"aliases":[":right_bicep:"]},{"name":"mechanical arm","shortname":":mech_arm:","category":1,"emoji_order":364},{"name":"mechanical leg","shortname":":mech_leg:","category":1,"emoji_order":365},{"name":"leg","shortname":":leg:","category":1,"emoji_order":366},{"name":"foot","shortname":":foot:","category":1,"emoji_order":372},{"name":"ear","shortname":":ear:","category":1,"emoji_order":378},{"name":"ear with hearing aid","shortname":":hearing_aid:","category":1,"emoji_order":384},{"name":"nose","shortname":":nose:","category":1,"emoji_order":390},{"name":"brain","shortname":":brain:","category":1,"emoji_order":396},{"name":"tooth","shortname":":tooth:","category":1,"emoji_order":397},{"name":"bone","shortname":":bone:","category":1,"emoji_order":398},{"name":"eyes","shortname":":eyes:","category":1,"emoji_order":399},{"name":"eye","shortname":":eye:","category":1,"emoji_order":401},{"name":"tongue","shortname":":tongue:","category":1,"emoji_order":402},{"name":"mouth","shortname":":lips:","category":1,"emoji_order":403},{"name":"baby","shortname":":baby:","category":1,"emoji_order":404},{"name":"child","shortname":":child:","category":1,"emoji_order":410},{"name":"boy","shortname":":boy:","category":1,"emoji_order":416},{"name":"girl","shortname":":girl:","category":1,"emoji_order":422},{"name":"person","shortname":":adult:","category":1,"emoji_order":428},{"name":"person: blond hair","shortname":":blond_person:","category":1,"emoji_order":434},{"name":"man","shortname":":man:","category":1,"emoji_order":440},{"name":"man: beard","shortname":":bearded_person:","category":1,"emoji_order":446},{"name":"man: blond hair","shortname":":blond_man:","category":1,"emoji_order":452},{"name":"man: red hair","shortname":":red_haired_man:","category":1,"emoji_order":464},{"name":"man: curly hair","shortname":":curly_haired_man:","category":1,"emoji_order":470},{"name":"man: white hair","shortname":":white_haired_man:","category":1,"emoji_order":476},{"name":"man: bald","shortname":":bald_man:","category":1,"emoji_order":482},{"name":"woman","shortname":":woman:","category":1,"emoji_order":488},{"name":"woman: blond hair","shortname":":blond_woman:","category":1,"emoji_order":494},{"name":"woman: red hair","shortname":":red_haired_woman:","category":1,"emoji_order":506},{"name":"woman: curly hair","shortname":":curly_haired_woman:","category":1,"emoji_order":512},{"name":"woman: white hair","shortname":":white_haired_woman:","category":1,"emoji_order":518},{"name":"woman: bald","shortname":":bald_woman:","category":1,"emoji_order":524},{"name":"older person","shortname":":older_adult:","category":1,"emoji_order":530},{"name":"old man","shortname":":older_man:","category":1,"emoji_order":536},{"name":"old woman","shortname":":older_woman:","category":1,"emoji_order":542},{"name":"person frowning","shortname":":person_frowning:","category":1,"emoji_order":548},{"name":"man frowning","shortname":":man_frowning:","category":1,"emoji_order":554},{"name":"woman frowning","shortname":":woman_frowning:","category":1,"emoji_order":566},{"name":"person pouting","shortname":":person_pouting:","category":1,"emoji_order":578},{"name":"man pouting","shortname":":man_pouting:","category":1,"emoji_order":584},{"name":"woman pouting","shortname":":woman_pouting:","category":1,"emoji_order":596},{"name":"person gesturing NO","shortname":":person_gesturing_no:","category":1,"emoji_order":608},{"name":"man gesturing NO","shortname":":man_gesturing_no:","category":1,"emoji_order":614},{"name":"woman gesturing NO","shortname":":woman_gesturing_no:","category":1,"emoji_order":626},{"name":"person gesturing OK","shortname":":person_gesturing_ok:","category":1,"emoji_order":638},{"name":"man gesturing OK","shortname":":man_gesturing_ok:","category":1,"emoji_order":644},{"name":"woman gesturing OK","shortname":":woman_gesturing_ok:","category":1,"emoji_order":656},{"name":"person tipping hand","shortname":":person_tipping_hand:","category":1,"emoji_order":668},{"name":"man tipping hand","shortname":":man_tipping_hand:","category":1,"emoji_order":674},{"name":"woman tipping hand","shortname":":woman_tipping_hand:","category":1,"emoji_order":686},{"name":"person raising hand","shortname":":person_raising_hand:","category":1,"emoji_order":698},{"name":"man raising hand","shortname":":man_raising_hand:","category":1,"emoji_order":704},{"name":"woman raising hand","shortname":":woman_raising_hand:","category":1,"emoji_order":716},{"name":"deaf person","shortname":":person_deaf:","category":1,"emoji_order":728},{"name":"deaf man","shortname":":man_deaf:","category":1,"emoji_order":734},{"name":"deaf woman","shortname":":woman_deaf:","category":1,"emoji_order":746},{"name":"person bowing","shortname":":person_bowing:","category":1,"emoji_order":758},{"name":"man bowing","shortname":":man_bowing:","category":1,"emoji_order":764},{"name":"woman bowing","shortname":":woman_bowing:","category":1,"emoji_order":776},{"name":"person facepalming","shortname":":person_facepalming:","category":1,"emoji_order":788},{"name":"man facepalming","shortname":":man_facepalming:","category":1,"emoji_order":794},{"name":"woman facepalming","shortname":":woman_facepalming:","category":1,"emoji_order":806},{"name":"person shrugging","shortname":":person_shrugging:","category":1,"emoji_order":818},{"name":"man shrugging","shortname":":man_shrugging:","category":1,"emoji_order":824},{"name":"woman shrugging","shortname":":woman_shrugging:","category":1,"emoji_order":836},{"name":"man health worker","shortname":":man_health_worker:","category":1,"emoji_order":848},{"name":"woman health worker","shortname":":woman_health_worker:","category":1,"emoji_order":860},{"name":"man student","shortname":":man_student:","category":1,"emoji_order":872},{"name":"woman student","shortname":":woman_student:","category":1,"emoji_order":878},{"name":"man teacher","shortname":":man_teacher:","category":1,"emoji_order":884},{"name":"woman teacher","shortname":":woman_teacher:","category":1,"emoji_order":890},{"name":"man judge","shortname":":man_judge:","category":1,"emoji_order":896},{"name":"woman judge","shortname":":woman_judge:","category":1,"emoji_order":908},{"name":"man farmer","shortname":":man_farmer:","category":1,"emoji_order":920},{"name":"woman farmer","shortname":":woman_farmer:","category":1,"emoji_order":926},{"name":"man cook","shortname":":man_cook:","category":1,"emoji_order":932},{"name":"woman cook","shortname":":woman_cook:","category":1,"emoji_order":938},{"name":"man mechanic","shortname":":man_mechanic:","category":1,"emoji_order":944},{"name":"woman mechanic","shortname":":woman_mechanic:","category":1,"emoji_order":950},{"name":"man factory worker","shortname":":man_factory_worker:","category":1,"emoji_order":956},{"name":"woman factory worker","shortname":":woman_factory_worker:","category":1,"emoji_order":962},{"name":"man office worker","shortname":":man_office_worker:","category":1,"emoji_order":968},{"name":"woman office worker","shortname":":woman_office_worker:","category":1,"emoji_order":974},{"name":"man scientist","shortname":":man_scientist:","category":1,"emoji_order":980},{"name":"woman scientist","shortname":":woman_scientist:","category":1,"emoji_order":986},{"name":"man technologist","shortname":":man_technologist:","category":1,"emoji_order":992},{"name":"woman technologist","shortname":":woman_technologist:","category":1,"emoji_order":998},{"name":"man singer","shortname":":man_singer:","category":1,"emoji_order":1004},{"name":"woman singer","shortname":":woman_singer:","category":1,"emoji_order":1010},{"name":"man artist","shortname":":man_artist:","category":1,"emoji_order":1016},{"name":"woman artist","shortname":":woman_artist:","category":1,"emoji_order":1022},{"name":"man pilot","shortname":":man_pilot:","category":1,"emoji_order":1028},{"name":"woman pilot","shortname":":woman_pilot:","category":1,"emoji_order":1040},{"name":"man astronaut","shortname":":man_astronaut:","category":1,"emoji_order":1052},{"name":"woman astronaut","shortname":":woman_astronaut:","category":1,"emoji_order":1058},{"name":"man firefighter","shortname":":man_firefighter:","category":1,"emoji_order":1064},{"name":"woman firefighter","shortname":":woman_firefighter:","category":1,"emoji_order":1070},{"name":"police officer","shortname":":police_officer:","category":1,"emoji_order":1076},{"name":"man police officer","shortname":":man_police_officer:","category":1,"emoji_order":1082},{"name":"woman police officer","shortname":":woman_police_officer:","category":1,"emoji_order":1094},{"name":"detective","shortname":":detective:","category":1,"emoji_order":1107},{"name":"man detective","shortname":":man_detective:","category":1,"emoji_order":1113},{"name":"woman detective","shortname":":woman_detective:","category":1,"emoji_order":1127},{"name":"guard","shortname":":guard:","category":1,"emoji_order":1141},{"name":"man guard","shortname":":man_guard:","category":1,"emoji_order":1147},{"name":"woman guard","shortname":":woman_guard:","category":1,"emoji_order":1159},{"name":"construction worker","shortname":":construction_worker:","category":1,"emoji_order":1171},{"name":"man construction worker","shortname":":man_construction_worker:","category":1,"emoji_order":1177},{"name":"woman construction worker","shortname":":woman_construction_worker:","category":1,"emoji_order":1189},{"name":"prince","shortname":":prince:","category":1,"emoji_order":1201},{"name":"princess","shortname":":princess:","category":1,"emoji_order":1207},{"name":"person wearing turban","shortname":":person_turban:","category":1,"emoji_order":1213},{"name":"man wearing turban","shortname":":man_turban:","category":1,"emoji_order":1219},{"name":"woman wearing turban","shortname":":woman_turban:","category":1,"emoji_order":1231},{"name":"man with Chinese cap","shortname":":man_chinese_cap:","category":1,"emoji_order":1243},{"name":"woman with headscarf","shortname":":woman_headscarf:","category":1,"emoji_order":1249},{"name":"man in tuxedo","shortname":":man_tuxedo:","category":1,"emoji_order":1255},{"name":"bride with veil","shortname":":bride_veil:","category":1,"emoji_order":1261},{"name":"pregnant woman","shortname":":pregnant_woman:","category":1,"emoji_order":1267},{"name":"breast-feeding","shortname":":breast_feeding:","category":1,"emoji_order":1273},{"name":"baby angel","shortname":":baby_angel:","category":1,"emoji_order":1279},{"name":"Santa Claus","shortname":":santa:","category":1,"emoji_order":1285},{"name":"Mrs. Claus","shortname":":mrs_claus:","category":1,"emoji_order":1291},{"name":"superhero","shortname":":hero:","category":1,"emoji_order":1297,"aliases":[":superhero:"]},{"name":"man superhero","shortname":":man_hero:","category":1,"emoji_order":1303},{"name":"woman superhero","shortname":":woman_hero:","category":1,"emoji_order":1315},{"name":"supervillain","shortname":":villain:","category":1,"emoji_order":1327,"aliases":[":supervillain:"]},{"name":"man supervillain","shortname":":man_villain:","category":1,"emoji_order":1333},{"name":"woman supervillain","shortname":":woman_villain:","category":1,"emoji_order":1345},{"name":"mage","shortname":":mage:","category":1,"emoji_order":1357},{"name":"man mage","shortname":":man_mage:","category":1,"emoji_order":1363,"aliases_ascii":[":{>"]},{"name":"woman mage","shortname":":woman_mage:","category":1,"emoji_order":1375},{"name":"fairy","shortname":":fairy:","category":1,"emoji_order":1387},{"name":"man fairy","shortname":":man_fairy:","category":1,"emoji_order":1393},{"name":"woman fairy","shortname":":woman_fairy:","category":1,"emoji_order":1405},{"name":"vampire","shortname":":vampire:","category":1,"emoji_order":1417,"aliases_ascii":[":E"]},{"name":"man vampire","shortname":":man_vampire:","category":1,"emoji_order":1423},{"name":"woman vampire","shortname":":woman_vampire:","category":1,"emoji_order":1435},{"name":"merperson","shortname":":merperson:","category":1,"emoji_order":1447},{"name":"merman","shortname":":merman:","category":1,"emoji_order":1453},{"name":"mermaid","shortname":":mermaid:","category":1,"emoji_order":1465},{"name":"elf","shortname":":elf:","category":1,"emoji_order":1477},{"name":"man elf","shortname":":man_elf:","category":1,"emoji_order":1483},{"name":"woman elf","shortname":":woman_elf:","category":1,"emoji_order":1495},{"name":"genie","shortname":":genie:","category":1,"emoji_order":1507},{"name":"man genie","shortname":":man_genie:","category":1,"emoji_order":1508},{"name":"woman genie","shortname":":woman_genie:","category":1,"emoji_order":1510},{"name":"zombie","shortname":":zombie:","category":1,"emoji_order":1512,"aliases_ascii":["8#"]},{"name":"man zombie","shortname":":man_zombie:","category":1,"emoji_order":1513},{"name":"woman zombie","shortname":":woman_zombie:","category":1,"emoji_order":1515},{"name":"person getting massage","shortname":":person_getting_massage:","category":1,"emoji_order":1517},{"name":"man getting massage","shortname":":man_getting_face_massage:","category":1,"emoji_order":1523},{"name":"woman getting massage","shortname":":woman_getting_face_massage:","category":1,"emoji_order":1535},{"name":"person getting haircut","shortname":":person_getting_haircut:","category":1,"emoji_order":1547},{"name":"man getting haircut","shortname":":man_getting_haircut:","category":1,"emoji_order":1553},{"name":"woman getting haircut","shortname":":woman_getting_haircut:","category":1,"emoji_order":1565},{"name":"person walking","shortname":":person_walking:","category":1,"emoji_order":1577},{"name":"man walking","shortname":":man_walking:","category":1,"emoji_order":1583},{"name":"woman walking","shortname":":woman_walking:","category":1,"emoji_order":1595},{"name":"person standing","shortname":":person_standing:","category":1,"emoji_order":1607},{"name":"man standing","shortname":":man_standing:","category":1,"emoji_order":1613},{"name":"woman standing","shortname":":woman_standing:","category":1,"emoji_order":1625},{"name":"person kneeling","shortname":":person_kneeling:","category":1,"emoji_order":1637},{"name":"man kneeling","shortname":":man_kneeling:","category":1,"emoji_order":1643},{"name":"woman kneeling","shortname":":woman_kneeling:","category":1,"emoji_order":1655},{"name":"man with probing cane","shortname":":man_probing_cane:","category":1,"emoji_order":1667},{"name":"woman with probing cane","shortname":":woman_probing_cane:","category":1,"emoji_order":1673},{"name":"man in motorized wheelchair","shortname":":man_motor_wheelchair:","category":1,"emoji_order":1679},{"name":"woman in motorized wheelchair","shortname":":woman_motor_wheelchair:","category":1,"emoji_order":1685},{"name":"man in manual wheelchair","shortname":":man_wheelchair:","category":1,"emoji_order":1691},{"name":"woman in manual wheelchair","shortname":":woman_wheelchair:","category":1,"emoji_order":1697},{"name":"person running","shortname":":person_running:","category":1,"emoji_order":1703},{"name":"man running","shortname":":man_running:","category":1,"emoji_order":1709},{"name":"woman running","shortname":":woman_running:","category":1,"emoji_order":1721},{"name":"woman dancing","shortname":":dancer:","category":1,"emoji_order":1733,"aliases":[":woman_dancing:"]},{"name":"man dancing","shortname":":man_dancing:","category":1,"emoji_order":1739},{"name":"man in suit levitating","shortname":":levitate:","category":1,"emoji_order":1746},{"name":"people with bunny ears","shortname":":people_bunny_ears_partying:","category":1,"emoji_order":1752},{"name":"men with bunny ears","shortname":":men_bunny_ears_partying:","category":1,"emoji_order":1753},{"name":"women with bunny ears","shortname":":women_bunny_ears_partying:","category":1,"emoji_order":1755},{"name":"person in steamy room","shortname":":person_steamy_room:","category":1,"emoji_order":1757},{"name":"man in steamy room","shortname":":man_steamy_room:","category":1,"emoji_order":1763},{"name":"woman in steamy room","shortname":":woman_steamy_room:","category":1,"emoji_order":1775},{"name":"person climbing","shortname":":person_climbing:","category":1,"emoji_order":1787},{"name":"man climbing","shortname":":man_climbing:","category":1,"emoji_order":1793},{"name":"woman climbing","shortname":":woman_climbing:","category":1,"emoji_order":1805},{"name":"person fencing","shortname":":person_fencing:","category":1,"emoji_order":1817},{"name":"horse racing","shortname":":horse_racing:","category":1,"emoji_order":1818},{"name":"skier","shortname":":skier:","category":1,"emoji_order":1825},{"name":"snowboarder","shortname":":snowboarder:","category":1,"emoji_order":1826},{"name":"person golfing","shortname":":person_golfing:","category":1,"emoji_order":1833},{"name":"man golfing","shortname":":man_golfing:","category":1,"emoji_order":1839},{"name":"woman golfing","shortname":":woman_golfing:","category":1,"emoji_order":1853},{"name":"person surfing","shortname":":person_surfing:","category":1,"emoji_order":1867},{"name":"man surfing","shortname":":man_surfing:","category":1,"emoji_order":1873},{"name":"woman surfing","shortname":":woman_surfing:","category":1,"emoji_order":1885},{"name":"person rowing boat","shortname":":person_rowing_boat:","category":1,"emoji_order":1897},{"name":"man rowing boat","shortname":":man_rowing_boat:","category":1,"emoji_order":1903},{"name":"woman rowing boat","shortname":":woman_rowing_boat:","category":1,"emoji_order":1915},{"name":"person swimming","shortname":":person_swimming:","category":1,"emoji_order":1927},{"name":"man swimming","shortname":":man_swimming:","category":1,"emoji_order":1933},{"name":"woman swimming","shortname":":woman_swimming:","category":1,"emoji_order":1945},{"name":"person bouncing ball","shortname":":person_bouncing_ball:","category":1,"emoji_order":1958},{"name":"man bouncing ball","shortname":":man_bouncing_ball:","category":1,"emoji_order":1964},{"name":"woman bouncing ball","shortname":":woman_bouncing_ball:","category":1,"emoji_order":1978},{"name":"person lifting weights","shortname":":person_lifting_weights:","category":1,"emoji_order":1993},{"name":"man lifting weights","shortname":":man_lifting_weights:","category":1,"emoji_order":1999},{"name":"woman lifting weights","shortname":":woman_lifting_weights:","category":1,"emoji_order":2013},{"name":"person biking","shortname":":person_biking:","category":1,"emoji_order":2027},{"name":"man biking","shortname":":man_biking:","category":1,"emoji_order":2033},{"name":"woman biking","shortname":":woman_biking:","category":1,"emoji_order":2045},{"name":"person mountain biking","shortname":":person_mountain_biking:","category":1,"emoji_order":2057},{"name":"man mountain biking","shortname":":man_mountain_biking:","category":1,"emoji_order":2063},{"name":"woman mountain biking","shortname":":woman_mountain_biking:","category":1,"emoji_order":2075},{"name":"person cartwheeling","shortname":":person_cartwheel:","category":1,"emoji_order":2087},{"name":"man cartwheeling","shortname":":man_cartwheeling:","category":1,"emoji_order":2093},{"name":"woman cartwheeling","shortname":":woman_cartwheeling:","category":1,"emoji_order":2105},{"name":"people wrestling","shortname":":people_wrestling:","category":1,"emoji_order":2117},{"name":"men wrestling","shortname":":men_wrestling:","category":1,"emoji_order":2118},{"name":"women wrestling","shortname":":women_wrestling:","category":1,"emoji_order":2120},{"name":"person playing water polo","shortname":":person_water_polo:","category":1,"emoji_order":2122},{"name":"man playing water polo","shortname":":man_water_polo:","category":1,"emoji_order":2128},{"name":"woman playing water polo","shortname":":woman_water_polo:","category":1,"emoji_order":2140},{"name":"person playing handball","shortname":":person_handball:","category":1,"emoji_order":2152},{"name":"man playing handball","shortname":":man_handball:","category":1,"emoji_order":2158},{"name":"woman playing handball","shortname":":woman_handball:","category":1,"emoji_order":2170},{"name":"person juggling","shortname":":person_juggling:","category":1,"emoji_order":2182},{"name":"man juggling","shortname":":man_juggling:","category":1,"emoji_order":2188},{"name":"woman juggling","shortname":":woman_juggling:","category":1,"emoji_order":2200},{"name":"person in lotus position","shortname":":person_lotus_position:","category":1,"emoji_order":2212},{"name":"man in lotus position","shortname":":man_lotus_position:","category":1,"emoji_order":2218},{"name":"woman in lotus position","shortname":":woman_lotus_position:","category":1,"emoji_order":2230},{"name":"person taking bath","shortname":":bath:","category":1,"emoji_order":2242},{"name":"person in bed","shortname":":in_bed:","category":1,"emoji_order":2248},{"name":"people holding hands","shortname":":holding_hands_people:","category":1,"emoji_order":2254},{"name":"women holding hands","shortname":":holding_hands_ww:","category":1,"emoji_order":2270},{"name":"woman and man holding hands","shortname":":holding_hands_mw:","category":1,"emoji_order":2286,"aliases":[":holding_hands_wm:"]},{"name":"men holding hands","shortname":":holding_hands_mm:","category":1,"emoji_order":2312},{"name":"kiss","shortname":":couple:","category":1,"emoji_order":2328},{"name":"kiss: woman, man","shortname":":kiss_mw:","category":1,"emoji_order":2329,"aliases":[":kiss_wm:"]},{"name":"kiss: man, man","shortname":":kiss_mm:","category":1,"emoji_order":2331},{"name":"kiss: woman, woman","shortname":":kiss_ww:","category":1,"emoji_order":2333},{"name":"couple with heart","shortname":":couple_heart:","category":1,"emoji_order":2335},{"name":"couple with heart: woman, man","shortname":":couple_mw:","category":1,"emoji_order":2336,"aliases":[":couple_wm:"]},{"name":"couple with heart: man, man","shortname":":couple_mm:","category":1,"emoji_order":2338},{"name":"couple with heart: woman, woman","shortname":":couple_ww:","category":1,"emoji_order":2340},{"name":"family","shortname":":family:","category":1,"emoji_order":2342},{"name":"family: man, woman, boy","shortname":":family_mwb:","category":1,"emoji_order":2343},{"name":"family: man, woman, girl","shortname":":family_mwg:","category":1,"emoji_order":2344},{"name":"family: man, woman, girl, boy","shortname":":family_mwgb:","category":1,"emoji_order":2345},{"name":"family: man, woman, boy, boy","shortname":":family_mwbb:","category":1,"emoji_order":2346},{"name":"family: man, woman, girl, girl","shortname":":family_mwgg:","category":1,"emoji_order":2347},{"name":"family: man, man, boy","shortname":":family_mmb:","category":1,"emoji_order":2348},{"name":"family: man, man, girl","shortname":":family_mmg:","category":1,"emoji_order":2349},{"name":"family: man, man, girl, boy","shortname":":family_mmgb:","category":1,"emoji_order":2350},{"name":"family: man, man, boy, boy","shortname":":family_mmbb:","category":1,"emoji_order":2351},{"name":"family: man, man, girl, girl","shortname":":family_mmgg:","category":1,"emoji_order":2352},{"name":"family: woman, woman, boy","shortname":":family_wwb:","category":1,"emoji_order":2353},{"name":"family: woman, woman, girl","shortname":":family_wwg:","category":1,"emoji_order":2354},{"name":"family: woman, woman, girl, boy","shortname":":family_wwgb:","category":1,"emoji_order":2355},{"name":"family: woman, woman, boy, boy","shortname":":family_wwbb:","category":1,"emoji_order":2356},{"name":"family: woman, woman, girl, girl","shortname":":family_wwgg:","category":1,"emoji_order":2357},{"name":"family: man, boy","shortname":":family_mb:","category":1,"emoji_order":2358},{"name":"family: man, boy, boy","shortname":":family_mbb:","category":1,"emoji_order":2359},{"name":"family: man, girl","shortname":":family_mg:","category":1,"emoji_order":2360},{"name":"family: man, girl, boy","shortname":":family_mgb:","category":1,"emoji_order":2361},{"name":"family: man, girl, girl","shortname":":family_mgg:","category":1,"emoji_order":2362},{"name":"family: woman, boy","shortname":":family_wb:","category":1,"emoji_order":2363},{"name":"family: woman, boy, boy","shortname":":family_wbb:","category":1,"emoji_order":2364},{"name":"family: woman, girl","shortname":":family_wg:","category":1,"emoji_order":2365},{"name":"family: woman, girl, boy","shortname":":family_wgb:","category":1,"emoji_order":2366},{"name":"family: woman, girl, girl","shortname":":family_wgg:","category":1,"emoji_order":2367},{"name":"speaking head","shortname":":speaking_head:","category":1,"emoji_order":2369},{"name":"bust in silhouette","shortname":":bust_silhouette:","category":1,"emoji_order":2370},{"name":"busts in silhouette","shortname":":busts_silhouette:","category":1,"emoji_order":2371},{"name":"footprints","shortname":":footprints:","category":1,"emoji_order":2372},{"name":"light skin tone","shortname":":tone_light:","category":2,"emoji_order":2373,"aliases":[":tone1:"]},{"name":"medium-light skin tone","shortname":":tone_medium_light:","category":2,"emoji_order":2374,"aliases":[":tone2:"]},{"name":"medium skin tone","shortname":":tone_medium:","category":2,"emoji_order":2375,"aliases":[":tone3:"]},{"name":"medium-dark skin tone","shortname":":tone_medium_dark:","category":2,"emoji_order":2376,"aliases":[":tone4:"]},{"name":"dark skin tone","shortname":":tone_dark:","category":2,"emoji_order":2377,"aliases":[":tone5:"]},{"name":"red hair","shortname":":red_hair:","category":2,"emoji_order":2378},{"name":"curly hair","shortname":":curly_hair:","category":2,"emoji_order":2379},{"name":"white hair","shortname":":white_hair:","category":2,"emoji_order":2380},{"name":"bald","shortname":":bald:","category":2,"emoji_order":2381},{"name":"monkey face","shortname":":monkey_face:","category":3,"emoji_order":2382},{"name":"monkey","shortname":":monkey:","category":3,"emoji_order":2383},{"name":"gorilla","shortname":":gorilla:","category":3,"emoji_order":2384},{"name":"orangutan","shortname":":orangutan:","category":3,"emoji_order":2385},{"name":"dog face","shortname":":dog_face:","category":3,"emoji_order":2386},{"name":"dog","shortname":":dog:","category":3,"emoji_order":2387},{"name":"guide dog","shortname":":guide_dog:","category":3,"emoji_order":2388},{"name":"service dog","shortname":":service_dog:","category":3,"emoji_order":2389},{"name":"poodle","shortname":":poodle:","category":3,"emoji_order":2390},{"name":"wolf","shortname":":wolf_face:","category":3,"emoji_order":2391},{"name":"fox","shortname":":fox_face:","category":3,"emoji_order":2392},{"name":"raccoon","shortname":":raccoon:","category":3,"emoji_order":2393},{"name":"cat face","shortname":":cat_face:","category":3,"emoji_order":2394},{"name":"cat","shortname":":cat:","category":3,"emoji_order":2395},{"name":"lion","shortname":":lion_face:","category":3,"emoji_order":2396},{"name":"tiger face","shortname":":tiger_face:","category":3,"emoji_order":2397},{"name":"tiger","shortname":":tiger:","category":3,"emoji_order":2398},{"name":"leopard","shortname":":leopard:","category":3,"emoji_order":2399},{"name":"horse face","shortname":":horse_face:","category":3,"emoji_order":2400},{"name":"horse","shortname":":horse:","category":3,"emoji_order":2401},{"name":"unicorn","shortname":":unicorn_face:","category":3,"emoji_order":2402},{"name":"zebra","shortname":":zebra:","category":3,"emoji_order":2403},{"name":"deer","shortname":":deer:","category":3,"emoji_order":2404},{"name":"cow face","shortname":":cow_face:","category":3,"emoji_order":2405},{"name":"ox","shortname":":ox:","category":3,"emoji_order":2406},{"name":"water buffalo","shortname":":water_buffalo:","category":3,"emoji_order":2407},{"name":"cow","shortname":":cow:","category":3,"emoji_order":2408},{"name":"pig face","shortname":":pig_face:","category":3,"emoji_order":2409},{"name":"pig","shortname":":pig:","category":3,"emoji_order":2410},{"name":"boar","shortname":":boar:","category":3,"emoji_order":2411},{"name":"pig nose","shortname":":pig_nose:","category":3,"emoji_order":2412},{"name":"ram","shortname":":ram:","category":3,"emoji_order":2413},{"name":"ewe","shortname":":sheep:","category":3,"emoji_order":2414},{"name":"goat","shortname":":goat:","category":3,"emoji_order":2415},{"name":"camel","shortname":":camel:","category":3,"emoji_order":2416},{"name":"two-hump camel","shortname":":two_hump_camel:","category":3,"emoji_order":2417},{"name":"llama","shortname":":llama:","category":3,"emoji_order":2418},{"name":"giraffe","shortname":":giraffe:","category":3,"emoji_order":2419},{"name":"elephant","shortname":":elephant:","category":3,"emoji_order":2420},{"name":"rhinoceros","shortname":":rhino:","category":3,"emoji_order":2421},{"name":"hippopotamus","shortname":":hippo:","category":3,"emoji_order":2422},{"name":"mouse face","shortname":":mouse_face:","category":3,"emoji_order":2423},{"name":"mouse","shortname":":mouse:","category":3,"emoji_order":2424},{"name":"rat","shortname":":rat:","category":3,"emoji_order":2425},{"name":"hamster","shortname":":hamster_face:","category":3,"emoji_order":2426},{"name":"rabbit face","shortname":":rabbit_face:","category":3,"emoji_order":2427},{"name":"rabbit","shortname":":rabbit:","category":3,"emoji_order":2428},{"name":"chipmunk","shortname":":chipmunk:","category":3,"emoji_order":2430},{"name":"hedgehog","shortname":":hedgehog:","category":3,"emoji_order":2431},{"name":"bat","shortname":":bat:","category":3,"emoji_order":2432},{"name":"bear","shortname":":bear_face:","category":3,"emoji_order":2433},{"name":"koala","shortname":":koala_face:","category":3,"emoji_order":2434},{"name":"panda","shortname":":panda_face:","category":3,"emoji_order":2435},{"name":"sloth","shortname":":sloth:","category":3,"emoji_order":2436},{"name":"otter","shortname":":otter:","category":3,"emoji_order":2437},{"name":"skunk","shortname":":skunk:","category":3,"emoji_order":2438},{"name":"kangaroo","shortname":":kangaroo:","category":3,"emoji_order":2439},{"name":"badger","shortname":":badger:","category":3,"emoji_order":2440},{"name":"paw prints","shortname":":feet:","category":3,"emoji_order":2441},{"name":"turkey","shortname":":turkey:","category":3,"emoji_order":2442},{"name":"chicken","shortname":":chicken:","category":3,"emoji_order":2443},{"name":"rooster","shortname":":rooster:","category":3,"emoji_order":2444},{"name":"hatching chick","shortname":":hatching_chick:","category":3,"emoji_order":2445},{"name":"baby chick","shortname":":baby_chick:","category":3,"emoji_order":2446},{"name":"front-facing baby chick","shortname":":hatched_chick:","category":3,"emoji_order":2447},{"name":"bird","shortname":":bird:","category":3,"emoji_order":2448},{"name":"penguin","shortname":":penguin:","category":3,"emoji_order":2449},{"name":"dove","shortname":":dove:","category":3,"emoji_order":2451},{"name":"eagle","shortname":":eagle:","category":3,"emoji_order":2452},{"name":"duck","shortname":":duck:","category":3,"emoji_order":2453},{"name":"swan","shortname":":swan:","category":3,"emoji_order":2454},{"name":"owl","shortname":":owl:","category":3,"emoji_order":2455},{"name":"flamingo","shortname":":flamingo:","category":3,"emoji_order":2456},{"name":"peacock","shortname":":peacock:","category":3,"emoji_order":2457},{"name":"parrot","shortname":":parrot:","category":3,"emoji_order":2458},{"name":"frog","shortname":":frog_face:","category":3,"emoji_order":2459},{"name":"crocodile","shortname":":crocodile:","category":3,"emoji_order":2460},{"name":"turtle","shortname":":turtle:","category":3,"emoji_order":2461},{"name":"lizard","shortname":":lizard:","category":3,"emoji_order":2462},{"name":"snake","shortname":":snake:","category":3,"emoji_order":2463},{"name":"dragon face","shortname":":dragon_face:","category":3,"emoji_order":2464},{"name":"dragon","shortname":":dragon:","category":3,"emoji_order":2465},{"name":"sauropod","shortname":":sauropod:","category":3,"emoji_order":2466},{"name":"T-Rex","shortname":":trex:","category":3,"emoji_order":2467},{"name":"spouting whale","shortname":":spouting_whale:","category":3,"emoji_order":2468},{"name":"whale","shortname":":whale:","category":3,"emoji_order":2469},{"name":"dolphin","shortname":":dolphin:","category":3,"emoji_order":2470},{"name":"fish","shortname":":fish:","category":3,"emoji_order":2471},{"name":"tropical fish","shortname":":tropical_fish:","category":3,"emoji_order":2472},{"name":"blowfish","shortname":":blowfish:","category":3,"emoji_order":2473},{"name":"shark","shortname":":shark:","category":3,"emoji_order":2474},{"name":"octopus","shortname":":octopus:","category":3,"emoji_order":2475},{"name":"spiral shell","shortname":":shell:","category":3,"emoji_order":2476},{"name":"snail","shortname":":snail:","category":3,"emoji_order":2477},{"name":"butterfly","shortname":":butterfly:","category":3,"emoji_order":2478},{"name":"bug","shortname":":bug:","category":3,"emoji_order":2479},{"name":"ant","shortname":":ant:","category":3,"emoji_order":2480},{"name":"honeybee","shortname":":bee:","category":3,"emoji_order":2481},{"name":"lady beetle","shortname":":beetle:","category":3,"emoji_order":2482},{"name":"cricket","shortname":":cricket:","category":3,"emoji_order":2483},{"name":"spider","shortname":":spider:","category":3,"emoji_order":2485},{"name":"spider web","shortname":":spider_web:","category":3,"emoji_order":2487},{"name":"scorpion","shortname":":scorpion:","category":3,"emoji_order":2488},{"name":"mosquito","shortname":":mosquito:","category":3,"emoji_order":2489},{"name":"microbe","shortname":":microbe:","category":3,"emoji_order":2490,"aliases":[":germ:"]},{"name":"bouquet","shortname":":bouquet:","category":3,"emoji_order":2491},{"name":"cherry blossom","shortname":":cherry_blossom:","category":3,"emoji_order":2492},{"name":"white flower","shortname":":white_flower:","category":3,"emoji_order":2493},{"name":"rosette","shortname":":rosette:","category":3,"emoji_order":2495},{"name":"rose","shortname":":rose:","category":3,"emoji_order":2496},{"name":"wilted flower","shortname":":wilted_rose:","category":3,"emoji_order":2497},{"name":"hibiscus","shortname":":hibiscus:","category":3,"emoji_order":2498},{"name":"sunflower","shortname":":sunflower:","category":3,"emoji_order":2499},{"name":"blossom","shortname":":blossom:","category":3,"emoji_order":2500},{"name":"tulip","shortname":":tulip:","category":3,"emoji_order":2501},{"name":"seedling","shortname":":seedling:","category":3,"emoji_order":2502},{"name":"evergreen tree","shortname":":evergreen_tree:","category":3,"emoji_order":2503},{"name":"deciduous tree","shortname":":deciduous_tree:","category":3,"emoji_order":2504},{"name":"palm tree","shortname":":palm_tree:","category":3,"emoji_order":2505},{"name":"cactus","shortname":":cactus:","category":3,"emoji_order":2506},{"name":"sheaf of rice","shortname":":ear_of_rice:","category":3,"emoji_order":2507},{"name":"herb","shortname":":herb:","category":3,"emoji_order":2508},{"name":"shamrock","shortname":":shamrock:","category":3,"emoji_order":2510},{"name":"four leaf clover","shortname":":four_leaf_clover:","category":3,"emoji_order":2511},{"name":"maple leaf","shortname":":maple_leaf:","category":3,"emoji_order":2512},{"name":"fallen leaf","shortname":":fallen_leaf:","category":3,"emoji_order":2513},{"name":"leaf fluttering in wind","shortname":":leaves:","category":3,"emoji_order":2514},{"name":"grapes","shortname":":grapes:","category":4,"emoji_order":2515},{"name":"melon","shortname":":melon:","category":4,"emoji_order":2516},{"name":"watermelon","shortname":":watermelon:","category":4,"emoji_order":2517},{"name":"tangerine","shortname":":tangerine:","category":4,"emoji_order":2518},{"name":"lemon","shortname":":lemon:","category":4,"emoji_order":2519},{"name":"banana","shortname":":banana:","category":4,"emoji_order":2520},{"name":"pineapple","shortname":":pineapple:","category":4,"emoji_order":2521},{"name":"mango","shortname":":mango:","category":4,"emoji_order":2522},{"name":"red apple","shortname":":apple:","category":4,"emoji_order":2523},{"name":"green apple","shortname":":green_apple:","category":4,"emoji_order":2524},{"name":"pear","shortname":":pear:","category":4,"emoji_order":2525},{"name":"peach","shortname":":peach:","category":4,"emoji_order":2526},{"name":"cherries","shortname":":cherries:","category":4,"emoji_order":2527},{"name":"strawberry","shortname":":strawberry:","category":4,"emoji_order":2528},{"name":"kiwi fruit","shortname":":kiwi:","category":4,"emoji_order":2529},{"name":"tomato","shortname":":tomato:","category":4,"emoji_order":2530},{"name":"coconut","shortname":":coconut:","category":4,"emoji_order":2531},{"name":"avocado","shortname":":avocado:","category":4,"emoji_order":2532},{"name":"eggplant","shortname":":eggplant:","category":4,"emoji_order":2533},{"name":"potato","shortname":":potato:","category":4,"emoji_order":2534},{"name":"carrot","shortname":":carrot:","category":4,"emoji_order":2535},{"name":"ear of corn","shortname":":corn:","category":4,"emoji_order":2536},{"name":"hot pepper","shortname":":hot_pepper:","category":4,"emoji_order":2538},{"name":"cucumber","shortname":":cucumber:","category":4,"emoji_order":2539},{"name":"leafy green","shortname":":leafy_green:","category":4,"emoji_order":2540},{"name":"broccoli","shortname":":broccoli:","category":4,"emoji_order":2541},{"name":"garlic","shortname":":garlic:","category":4,"emoji_order":2542},{"name":"onion","shortname":":onion:","category":4,"emoji_order":2543},{"name":"mushroom","shortname":":mushroom:","category":4,"emoji_order":2544},{"name":"peanuts","shortname":":peanuts:","category":4,"emoji_order":2545},{"name":"chestnut","shortname":":chestnut:","category":4,"emoji_order":2546},{"name":"bread","shortname":":bread:","category":4,"emoji_order":2547},{"name":"croissant","shortname":":croissant:","category":4,"emoji_order":2548},{"name":"baguette bread","shortname":":french_bread:","category":4,"emoji_order":2549},{"name":"pretzel","shortname":":pretzel:","category":4,"emoji_order":2550},{"name":"bagel","shortname":":bagel:","category":4,"emoji_order":2551},{"name":"pancakes","shortname":":pancakes:","category":4,"emoji_order":2552},{"name":"waffle","shortname":":waffle:","category":4,"emoji_order":2553},{"name":"cheese wedge","shortname":":cheese:","category":4,"emoji_order":2554},{"name":"meat on bone","shortname":":meat_on_bone:","category":4,"emoji_order":2555},{"name":"poultry leg","shortname":":poultry_leg:","category":4,"emoji_order":2556},{"name":"cut of meat","shortname":":cut_of_meat:","category":4,"emoji_order":2557},{"name":"bacon","shortname":":bacon:","category":4,"emoji_order":2558},{"name":"hamburger","shortname":":hamburger:","category":4,"emoji_order":2559},{"name":"french fries","shortname":":fries:","category":4,"emoji_order":2560},{"name":"pizza","shortname":":pizza:","category":4,"emoji_order":2561},{"name":"hot dog","shortname":":hotdog:","category":4,"emoji_order":2562},{"name":"sandwich","shortname":":sandwich:","category":4,"emoji_order":2563},{"name":"taco","shortname":":taco:","category":4,"emoji_order":2564},{"name":"burrito","shortname":":burrito:","category":4,"emoji_order":2565},{"name":"stuffed flatbread","shortname":":stuffed_flatbread:","category":4,"emoji_order":2566},{"name":"falafel","shortname":":falafel:","category":4,"emoji_order":2567},{"name":"egg","shortname":":egg:","category":4,"emoji_order":2568},{"name":"cooking","shortname":":cooking:","category":4,"emoji_order":2569},{"name":"shallow pan of food","shortname":":shallow_pan_of_food:","category":4,"emoji_order":2570},{"name":"pot of food","shortname":":stew:","category":4,"emoji_order":2571},{"name":"bowl with spoon","shortname":":bowl_spoon:","category":4,"emoji_order":2572},{"name":"green salad","shortname":":salad:","category":4,"emoji_order":2573},{"name":"popcorn","shortname":":popcorn:","category":4,"emoji_order":2574},{"name":"butter","shortname":":butter:","category":4,"emoji_order":2575},{"name":"salt","shortname":":salt:","category":4,"emoji_order":2576},{"name":"canned food","shortname":":canned_food:","category":4,"emoji_order":2577},{"name":"bento box","shortname":":bento:","category":4,"emoji_order":2578},{"name":"rice cracker","shortname":":rice_cracker:","category":4,"emoji_order":2579},{"name":"rice ball","shortname":":rice_ball:","category":4,"emoji_order":2580},{"name":"cooked rice","shortname":":rice:","category":4,"emoji_order":2581},{"name":"curry rice","shortname":":curry:","category":4,"emoji_order":2582},{"name":"steaming bowl","shortname":":ramen:","category":4,"emoji_order":2583},{"name":"spaghetti","shortname":":spaghetti:","category":4,"emoji_order":2584},{"name":"roasted sweet potato","shortname":":sweet_potato:","category":4,"emoji_order":2585},{"name":"oden","shortname":":oden:","category":4,"emoji_order":2586},{"name":"sushi","shortname":":sushi:","category":4,"emoji_order":2587},{"name":"fried shrimp","shortname":":fried_shrimp:","category":4,"emoji_order":2588},{"name":"fish cake with swirl","shortname":":fish_cake:","category":4,"emoji_order":2589},{"name":"moon cake","shortname":":moon_cake:","category":4,"emoji_order":2590},{"name":"dango","shortname":":dango:","category":4,"emoji_order":2591},{"name":"dumpling","shortname":":dumpling:","category":4,"emoji_order":2592},{"name":"fortune cookie","shortname":":fortune_cookie:","category":4,"emoji_order":2593},{"name":"takeout box","shortname":":takeout_box:","category":4,"emoji_order":2594},{"name":"crab","shortname":":crab:","category":4,"emoji_order":2595},{"name":"lobster","shortname":":lobster:","category":4,"emoji_order":2596},{"name":"shrimp","shortname":":shrimp:","category":4,"emoji_order":2597},{"name":"squid","shortname":":squid:","category":4,"emoji_order":2598},{"name":"oyster","shortname":":oyster:","category":4,"emoji_order":2599},{"name":"soft ice cream","shortname":":icecream:","category":4,"emoji_order":2600},{"name":"shaved ice","shortname":":shaved_ice:","category":4,"emoji_order":2601},{"name":"ice cream","shortname":":ice_cream:","category":4,"emoji_order":2602},{"name":"doughnut","shortname":":doughnut:","category":4,"emoji_order":2603},{"name":"cookie","shortname":":cookie:","category":4,"emoji_order":2604},{"name":"birthday cake","shortname":":birthday:","category":4,"emoji_order":2605},{"name":"shortcake","shortname":":cake:","category":4,"emoji_order":2606},{"name":"cupcake","shortname":":cupcake:","category":4,"emoji_order":2607},{"name":"pie","shortname":":pie:","category":4,"emoji_order":2608},{"name":"chocolate bar","shortname":":chocolate_bar:","category":4,"emoji_order":2609},{"name":"candy","shortname":":candy:","category":4,"emoji_order":2610},{"name":"lollipop","shortname":":lollipop:","category":4,"emoji_order":2611},{"name":"custard","shortname":":custard:","category":4,"emoji_order":2612},{"name":"honey pot","shortname":":honey_pot:","category":4,"emoji_order":2613},{"name":"baby bottle","shortname":":baby_bottle:","category":4,"emoji_order":2614},{"name":"glass of milk","shortname":":milk:","category":4,"emoji_order":2615},{"name":"hot beverage","shortname":":coffee:","category":4,"emoji_order":2616},{"name":"teacup without handle","shortname":":tea:","category":4,"emoji_order":2617},{"name":"sake","shortname":":sake:","category":4,"emoji_order":2618},{"name":"bottle with popping cork","shortname":":champagne:","category":4,"emoji_order":2619},{"name":"wine glass","shortname":":wine_glass:","category":4,"emoji_order":2620},{"name":"cocktail glass","shortname":":cocktail:","category":4,"emoji_order":2621},{"name":"tropical drink","shortname":":tropical_drink:","category":4,"emoji_order":2622},{"name":"beer mug","shortname":":beer:","category":4,"emoji_order":2623},{"name":"clinking beer mugs","shortname":":beers:","category":4,"emoji_order":2624},{"name":"clinking glasses","shortname":":champagne_glass:","category":4,"emoji_order":2625},{"name":"tumbler glass","shortname":":tumbler_glass:","category":4,"emoji_order":2626},{"name":"cup with straw","shortname":":cup_straw:","category":4,"emoji_order":2627},{"name":"beverage box","shortname":":beverage_box:","category":4,"emoji_order":2628,"aliases":[":juice_box:"]},{"name":"mate","shortname":":mate:","category":4,"emoji_order":2629,"aliases":[":yerba_mate:"]},{"name":"ice","shortname":":ice:","category":4,"emoji_order":2630},{"name":"chopsticks","shortname":":chopsticks:","category":4,"emoji_order":2631},{"name":"fork and knife with plate","shortname":":fork_knife_plate:","category":4,"emoji_order":2633},{"name":"fork and knife","shortname":":utensils:","category":4,"emoji_order":2634},{"name":"spoon","shortname":":spoon:","category":4,"emoji_order":2635},{"name":"kitchen knife","shortname":":knife:","category":4,"emoji_order":2636},{"name":"amphora","shortname":":amphora:","category":4,"emoji_order":2637},{"name":"globe showing Europe-Africa","shortname":":earth_africa:","category":5,"emoji_order":2638},{"name":"globe showing Americas","shortname":":earth_americas:","category":5,"emoji_order":2639},{"name":"globe showing Asia-Australia","shortname":":earth_asia:","category":5,"emoji_order":2640},{"name":"globe with meridians","shortname":":globe:","category":5,"emoji_order":2641},{"name":"world map","shortname":":map:","category":5,"emoji_order":2643},{"name":"map of Japan","shortname":":japan:","category":5,"emoji_order":2644},{"name":"compass","shortname":":compass:","category":5,"emoji_order":2645},{"name":"snow-capped mountain","shortname":":snowy_mountain:","category":5,"emoji_order":2647},{"name":"mountain","shortname":":mountain:","category":5,"emoji_order":2649},{"name":"volcano","shortname":":volcano:","category":5,"emoji_order":2650},{"name":"mount fuji","shortname":":mount_fuji:","category":5,"emoji_order":2651},{"name":"camping","shortname":":camping:","category":5,"emoji_order":2653},{"name":"beach with umbrella","shortname":":beach:","category":5,"emoji_order":2655},{"name":"desert","shortname":":desert:","category":5,"emoji_order":2657},{"name":"desert island","shortname":":island:","category":5,"emoji_order":2659},{"name":"national park","shortname":":park:","category":5,"emoji_order":2661},{"name":"stadium","shortname":":stadium:","category":5,"emoji_order":2663},{"name":"classical building","shortname":":classical_building:","category":5,"emoji_order":2665},{"name":"building construction","shortname":":construction_site:","category":5,"emoji_order":2667},{"name":"brick","shortname":":brick:","category":5,"emoji_order":2668},{"name":"houses","shortname":":homes:","category":5,"emoji_order":2670},{"name":"derelict house","shortname":":house_abandoned:","category":5,"emoji_order":2672},{"name":"house","shortname":":house:","category":5,"emoji_order":2673},{"name":"house with garden","shortname":":house_garden:","category":5,"emoji_order":2674},{"name":"office building","shortname":":office:","category":5,"emoji_order":2675},{"name":"Japanese post office","shortname":":ja_post_office:","category":5,"emoji_order":2676},{"name":"post office","shortname":":post_office:","category":5,"emoji_order":2677},{"name":"hospital","shortname":":hospital:","category":5,"emoji_order":2678},{"name":"bank","shortname":":bank:","category":5,"emoji_order":2679},{"name":"hotel","shortname":":hotel:","category":5,"emoji_order":2680},{"name":"love hotel","shortname":":love_hotel:","category":5,"emoji_order":2681},{"name":"convenience store","shortname":":convenience_store:","category":5,"emoji_order":2682},{"name":"school","shortname":":school:","category":5,"emoji_order":2683},{"name":"department store","shortname":":department_store:","category":5,"emoji_order":2684},{"name":"factory","shortname":":factory:","category":5,"emoji_order":2685},{"name":"Japanese castle","shortname":":japanese_castle:","category":5,"emoji_order":2686},{"name":"castle","shortname":":castle:","category":5,"emoji_order":2687,"aliases":[":european_castle:"]},{"name":"wedding","shortname":":wedding:","category":5,"emoji_order":2688},{"name":"Tokyo tower","shortname":":tokyo_tower:","category":5,"emoji_order":2689},{"name":"Statue of Liberty","shortname":":statue_of_liberty:","category":5,"emoji_order":2690},{"name":"church","shortname":":church:","category":5,"emoji_order":2691},{"name":"mosque","shortname":":mosque:","category":5,"emoji_order":2692},{"name":"hindu temple","shortname":":hindu_temple:","category":5,"emoji_order":2693},{"name":"synagogue","shortname":":synagogue:","category":5,"emoji_order":2694},{"name":"shinto shrine","shortname":":shinto_shrine:","category":5,"emoji_order":2696},{"name":"kaaba","shortname":":kaaba:","category":5,"emoji_order":2697},{"name":"fountain","shortname":":fountain:","category":5,"emoji_order":2698},{"name":"tent","shortname":":tent:","category":5,"emoji_order":2699},{"name":"foggy","shortname":":foggy:","category":5,"emoji_order":2700},{"name":"night with stars","shortname":":night_stars:","category":5,"emoji_order":2701},{"name":"cityscape","shortname":":cityscape:","category":5,"emoji_order":2703},{"name":"sunrise over mountains","shortname":":sunrise_over_mountains:","category":5,"emoji_order":2704},{"name":"sunrise","shortname":":sunrise:","category":5,"emoji_order":2705},{"name":"cityscape at dusk","shortname":":dusk:","category":5,"emoji_order":2706},{"name":"sunset","shortname":":sunset:","category":5,"emoji_order":2707},{"name":"bridge at night","shortname":":bridge_at_night:","category":5,"emoji_order":2708},{"name":"hot springs","shortname":":hotsprings:","category":5,"emoji_order":2710},{"name":"carousel horse","shortname":":carousel_horse:","category":5,"emoji_order":2711},{"name":"ferris wheel","shortname":":ferris_wheel:","category":5,"emoji_order":2712},{"name":"roller coaster","shortname":":roller_coaster:","category":5,"emoji_order":2713},{"name":"barber pole","shortname":":barber:","category":5,"emoji_order":2714},{"name":"circus tent","shortname":":circus_tent:","category":5,"emoji_order":2715},{"name":"locomotive","shortname":":steam_locomotive:","category":5,"emoji_order":2716},{"name":"railway car","shortname":":railway_car:","category":5,"emoji_order":2717},{"name":"high-speed train","shortname":":bullettrain_side:","category":5,"emoji_order":2718},{"name":"bullet train","shortname":":bullettrain:","category":5,"emoji_order":2719},{"name":"train","shortname":":train:","category":5,"emoji_order":2720},{"name":"metro","shortname":":metro:","category":5,"emoji_order":2721},{"name":"light rail","shortname":":light_rail:","category":5,"emoji_order":2722},{"name":"station","shortname":":station:","category":5,"emoji_order":2723},{"name":"tram","shortname":":tram:","category":5,"emoji_order":2724},{"name":"monorail","shortname":":monorail:","category":5,"emoji_order":2725},{"name":"mountain railway","shortname":":mountain_railway:","category":5,"emoji_order":2726},{"name":"tram car","shortname":":tram_car:","category":5,"emoji_order":2727},{"name":"bus","shortname":":bus:","category":5,"emoji_order":2728},{"name":"oncoming bus","shortname":":oncoming_bus:","category":5,"emoji_order":2729},{"name":"trolleybus","shortname":":trolleybus:","category":5,"emoji_order":2730},{"name":"minibus","shortname":":minibus:","category":5,"emoji_order":2731},{"name":"ambulance","shortname":":ambulance:","category":5,"emoji_order":2732},{"name":"fire engine","shortname":":fire_engine:","category":5,"emoji_order":2733},{"name":"police car","shortname":":police_car:","category":5,"emoji_order":2734},{"name":"oncoming police car","shortname":":oncoming_police_car:","category":5,"emoji_order":2735},{"name":"taxi","shortname":":taxi:","category":5,"emoji_order":2736},{"name":"oncoming taxi","shortname":":oncoming_taxi:","category":5,"emoji_order":2737},{"name":"automobile","shortname":":red_car:","category":5,"emoji_order":2738},{"name":"oncoming automobile","shortname":":oncoming_automobile:","category":5,"emoji_order":2739},{"name":"sport utility vehicle","shortname":":blue_car:","category":5,"emoji_order":2740},{"name":"delivery truck","shortname":":truck:","category":5,"emoji_order":2741},{"name":"articulated lorry","shortname":":lorry:","category":5,"emoji_order":2742},{"name":"tractor","shortname":":tractor:","category":5,"emoji_order":2743},{"name":"racing car","shortname":":race_car:","category":5,"emoji_order":2745},{"name":"motorcycle","shortname":":motorcycle:","category":5,"emoji_order":2747},{"name":"motor scooter","shortname":":motor_scooter:","category":5,"emoji_order":2748},{"name":"manual wheelchair","shortname":":wheelchair:","category":5,"emoji_order":2749},{"name":"motorized wheelchair","shortname":":motor_wheelchair:","category":5,"emoji_order":2750},{"name":"auto rickshaw","shortname":":auto_rickshaw:","category":5,"emoji_order":2751},{"name":"bicycle","shortname":":bike:","category":5,"emoji_order":2752},{"name":"kick scooter","shortname":":scooter:","category":5,"emoji_order":2753},{"name":"skateboard","shortname":":skateboard:","category":5,"emoji_order":2754},{"name":"bus stop","shortname":":bus_stop:","category":5,"emoji_order":2755},{"name":"motorway","shortname":":motorway:","category":5,"emoji_order":2757},{"name":"railway track","shortname":":railway_track:","category":5,"emoji_order":2759},{"name":"oil drum","shortname":":oil_drum:","category":5,"emoji_order":2761},{"name":"fuel pump","shortname":":fuel_pump:","category":5,"emoji_order":2762},{"name":"police car light","shortname":":rotating_light:","category":5,"emoji_order":2763,"aliases":[":police_light:"]},{"name":"horizontal traffic light","shortname":":traffic_light:","category":5,"emoji_order":2764},{"name":"vertical traffic light","shortname":":vertical_traffic_light:","category":5,"emoji_order":2765},{"name":"stop sign","shortname":":stop_sign:","category":5,"emoji_order":2766,"aliases":[":octagonal_sign:"]},{"name":"construction","shortname":":construction:","category":5,"emoji_order":2767},{"name":"anchor","shortname":":anchor:","category":5,"emoji_order":2768},{"name":"sailboat","shortname":":sailboat:","category":5,"emoji_order":2769},{"name":"canoe","shortname":":canoe:","category":5,"emoji_order":2770},{"name":"speedboat","shortname":":speedboat:","category":5,"emoji_order":2771},{"name":"passenger ship","shortname":":cruise_ship:","category":5,"emoji_order":2773},{"name":"ferry","shortname":":ferry:","category":5,"emoji_order":2775},{"name":"motor boat","shortname":":motorboat:","category":5,"emoji_order":2777},{"name":"ship","shortname":":ship:","category":5,"emoji_order":2778},{"name":"airplane","shortname":":airplane:","category":5,"emoji_order":2780},{"name":"small airplane","shortname":":small_airplane:","category":5,"emoji_order":2782},{"name":"airplane departure","shortname":":airplane_departure:","category":5,"emoji_order":2783},{"name":"airplane arrival","shortname":":airplane_arriving:","category":5,"emoji_order":2784},{"name":"parachute","shortname":":parachute:","category":5,"emoji_order":2785},{"name":"seat","shortname":":seat:","category":5,"emoji_order":2786},{"name":"helicopter","shortname":":helicopter:","category":5,"emoji_order":2787},{"name":"suspension railway","shortname":":suspension_railway:","category":5,"emoji_order":2788},{"name":"mountain cableway","shortname":":mountain_cableway:","category":5,"emoji_order":2789},{"name":"aerial tramway","shortname":":aerial_tramway:","category":5,"emoji_order":2790},{"name":"satellite","shortname":":satellite:","category":5,"emoji_order":2792},{"name":"rocket","shortname":":rocket:","category":5,"emoji_order":2793},{"name":"flying saucer","shortname":":flying_saucer:","category":5,"emoji_order":2794},{"name":"bellhop bell","shortname":":bellhop:","category":5,"emoji_order":2796},{"name":"luggage","shortname":":luggage:","category":5,"emoji_order":2797},{"name":"hourglass done","shortname":":hourglass:","category":5,"emoji_order":2798},{"name":"hourglass not done","shortname":":hourglass_flowing:","category":5,"emoji_order":2799},{"name":"watch","shortname":":watch:","category":5,"emoji_order":2800},{"name":"alarm clock","shortname":":alarm_clock:","category":5,"emoji_order":2801},{"name":"stopwatch","shortname":":stopwatch:","category":5,"emoji_order":2803},{"name":"timer clock","shortname":":timer:","category":5,"emoji_order":2805},{"name":"mantelpiece clock","shortname":":clock:","category":5,"emoji_order":2807},{"name":"twelve o’clock","shortname":":clock12:","category":5,"emoji_order":2808},{"name":"twelve-thirty","shortname":":clock1230:","category":5,"emoji_order":2809},{"name":"one o’clock","shortname":":clock1:","category":5,"emoji_order":2810},{"name":"one-thirty","shortname":":clock130:","category":5,"emoji_order":2811},{"name":"two o’clock","shortname":":clock2:","category":5,"emoji_order":2812},{"name":"two-thirty","shortname":":clock230:","category":5,"emoji_order":2813},{"name":"three o’clock","shortname":":clock3:","category":5,"emoji_order":2814},{"name":"three-thirty","shortname":":clock330:","category":5,"emoji_order":2815},{"name":"four o’clock","shortname":":clock4:","category":5,"emoji_order":2816},{"name":"four-thirty","shortname":":clock430:","category":5,"emoji_order":2817},{"name":"five o’clock","shortname":":clock5:","category":5,"emoji_order":2818},{"name":"five-thirty","shortname":":clock530:","category":5,"emoji_order":2819},{"name":"six o’clock","shortname":":clock6:","category":5,"emoji_order":2820},{"name":"six-thirty","shortname":":clock630:","category":5,"emoji_order":2821},{"name":"seven o’clock","shortname":":clock7:","category":5,"emoji_order":2822},{"name":"seven-thirty","shortname":":clock730:","category":5,"emoji_order":2823},{"name":"eight o’clock","shortname":":clock8:","category":5,"emoji_order":2824},{"name":"eight-thirty","shortname":":clock830:","category":5,"emoji_order":2825},{"name":"nine o’clock","shortname":":clock9:","category":5,"emoji_order":2826},{"name":"nine-thirty","shortname":":clock930:","category":5,"emoji_order":2827},{"name":"ten o’clock","shortname":":clock10:","category":5,"emoji_order":2828},{"name":"ten-thirty","shortname":":clock1030:","category":5,"emoji_order":2829},{"name":"eleven o’clock","shortname":":clock11:","category":5,"emoji_order":2830},{"name":"eleven-thirty","shortname":":clock1130:","category":5,"emoji_order":2831},{"name":"new moon","shortname":":new_moon:","category":5,"emoji_order":2832},{"name":"waxing crescent moon","shortname":":waxing_crescent_moon:","category":5,"emoji_order":2833},{"name":"first quarter moon","shortname":":first_quarter_moon:","category":5,"emoji_order":2834},{"name":"waxing gibbous moon","shortname":":waxing_gibbous_moon:","category":5,"emoji_order":2835},{"name":"full moon","shortname":":full_moon:","category":5,"emoji_order":2836},{"name":"waning gibbous moon","shortname":":waning_gibbous_moon:","category":5,"emoji_order":2837},{"name":"last quarter moon","shortname":":last_quarter_moon:","category":5,"emoji_order":2838},{"name":"waning crescent moon","shortname":":waning_crescent_moon:","category":5,"emoji_order":2839},{"name":"crescent moon","shortname":":crescent_moon:","category":5,"emoji_order":2840},{"name":"new moon face","shortname":":new_moon_face:","category":5,"emoji_order":2841},{"name":"first quarter moon face","shortname":":first_quarter_moon_face:","category":5,"emoji_order":2842},{"name":"last quarter moon face","shortname":":last_quarter_moon_face:","category":5,"emoji_order":2843},{"name":"thermometer","shortname":":thermometer:","category":5,"emoji_order":2845},{"name":"sun","shortname":":sun:","category":5,"emoji_order":2847},{"name":"full moon face","shortname":":full_moon_face:","category":5,"emoji_order":2848},{"name":"sun with face","shortname":":sun_face:","category":5,"emoji_order":2849},{"name":"ringed planet","shortname":":ringed_planet:","category":5,"emoji_order":2850,"aliases":[":saturn:"]},{"name":"star","shortname":":star:","category":5,"emoji_order":2851},{"name":"glowing star","shortname":":star2:","category":5,"emoji_order":2852,"aliases":[":glowing_star:"]},{"name":"shooting star","shortname":":star3:","category":5,"emoji_order":2853,"aliases":[":shooting_star:"]},{"name":"milky way","shortname":":milky_way:","category":5,"emoji_order":2854},{"name":"cloud","shortname":":cloud:","category":5,"emoji_order":2856},{"name":"sun behind cloud","shortname":":partly_sunny:","category":5,"emoji_order":2857},{"name":"cloud with lightning and rain","shortname":":storm:","category":5,"emoji_order":2859},{"name":"sun behind small cloud","shortname":":overcast:","category":5,"emoji_order":2861},{"name":"sun behind large cloud","shortname":":cloudy:","category":5,"emoji_order":2863},{"name":"sun behind rain cloud","shortname":":sunshower:","category":5,"emoji_order":2865},{"name":"cloud with rain","shortname":":rain:","category":5,"emoji_order":2867},{"name":"cloud with snow","shortname":":snow:","category":5,"emoji_order":2869},{"name":"cloud with lightning","shortname":":lightning:","category":5,"emoji_order":2871},{"name":"tornado","shortname":":tornado:","category":5,"emoji_order":2873},{"name":"fog","shortname":":fog:","category":5,"emoji_order":2875},{"name":"wind face","shortname":":wind_face:","category":5,"emoji_order":2877},{"name":"cyclone","shortname":":cyclone:","category":5,"emoji_order":2878},{"name":"rainbow","shortname":":rainbow:","category":5,"emoji_order":2879},{"name":"closed umbrella","shortname":":closed_umbrella:","category":5,"emoji_order":2880},{"name":"umbrella","shortname":":umbrella:","category":5,"emoji_order":2882},{"name":"umbrella with rain drops","shortname":":umbrella_rain:","category":5,"emoji_order":2883},{"name":"umbrella on ground","shortname":":beach_umbrella:","category":5,"emoji_order":2885},{"name":"high voltage","shortname":":zap:","category":5,"emoji_order":2886,"aliases":[":high_voltage:"]},{"name":"snowflake","shortname":":snowflake:","category":5,"emoji_order":2888},{"name":"snowman","shortname":":snowy_snowman:","category":5,"emoji_order":2890},{"name":"snowman without snow","shortname":":snowman:","category":5,"emoji_order":2891},{"name":"comet","shortname":":comet:","category":5,"emoji_order":2893},{"name":"fire","shortname":":fire:","category":5,"emoji_order":2894},{"name":"droplet","shortname":":droplet:","category":5,"emoji_order":2895},{"name":"water wave","shortname":":ocean:","category":5,"emoji_order":2896},{"name":"jack-o-lantern","shortname":":jack_o_lantern:","category":6,"emoji_order":2897},{"name":"Christmas tree","shortname":":christmas_tree:","category":6,"emoji_order":2898,"aliases":[":xmas_tree:"]},{"name":"fireworks","shortname":":fireworks:","category":6,"emoji_order":2899},{"name":"sparkler","shortname":":sparkler:","category":6,"emoji_order":2900},{"name":"firecracker","shortname":":firecracker:","category":6,"emoji_order":2901},{"name":"sparkles","shortname":":sparkles:","category":6,"emoji_order":2902},{"name":"balloon","shortname":":balloon:","category":6,"emoji_order":2903},{"name":"party popper","shortname":":tada:","category":6,"emoji_order":2904,"aliases":[":party:"]},{"name":"confetti ball","shortname":":confetti_ball:","category":6,"emoji_order":2905},{"name":"tanabata tree","shortname":":tanabata_tree:","category":6,"emoji_order":2906},{"name":"pine decoration","shortname":":bamboo:","category":6,"emoji_order":2907,"aliases":[":pine_decor:"]},{"name":"Japanese dolls","shortname":":dolls:","category":6,"emoji_order":2908},{"name":"carp streamer","shortname":":carp_streamer:","category":6,"emoji_order":2909},{"name":"wind chime","shortname":":wind_chime:","category":6,"emoji_order":2910},{"name":"moon viewing ceremony","shortname":":moon_ceremony:","category":6,"emoji_order":2911,"aliases":[":rice_scene:"]},{"name":"red envelope","shortname":":red_envelope:","category":6,"emoji_order":2912},{"name":"ribbon","shortname":":ribbon:","category":6,"emoji_order":2913},{"name":"wrapped gift","shortname":":gift:","category":6,"emoji_order":2914},{"name":"reminder ribbon","shortname":":reminder_ribbon:","category":6,"emoji_order":2916},{"name":"admission tickets","shortname":":tickets:","category":6,"emoji_order":2918,"aliases":[":admission:"]},{"name":"ticket","shortname":":ticket:","category":6,"emoji_order":2919},{"name":"military medal","shortname":":military_medal:","category":6,"emoji_order":2921},{"name":"trophy","shortname":":trophy:","category":6,"emoji_order":2922},{"name":"sports medal","shortname":":medal:","category":6,"emoji_order":2923},{"name":"1st place medal","shortname":":first_place:","category":6,"emoji_order":2924},{"name":"2nd place medal","shortname":":second_place:","category":6,"emoji_order":2925},{"name":"3rd place medal","shortname":":third_place:","category":6,"emoji_order":2926},{"name":"soccer ball","shortname":":soccer:","category":6,"emoji_order":2927},{"name":"baseball","shortname":":baseball:","category":6,"emoji_order":2928},{"name":"softball","shortname":":softball:","category":6,"emoji_order":2929},{"name":"basketball","shortname":":basketball:","category":6,"emoji_order":2930},{"name":"volleyball","shortname":":volleyball:","category":6,"emoji_order":2931},{"name":"american football","shortname":":football:","category":6,"emoji_order":2932},{"name":"rugby football","shortname":":rugby:","category":6,"emoji_order":2933},{"name":"tennis","shortname":":tennis:","category":6,"emoji_order":2934},{"name":"flying disc","shortname":":flying_disc:","category":6,"emoji_order":2935},{"name":"bowling","shortname":":bowling:","category":6,"emoji_order":2936},{"name":"cricket game","shortname":":cricket_game:","category":6,"emoji_order":2937},{"name":"field hockey","shortname":":field_hockey:","category":6,"emoji_order":2938},{"name":"ice hockey","shortname":":hockey:","category":6,"emoji_order":2939},{"name":"lacrosse","shortname":":lacrosse:","category":6,"emoji_order":2940},{"name":"ping pong","shortname":":ping_pong:","category":6,"emoji_order":2941},{"name":"badminton","shortname":":badminton:","category":6,"emoji_order":2942},{"name":"boxing glove","shortname":":boxing_glove:","category":6,"emoji_order":2943},{"name":"martial arts uniform","shortname":":gi:","category":6,"emoji_order":2944,"aliases":[":martial_arts_uniform:"]},{"name":"goal net","shortname":":goal:","category":6,"emoji_order":2945},{"name":"flag in hole","shortname":":golf:","category":6,"emoji_order":2946},{"name":"ice skate","shortname":":ice_skate:","category":6,"emoji_order":2948},{"name":"fishing pole","shortname":":fishing_pole:","category":6,"emoji_order":2949},{"name":"diving mask","shortname":":diving_mask:","category":6,"emoji_order":2950,"aliases":[":scuba_mask:"]},{"name":"running shirt","shortname":":running_shirt:","category":6,"emoji_order":2951},{"name":"skis","shortname":":ski:","category":6,"emoji_order":2952},{"name":"sled","shortname":":sled:","category":6,"emoji_order":2953},{"name":"curling stone","shortname":":curling_stone:","category":6,"emoji_order":2954},{"name":"direct hit","shortname":":dart:","category":6,"emoji_order":2955},{"name":"yo-yo","shortname":":yoyo:","category":6,"emoji_order":2956},{"name":"kite","shortname":":kite:","category":6,"emoji_order":2957},{"name":"pool 8 ball","shortname":":8ball:","category":6,"emoji_order":2958},{"name":"crystal ball","shortname":":crystal_ball:","category":6,"emoji_order":2959},{"name":"nazar amulet","shortname":":nazar_amulet:","category":6,"emoji_order":2960},{"name":"video game","shortname":":video_game:","category":6,"emoji_order":2961},{"name":"joystick","shortname":":joystick:","category":6,"emoji_order":2963},{"name":"slot machine","shortname":":slot_machine:","category":6,"emoji_order":2964},{"name":"game die","shortname":":game_die:","category":6,"emoji_order":2965},{"name":"puzzle piece","shortname":":jigsaw:","category":6,"emoji_order":2966,"aliases":[":puzzle_piece:"]},{"name":"teddy bear","shortname":":teddy_bear:","category":6,"emoji_order":2967},{"name":"spade suit","shortname":":spades:","category":6,"emoji_order":2969},{"name":"heart suit","shortname":":hearts:","category":6,"emoji_order":2971},{"name":"diamond suit","shortname":":diamonds:","category":6,"emoji_order":2973},{"name":"club suit","shortname":":clubs:","category":6,"emoji_order":2975},{"name":"chess pawn","shortname":":chess_pawn:","category":6,"emoji_order":2977},{"name":"joker","shortname":":black_joker:","category":6,"emoji_order":2978},{"name":"mahjong red dragon","shortname":":mahjong:","category":6,"emoji_order":2979},{"name":"flower playing cards","shortname":":flower_cards:","category":6,"emoji_order":2980},{"name":"performing arts","shortname":":performing_arts:","category":6,"emoji_order":2981},{"name":"framed picture","shortname":":frame_photo:","category":6,"emoji_order":2983},{"name":"artist palette","shortname":":art:","category":6,"emoji_order":2984,"aliases":[":palette:"]},{"name":"thread","shortname":":spool:","category":6,"emoji_order":2985},{"name":"yarn","shortname":":yarn:","category":6,"emoji_order":2986},{"name":"glasses","shortname":":glasses:","category":7,"emoji_order":2987},{"name":"sunglasses","shortname":":sunglasses:","category":7,"emoji_order":2989},{"name":"goggles","shortname":":goggles:","category":7,"emoji_order":2990},{"name":"lab coat","shortname":":lab_coat:","category":7,"emoji_order":2991},{"name":"safety vest","shortname":":safety_vest:","category":7,"emoji_order":2992},{"name":"necktie","shortname":":necktie:","category":7,"emoji_order":2993,"aliases":[":tie:"]},{"name":"t-shirt","shortname":":shirt:","category":7,"emoji_order":2994},{"name":"jeans","shortname":":jeans:","category":7,"emoji_order":2995},{"name":"scarf","shortname":":scarf:","category":7,"emoji_order":2996},{"name":"gloves","shortname":":gloves:","category":7,"emoji_order":2997},{"name":"coat","shortname":":coat:","category":7,"emoji_order":2998},{"name":"socks","shortname":":socks:","category":7,"emoji_order":2999},{"name":"dress","shortname":":dress:","category":7,"emoji_order":3000},{"name":"kimono","shortname":":kimono:","category":7,"emoji_order":3001},{"name":"sari","shortname":":sari:","category":7,"emoji_order":3002},{"name":"one-piece swimsuit","shortname":":one_piece_swimsuit:","category":7,"emoji_order":3003},{"name":"briefs","shortname":":briefs:","category":7,"emoji_order":3004},{"name":"shorts","shortname":":shorts:","category":7,"emoji_order":3005},{"name":"bikini","shortname":":bikini:","category":7,"emoji_order":3006},{"name":"woman’s clothes","shortname":":blouse:","category":7,"emoji_order":3007,"aliases":[":womans_clothes:"]},{"name":"purse","shortname":":purse:","category":7,"emoji_order":3008},{"name":"handbag","shortname":":handbag:","category":7,"emoji_order":3009},{"name":"clutch bag","shortname":":pouch:","category":7,"emoji_order":3010,"aliases":[":clutch_bag:"]},{"name":"shopping bags","shortname":":shopping_bags:","category":7,"emoji_order":3012},{"name":"backpack","shortname":":backpack:","category":7,"emoji_order":3013},{"name":"man’s shoe","shortname":":dress_shoe:","category":7,"emoji_order":3014,"aliases":[":mans_shoe:"]},{"name":"running shoe","shortname":":sneaker:","category":7,"emoji_order":3015,"aliases":[":athletic_shoe:"]},{"name":"hiking boot","shortname":":hiking_boot:","category":7,"emoji_order":3016},{"name":"flat shoe","shortname":":flat_shoe:","category":7,"emoji_order":3017},{"name":"high-heeled shoe","shortname":":high_heel:","category":7,"emoji_order":3018},{"name":"woman’s sandal","shortname":":womans_sandal:","category":7,"emoji_order":3019},{"name":"ballet shoes","shortname":":ballet_shoes:","category":7,"emoji_order":3020},{"name":"woman’s boot","shortname":":womans_boot:","category":7,"emoji_order":3021},{"name":"crown","shortname":":crown:","category":7,"emoji_order":3022},{"name":"woman’s hat","shortname":":womans_hat:","category":7,"emoji_order":3023},{"name":"top hat","shortname":":top_hat:","category":7,"emoji_order":3024},{"name":"graduation cap","shortname":":graduation_cap:","category":7,"emoji_order":3025},{"name":"billed cap","shortname":":billed_cap:","category":7,"emoji_order":3026},{"name":"rescue worker’s helmet","shortname":":helmet_cross:","category":7,"emoji_order":3028},{"name":"prayer beads","shortname":":prayer_beads:","category":7,"emoji_order":3029},{"name":"lipstick","shortname":":lipstick:","category":7,"emoji_order":3030},{"name":"ring","shortname":":ring:","category":7,"emoji_order":3031},{"name":"gem stone","shortname":":gem:","category":7,"emoji_order":3032},{"name":"muted speaker","shortname":":mute:","category":7,"emoji_order":3033,"aliases":[":no_sound:"]},{"name":"speaker low volume","shortname":":speaker:","category":7,"emoji_order":3034,"aliases":[":low_sound:"]},{"name":"speaker medium volume","shortname":":sound:","category":7,"emoji_order":3035},{"name":"speaker high volume","shortname":":loud_sound:","category":7,"emoji_order":3036},{"name":"loudspeaker","shortname":":loudspeaker:","category":7,"emoji_order":3037},{"name":"megaphone","shortname":":megaphone:","category":7,"emoji_order":3038},{"name":"postal horn","shortname":":postal_horn:","category":7,"emoji_order":3039},{"name":"bell","shortname":":bell:","category":7,"emoji_order":3040},{"name":"bell with slash","shortname":":no_bell:","category":7,"emoji_order":3041},{"name":"musical score","shortname":":musical_score:","category":7,"emoji_order":3042},{"name":"musical note","shortname":":musical_note:","category":7,"emoji_order":3043},{"name":"musical notes","shortname":":musical_notes:","category":7,"emoji_order":3044},{"name":"studio microphone","shortname":":studio_microphone:","category":7,"emoji_order":3046},{"name":"level slider","shortname":":level_slider:","category":7,"emoji_order":3048},{"name":"control knobs","shortname":":control_knobs:","category":7,"emoji_order":3050},{"name":"microphone","shortname":":microphone:","category":7,"emoji_order":3051},{"name":"headphone","shortname":":headphones:","category":7,"emoji_order":3052},{"name":"radio","shortname":":radio:","category":7,"emoji_order":3053},{"name":"saxophone","shortname":":saxophone:","category":7,"emoji_order":3054},{"name":"guitar","shortname":":guitar:","category":7,"emoji_order":3055},{"name":"musical keyboard","shortname":":musical_keyboard:","category":7,"emoji_order":3056},{"name":"trumpet","shortname":":trumpet:","category":7,"emoji_order":3057},{"name":"violin","shortname":":violin:","category":7,"emoji_order":3058},{"name":"banjo","shortname":":banjo:","category":7,"emoji_order":3059},{"name":"drum","shortname":":drum:","category":7,"emoji_order":3060},{"name":"mobile phone","shortname":":mobile:","category":7,"emoji_order":3061,"aliases":[":iphone:",":android:"]},{"name":"mobile phone with arrow","shortname":":mobile_calling:","category":7,"emoji_order":3062},{"name":"telephone","shortname":":telephone:","category":7,"emoji_order":3064},{"name":"telephone receiver","shortname":":telephone_receiver:","category":7,"emoji_order":3065},{"name":"pager","shortname":":pager:","category":7,"emoji_order":3066},{"name":"fax machine","shortname":":fax:","category":7,"emoji_order":3067},{"name":"battery","shortname":":battery:","category":7,"emoji_order":3068},{"name":"electric plug","shortname":":electric_plug:","category":7,"emoji_order":3069},{"name":"laptop computer","shortname":":laptop:","category":7,"emoji_order":3070},{"name":"desktop computer","shortname":":desktop:","category":7,"emoji_order":3072,"aliases":[":computer:"]},{"name":"printer","shortname":":printer:","category":7,"emoji_order":3074},{"name":"keyboard","shortname":":keyboard:","category":7,"emoji_order":3076},{"name":"computer mouse","shortname":":computer_mouse:","category":7,"emoji_order":3078},{"name":"trackball","shortname":":trackball:","category":7,"emoji_order":3080},{"name":"computer disk","shortname":":minidisc:","category":7,"emoji_order":3081},{"name":"floppy disk","shortname":":floppy_disk:","category":7,"emoji_order":3082},{"name":"optical disk","shortname":":cd:","category":7,"emoji_order":3083,"aliases":[":disk:"]},{"name":"dvd","shortname":":dvd:","category":7,"emoji_order":3084},{"name":"abacus","shortname":":abacus:","category":7,"emoji_order":3085},{"name":"movie camera","shortname":":movie_camera:","category":7,"emoji_order":3086},{"name":"film frames","shortname":":film_frames:","category":7,"emoji_order":3088},{"name":"film projector","shortname":":projector:","category":7,"emoji_order":3090},{"name":"clapper board","shortname":":clapper:","category":7,"emoji_order":3091},{"name":"television","shortname":":tv:","category":7,"emoji_order":3092},{"name":"camera","shortname":":camera:","category":7,"emoji_order":3093},{"name":"camera with flash","shortname":":camera_flash:","category":7,"emoji_order":3094},{"name":"video camera","shortname":":video_camera:","category":7,"emoji_order":3095},{"name":"videocassette","shortname":":vhs:","category":7,"emoji_order":3096},{"name":"magnifying glass tilted left","shortname":":mag:","category":7,"emoji_order":3097},{"name":"magnifying glass tilted right","shortname":":mag_right:","category":7,"emoji_order":3098},{"name":"candle","shortname":":candle:","category":7,"emoji_order":3100},{"name":"light bulb","shortname":":bulb:","category":7,"emoji_order":3101,"aliases":[":light_bulb:"]},{"name":"flashlight","shortname":":flashlight:","category":7,"emoji_order":3102},{"name":"red paper lantern","shortname":":red_lantern:","category":7,"emoji_order":3103},{"name":"diya lamp","shortname":":diya_lamp:","category":7,"emoji_order":3104},{"name":"notebook with decorative cover","shortname":":decorative_notebook:","category":7,"emoji_order":3105},{"name":"closed book","shortname":":closed_book:","category":7,"emoji_order":3106},{"name":"open book","shortname":":book:","category":7,"emoji_order":3107},{"name":"green book","shortname":":green_book:","category":7,"emoji_order":3108},{"name":"blue book","shortname":":blue_book:","category":7,"emoji_order":3109},{"name":"orange book","shortname":":orange_book:","category":7,"emoji_order":3110},{"name":"books","shortname":":books:","category":7,"emoji_order":3111},{"name":"notebook","shortname":":notebook:","category":7,"emoji_order":3112},{"name":"ledger","shortname":":ledger:","category":7,"emoji_order":3113},{"name":"page with curl","shortname":":page_curl:","category":7,"emoji_order":3114},{"name":"scroll","shortname":":scroll:","category":7,"emoji_order":3115},{"name":"page facing up","shortname":":page_facing_up:","category":7,"emoji_order":3116},{"name":"newspaper","shortname":":newspaper:","category":7,"emoji_order":3117},{"name":"rolled-up newspaper","shortname":":rolled_newspaper:","category":7,"emoji_order":3119},{"name":"bookmark tabs","shortname":":bookmark_tabs:","category":7,"emoji_order":3120},{"name":"bookmark","shortname":":bookmark:","category":7,"emoji_order":3121},{"name":"label","shortname":":label:","category":7,"emoji_order":3123},{"name":"money bag","shortname":":moneybag:","category":7,"emoji_order":3124},{"name":"yen banknote","shortname":":yen:","category":7,"emoji_order":3125},{"name":"dollar banknote","shortname":":dollar:","category":7,"emoji_order":3126},{"name":"euro banknote","shortname":":euro:","category":7,"emoji_order":3127},{"name":"pound banknote","shortname":":pound:","category":7,"emoji_order":3128},{"name":"money with wings","shortname":":money_wings:","category":7,"emoji_order":3129},{"name":"credit card","shortname":":credit_card:","category":7,"emoji_order":3130},{"name":"receipt","shortname":":receipt:","category":7,"emoji_order":3131},{"name":"chart increasing with yen","shortname":":ja_chart:","category":7,"emoji_order":3132},{"name":"currency exchange","shortname":":currency_exchange:","category":7,"emoji_order":3133},{"name":"heavy dollar sign","shortname":":dollar_sign:","category":7,"emoji_order":3134},{"name":"envelope","shortname":":envelope:","category":7,"emoji_order":3136},{"name":"e-mail","shortname":":email:","category":7,"emoji_order":3137},{"name":"incoming envelope","shortname":":incoming_envelope:","category":7,"emoji_order":3138},{"name":"envelope with arrow","shortname":":envelope_arrow:","category":7,"emoji_order":3139},{"name":"outbox tray","shortname":":outbox_tray:","category":7,"emoji_order":3140},{"name":"inbox tray","shortname":":inbox_tray:","category":7,"emoji_order":3141},{"name":"package","shortname":":package:","category":7,"emoji_order":3142},{"name":"closed mailbox with raised flag","shortname":":mailbox:","category":7,"emoji_order":3143},{"name":"closed mailbox with lowered flag","shortname":":mailbox_closed:","category":7,"emoji_order":3144},{"name":"open mailbox with raised flag","shortname":":mailbox_mail:","category":7,"emoji_order":3145},{"name":"open mailbox with lowered flag","shortname":":mailbox_no_mail:","category":7,"emoji_order":3146},{"name":"postbox","shortname":":postbox:","category":7,"emoji_order":3147},{"name":"ballot box with ballot","shortname":":ballot_box:","category":7,"emoji_order":3149},{"name":"pencil","shortname":":pencil:","category":7,"emoji_order":3151},{"name":"black nib","shortname":":black_nib:","category":7,"emoji_order":3153},{"name":"fountain pen","shortname":":fountain_pen:","category":7,"emoji_order":3155},{"name":"pen","shortname":":pen:","category":7,"emoji_order":3157},{"name":"paintbrush","shortname":":paintbrush:","category":7,"emoji_order":3159},{"name":"crayon","shortname":":crayon:","category":7,"emoji_order":3161},{"name":"memo","shortname":":memo:","category":7,"emoji_order":3162},{"name":"briefcase","shortname":":briefcase:","category":7,"emoji_order":3163},{"name":"file folder","shortname":":file_folder:","category":7,"emoji_order":3164},{"name":"open file folder","shortname":":open_file_folder:","category":7,"emoji_order":3165},{"name":"card index dividers","shortname":":dividers:","category":7,"emoji_order":3167},{"name":"calendar","shortname":":date:","category":7,"emoji_order":3168,"aliases":[":calendar:"]},{"name":"tear-off calendar","shortname":":torn_calendar:","category":7,"emoji_order":3169},{"name":"spiral notepad","shortname":":notepad_spiral:","category":7,"emoji_order":3171},{"name":"spiral calendar","shortname":":calendar_spiral:","category":7,"emoji_order":3173},{"name":"card index","shortname":":card_index:","category":7,"emoji_order":3174},{"name":"chart increasing","shortname":":chart_up:","category":7,"emoji_order":3175},{"name":"chart decreasing","shortname":":chart_down:","category":7,"emoji_order":3176},{"name":"bar chart","shortname":":bar_chart:","category":7,"emoji_order":3177},{"name":"clipboard","shortname":":clipboard:","category":7,"emoji_order":3178},{"name":"pushpin","shortname":":pushpin:","category":7,"emoji_order":3179},{"name":"round pushpin","shortname":":round_pushpin:","category":7,"emoji_order":3180},{"name":"paperclip","shortname":":paperclip:","category":7,"emoji_order":3181},{"name":"linked paperclips","shortname":":paperclips:","category":7,"emoji_order":3183},{"name":"straight ruler","shortname":":straight_ruler:","category":7,"emoji_order":3184},{"name":"triangular ruler","shortname":":triangular_ruler:","category":7,"emoji_order":3185},{"name":"scissors","shortname":":scissors:","category":7,"emoji_order":3187},{"name":"card file box","shortname":":card_box:","category":7,"emoji_order":3189},{"name":"file cabinet","shortname":":file_cabinet:","category":7,"emoji_order":3191},{"name":"wastebasket","shortname":":trashcan:","category":7,"emoji_order":3193,"aliases":[":wastebasket:"]},{"name":"locked","shortname":":lock:","category":7,"emoji_order":3194},{"name":"unlocked","shortname":":unlock:","category":7,"emoji_order":3195},{"name":"locked with pen","shortname":":locked_pen:","category":7,"emoji_order":3196},{"name":"locked with key","shortname":":locked_key:","category":7,"emoji_order":3197},{"name":"key","shortname":":key:","category":7,"emoji_order":3198},{"name":"old key","shortname":":old_key:","category":7,"emoji_order":3200},{"name":"hammer","shortname":":hammer:","category":7,"emoji_order":3201},{"name":"axe","shortname":":axe:","category":7,"emoji_order":3202},{"name":"pick","shortname":":pick:","category":7,"emoji_order":3204},{"name":"hammer and pick","shortname":":hammer_pick:","category":7,"emoji_order":3206},{"name":"hammer and wrench","shortname":":tools:","category":7,"emoji_order":3208,"aliases":[":hammer_wrench:"]},{"name":"dagger","shortname":":dagger:","category":7,"emoji_order":3210},{"name":"crossed swords","shortname":":crossed_swords:","category":7,"emoji_order":3212},{"name":"pistol","shortname":":gun:","category":7,"emoji_order":3213,"aliases":[":pistol:"]},{"name":"bow and arrow","shortname":":bow:","category":7,"emoji_order":3214},{"name":"shield","shortname":":shield:","category":7,"emoji_order":3216},{"name":"wrench","shortname":":wrench:","category":7,"emoji_order":3217},{"name":"nut and bolt","shortname":":nut_and_bolt:","category":7,"emoji_order":3218},{"name":"gear","shortname":":gear:","category":7,"emoji_order":3220},{"name":"clamp","shortname":":clamp:","category":7,"emoji_order":3222,"aliases":[":compression:"]},{"name":"balance scale","shortname":":scales:","category":7,"emoji_order":3224},{"name":"probing cane","shortname":":probing_cane:","category":7,"emoji_order":3225},{"name":"link","shortname":":link:","category":7,"emoji_order":3226},{"name":"chains","shortname":":chains:","category":7,"emoji_order":3228},{"name":"toolbox","shortname":":toolbox:","category":7,"emoji_order":3229},{"name":"magnet","shortname":":magnet:","category":7,"emoji_order":3230},{"name":"alembic","shortname":":alembic:","category":7,"emoji_order":3232},{"name":"test tube","shortname":":test_tube:","category":7,"emoji_order":3233},{"name":"petri dish","shortname":":petri_dish:","category":7,"emoji_order":3234},{"name":"dna","shortname":":dna:","category":7,"emoji_order":3235,"aliases":[":double_helix:"]},{"name":"microscope","shortname":":microscope:","category":7,"emoji_order":3236},{"name":"telescope","shortname":":telescope:","category":7,"emoji_order":3237},{"name":"satellite antenna","shortname":":satellite_antenna:","category":7,"emoji_order":3238},{"name":"syringe","shortname":":syringe:","category":7,"emoji_order":3239},{"name":"drop of blood","shortname":":blood_drop:","category":7,"emoji_order":3240},{"name":"pill","shortname":":pill:","category":7,"emoji_order":3241},{"name":"adhesive bandage","shortname":":bandaid:","category":7,"emoji_order":3242,"aliases":[":adhesive_bandage:"]},{"name":"stethoscope","shortname":":stethoscope:","category":7,"emoji_order":3243},{"name":"door","shortname":":door:","category":7,"emoji_order":3244},{"name":"bed","shortname":":bed:","category":7,"emoji_order":3246},{"name":"couch and lamp","shortname":":couch:","category":7,"emoji_order":3248},{"name":"chair","shortname":":chair:","category":7,"emoji_order":3249},{"name":"toilet","shortname":":toilet:","category":7,"emoji_order":3250},{"name":"shower","shortname":":shower:","category":7,"emoji_order":3251},{"name":"bathtub","shortname":":bathtub:","category":7,"emoji_order":3252},{"name":"razor","shortname":":razor:","category":7,"emoji_order":3253},{"name":"lotion bottle","shortname":":lotion:","category":7,"emoji_order":3254},{"name":"safety pin","shortname":":safety_pin:","category":7,"emoji_order":3255},{"name":"broom","shortname":":broom:","category":7,"emoji_order":3256},{"name":"basket","shortname":":basket:","category":7,"emoji_order":3257},{"name":"roll of paper","shortname":":toilet_paper:","category":7,"emoji_order":3258},{"name":"soap","shortname":":soap:","category":7,"emoji_order":3259},{"name":"sponge","shortname":":sponge:","category":7,"emoji_order":3260},{"name":"fire extinguisher","shortname":":fire_extinguisher:","category":7,"emoji_order":3261},{"name":"shopping cart","shortname":":shopping_cart:","category":7,"emoji_order":3262},{"name":"cigarette","shortname":":cigarette:","category":7,"emoji_order":3263,"aliases":[":smoking:"]},{"name":"coffin","shortname":":coffin:","category":7,"emoji_order":3265},{"name":"funeral urn","shortname":":urn:","category":7,"emoji_order":3267},{"name":"moai","shortname":":moai:","category":7,"emoji_order":3268},{"name":"ATM sign","shortname":":atm:","category":8,"emoji_order":3269},{"name":"litter in bin sign","shortname":":litter_bin:","category":8,"emoji_order":3270},{"name":"potable water","shortname":":potable_water:","category":8,"emoji_order":3271},{"name":"wheelchair symbol","shortname":":handicapped:","category":8,"emoji_order":3272},{"name":"men’s room","shortname":":mens:","category":8,"emoji_order":3273},{"name":"women’s room","shortname":":womens:","category":8,"emoji_order":3274},{"name":"restroom","shortname":":restroom:","category":8,"emoji_order":3275,"aliases":[":bathroom:"]},{"name":"baby symbol","shortname":":baby_symbol:","category":8,"emoji_order":3276},{"name":"water closet","shortname":":wc:","category":8,"emoji_order":3277},{"name":"passport control","shortname":":passport_control:","category":8,"emoji_order":3278},{"name":"customs","shortname":":customs:","category":8,"emoji_order":3279},{"name":"baggage claim","shortname":":baggage_claim:","category":8,"emoji_order":3280},{"name":"left luggage","shortname":":left_luggage:","category":8,"emoji_order":3281},{"name":"warning","shortname":":warning:","category":8,"emoji_order":3283},{"name":"children crossing","shortname":":children_crossing:","category":8,"emoji_order":3284},{"name":"no entry","shortname":":no_entry:","category":8,"emoji_order":3285},{"name":"prohibited","shortname":":no_entry_sign:","category":8,"emoji_order":3286},{"name":"no bicycles","shortname":":no_bicycles:","category":8,"emoji_order":3287},{"name":"no smoking","shortname":":no_smoking:","category":8,"emoji_order":3288},{"name":"no littering","shortname":":do_not_litter:","category":8,"emoji_order":3289},{"name":"non-potable water","shortname":":non_potable_water:","category":8,"emoji_order":3290},{"name":"no pedestrians","shortname":":no_pedestrians:","category":8,"emoji_order":3291},{"name":"no mobile phones","shortname":":no_mobile_phones:","category":8,"emoji_order":3292},{"name":"no one under eighteen","shortname":":underage:","category":8,"emoji_order":3293},{"name":"radioactive","shortname":":radioactive:","category":8,"emoji_order":3295},{"name":"biohazard","shortname":":biohazard:","category":8,"emoji_order":3297},{"name":"up arrow","shortname":":arrow_up:","category":8,"emoji_order":3299},{"name":"up-right arrow","shortname":":arrow_upper_right:","category":8,"emoji_order":3301},{"name":"right arrow","shortname":":arrow_right:","category":8,"emoji_order":3303},{"name":"down-right arrow","shortname":":arrow_lower_right:","category":8,"emoji_order":3305},{"name":"down arrow","shortname":":arrow_down:","category":8,"emoji_order":3307},{"name":"down-left arrow","shortname":":arrow_lower_left:","category":8,"emoji_order":3309},{"name":"left arrow","shortname":":arrow_left:","category":8,"emoji_order":3311},{"name":"up-left arrow","shortname":":arrow_upper_left:","category":8,"emoji_order":3313},{"name":"up-down arrow","shortname":":arrow_up_down:","category":8,"emoji_order":3315},{"name":"left-right arrow","shortname":":arrow_left_right:","category":8,"emoji_order":3317},{"name":"right arrow curving left","shortname":":arrow_left_hook:","category":8,"emoji_order":3319},{"name":"left arrow curving right","shortname":":arrow_right_hook:","category":8,"emoji_order":3321},{"name":"right arrow curving up","shortname":":arrow_heading_up:","category":8,"emoji_order":3323},{"name":"right arrow curving down","shortname":":arrow_heading_down:","category":8,"emoji_order":3325},{"name":"clockwise vertical arrows","shortname":":clockwise:","category":8,"emoji_order":3326},{"name":"counterclockwise arrows button","shortname":":counter_clockwise:","category":8,"emoji_order":3327},{"name":"BACK arrow","shortname":":back:","category":8,"emoji_order":3328},{"name":"END arrow","shortname":":end:","category":8,"emoji_order":3329},{"name":"ON! arrow","shortname":":on:","category":8,"emoji_order":3330},{"name":"SOON arrow","shortname":":soon:","category":8,"emoji_order":3331},{"name":"TOP arrow","shortname":":top:","category":8,"emoji_order":3332},{"name":"place of worship","shortname":":place_of_worship:","category":8,"emoji_order":3333},{"name":"atom symbol","shortname":":atom:","category":8,"emoji_order":3335},{"name":"om","shortname":":om_symbol:","category":8,"emoji_order":3337},{"name":"star of David","shortname":":star_of_david:","category":8,"emoji_order":3339},{"name":"wheel of dharma","shortname":":wheel_of_dharma:","category":8,"emoji_order":3341},{"name":"yin yang","shortname":":yin_yang:","category":8,"emoji_order":3343},{"name":"latin cross","shortname":":cross:","category":8,"emoji_order":3345},{"name":"orthodox cross","shortname":":orthodox_cross:","category":8,"emoji_order":3347},{"name":"star and crescent","shortname":":star_and_crescent:","category":8,"emoji_order":3349},{"name":"peace symbol","shortname":":peace:","category":8,"emoji_order":3351},{"name":"menorah","shortname":":menorah:","category":8,"emoji_order":3352},{"name":"dotted six-pointed star","shortname":":six_pointed_star:","category":8,"emoji_order":3353},{"name":"Aries","shortname":":aries:","category":8,"emoji_order":3354},{"name":"Taurus","shortname":":taurus:","category":8,"emoji_order":3355},{"name":"Gemini","shortname":":gemini:","category":8,"emoji_order":3356},{"name":"Cancer","shortname":":cancer:","category":8,"emoji_order":3357},{"name":"Leo","shortname":":leo:","category":8,"emoji_order":3358},{"name":"Virgo","shortname":":virgo:","category":8,"emoji_order":3359},{"name":"Libra","shortname":":libra:","category":8,"emoji_order":3360},{"name":"Scorpio","shortname":":scorpius:","category":8,"emoji_order":3361},{"name":"Sagittarius","shortname":":sagittarius:","category":8,"emoji_order":3362},{"name":"Capricorn","shortname":":capricorn:","category":8,"emoji_order":3363},{"name":"Aquarius","shortname":":aquarius:","category":8,"emoji_order":3364},{"name":"Pisces","shortname":":pisces:","category":8,"emoji_order":3365},{"name":"Ophiuchus","shortname":":ophiuchus:","category":8,"emoji_order":3366},{"name":"shuffle tracks button","shortname":":shuffle:","category":8,"emoji_order":3367},{"name":"repeat button","shortname":":repeat:","category":8,"emoji_order":3368},{"name":"repeat single button","shortname":":repeat_single:","category":8,"emoji_order":3369},{"name":"play button","shortname":":play:","category":8,"emoji_order":3371},{"name":"fast-forward button","shortname":":fast_forward:","category":8,"emoji_order":3372},{"name":"next track button","shortname":":next_track:","category":8,"emoji_order":3374},{"name":"play or pause button","shortname":":play_pause:","category":8,"emoji_order":3376},{"name":"reverse button","shortname":":reverse:","category":8,"emoji_order":3378},{"name":"fast reverse button","shortname":":rewind:","category":8,"emoji_order":3379},{"name":"last track button","shortname":":previous_track:","category":8,"emoji_order":3381},{"name":"upwards button","shortname":":up_button:","category":8,"emoji_order":3382},{"name":"fast up button","shortname":":fast_up_button:","category":8,"emoji_order":3383},{"name":"downwards button","shortname":":down_button:","category":8,"emoji_order":3384},{"name":"fast down button","shortname":":fast_down_button:","category":8,"emoji_order":3385},{"name":"pause button","shortname":":pause:","category":8,"emoji_order":3387},{"name":"stop button","shortname":":stop:","category":8,"emoji_order":3389},{"name":"record button","shortname":":record:","category":8,"emoji_order":3391},{"name":"eject button","shortname":":eject:","category":8,"emoji_order":3393},{"name":"cinema","shortname":":cinema:","category":8,"emoji_order":3394},{"name":"dim button","shortname":":dim:","category":8,"emoji_order":3395,"aliases":[":low_brightness:"]},{"name":"bright button","shortname":":bright:","category":8,"emoji_order":3396,"aliases":[":high_brightness:"]},{"name":"antenna bars","shortname":":signal_strength:","category":8,"emoji_order":3397,"aliases":[":antenna_bars:"]},{"name":"vibration mode","shortname":":vibration_mode:","category":8,"emoji_order":3398},{"name":"mobile phone off","shortname":":mobile_phone_off:","category":8,"emoji_order":3399},{"name":"female sign","shortname":":female:","category":8,"emoji_order":3401,"aliases":[":female_sign:"]},{"name":"male sign","shortname":":male:","category":8,"emoji_order":3403,"aliases":[":male_sign:"]},{"name":"medical symbol","shortname":":medical:","category":8,"emoji_order":3405},{"name":"infinity","shortname":":infinity:","category":8,"emoji_order":3407},{"name":"recycling symbol","shortname":":recycle:","category":8,"emoji_order":3409},{"name":"fleur-de-lis","shortname":":fleur-de-lis:","category":8,"emoji_order":3411},{"name":"trident emblem","shortname":":trident:","category":8,"emoji_order":3412},{"name":"name badge","shortname":":name_badge:","category":8,"emoji_order":3413},{"name":"Japanese symbol for beginner","shortname":":ja_beginner:","category":8,"emoji_order":3414},{"name":"hollow red circle","shortname":":o:","category":8,"emoji_order":3415},{"name":"check mark button","shortname":":white_check_mark:","category":8,"emoji_order":3416},{"name":"check box with check","shortname":":checked_ballot:","category":8,"emoji_order":3418},{"name":"check mark","shortname":":check_mark:","category":8,"emoji_order":3420},{"name":"multiplication sign","shortname":":multiplication:","category":8,"emoji_order":3422},{"name":"cross mark","shortname":":x:","category":8,"emoji_order":3423,"aliases":[":cross_mark:"]},{"name":"cross mark button","shortname":":cross_mark_button:","category":8,"emoji_order":3424},{"name":"plus sign","shortname":":plus:","category":8,"emoji_order":3425},{"name":"minus sign","shortname":":minus:","category":8,"emoji_order":3426},{"name":"division sign","shortname":":division:","category":8,"emoji_order":3427},{"name":"curly loop","shortname":":curly_loop:","category":8,"emoji_order":3428},{"name":"double curly loop","shortname":":double_curly_loop:","category":8,"emoji_order":3429},{"name":"part alternation mark","shortname":":part_alternation_mark:","category":8,"emoji_order":3431},{"name":"eight-spoked asterisk","shortname":":eight_spoked_asterisk:","category":8,"emoji_order":3433},{"name":"eight-pointed star","shortname":":eight_pointed_star:","category":8,"emoji_order":3435},{"name":"sparkle","shortname":":sparkle:","category":8,"emoji_order":3437},{"name":"double exclamation mark","shortname":":bangbang:","category":8,"emoji_order":3439,"aliases":[":double_exclamation:"]},{"name":"exclamation question mark","shortname":":interrobang:","category":8,"emoji_order":3441,"aliases":[":exclamation_question:"]},{"name":"question mark","shortname":":question:","category":8,"emoji_order":3442},{"name":"white question mark","shortname":":white_question:","category":8,"emoji_order":3443},{"name":"white exclamation mark","shortname":":white_exclamation:","category":8,"emoji_order":3444},{"name":"exclamation mark","shortname":":exclamation:","category":8,"emoji_order":3445},{"name":"wavy dash","shortname":":wavy_dash:","category":8,"emoji_order":3447},{"name":"copyright","shortname":":copyright:","category":8,"emoji_order":3449},{"name":"registered","shortname":":registered:","category":8,"emoji_order":3451},{"name":"trade mark","shortname":":tm:","category":8,"emoji_order":3453},{"name":"keycap: #","shortname":":hash:","category":8,"emoji_order":3454},{"name":"keycap: *","shortname":":asterisk:","category":8,"emoji_order":3456},{"name":"keycap: 0","shortname":":zero:","category":8,"emoji_order":3458},{"name":"keycap: 1","shortname":":one:","category":8,"emoji_order":3460},{"name":"keycap: 2","shortname":":two:","category":8,"emoji_order":3462},{"name":"keycap: 3","shortname":":three:","category":8,"emoji_order":3464},{"name":"keycap: 4","shortname":":four:","category":8,"emoji_order":3466},{"name":"keycap: 5","shortname":":five:","category":8,"emoji_order":3468},{"name":"keycap: 6","shortname":":six:","category":8,"emoji_order":3470},{"name":"keycap: 7","shortname":":seven:","category":8,"emoji_order":3472},{"name":"keycap: 8","shortname":":eight:","category":8,"emoji_order":3474},{"name":"keycap: 9","shortname":":nine:","category":8,"emoji_order":3476},{"name":"keycap: 10","shortname":":ten:","category":8,"emoji_order":3478},{"name":"input latin uppercase","shortname":":upper_abcd:","category":8,"emoji_order":3479},{"name":"input latin lowercase","shortname":":abcd:","category":8,"emoji_order":3480},{"name":"input numbers","shortname":":1234:","category":8,"emoji_order":3481},{"name":"input symbols","shortname":":symbols:","category":8,"emoji_order":3482},{"name":"input latin letters","shortname":":abc:","category":8,"emoji_order":3483},{"name":"A button (blood type)","shortname":":a_blood:","category":8,"emoji_order":3485},{"name":"AB button (blood type)","shortname":":ab_blood:","category":8,"emoji_order":3486},{"name":"B button (blood type)","shortname":":b_blood:","category":8,"emoji_order":3488},{"name":"CL button","shortname":":cl:","category":8,"emoji_order":3489},{"name":"COOL button","shortname":":cool:","category":8,"emoji_order":3490},{"name":"FREE button","shortname":":free:","category":8,"emoji_order":3491},{"name":"information","shortname":":info:","category":8,"emoji_order":3493},{"name":"ID button","shortname":":id:","category":8,"emoji_order":3494},{"name":"circled M","shortname":":m:","category":8,"emoji_order":3496},{"name":"NEW button","shortname":":new:","category":8,"emoji_order":3497},{"name":"NG button","shortname":":ng:","category":8,"emoji_order":3498},{"name":"O button (blood type)","shortname":":o_blood:","category":8,"emoji_order":3500},{"name":"OK button","shortname":":ok:","category":8,"emoji_order":3501},{"name":"P button","shortname":":p:","category":8,"emoji_order":3503},{"name":"SOS button","shortname":":sos:","category":8,"emoji_order":3504},{"name":"UP! button","shortname":":up:","category":8,"emoji_order":3505},{"name":"VS button","shortname":":vs:","category":8,"emoji_order":3506},{"name":"Japanese “here” button","shortname":":ja_here:","category":8,"emoji_order":3507,"aliases":[":koko:"]},{"name":"Japanese “service charge” button","shortname":":ja_service_charge:","category":8,"emoji_order":3509},{"name":"Japanese “monthly amount” button","shortname":":ja_monthly_amount:","category":8,"emoji_order":3511},{"name":"Japanese “not free of charge” button","shortname":":ja_not_free_of_carge:","category":8,"emoji_order":3512},{"name":"Japanese “reserved” button","shortname":":ja_reserved:","category":8,"emoji_order":3513},{"name":"Japanese “bargain” button","shortname":":ja_bargain:","category":8,"emoji_order":3514},{"name":"Japanese “discount” button","shortname":":ja_discount:","category":8,"emoji_order":3515},{"name":"Japanese “free of charge” button","shortname":":ja_free_of_charge:","category":8,"emoji_order":3516},{"name":"Japanese “prohibited” button","shortname":":ja_prohibited:","category":8,"emoji_order":3517},{"name":"Japanese “acceptable” button","shortname":":ja_acceptable:","category":8,"emoji_order":3518},{"name":"Japanese “application” button","shortname":":ja_application:","category":8,"emoji_order":3519},{"name":"Japanese “passing grade” button","shortname":":ja_passing_grade:","category":8,"emoji_order":3520},{"name":"Japanese “vacancy” button","shortname":":ja_vacancy:","category":8,"emoji_order":3521},{"name":"Japanese “congratulations” button","shortname":":ja_congratulations:","category":8,"emoji_order":3523},{"name":"Japanese “secret” button","shortname":":ja_secret:","category":8,"emoji_order":3525},{"name":"Japanese “open for business” button","shortname":":ja_open_for_business:","category":8,"emoji_order":3526},{"name":"Japanese “no vacancy” button","shortname":":ja_no_vacancy:","category":8,"emoji_order":3527},{"name":"red circle","shortname":":red_circle:","category":8,"emoji_order":3528},{"name":"orange circle","shortname":":orange_circle:","category":8,"emoji_order":3529},{"name":"yellow circle","shortname":":yellow_circle:","category":8,"emoji_order":3530},{"name":"green circle","shortname":":green_circle:","category":8,"emoji_order":3531},{"name":"blue circle","shortname":":blue_circle:","category":8,"emoji_order":3532},{"name":"purple circle","shortname":":purple_circle:","category":8,"emoji_order":3533},{"name":"brown circle","shortname":":brown_circle:","category":8,"emoji_order":3534},{"name":"black circle","shortname":":black_circle:","category":8,"emoji_order":3535},{"name":"white circle","shortname":":white_circle:","category":8,"emoji_order":3536},{"name":"red square","shortname":":red_square:","category":8,"emoji_order":3537},{"name":"orange square","shortname":":orange_square:","category":8,"emoji_order":3538},{"name":"yellow square","shortname":":yellow_square:","category":8,"emoji_order":3539},{"name":"green square","shortname":":green_square:","category":8,"emoji_order":3540},{"name":"blue square","shortname":":blue_square:","category":8,"emoji_order":3541},{"name":"purple square","shortname":":purple_square:","category":8,"emoji_order":3542},{"name":"brown square","shortname":":brown_square:","category":8,"emoji_order":3543},{"name":"black large square","shortname":":large_black_square:","category":8,"emoji_order":3544},{"name":"white large square","shortname":":large_white_square:","category":8,"emoji_order":3545},{"name":"black medium square","shortname":":medium_black_square:","category":8,"emoji_order":3547},{"name":"white medium square","shortname":":medium_white_square:","category":8,"emoji_order":3549},{"name":"black medium-small square","shortname":":medium_small_black_square:","category":8,"emoji_order":3550},{"name":"white medium-small square","shortname":":medium_small_white_square:","category":8,"emoji_order":3551},{"name":"black small square","shortname":":small_black_square:","category":8,"emoji_order":3553},{"name":"white small square","shortname":":small_white_square:","category":8,"emoji_order":3555},{"name":"large orange diamond","shortname":":large_orange_diamond:","category":8,"emoji_order":3556},{"name":"large blue diamond","shortname":":large_blue_diamond:","category":8,"emoji_order":3557},{"name":"small orange diamond","shortname":":small_orange_diamond:","category":8,"emoji_order":3558},{"name":"small blue diamond","shortname":":small_blue_diamond:","category":8,"emoji_order":3559},{"name":"red triangle pointed up","shortname":":up_red_triangle:","category":8,"emoji_order":3560},{"name":"red triangle pointed down","shortname":":down_red_triangle:","category":8,"emoji_order":3561},{"name":"diamond with a dot","shortname":":diamond_dot:","category":8,"emoji_order":3562},{"name":"radio button","shortname":":radio_button:","category":8,"emoji_order":3563},{"name":"white square button","shortname":":white_square_button:","category":8,"emoji_order":3564},{"name":"black square button","shortname":":black_square_button:","category":8,"emoji_order":3565},{"name":"chequered flag","shortname":":checkered_flag:","category":9,"emoji_order":3566},{"name":"triangular flag","shortname":":triangle_flag:","category":9,"emoji_order":3567},{"name":"crossed flags","shortname":":crossed_flags:","category":9,"emoji_order":3568},{"name":"black flag","shortname":":black_flag:","category":9,"emoji_order":3569},{"name":"white flag","shortname":":white_flag:","category":9,"emoji_order":3571},{"name":"rainbow flag","shortname":":rainbow_flag:","category":9,"emoji_order":3572},{"name":"pirate flag","shortname":":pirate_flag:","category":9,"emoji_order":3574,"aliases":[":jolly_roger:"]},{"name":"flag: Ascension Island","shortname":":flag_ac:","category":9,"emoji_order":3576},{"name":"flag: Andorra","shortname":":flag_ad:","category":9,"emoji_order":3577},{"name":"flag: United Arab Emirates","shortname":":flag_ae:","category":9,"emoji_order":3578},{"name":"flag: Afghanistan","shortname":":flag_af:","category":9,"emoji_order":3579},{"name":"flag: Antigua & Barbuda","shortname":":flag_ag:","category":9,"emoji_order":3580},{"name":"flag: Anguilla","shortname":":flag_ai:","category":9,"emoji_order":3581},{"name":"flag: Albania","shortname":":flag_al:","category":9,"emoji_order":3582},{"name":"flag: Armenia","shortname":":flag_am:","category":9,"emoji_order":3583},{"name":"flag: Angola","shortname":":flag_ao:","category":9,"emoji_order":3584},{"name":"flag: Antarctica","shortname":":flag_aq:","category":9,"emoji_order":3585},{"name":"flag: Argentina","shortname":":flag_ar:","category":9,"emoji_order":3586},{"name":"flag: American Samoa","shortname":":flag_as:","category":9,"emoji_order":3587},{"name":"flag: Austria","shortname":":flag_at:","category":9,"emoji_order":3588},{"name":"flag: Australia","shortname":":flag_au:","category":9,"emoji_order":3589},{"name":"flag: Aruba","shortname":":flag_aw:","category":9,"emoji_order":3590},{"name":"flag: Åland Islands","shortname":":flag_ax:","category":9,"emoji_order":3591},{"name":"flag: Azerbaijan","shortname":":flag_az:","category":9,"emoji_order":3592},{"name":"flag: Bosnia & Herzegovina","shortname":":flag_ba:","category":9,"emoji_order":3593},{"name":"flag: Barbados","shortname":":flag_bb:","category":9,"emoji_order":3594},{"name":"flag: Bangladesh","shortname":":flag_bd:","category":9,"emoji_order":3595},{"name":"flag: Belgium","shortname":":flag_be:","category":9,"emoji_order":3596},{"name":"flag: Burkina Faso","shortname":":flag_bf:","category":9,"emoji_order":3597},{"name":"flag: Bulgaria","shortname":":flag_bg:","category":9,"emoji_order":3598},{"name":"flag: Bahrain","shortname":":flag_bh:","category":9,"emoji_order":3599},{"name":"flag: Burundi","shortname":":flag_bi:","category":9,"emoji_order":3600},{"name":"flag: Benin","shortname":":flag_bj:","category":9,"emoji_order":3601},{"name":"flag: St. Barthélemy","shortname":":flag_bl:","category":9,"emoji_order":3602},{"name":"flag: Bermuda","shortname":":flag_bm:","category":9,"emoji_order":3603},{"name":"flag: Brunei","shortname":":flag_bn:","category":9,"emoji_order":3604},{"name":"flag: Bolivia","shortname":":flag_bo:","category":9,"emoji_order":3605},{"name":"flag: Caribbean Netherlands","shortname":":flag_bq:","category":9,"emoji_order":3606},{"name":"flag: Brazil","shortname":":flag_br:","category":9,"emoji_order":3607},{"name":"flag: Bahamas","shortname":":flag_bs:","category":9,"emoji_order":3608},{"name":"flag: Bhutan","shortname":":flag_bt:","category":9,"emoji_order":3609},{"name":"flag: Bouvet Island","shortname":":flag_bv:","category":9,"emoji_order":3610},{"name":"flag: Botswana","shortname":":flag_bw:","category":9,"emoji_order":3611},{"name":"flag: Belarus","shortname":":flag_by:","category":9,"emoji_order":3612},{"name":"flag: Belize","shortname":":flag_bz:","category":9,"emoji_order":3613},{"name":"flag: Canada","shortname":":flag_ca:","category":9,"emoji_order":3614},{"name":"flag: Cocos (Keeling) Islands","shortname":":flag_cc:","category":9,"emoji_order":3615},{"name":"flag: Congo - Kinshasa","shortname":":flag_cd:","category":9,"emoji_order":3616},{"name":"flag: Central African Republic","shortname":":flag_cf:","category":9,"emoji_order":3617},{"name":"flag: Congo - Brazzaville","shortname":":flag_cg:","category":9,"emoji_order":3618},{"name":"flag: Switzerland","shortname":":flag_ch:","category":9,"emoji_order":3619},{"name":"flag: Côte d’Ivoire","shortname":":flag_ci:","category":9,"emoji_order":3620},{"name":"flag: Cook Islands","shortname":":flag_ck:","category":9,"emoji_order":3621},{"name":"flag: Chile","shortname":":flag_cl:","category":9,"emoji_order":3622},{"name":"flag: Cameroon","shortname":":flag_cm:","category":9,"emoji_order":3623},{"name":"flag: China","shortname":":flag_cn:","category":9,"emoji_order":3624},{"name":"flag: Colombia","shortname":":flag_co:","category":9,"emoji_order":3625},{"name":"flag: Clipperton Island","shortname":":flag_cp:","category":9,"emoji_order":3626},{"name":"flag: Costa Rica","shortname":":flag_cr:","category":9,"emoji_order":3627},{"name":"flag: Cuba","shortname":":flag_cu:","category":9,"emoji_order":3628},{"name":"flag: Cape Verde","shortname":":flag_cv:","category":9,"emoji_order":3629},{"name":"flag: Curaçao","shortname":":flag_cw:","category":9,"emoji_order":3630},{"name":"flag: Christmas Island","shortname":":flag_cx:","category":9,"emoji_order":3631},{"name":"flag: Cyprus","shortname":":flag_cy:","category":9,"emoji_order":3632},{"name":"flag: Czechia","shortname":":flag_cz:","category":9,"emoji_order":3633},{"name":"flag: Germany","shortname":":flag_de:","category":9,"emoji_order":3634},{"name":"flag: Diego Garcia","shortname":":flag_dg:","category":9,"emoji_order":3635},{"name":"flag: Djibouti","shortname":":flag_dj:","category":9,"emoji_order":3636},{"name":"flag: Denmark","shortname":":flag_dk:","category":9,"emoji_order":3637},{"name":"flag: Dominica","shortname":":flag_dm:","category":9,"emoji_order":3638},{"name":"flag: Dominican Republic","shortname":":flag_do:","category":9,"emoji_order":3639},{"name":"flag: Algeria","shortname":":flag_dz:","category":9,"emoji_order":3640},{"name":"flag: Ceuta & Melilla","shortname":":flag_ea:","category":9,"emoji_order":3641},{"name":"flag: Ecuador","shortname":":flag_ec:","category":9,"emoji_order":3642},{"name":"flag: Estonia","shortname":":flag_ee:","category":9,"emoji_order":3643},{"name":"flag: Egypt","shortname":":flag_eg:","category":9,"emoji_order":3644},{"name":"flag: Western Sahara","shortname":":flag_eh:","category":9,"emoji_order":3645},{"name":"flag: Eritrea","shortname":":flag_er:","category":9,"emoji_order":3646},{"name":"flag: Spain","shortname":":flag_es:","category":9,"emoji_order":3647},{"name":"flag: Ethiopia","shortname":":flag_et:","category":9,"emoji_order":3648},{"name":"flag: European Union","shortname":":flag_eu:","category":9,"emoji_order":3649},{"name":"flag: Finland","shortname":":flag_fi:","category":9,"emoji_order":3650},{"name":"flag: Fiji","shortname":":flag_fj:","category":9,"emoji_order":3651},{"name":"flag: Falkland Islands","shortname":":flag_fk:","category":9,"emoji_order":3652},{"name":"flag: Micronesia","shortname":":flag_fm:","category":9,"emoji_order":3653},{"name":"flag: Faroe Islands","shortname":":flag_fo:","category":9,"emoji_order":3654},{"name":"flag: France","shortname":":flag_fr:","category":9,"emoji_order":3655},{"name":"flag: Gabon","shortname":":flag_ga:","category":9,"emoji_order":3656},{"name":"flag: United Kingdom","shortname":":flag_gb:","category":9,"emoji_order":3657},{"name":"flag: Grenada","shortname":":flag_gd:","category":9,"emoji_order":3658},{"name":"flag: Georgia","shortname":":flag_ge:","category":9,"emoji_order":3659},{"name":"flag: French Guiana","shortname":":flag_gf:","category":9,"emoji_order":3660},{"name":"flag: Guernsey","shortname":":flag_gg:","category":9,"emoji_order":3661},{"name":"flag: Ghana","shortname":":flag_gh:","category":9,"emoji_order":3662},{"name":"flag: Gibraltar","shortname":":flag_gi:","category":9,"emoji_order":3663},{"name":"flag: Greenland","shortname":":flag_gl:","category":9,"emoji_order":3664},{"name":"flag: Gambia","shortname":":flag_gm:","category":9,"emoji_order":3665},{"name":"flag: Guinea","shortname":":flag_gn:","category":9,"emoji_order":3666},{"name":"flag: Guadeloupe","shortname":":flag_gp:","category":9,"emoji_order":3667},{"name":"flag: Equatorial Guinea","shortname":":flag_gq:","category":9,"emoji_order":3668},{"name":"flag: Greece","shortname":":flag_gr:","category":9,"emoji_order":3669},{"name":"flag: South Georgia & South Sandwich Islands","shortname":":flag_gs:","category":9,"emoji_order":3670},{"name":"flag: Guatemala","shortname":":flag_gt:","category":9,"emoji_order":3671},{"name":"flag: Guam","shortname":":flag_gu:","category":9,"emoji_order":3672},{"name":"flag: Guinea-Bissau","shortname":":flag_gw:","category":9,"emoji_order":3673},{"name":"flag: Guyana","shortname":":flag_gy:","category":9,"emoji_order":3674},{"name":"flag: Hong Kong SAR China","shortname":":flag_hk:","category":9,"emoji_order":3675},{"name":"flag: Heard & McDonald Islands","shortname":":flag_hm:","category":9,"emoji_order":3676},{"name":"flag: Honduras","shortname":":flag_hn:","category":9,"emoji_order":3677},{"name":"flag: Croatia","shortname":":flag_hr:","category":9,"emoji_order":3678},{"name":"flag: Haiti","shortname":":flag_ht:","category":9,"emoji_order":3679},{"name":"flag: Hungary","shortname":":flag_hu:","category":9,"emoji_order":3680},{"name":"flag: Canary Islands","shortname":":flag_ic:","category":9,"emoji_order":3681},{"name":"flag: Indonesia","shortname":":flag_id:","category":9,"emoji_order":3682},{"name":"flag: Ireland","shortname":":flag_ie:","category":9,"emoji_order":3683},{"name":"flag: Israel","shortname":":flag_il:","category":9,"emoji_order":3684},{"name":"flag: Isle of Man","shortname":":flag_im:","category":9,"emoji_order":3685},{"name":"flag: India","shortname":":flag_in:","category":9,"emoji_order":3686},{"name":"flag: British Indian Ocean Territory","shortname":":flag_io:","category":9,"emoji_order":3687},{"name":"flag: Iraq","shortname":":flag_iq:","category":9,"emoji_order":3688},{"name":"flag: Iran","shortname":":flag_ir:","category":9,"emoji_order":3689},{"name":"flag: Iceland","shortname":":flag_is:","category":9,"emoji_order":3690},{"name":"flag: Italy","shortname":":flag_it:","category":9,"emoji_order":3691},{"name":"flag: Jersey","shortname":":flag_je:","category":9,"emoji_order":3692},{"name":"flag: Jamaica","shortname":":flag_jm:","category":9,"emoji_order":3693},{"name":"flag: Jordan","shortname":":flag_jo:","category":9,"emoji_order":3694},{"name":"flag: Japan","shortname":":flag_jp:","category":9,"emoji_order":3695},{"name":"flag: Kenya","shortname":":flag_ke:","category":9,"emoji_order":3696},{"name":"flag: Kyrgyzstan","shortname":":flag_kg:","category":9,"emoji_order":3697},{"name":"flag: Cambodia","shortname":":flag_kh:","category":9,"emoji_order":3698},{"name":"flag: Kiribati","shortname":":flag_ki:","category":9,"emoji_order":3699},{"name":"flag: Comoros","shortname":":flag_km:","category":9,"emoji_order":3700},{"name":"flag: St. Kitts & Nevis","shortname":":flag_kn:","category":9,"emoji_order":3701},{"name":"flag: North Korea","shortname":":flag_kp:","category":9,"emoji_order":3702},{"name":"flag: South Korea","shortname":":flag_kr:","category":9,"emoji_order":3703},{"name":"flag: Kuwait","shortname":":flag_kw:","category":9,"emoji_order":3704},{"name":"flag: Cayman Islands","shortname":":flag_ky:","category":9,"emoji_order":3705},{"name":"flag: Kazakhstan","shortname":":flag_kz:","category":9,"emoji_order":3706},{"name":"flag: Laos","shortname":":flag_la:","category":9,"emoji_order":3707},{"name":"flag: Lebanon","shortname":":flag_lb:","category":9,"emoji_order":3708},{"name":"flag: St. Lucia","shortname":":flag_lc:","category":9,"emoji_order":3709},{"name":"flag: Liechtenstein","shortname":":flag_li:","category":9,"emoji_order":3710},{"name":"flag: Sri Lanka","shortname":":flag_lk:","category":9,"emoji_order":3711},{"name":"flag: Liberia","shortname":":flag_lr:","category":9,"emoji_order":3712},{"name":"flag: Lesotho","shortname":":flag_ls:","category":9,"emoji_order":3713},{"name":"flag: Lithuania","shortname":":flag_lt:","category":9,"emoji_order":3714},{"name":"flag: Luxembourg","shortname":":flag_lu:","category":9,"emoji_order":3715},{"name":"flag: Latvia","shortname":":flag_lv:","category":9,"emoji_order":3716},{"name":"flag: Libya","shortname":":flag_ly:","category":9,"emoji_order":3717},{"name":"flag: Morocco","shortname":":flag_ma:","category":9,"emoji_order":3718},{"name":"flag: Monaco","shortname":":flag_mc:","category":9,"emoji_order":3719},{"name":"flag: Moldova","shortname":":flag_md:","category":9,"emoji_order":3720},{"name":"flag: Montenegro","shortname":":flag_me:","category":9,"emoji_order":3721},{"name":"flag: St. Martin","shortname":":flag_mf:","category":9,"emoji_order":3722},{"name":"flag: Madagascar","shortname":":flag_mg:","category":9,"emoji_order":3723},{"name":"flag: Marshall Islands","shortname":":flag_mh:","category":9,"emoji_order":3724},{"name":"flag: North Macedonia","shortname":":flag_mk:","category":9,"emoji_order":3725},{"name":"flag: Mali","shortname":":flag_ml:","category":9,"emoji_order":3726},{"name":"flag: Myanmar (Burma)","shortname":":flag_mm:","category":9,"emoji_order":3727},{"name":"flag: Mongolia","shortname":":flag_mn:","category":9,"emoji_order":3728},{"name":"flag: Macao SAR China","shortname":":flag_mo:","category":9,"emoji_order":3729},{"name":"flag: Northern Mariana Islands","shortname":":flag_mp:","category":9,"emoji_order":3730},{"name":"flag: Martinique","shortname":":flag_mq:","category":9,"emoji_order":3731},{"name":"flag: Mauritania","shortname":":flag_mr:","category":9,"emoji_order":3732},{"name":"flag: Montserrat","shortname":":flag_ms:","category":9,"emoji_order":3733},{"name":"flag: Malta","shortname":":flag_mt:","category":9,"emoji_order":3734},{"name":"flag: Mauritius","shortname":":flag_mu:","category":9,"emoji_order":3735},{"name":"flag: Maldives","shortname":":flag_mv:","category":9,"emoji_order":3736},{"name":"flag: Malawi","shortname":":flag_mw:","category":9,"emoji_order":3737},{"name":"flag: Mexico","shortname":":flag_mx:","category":9,"emoji_order":3738},{"name":"flag: Malaysia","shortname":":flag_my:","category":9,"emoji_order":3739},{"name":"flag: Mozambique","shortname":":flag_mz:","category":9,"emoji_order":3740},{"name":"flag: Namibia","shortname":":flag_na:","category":9,"emoji_order":3741},{"name":"flag: New Caledonia","shortname":":flag_nc:","category":9,"emoji_order":3742},{"name":"flag: Niger","shortname":":flag_ne:","category":9,"emoji_order":3743},{"name":"flag: Norfolk Island","shortname":":flag_nf:","category":9,"emoji_order":3744},{"name":"flag: Nigeria","shortname":":flag_ng:","category":9,"emoji_order":3745},{"name":"flag: Nicaragua","shortname":":flag_ni:","category":9,"emoji_order":3746},{"name":"flag: Netherlands","shortname":":flag_nl:","category":9,"emoji_order":3747},{"name":"flag: Norway","shortname":":flag_no:","category":9,"emoji_order":3748},{"name":"flag: Nepal","shortname":":flag_np:","category":9,"emoji_order":3749},{"name":"flag: Nauru","shortname":":flag_nr:","category":9,"emoji_order":3750},{"name":"flag: Niue","shortname":":flag_nu:","category":9,"emoji_order":3751},{"name":"flag: New Zealand","shortname":":flag_nz:","category":9,"emoji_order":3752},{"name":"flag: Oman","shortname":":flag_om:","category":9,"emoji_order":3753},{"name":"flag: Panama","shortname":":flag_pa:","category":9,"emoji_order":3754},{"name":"flag: Peru","shortname":":flag_pe:","category":9,"emoji_order":3755},{"name":"flag: French Polynesia","shortname":":flag_pf:","category":9,"emoji_order":3756},{"name":"flag: Papua New Guinea","shortname":":flag_pg:","category":9,"emoji_order":3757},{"name":"flag: Philippines","shortname":":flag_ph:","category":9,"emoji_order":3758},{"name":"flag: Pakistan","shortname":":flag_pk:","category":9,"emoji_order":3759},{"name":"flag: Poland","shortname":":flag_pl:","category":9,"emoji_order":3760},{"name":"flag: St. Pierre & Miquelon","shortname":":flag_pm:","category":9,"emoji_order":3761},{"name":"flag: Pitcairn Islands","shortname":":flag_pn:","category":9,"emoji_order":3762},{"name":"flag: Puerto Rico","shortname":":flag_pr:","category":9,"emoji_order":3763},{"name":"flag: Palestinian Territories","shortname":":flag_ps:","category":9,"emoji_order":3764},{"name":"flag: Portugal","shortname":":flag_pt:","category":9,"emoji_order":3765},{"name":"flag: Palau","shortname":":flag_pw:","category":9,"emoji_order":3766},{"name":"flag: Paraguay","shortname":":flag_py:","category":9,"emoji_order":3767},{"name":"flag: Qatar","shortname":":flag_qa:","category":9,"emoji_order":3768},{"name":"flag: Réunion","shortname":":flag_re:","category":9,"emoji_order":3769},{"name":"flag: Romania","shortname":":flag_ro:","category":9,"emoji_order":3770},{"name":"flag: Serbia","shortname":":flag_rs:","category":9,"emoji_order":3771},{"name":"flag: Russia","shortname":":flag_ru:","category":9,"emoji_order":3772},{"name":"flag: Rwanda","shortname":":flag_rw:","category":9,"emoji_order":3773},{"name":"flag: Saudi Arabia","shortname":":flag_sa:","category":9,"emoji_order":3774},{"name":"flag: Solomon Islands","shortname":":flag_sb:","category":9,"emoji_order":3775},{"name":"flag: Seychelles","shortname":":flag_sc:","category":9,"emoji_order":3776},{"name":"flag: Sudan","shortname":":flag_sd:","category":9,"emoji_order":3777},{"name":"flag: Sweden","shortname":":flag_se:","category":9,"emoji_order":3778},{"name":"flag: Singapore","shortname":":flag_sg:","category":9,"emoji_order":3779},{"name":"flag: St. Helena","shortname":":flag_sh:","category":9,"emoji_order":3780},{"name":"flag: Slovenia","shortname":":flag_si:","category":9,"emoji_order":3781},{"name":"flag: Svalbard & Jan Mayen","shortname":":flag_sj:","category":9,"emoji_order":3782},{"name":"flag: Slovakia","shortname":":flag_sk:","category":9,"emoji_order":3783},{"name":"flag: Sierra Leone","shortname":":flag_sl:","category":9,"emoji_order":3784},{"name":"flag: San Marino","shortname":":flag_sm:","category":9,"emoji_order":3785},{"name":"flag: Senegal","shortname":":flag_sn:","category":9,"emoji_order":3786},{"name":"flag: Somalia","shortname":":flag_so:","category":9,"emoji_order":3787},{"name":"flag: Suriname","shortname":":flag_sr:","category":9,"emoji_order":3788},{"name":"flag: South Sudan","shortname":":flag_ss:","category":9,"emoji_order":3789},{"name":"flag: São Tomé & Príncipe","shortname":":flag_st:","category":9,"emoji_order":3790},{"name":"flag: El Salvador","shortname":":flag_sv:","category":9,"emoji_order":3791},{"name":"flag: Sint Maarten","shortname":":flag_sx:","category":9,"emoji_order":3792},{"name":"flag: Syria","shortname":":flag_sy:","category":9,"emoji_order":3793},{"name":"flag: Eswatini","shortname":":flag_sz:","category":9,"emoji_order":3794},{"name":"flag: Tristan da Cunha","shortname":":flag_ta:","category":9,"emoji_order":3795},{"name":"flag: Turks & Caicos Islands","shortname":":flag_tc:","category":9,"emoji_order":3796},{"name":"flag: Chad","shortname":":flag_td:","category":9,"emoji_order":3797},{"name":"flag: French Southern Territories","shortname":":flag_tf:","category":9,"emoji_order":3798},{"name":"flag: Togo","shortname":":flag_tg:","category":9,"emoji_order":3799},{"name":"flag: Thailand","shortname":":flag_th:","category":9,"emoji_order":3800},{"name":"flag: Tajikistan","shortname":":flag_tj:","category":9,"emoji_order":3801},{"name":"flag: Tokelau","shortname":":flag_tk:","category":9,"emoji_order":3802},{"name":"flag: Timor-Leste","shortname":":flag_tl:","category":9,"emoji_order":3803},{"name":"flag: Turkmenistan","shortname":":flag_tm:","category":9,"emoji_order":3804},{"name":"flag: Tunisia","shortname":":flag_tn:","category":9,"emoji_order":3805},{"name":"flag: Tonga","shortname":":flag_to:","category":9,"emoji_order":3806},{"name":"flag: Turkey","shortname":":flag_tr:","category":9,"emoji_order":3807},{"name":"flag: Trinidad & Tobago","shortname":":flag_tt:","category":9,"emoji_order":3808},{"name":"flag: Tuvalu","shortname":":flag_tv:","category":9,"emoji_order":3809},{"name":"flag: Taiwan","shortname":":flag_tw:","category":9,"emoji_order":3810},{"name":"flag: Tanzania","shortname":":flag_tz:","category":9,"emoji_order":3811},{"name":"flag: Ukraine","shortname":":flag_ua:","category":9,"emoji_order":3812},{"name":"flag: Uganda","shortname":":flag_ug:","category":9,"emoji_order":3813},{"name":"flag: U.S. Outlying Islands","shortname":":flag_um:","category":9,"emoji_order":3814},{"name":"flag: United Nations","shortname":":flag_un:","category":9,"emoji_order":3815},{"name":"flag: United States","shortname":":flag_us:","category":9,"emoji_order":3816,"aliases":[":usa:"]},{"name":"flag: Uruguay","shortname":":flag_uy:","category":9,"emoji_order":3817},{"name":"flag: Uzbekistan","shortname":":flag_uz:","category":9,"emoji_order":3818},{"name":"flag: Vatican City","shortname":":flag_va:","category":9,"emoji_order":3819},{"name":"flag: St. Vincent & Grenadines","shortname":":flag_vc:","category":9,"emoji_order":3820},{"name":"flag: Venezuela","shortname":":flag_ve:","category":9,"emoji_order":3821},{"name":"flag: British Virgin Islands","shortname":":flag_vg:","category":9,"emoji_order":3822},{"name":"flag: U.S. Virgin Islands","shortname":":flag_vi:","category":9,"emoji_order":3823},{"name":"flag: Vietnam","shortname":":flag_vn:","category":9,"emoji_order":3824},{"name":"flag: Vanuatu","shortname":":flag_vu:","category":9,"emoji_order":3825},{"name":"flag: Wallis & Futuna","shortname":":flag_wf:","category":9,"emoji_order":3826},{"name":"flag: Samoa","shortname":":flag_ws:","category":9,"emoji_order":3827},{"name":"flag: Kosovo","shortname":":flag_xk:","category":9,"emoji_order":3828},{"name":"flag: Yemen","shortname":":flag_ye:","category":9,"emoji_order":3829},{"name":"flag: Mayotte","shortname":":flag_yt:","category":9,"emoji_order":3830},{"name":"flag: South Africa","shortname":":flag_za:","category":9,"emoji_order":3831},{"name":"flag: Zambia","shortname":":flag_zm:","category":9,"emoji_order":3832},{"name":"flag: Zimbabwe","shortname":":flag_zw:","category":9,"emoji_order":3833},{"name":"flag: England","shortname":":flag_gbeng:","category":9,"emoji_order":3834,"aliases":[":england:"]},{"name":"flag: Scotland","shortname":":flag_gbsct:","category":9,"emoji_order":3835,"aliases":[":scotland:"]},{"name":"flag: Wales","shortname":":flag_gbwls:","category":9,"emoji_order":3836,"aliases":[":wales:"]}]
\ No newline at end of file
diff --git a/src/utils/Accessibility.js b/src/utils/Accessibility.js
new file mode 100644
index 0000000000..f4909f971b
--- /dev/null
+++ b/src/utils/Accessibility.js
@@ -0,0 +1,28 @@
+/*
+Copyright 2019 The Matrix.org Foundation C.I.C.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+/**
+ * Automatically focuses the captured reference when receiving a non-null
+ * object. Useful in scenarios where componentDidMount does not have a
+ * useful reference to an element, but one needs to focus the element on
+ * first render. Example usage: ref={focusCapturedRef}
+ * @param {function} ref The React reference to focus on, if not null
+ */
+export function focusCapturedRef(ref) {
+ if (ref) {
+ ref.focus();
+ }
+}
diff --git a/src/utils/FontManager.js b/src/utils/FontManager.js
new file mode 100644
index 0000000000..b4123c6368
--- /dev/null
+++ b/src/utils/FontManager.js
@@ -0,0 +1,89 @@
+/*
+Copyright 2019 The Matrix.org Foundation C.I.C.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+/*
+ * Based on...
+ * ChromaCheck 1.16
+ * author Roel Nieskens, https://pixelambacht.nl
+ * MIT license
+ */
+
+let colrFontSupported = undefined;
+
+async function isColrFontSupported() {
+ if (colrFontSupported !== undefined) {
+ return colrFontSupported;
+ }
+
+ // Firefox has supported COLR fonts since version 26
+ // but doesn't support the check below with content blocking enabled.
+ if (navigator.userAgent.includes("Firefox")) {
+ colrFontSupported = true;
+ return colrFontSupported;
+ }
+
+ try {
+ const canvas = document.createElement('canvas');
+ const context = canvas.getContext('2d');
+ const img = new Image();
+ // eslint-disable-next-line
+ const fontCOLR = 'd09GRgABAAAAAAKAAAwAAAAAAowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABDT0xSAAACVAAAABYAAAAYAAIAJUNQQUwAAAJsAAAAEgAAABLJAAAQT1MvMgAAAYAAAAA6AAAAYBfxJ0pjbWFwAAABxAAAACcAAAAsAAzpM2dseWYAAAH0AAAAGgAAABoNIh0kaGVhZAAAARwAAAAvAAAANgxLumdoaGVhAAABTAAAABUAAAAkCAEEAmhtdHgAAAG8AAAABgAAAAYEAAAAbG9jYQAAAewAAAAGAAAABgANAABtYXhwAAABZAAAABsAAAAgAg4AHW5hbWUAAAIQAAAAOAAAAD4C5wsecG9zdAAAAkgAAAAMAAAAIAADAAB4AWNgZGAAYQ5+qdB4fpuvDNIsDCBwaQGTAIi+VlscBaJZGMDiHAxMIAoAtjIF/QB4AWNgZGBgYQACOAkUQQWMAAGRABAAAAB4AWNgZGBgYGJgAdMMUJILJMQgAWICAAH3AC4AeAFjYGFhYJzAwMrAwDST6QwDA0M/hGZ8zWDMyMmAChgFkDgKQMBw4CXDSwYWEBdIYgAFBgYA/8sIdAAABAAAAAAAAAB4AWNgYGBkYAZiBgYeBhYGBSDNAoRA/kuG//8hpDgjWJ4BAFVMBiYAAAAAAAANAAAAAQAAAAAEAAQAAAMAABEhESEEAPwABAD8AAAAeAEtxgUNgAAAAMHHIQTShTlOAty9/4bf7AARCwlBNhBw4L/43qXjYGUmf19TMuLcj/BJL3XfBg54AWNgZsALAAB9AAR4AWNgYGAEYj4gFgGygGwICQACOwAoAAAAAAABAAEAAQAAAA4AAAAAyP8AAA==';
+ const svg = `
+ `;
+ canvas.width = 20;
+ canvas.height = 100;
+
+ img.src = 'data:image/svg+xml;charset=utf-8,' + encodeURIComponent(svg);
+
+ // FIXME wait for safari load our colr font
+ const wait = ms => new Promise((r, j)=>setTimeout(r, ms));
+ await wait(500);
+
+ context.drawImage(img, 0, 0);
+ colrFontSupported = (context.getImageData(10, 10, 1, 1).data[0] === 200);
+ } catch (e) {
+ console.error("Couldn't load colr font", e);
+ colrFontSupported = false;
+ }
+ return colrFontSupported;
+}
+
+export async function fixupColorFonts() {
+ if (colrFontSupported !== undefined) {
+ return;
+ }
+
+ if (await isColrFontSupported()) {
+ const path = `url('${require("../../res/fonts/Twemoji_Mozilla/TwemojiMozilla-colr.woff2")}')`;
+ document.fonts.add(new FontFace("Twemoji", path, {}));
+ // For at least Chrome on Windows 10, we have to explictly add extra
+ // weights for the emoji to appear in bold messages, etc.
+ document.fonts.add(new FontFace("Twemoji", path, { weight: 600 }));
+ document.fonts.add(new FontFace("Twemoji", path, { weight: 700 }));
+ }
+ // if not supported, the browser will fall back to one of the native fonts specified.
+}
+
diff --git a/yarn.lock b/yarn.lock
index 22072971eb..115aa73f45 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2576,10 +2576,15 @@ emoji-regex@^7.0.1:
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156"
integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==
-emojione@2.2.7:
- version "2.2.7"
- resolved "https://registry.yarnpkg.com/emojione/-/emojione-2.2.7.tgz#46457cf6b9b2f8da13ae8a2e4e547de06ee15e96"
- integrity sha1-RkV89rmy+NoTroouTlR94G7hXpY=
+emojibase-data@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.yarnpkg.com/emojibase-data/-/emojibase-data-4.0.0.tgz#3feb3e5bb5e5f2b6373b183b0f038c60889a9e29"
+ integrity sha512-Yi4A1IxB7iZ+09Wqr2BEpHSQfugc5I8G+wckDOhCia0F7oOdErf/85jCwbpRQy7xtBbvlyS3xQrYedSeQot5Og==
+
+emojibase-regex@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/emojibase-regex/-/emojibase-regex-3.0.0.tgz#fc7a17aa20584df5a73619f06ac236b8a5bb452d"
+ integrity sha512-iNDkbtn8UxKTxjIlvHLqfXovZaIulnuuyo2/emU+ZlPr2OmzxGfiDI+iIQ3WWqdlA6lgjrPNWgpbytt4lnJYrg==
emojis-list@^2.0.0:
version "2.1.0"