+
diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js
index 78177c84de139..9e65db85c6f7f 100644
--- a/app/javascript/mastodon/components/status.js
+++ b/app/javascript/mastodon/components/status.js
@@ -37,7 +37,7 @@ export default class Status extends ImmutablePureComponent {
onBlock: PropTypes.func,
onEmbed: PropTypes.func,
onHeightChange: PropTypes.func,
- me: PropTypes.number,
+ me: PropTypes.string,
boostModal: PropTypes.bool,
autoPlayGif: PropTypes.bool,
muted: PropTypes.bool,
@@ -73,7 +73,7 @@ export default class Status extends ImmutablePureComponent {
handleAccountClick = (e) => {
if (this.context.router && e.button === 0) {
- const id = Number(e.currentTarget.getAttribute('data-id'));
+ const id = e.currentTarget.getAttribute('data-id');
e.preventDefault();
this.context.router.history.push(`/accounts/${id}`);
}
diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js
index b8f5dbce76917..cf9c8fb53927c 100644
--- a/app/javascript/mastodon/components/status_action_bar.js
+++ b/app/javascript/mastodon/components/status_action_bar.js
@@ -49,7 +49,7 @@ export default class StatusActionBar extends ImmutablePureComponent {
onEmbed: PropTypes.func,
onMuteConversation: PropTypes.func,
onPin: PropTypes.func,
- me: PropTypes.number,
+ me: PropTypes.string,
withDismiss: PropTypes.bool,
intl: PropTypes.object.isRequired,
};
diff --git a/app/javascript/mastodon/emoji.js b/app/javascript/mastodon/emoji.js
index 865b85b611d98..d75f6f5982c28 100644
--- a/app/javascript/mastodon/emoji.js
+++ b/app/javascript/mastodon/emoji.js
@@ -3,48 +3,70 @@ import Trie from 'substring-trie';
const trie = new Trie(Object.keys(unicodeMapping));
+const assetHost = process.env.CDN_HOST || '';
+
const emojify = (str, customEmojis = {}) => {
- // This walks through the string from start to end, ignoring any tags (
, , etc.)
- // and replacing valid unicode strings
- // that _aren't_ within tags with an version.
- // The goal is to be the same as an emojione.regUnicode replacement, but faster.
- let i = -1;
- let insideTag = false;
- let insideShortname = false;
- let shortnameStartIndex = -1;
- let match;
- while (++i < str.length) {
- const char = str.charAt(i);
- if (insideShortname && char === ':') {
- const shortname = str.substring(shortnameStartIndex, i + 1);
- if (shortname in customEmojis) {
- const replacement = ` `;
- str = str.substring(0, shortnameStartIndex) + replacement + str.substring(i + 1);
- i += (replacement.length - shortname.length - 1); // jump ahead the length we've added to the string
- } else {
- i--;
- }
- insideShortname = false;
- } else if (insideTag && char === '>') {
- insideTag = false;
- } else if (char === '<') {
- insideTag = true;
- insideShortname = false;
- } else if (!insideTag && char === ':') {
- insideShortname = true;
- shortnameStartIndex = i;
- } else if (!insideTag && (match = trie.search(str.substring(i)))) {
- const unicodeStr = match;
- if (unicodeStr in unicodeMapping) {
- const [filename, shortCode] = unicodeMapping[unicodeStr];
- const alt = unicodeStr;
- const replacement = ` `;
- str = str.substring(0, i) + replacement + str.substring(i + unicodeStr.length);
- i += (replacement.length - unicodeStr.length); // jump ahead the length we've added to the string
- }
+ let rtn = '';
+ for (;;) {
+ let match, i = 0, tag;
+ while (i < str.length && (tag = '<&'.indexOf(str[i])) === -1 && str[i] !== ':' && !(match = trie.search(str.slice(i)))) {
+ i += str.codePointAt(i) < 65536 ? 1 : 2;
+ }
+ if (i === str.length)
+ break;
+ else if (tag >= 0) {
+ const tagend = str.indexOf('>;'[tag], i + 1) + 1;
+ if (!tagend)
+ break;
+ rtn += str.slice(0, tagend);
+ str = str.slice(tagend);
+ } else if (str[i] === ':') {
+ try {
+ // if replacing :shortname: succeed, exit this block with "continue"
+ const closeColon = str.indexOf(':', i + 1) + 1;
+ if (!closeColon) throw null; // no pair of ':'
+ const lt = str.indexOf('<', i + 1);
+ if (!(lt === -1 || lt >= closeColon)) throw null; // tag appeared before closing ':'
+ const shortname = str.slice(i, closeColon);
+ if (shortname in customEmojis) {
+ rtn += str.slice(0, i) + ` `;
+ str = str.slice(closeColon);
+ continue;
+ }
+ } catch (e) {}
+ // replacing :shortname: failed
+ rtn += str.slice(0, i + 1);
+ str = str.slice(i + 1);
+ } else {
+ const [filename, shortCode] = unicodeMapping[match];
+ rtn += str.slice(0, i) + ` `;
+ str = str.slice(i + match.length);
}
}
- return str;
+ return rtn + str;
};
export default emojify;
+
+export const buildCustomEmojis = customEmojis => {
+ const emojis = [];
+
+ customEmojis.forEach(emoji => {
+ const shortcode = emoji.get('shortcode');
+ const url = emoji.get('url');
+ const name = shortcode.replace(':', '');
+
+ emojis.push({
+ id: name,
+ name,
+ short_names: [name],
+ text: '',
+ emoticons: [],
+ keywords: [name],
+ imageUrl: url,
+ custom: true,
+ });
+ });
+
+ return emojis;
+};
diff --git a/app/javascript/mastodon/emoji_map.json b/app/javascript/mastodon/emoji_map.json
new file mode 100644
index 0000000000000..13753ba84cc83
--- /dev/null
+++ b/app/javascript/mastodon/emoji_map.json
@@ -0,0 +1 @@
+{"😀":"1f600","😁":"1f601","😂":"1f602","🤣":"1f923","😃":"1f603","😄":"1f604","😅":"1f605","😆":"1f606","😉":"1f609","😊":"1f60a","😋":"1f60b","😎":"1f60e","😍":"1f60d","😘":"1f618","😗":"1f617","😙":"1f619","😚":"1f61a","☺":"263a","🙂":"1f642","🤗":"1f917","🤩":"1f929","🤔":"1f914","🤨":"1f928","😐":"1f610","😑":"1f611","😶":"1f636","🙄":"1f644","😏":"1f60f","😣":"1f623","😥":"1f625","😮":"1f62e","🤐":"1f910","😯":"1f62f","😪":"1f62a","😫":"1f62b","😴":"1f634","😌":"1f60c","😛":"1f61b","😜":"1f61c","😝":"1f61d","🤤":"1f924","😒":"1f612","😓":"1f613","😔":"1f614","😕":"1f615","🙃":"1f643","🤑":"1f911","😲":"1f632","☹":"2639","🙁":"1f641","😖":"1f616","😞":"1f61e","😟":"1f61f","😤":"1f624","😢":"1f622","😭":"1f62d","😦":"1f626","😧":"1f627","😨":"1f628","😩":"1f629","🤯":"1f92f","😬":"1f62c","😰":"1f630","😱":"1f631","😳":"1f633","🤪":"1f92a","😵":"1f635","😡":"1f621","😠":"1f620","🤬":"1f92c","😷":"1f637","🤒":"1f912","🤕":"1f915","🤢":"1f922","🤮":"1f92e","🤧":"1f927","😇":"1f607","🤠":"1f920","🤡":"1f921","🤥":"1f925","🤫":"1f92b","🤭":"1f92d","🧐":"1f9d0","🤓":"1f913","😈":"1f608","👿":"1f47f","👹":"1f479","👺":"1f47a","💀":"1f480","☠":"2620","👻":"1f47b","👽":"1f47d","👾":"1f47e","🤖":"1f916","💩":"1f4a9","😺":"1f63a","😸":"1f638","😹":"1f639","😻":"1f63b","😼":"1f63c","😽":"1f63d","🙀":"1f640","😿":"1f63f","😾":"1f63e","🙈":"1f648","🙉":"1f649","🙊":"1f64a","👶":"1f476","🧒":"1f9d2","👦":"1f466","👧":"1f467","🧑":"1f9d1","👨":"1f468","👩":"1f469","🧓":"1f9d3","👴":"1f474","👵":"1f475","👮":"1f46e","🕵":"1f575","💂":"1f482","👷":"1f477","🤴":"1f934","👸":"1f478","👳":"1f473","👲":"1f472","🧕":"1f9d5","🧔":"1f9d4","👱":"1f471","🤵":"1f935","👰":"1f470","🤰":"1f930","🤱":"1f931","👼":"1f47c","🎅":"1f385","🤶":"1f936","🧙":"1f9d9","🧚":"1f9da","🧛":"1f9db","🧜":"1f9dc","🧝":"1f9dd","🧞":"1f9de","🧟":"1f9df","🙍":"1f64d","🙎":"1f64e","🙅":"1f645","🙆":"1f646","💁":"1f481","🙋":"1f64b","🙇":"1f647","🤦":"1f926","🤷":"1f937","💆":"1f486","💇":"1f487","🚶":"1f6b6","🏃":"1f3c3","💃":"1f483","🕺":"1f57a","👯":"1f46f","🧖":"1f9d6","🧗":"1f9d7","🧘":"1f9d8","🛀":"1f6c0","🛌":"1f6cc","🕴":"1f574","🗣":"1f5e3","👤":"1f464","👥":"1f465","🤺":"1f93a","🏇":"1f3c7","⛷":"26f7","🏂":"1f3c2","🏌":"1f3cc","🏄":"1f3c4","🚣":"1f6a3","🏊":"1f3ca","⛹":"26f9","🏋":"1f3cb","🚴":"1f6b4","🚵":"1f6b5","🏎":"1f3ce","🏍":"1f3cd","🤸":"1f938","🤼":"1f93c","🤽":"1f93d","🤾":"1f93e","🤹":"1f939","👫":"1f46b","👬":"1f46c","👭":"1f46d","💏":"1f48f","💑":"1f491","👪":"1f46a","🤳":"1f933","💪":"1f4aa","👈":"1f448","👉":"1f449","☝":"261d","👆":"1f446","🖕":"1f595","👇":"1f447","✌":"270c","🤞":"1f91e","🖖":"1f596","🤘":"1f918","🤙":"1f919","🖐":"1f590","✋":"270b","👌":"1f44c","👍":"1f44d","👎":"1f44e","✊":"270a","👊":"1f44a","🤛":"1f91b","🤜":"1f91c","🤚":"1f91a","👋":"1f44b","🤟":"1f91f","✍":"270d","👏":"1f44f","👐":"1f450","🙌":"1f64c","🤲":"1f932","🙏":"1f64f","🤝":"1f91d","💅":"1f485","👂":"1f442","👃":"1f443","👣":"1f463","👀":"1f440","👁":"1f441","🧠":"1f9e0","👅":"1f445","👄":"1f444","💋":"1f48b","💘":"1f498","❤":"2764","💓":"1f493","💔":"1f494","💕":"1f495","💖":"1f496","💗":"1f497","💙":"1f499","💚":"1f49a","💛":"1f49b","🧡":"1f9e1","💜":"1f49c","🖤":"1f5a4","💝":"1f49d","💞":"1f49e","💟":"1f49f","❣":"2763","💌":"1f48c","💤":"1f4a4","💢":"1f4a2","💣":"1f4a3","💥":"1f4a5","💦":"1f4a6","💨":"1f4a8","💫":"1f4ab","💬":"1f4ac","🗨":"1f5e8","🗯":"1f5ef","💭":"1f4ad","🕳":"1f573","👓":"1f453","🕶":"1f576","👔":"1f454","👕":"1f455","👖":"1f456","🧣":"1f9e3","🧤":"1f9e4","🧥":"1f9e5","🧦":"1f9e6","👗":"1f457","👘":"1f458","👙":"1f459","👚":"1f45a","👛":"1f45b","👜":"1f45c","👝":"1f45d","🛍":"1f6cd","🎒":"1f392","👞":"1f45e","👟":"1f45f","👠":"1f460","👡":"1f461","👢":"1f462","👑":"1f451","👒":"1f452","🎩":"1f3a9","🎓":"1f393","🧢":"1f9e2","⛑":"26d1","📿":"1f4ff","💄":"1f484","💍":"1f48d","💎":"1f48e","🐵":"1f435","🐒":"1f412","🦍":"1f98d","🐶":"1f436","🐕":"1f415","🐩":"1f429","🐺":"1f43a","🦊":"1f98a","🐱":"1f431","🐈":"1f408","🦁":"1f981","🐯":"1f42f","🐅":"1f405","🐆":"1f406","🐴":"1f434","🐎":"1f40e","🦄":"1f984","🦓":"1f993","🦌":"1f98c","🐮":"1f42e","🐂":"1f402","🐃":"1f403","🐄":"1f404","🐷":"1f437","🐖":"1f416","🐗":"1f417","🐽":"1f43d","🐏":"1f40f","🐑":"1f411","🐐":"1f410","🐪":"1f42a","🐫":"1f42b","🦒":"1f992","🐘":"1f418","🦏":"1f98f","🐭":"1f42d","🐁":"1f401","🐀":"1f400","🐹":"1f439","🐰":"1f430","🐇":"1f407","🐿":"1f43f","🦔":"1f994","🦇":"1f987","🐻":"1f43b","🐨":"1f428","🐼":"1f43c","🐾":"1f43e","🦃":"1f983","🐔":"1f414","🐓":"1f413","🐣":"1f423","🐤":"1f424","🐥":"1f425","🐦":"1f426","🐧":"1f427","🕊":"1f54a","🦅":"1f985","🦆":"1f986","🦉":"1f989","🐸":"1f438","🐊":"1f40a","🐢":"1f422","🦎":"1f98e","🐍":"1f40d","🐲":"1f432","🐉":"1f409","🦕":"1f995","🦖":"1f996","🐳":"1f433","🐋":"1f40b","🐬":"1f42c","🐟":"1f41f","🐠":"1f420","🐡":"1f421","🦈":"1f988","🐙":"1f419","🐚":"1f41a","🦀":"1f980","🦐":"1f990","🦑":"1f991","🐌":"1f40c","🦋":"1f98b","🐛":"1f41b","🐜":"1f41c","🐝":"1f41d","🐞":"1f41e","🦗":"1f997","🕷":"1f577","🕸":"1f578","🦂":"1f982","💐":"1f490","🌸":"1f338","💮":"1f4ae","🏵":"1f3f5","🌹":"1f339","🥀":"1f940","🌺":"1f33a","🌻":"1f33b","🌼":"1f33c","🌷":"1f337","🌱":"1f331","🌲":"1f332","🌳":"1f333","🌴":"1f334","🌵":"1f335","🌾":"1f33e","🌿":"1f33f","☘":"2618","🍀":"1f340","🍁":"1f341","🍂":"1f342","🍃":"1f343","🍇":"1f347","🍈":"1f348","🍉":"1f349","🍊":"1f34a","🍋":"1f34b","🍌":"1f34c","🍍":"1f34d","🍎":"1f34e","🍏":"1f34f","🍐":"1f350","🍑":"1f351","🍒":"1f352","🍓":"1f353","🥝":"1f95d","🍅":"1f345","🥥":"1f965","🥑":"1f951","🍆":"1f346","🥔":"1f954","🥕":"1f955","🌽":"1f33d","🌶":"1f336","🥒":"1f952","🥦":"1f966","🍄":"1f344","🥜":"1f95c","🌰":"1f330","🍞":"1f35e","🥐":"1f950","🥖":"1f956","🥨":"1f968","🥞":"1f95e","🧀":"1f9c0","🍖":"1f356","🍗":"1f357","🥩":"1f969","🥓":"1f953","🍔":"1f354","🍟":"1f35f","🍕":"1f355","🌭":"1f32d","🥪":"1f96a","🌮":"1f32e","🌯":"1f32f","🥙":"1f959","🥚":"1f95a","🍳":"1f373","🥘":"1f958","🍲":"1f372","🥣":"1f963","🥗":"1f957","🍿":"1f37f","🥫":"1f96b","🍱":"1f371","🍘":"1f358","🍙":"1f359","🍚":"1f35a","🍛":"1f35b","🍜":"1f35c","🍝":"1f35d","🍠":"1f360","🍢":"1f362","🍣":"1f363","🍤":"1f364","🍥":"1f365","🍡":"1f361","🥟":"1f95f","🥠":"1f960","🥡":"1f961","🍦":"1f366","🍧":"1f367","🍨":"1f368","🍩":"1f369","🍪":"1f36a","🎂":"1f382","🍰":"1f370","🥧":"1f967","🍫":"1f36b","🍬":"1f36c","🍭":"1f36d","🍮":"1f36e","🍯":"1f36f","🍼":"1f37c","🥛":"1f95b","☕":"2615","🍵":"1f375","🍶":"1f376","🍾":"1f37e","🍷":"1f377","🍸":"1f378","🍹":"1f379","🍺":"1f37a","🍻":"1f37b","🥂":"1f942","🥃":"1f943","🥤":"1f964","🥢":"1f962","🍽":"1f37d","🍴":"1f374","🥄":"1f944","🔪":"1f52a","🏺":"1f3fa","🌍":"1f30d","🌎":"1f30e","🌏":"1f30f","🌐":"1f310","🗺":"1f5fa","🗾":"1f5fe","🏔":"1f3d4","⛰":"26f0","🌋":"1f30b","🗻":"1f5fb","🏕":"1f3d5","🏖":"1f3d6","🏜":"1f3dc","🏝":"1f3dd","🏞":"1f3de","🏟":"1f3df","🏛":"1f3db","🏗":"1f3d7","🏘":"1f3d8","🏙":"1f3d9","🏚":"1f3da","🏠":"1f3e0","🏡":"1f3e1","🏢":"1f3e2","🏣":"1f3e3","🏤":"1f3e4","🏥":"1f3e5","🏦":"1f3e6","🏨":"1f3e8","🏩":"1f3e9","🏪":"1f3ea","🏫":"1f3eb","🏬":"1f3ec","🏭":"1f3ed","🏯":"1f3ef","🏰":"1f3f0","💒":"1f492","🗼":"1f5fc","🗽":"1f5fd","⛪":"26ea","🕌":"1f54c","🕍":"1f54d","⛩":"26e9","🕋":"1f54b","⛲":"26f2","⛺":"26fa","🌁":"1f301","🌃":"1f303","🌄":"1f304","🌅":"1f305","🌆":"1f306","🌇":"1f307","🌉":"1f309","♨":"2668","🌌":"1f30c","🎠":"1f3a0","🎡":"1f3a1","🎢":"1f3a2","💈":"1f488","🎪":"1f3aa","🎭":"1f3ad","🖼":"1f5bc","🎨":"1f3a8","🎰":"1f3b0","🚂":"1f682","🚃":"1f683","🚄":"1f684","🚅":"1f685","🚆":"1f686","🚇":"1f687","🚈":"1f688","🚉":"1f689","🚊":"1f68a","🚝":"1f69d","🚞":"1f69e","🚋":"1f68b","🚌":"1f68c","🚍":"1f68d","🚎":"1f68e","🚐":"1f690","🚑":"1f691","🚒":"1f692","🚓":"1f693","🚔":"1f694","🚕":"1f695","🚖":"1f696","🚗":"1f697","🚘":"1f698","🚙":"1f699","🚚":"1f69a","🚛":"1f69b","🚜":"1f69c","🚲":"1f6b2","🛴":"1f6f4","🛵":"1f6f5","🚏":"1f68f","🛣":"1f6e3","🛤":"1f6e4","⛽":"26fd","🚨":"1f6a8","🚥":"1f6a5","🚦":"1f6a6","🚧":"1f6a7","🛑":"1f6d1","⚓":"2693","⛵":"26f5","🛶":"1f6f6","🚤":"1f6a4","🛳":"1f6f3","⛴":"26f4","🛥":"1f6e5","🚢":"1f6a2","✈":"2708","🛩":"1f6e9","🛫":"1f6eb","🛬":"1f6ec","💺":"1f4ba","🚁":"1f681","🚟":"1f69f","🚠":"1f6a0","🚡":"1f6a1","🛰":"1f6f0","🚀":"1f680","🛸":"1f6f8","🛎":"1f6ce","🚪":"1f6aa","🛏":"1f6cf","🛋":"1f6cb","🚽":"1f6bd","🚿":"1f6bf","🛁":"1f6c1","⌛":"231b","⏳":"23f3","⌚":"231a","⏰":"23f0","⏱":"23f1","⏲":"23f2","🕰":"1f570","🕛":"1f55b","🕧":"1f567","🕐":"1f550","🕜":"1f55c","🕑":"1f551","🕝":"1f55d","🕒":"1f552","🕞":"1f55e","🕓":"1f553","🕟":"1f55f","🕔":"1f554","🕠":"1f560","🕕":"1f555","🕡":"1f561","🕖":"1f556","🕢":"1f562","🕗":"1f557","🕣":"1f563","🕘":"1f558","🕤":"1f564","🕙":"1f559","🕥":"1f565","🕚":"1f55a","🕦":"1f566","🌑":"1f311","🌒":"1f312","🌓":"1f313","🌔":"1f314","🌕":"1f315","🌖":"1f316","🌗":"1f317","🌘":"1f318","🌙":"1f319","🌚":"1f31a","🌛":"1f31b","🌜":"1f31c","🌡":"1f321","☀":"2600","🌝":"1f31d","🌞":"1f31e","⭐":"2b50","🌟":"1f31f","🌠":"1f320","☁":"2601","⛅":"26c5","⛈":"26c8","🌤":"1f324","🌥":"1f325","🌦":"1f326","🌧":"1f327","🌨":"1f328","🌩":"1f329","🌪":"1f32a","🌫":"1f32b","🌬":"1f32c","🌀":"1f300","🌈":"1f308","🌂":"1f302","☂":"2602","☔":"2614","⛱":"26f1","⚡":"26a1","❄":"2744","☃":"2603","⛄":"26c4","☄":"2604","🔥":"1f525","💧":"1f4a7","🌊":"1f30a","🎃":"1f383","🎄":"1f384","🎆":"1f386","🎇":"1f387","✨":"2728","🎈":"1f388","🎉":"1f389","🎊":"1f38a","🎋":"1f38b","🎍":"1f38d","🎎":"1f38e","🎏":"1f38f","🎐":"1f390","🎑":"1f391","🎀":"1f380","🎁":"1f381","🎗":"1f397","🎟":"1f39f","🎫":"1f3ab","🎖":"1f396","🏆":"1f3c6","🏅":"1f3c5","🥇":"1f947","🥈":"1f948","🥉":"1f949","⚽":"26bd","⚾":"26be","🏀":"1f3c0","🏐":"1f3d0","🏈":"1f3c8","🏉":"1f3c9","🎾":"1f3be","🎱":"1f3b1","🎳":"1f3b3","🏏":"1f3cf","🏑":"1f3d1","🏒":"1f3d2","🏓":"1f3d3","🏸":"1f3f8","🥊":"1f94a","🥋":"1f94b","🥅":"1f945","🎯":"1f3af","⛳":"26f3","⛸":"26f8","🎣":"1f3a3","🎽":"1f3bd","🎿":"1f3bf","🛷":"1f6f7","🥌":"1f94c","🎮":"1f3ae","🕹":"1f579","🎲":"1f3b2","♠":"2660","♥":"2665","♦":"2666","♣":"2663","🃏":"1f0cf","🀄":"1f004","🎴":"1f3b4","🔇":"1f507","🔈":"1f508","🔉":"1f509","🔊":"1f50a","📢":"1f4e2","📣":"1f4e3","📯":"1f4ef","🔔":"1f514","🔕":"1f515","🎼":"1f3bc","🎵":"1f3b5","🎶":"1f3b6","🎙":"1f399","🎚":"1f39a","🎛":"1f39b","🎤":"1f3a4","🎧":"1f3a7","📻":"1f4fb","🎷":"1f3b7","🎸":"1f3b8","🎹":"1f3b9","🎺":"1f3ba","🎻":"1f3bb","🥁":"1f941","📱":"1f4f1","📲":"1f4f2","☎":"260e","📞":"1f4de","📟":"1f4df","📠":"1f4e0","🔋":"1f50b","🔌":"1f50c","💻":"1f4bb","🖥":"1f5a5","🖨":"1f5a8","⌨":"2328","🖱":"1f5b1","🖲":"1f5b2","💽":"1f4bd","💾":"1f4be","💿":"1f4bf","📀":"1f4c0","🎥":"1f3a5","🎞":"1f39e","📽":"1f4fd","🎬":"1f3ac","📺":"1f4fa","📷":"1f4f7","📸":"1f4f8","📹":"1f4f9","📼":"1f4fc","🔍":"1f50d","🔎":"1f50e","🔬":"1f52c","🔭":"1f52d","📡":"1f4e1","🕯":"1f56f","💡":"1f4a1","🔦":"1f526","🏮":"1f3ee","📔":"1f4d4","📕":"1f4d5","📖":"1f4d6","📗":"1f4d7","📘":"1f4d8","📙":"1f4d9","📚":"1f4da","📓":"1f4d3","📒":"1f4d2","📃":"1f4c3","📜":"1f4dc","📄":"1f4c4","📰":"1f4f0","🗞":"1f5de","📑":"1f4d1","🔖":"1f516","🏷":"1f3f7","💰":"1f4b0","💴":"1f4b4","💵":"1f4b5","💶":"1f4b6","💷":"1f4b7","💸":"1f4b8","💳":"1f4b3","💹":"1f4b9","💱":"1f4b1","💲":"1f4b2","✉":"2709","📧":"1f4e7","📨":"1f4e8","📩":"1f4e9","📤":"1f4e4","📥":"1f4e5","📦":"1f4e6","📫":"1f4eb","📪":"1f4ea","📬":"1f4ec","📭":"1f4ed","📮":"1f4ee","🗳":"1f5f3","✏":"270f","✒":"2712","🖋":"1f58b","🖊":"1f58a","🖌":"1f58c","🖍":"1f58d","📝":"1f4dd","💼":"1f4bc","📁":"1f4c1","📂":"1f4c2","🗂":"1f5c2","📅":"1f4c5","📆":"1f4c6","🗒":"1f5d2","🗓":"1f5d3","📇":"1f4c7","📈":"1f4c8","📉":"1f4c9","📊":"1f4ca","📋":"1f4cb","📌":"1f4cc","📍":"1f4cd","📎":"1f4ce","🖇":"1f587","📏":"1f4cf","📐":"1f4d0","✂":"2702","🗃":"1f5c3","🗄":"1f5c4","🗑":"1f5d1","🔒":"1f512","🔓":"1f513","🔏":"1f50f","🔐":"1f510","🔑":"1f511","🗝":"1f5dd","🔨":"1f528","⛏":"26cf","⚒":"2692","🛠":"1f6e0","🗡":"1f5e1","⚔":"2694","🔫":"1f52b","🏹":"1f3f9","🛡":"1f6e1","🔧":"1f527","🔩":"1f529","⚙":"2699","🗜":"1f5dc","⚗":"2697","⚖":"2696","🔗":"1f517","⛓":"26d3","💉":"1f489","💊":"1f48a","🚬":"1f6ac","⚰":"26b0","⚱":"26b1","🗿":"1f5ff","🛢":"1f6e2","🔮":"1f52e","🛒":"1f6d2","🏧":"1f3e7","🚮":"1f6ae","🚰":"1f6b0","♿":"267f","🚹":"1f6b9","🚺":"1f6ba","🚻":"1f6bb","🚼":"1f6bc","🚾":"1f6be","🛂":"1f6c2","🛃":"1f6c3","🛄":"1f6c4","🛅":"1f6c5","⚠":"26a0","🚸":"1f6b8","⛔":"26d4","🚫":"1f6ab","🚳":"1f6b3","🚭":"1f6ad","🚯":"1f6af","🚱":"1f6b1","🚷":"1f6b7","📵":"1f4f5","🔞":"1f51e","☢":"2622","☣":"2623","⬆":"2b06","↗":"2197","➡":"27a1","↘":"2198","⬇":"2b07","↙":"2199","⬅":"2b05","↖":"2196","↕":"2195","↔":"2194","↩":"21a9","↪":"21aa","⤴":"2934","⤵":"2935","🔃":"1f503","🔄":"1f504","🔙":"1f519","🔚":"1f51a","🔛":"1f51b","🔜":"1f51c","🔝":"1f51d","🛐":"1f6d0","⚛":"269b","🕉":"1f549","✡":"2721","☸":"2638","☯":"262f","✝":"271d","☦":"2626","☪":"262a","☮":"262e","🕎":"1f54e","🔯":"1f52f","♈":"2648","♉":"2649","♊":"264a","♋":"264b","♌":"264c","♍":"264d","♎":"264e","♏":"264f","♐":"2650","♑":"2651","♒":"2652","♓":"2653","⛎":"26ce","🔀":"1f500","🔁":"1f501","🔂":"1f502","▶":"25b6","⏩":"23e9","⏭":"23ed","⏯":"23ef","◀":"25c0","⏪":"23ea","⏮":"23ee","🔼":"1f53c","⏫":"23eb","🔽":"1f53d","⏬":"23ec","⏸":"23f8","⏹":"23f9","⏺":"23fa","⏏":"23cf","🎦":"1f3a6","🔅":"1f505","🔆":"1f506","📶":"1f4f6","📳":"1f4f3","📴":"1f4f4","♀":"2640","♂":"2642","⚕":"2695","♻":"267b","⚜":"269c","🔱":"1f531","📛":"1f4db","🔰":"1f530","⭕":"2b55","✅":"2705","☑":"2611","✔":"2714","✖":"2716","❌":"274c","❎":"274e","➕":"2795","➖":"2796","➗":"2797","➰":"27b0","➿":"27bf","〽":"303d","✳":"2733","✴":"2734","❇":"2747","‼":"203c","⁉":"2049","❓":"2753","❔":"2754","❕":"2755","❗":"2757","〰":"3030","©":"a9","®":"ae","™":"2122","🔟":"1f51f","💯":"1f4af","🔠":"1f520","🔡":"1f521","🔢":"1f522","🔣":"1f523","🔤":"1f524","🅰":"1f170","🆎":"1f18e","🅱":"1f171","🆑":"1f191","🆒":"1f192","🆓":"1f193","ℹ":"2139","🆔":"1f194","Ⓜ":"24c2","🆕":"1f195","🆖":"1f196","🅾":"1f17e","🆗":"1f197","🅿":"1f17f","🆘":"1f198","🆙":"1f199","🆚":"1f19a","🈁":"1f201","🈂":"1f202","🈷":"1f237","🈶":"1f236","🈯":"1f22f","🉐":"1f250","🈹":"1f239","🈚":"1f21a","🈲":"1f232","🉑":"1f251","🈸":"1f238","🈴":"1f234","🈳":"1f233","㊗":"3297","㊙":"3299","🈺":"1f23a","🈵":"1f235","▪":"25aa","▫":"25ab","◻":"25fb","◼":"25fc","◽":"25fd","◾":"25fe","⬛":"2b1b","⬜":"2b1c","🔶":"1f536","🔷":"1f537","🔸":"1f538","🔹":"1f539","🔺":"1f53a","🔻":"1f53b","💠":"1f4a0","🔘":"1f518","🔲":"1f532","🔳":"1f533","⚪":"26aa","⚫":"26ab","🔴":"1f534","🔵":"1f535","🏁":"1f3c1","🚩":"1f6a9","🎌":"1f38c","🏴":"1f3f4","🏳":"1f3f3","☺️":"263a","☹️":"2639","☠️":"2620","👶🏻":"1f476-1f3fb","👶🏼":"1f476-1f3fc","👶🏽":"1f476-1f3fd","👶🏾":"1f476-1f3fe","👶🏿":"1f476-1f3ff","🧒🏻":"1f9d2-1f3fb","🧒🏼":"1f9d2-1f3fc","🧒🏽":"1f9d2-1f3fd","🧒🏾":"1f9d2-1f3fe","🧒🏿":"1f9d2-1f3ff","👦🏻":"1f466-1f3fb","👦🏼":"1f466-1f3fc","👦🏽":"1f466-1f3fd","👦🏾":"1f466-1f3fe","👦🏿":"1f466-1f3ff","👧🏻":"1f467-1f3fb","👧🏼":"1f467-1f3fc","👧🏽":"1f467-1f3fd","👧🏾":"1f467-1f3fe","👧🏿":"1f467-1f3ff","🧑🏻":"1f9d1-1f3fb","🧑🏼":"1f9d1-1f3fc","🧑🏽":"1f9d1-1f3fd","🧑🏾":"1f9d1-1f3fe","🧑🏿":"1f9d1-1f3ff","👨🏻":"1f468-1f3fb","👨🏼":"1f468-1f3fc","👨🏽":"1f468-1f3fd","👨🏾":"1f468-1f3fe","👨🏿":"1f468-1f3ff","👩🏻":"1f469-1f3fb","👩🏼":"1f469-1f3fc","👩🏽":"1f469-1f3fd","👩🏾":"1f469-1f3fe","👩🏿":"1f469-1f3ff","🧓🏻":"1f9d3-1f3fb","🧓🏼":"1f9d3-1f3fc","🧓🏽":"1f9d3-1f3fd","🧓🏾":"1f9d3-1f3fe","🧓🏿":"1f9d3-1f3ff","👴🏻":"1f474-1f3fb","👴🏼":"1f474-1f3fc","👴🏽":"1f474-1f3fd","👴🏾":"1f474-1f3fe","👴🏿":"1f474-1f3ff","👵🏻":"1f475-1f3fb","👵🏼":"1f475-1f3fc","👵🏽":"1f475-1f3fd","👵🏾":"1f475-1f3fe","👵🏿":"1f475-1f3ff","👮🏻":"1f46e-1f3fb","👮🏼":"1f46e-1f3fc","👮🏽":"1f46e-1f3fd","👮🏾":"1f46e-1f3fe","👮🏿":"1f46e-1f3ff","🕵️":"1f575","🕵🏻":"1f575-1f3fb","🕵🏼":"1f575-1f3fc","🕵🏽":"1f575-1f3fd","🕵🏾":"1f575-1f3fe","🕵🏿":"1f575-1f3ff","💂🏻":"1f482-1f3fb","💂🏼":"1f482-1f3fc","💂🏽":"1f482-1f3fd","💂🏾":"1f482-1f3fe","💂🏿":"1f482-1f3ff","👷🏻":"1f477-1f3fb","👷🏼":"1f477-1f3fc","👷🏽":"1f477-1f3fd","👷🏾":"1f477-1f3fe","👷🏿":"1f477-1f3ff","🤴🏻":"1f934-1f3fb","🤴🏼":"1f934-1f3fc","🤴🏽":"1f934-1f3fd","🤴🏾":"1f934-1f3fe","🤴🏿":"1f934-1f3ff","👸🏻":"1f478-1f3fb","👸🏼":"1f478-1f3fc","👸🏽":"1f478-1f3fd","👸🏾":"1f478-1f3fe","👸🏿":"1f478-1f3ff","👳🏻":"1f473-1f3fb","👳🏼":"1f473-1f3fc","👳🏽":"1f473-1f3fd","👳🏾":"1f473-1f3fe","👳🏿":"1f473-1f3ff","👲🏻":"1f472-1f3fb","👲🏼":"1f472-1f3fc","👲🏽":"1f472-1f3fd","👲🏾":"1f472-1f3fe","👲🏿":"1f472-1f3ff","🧕🏻":"1f9d5-1f3fb","🧕🏼":"1f9d5-1f3fc","🧕🏽":"1f9d5-1f3fd","🧕🏾":"1f9d5-1f3fe","🧕🏿":"1f9d5-1f3ff","🧔🏻":"1f9d4-1f3fb","🧔🏼":"1f9d4-1f3fc","🧔🏽":"1f9d4-1f3fd","🧔🏾":"1f9d4-1f3fe","🧔🏿":"1f9d4-1f3ff","👱🏻":"1f471-1f3fb","👱🏼":"1f471-1f3fc","👱🏽":"1f471-1f3fd","👱🏾":"1f471-1f3fe","👱🏿":"1f471-1f3ff","🤵🏻":"1f935-1f3fb","🤵🏼":"1f935-1f3fc","🤵🏽":"1f935-1f3fd","🤵🏾":"1f935-1f3fe","🤵🏿":"1f935-1f3ff","👰🏻":"1f470-1f3fb","👰🏼":"1f470-1f3fc","👰🏽":"1f470-1f3fd","👰🏾":"1f470-1f3fe","👰🏿":"1f470-1f3ff","🤰🏻":"1f930-1f3fb","🤰🏼":"1f930-1f3fc","🤰🏽":"1f930-1f3fd","🤰🏾":"1f930-1f3fe","🤰🏿":"1f930-1f3ff","🤱🏻":"1f931-1f3fb","🤱🏼":"1f931-1f3fc","🤱🏽":"1f931-1f3fd","🤱🏾":"1f931-1f3fe","🤱🏿":"1f931-1f3ff","👼🏻":"1f47c-1f3fb","👼🏼":"1f47c-1f3fc","👼🏽":"1f47c-1f3fd","👼🏾":"1f47c-1f3fe","👼🏿":"1f47c-1f3ff","🎅🏻":"1f385-1f3fb","🎅🏼":"1f385-1f3fc","🎅🏽":"1f385-1f3fd","🎅🏾":"1f385-1f3fe","🎅🏿":"1f385-1f3ff","🤶🏻":"1f936-1f3fb","🤶🏼":"1f936-1f3fc","🤶🏽":"1f936-1f3fd","🤶🏾":"1f936-1f3fe","🤶🏿":"1f936-1f3ff","🧙🏻":"1f9d9-1f3fb","🧙🏼":"1f9d9-1f3fc","🧙🏽":"1f9d9-1f3fd","🧙🏾":"1f9d9-1f3fe","🧙🏿":"1f9d9-1f3ff","🧚🏻":"1f9da-1f3fb","🧚🏼":"1f9da-1f3fc","🧚🏽":"1f9da-1f3fd","🧚🏾":"1f9da-1f3fe","🧚🏿":"1f9da-1f3ff","🧛🏻":"1f9db-1f3fb","🧛🏼":"1f9db-1f3fc","🧛🏽":"1f9db-1f3fd","🧛🏾":"1f9db-1f3fe","🧛🏿":"1f9db-1f3ff","🧜🏻":"1f9dc-1f3fb","🧜🏼":"1f9dc-1f3fc","🧜🏽":"1f9dc-1f3fd","🧜🏾":"1f9dc-1f3fe","🧜🏿":"1f9dc-1f3ff","🧝🏻":"1f9dd-1f3fb","🧝🏼":"1f9dd-1f3fc","🧝🏽":"1f9dd-1f3fd","🧝🏾":"1f9dd-1f3fe","🧝🏿":"1f9dd-1f3ff","🙍🏻":"1f64d-1f3fb","🙍🏼":"1f64d-1f3fc","🙍🏽":"1f64d-1f3fd","🙍🏾":"1f64d-1f3fe","🙍🏿":"1f64d-1f3ff","🙎🏻":"1f64e-1f3fb","🙎🏼":"1f64e-1f3fc","🙎🏽":"1f64e-1f3fd","🙎🏾":"1f64e-1f3fe","🙎🏿":"1f64e-1f3ff","🙅🏻":"1f645-1f3fb","🙅🏼":"1f645-1f3fc","🙅🏽":"1f645-1f3fd","🙅🏾":"1f645-1f3fe","🙅🏿":"1f645-1f3ff","🙆🏻":"1f646-1f3fb","🙆🏼":"1f646-1f3fc","🙆🏽":"1f646-1f3fd","🙆🏾":"1f646-1f3fe","🙆🏿":"1f646-1f3ff","💁🏻":"1f481-1f3fb","💁🏼":"1f481-1f3fc","💁🏽":"1f481-1f3fd","💁🏾":"1f481-1f3fe","💁🏿":"1f481-1f3ff","🙋🏻":"1f64b-1f3fb","🙋🏼":"1f64b-1f3fc","🙋🏽":"1f64b-1f3fd","🙋🏾":"1f64b-1f3fe","🙋🏿":"1f64b-1f3ff","🙇🏻":"1f647-1f3fb","🙇🏼":"1f647-1f3fc","🙇🏽":"1f647-1f3fd","🙇🏾":"1f647-1f3fe","🙇🏿":"1f647-1f3ff","🤦🏻":"1f926-1f3fb","🤦🏼":"1f926-1f3fc","🤦🏽":"1f926-1f3fd","🤦🏾":"1f926-1f3fe","🤦🏿":"1f926-1f3ff","🤷🏻":"1f937-1f3fb","🤷🏼":"1f937-1f3fc","🤷🏽":"1f937-1f3fd","🤷🏾":"1f937-1f3fe","🤷🏿":"1f937-1f3ff","💆🏻":"1f486-1f3fb","💆🏼":"1f486-1f3fc","💆🏽":"1f486-1f3fd","💆🏾":"1f486-1f3fe","💆🏿":"1f486-1f3ff","💇🏻":"1f487-1f3fb","💇🏼":"1f487-1f3fc","💇🏽":"1f487-1f3fd","💇🏾":"1f487-1f3fe","💇🏿":"1f487-1f3ff","🚶🏻":"1f6b6-1f3fb","🚶🏼":"1f6b6-1f3fc","🚶🏽":"1f6b6-1f3fd","🚶🏾":"1f6b6-1f3fe","🚶🏿":"1f6b6-1f3ff","🏃🏻":"1f3c3-1f3fb","🏃🏼":"1f3c3-1f3fc","🏃🏽":"1f3c3-1f3fd","🏃🏾":"1f3c3-1f3fe","🏃🏿":"1f3c3-1f3ff","💃🏻":"1f483-1f3fb","💃🏼":"1f483-1f3fc","💃🏽":"1f483-1f3fd","💃🏾":"1f483-1f3fe","💃🏿":"1f483-1f3ff","🕺🏻":"1f57a-1f3fb","🕺🏼":"1f57a-1f3fc","🕺🏽":"1f57a-1f3fd","🕺🏾":"1f57a-1f3fe","🕺🏿":"1f57a-1f3ff","🧖🏻":"1f9d6-1f3fb","🧖🏼":"1f9d6-1f3fc","🧖🏽":"1f9d6-1f3fd","🧖🏾":"1f9d6-1f3fe","🧖🏿":"1f9d6-1f3ff","🧗🏻":"1f9d7-1f3fb","🧗🏼":"1f9d7-1f3fc","🧗🏽":"1f9d7-1f3fd","🧗🏾":"1f9d7-1f3fe","🧗🏿":"1f9d7-1f3ff","🧘🏻":"1f9d8-1f3fb","🧘🏼":"1f9d8-1f3fc","🧘🏽":"1f9d8-1f3fd","🧘🏾":"1f9d8-1f3fe","🧘🏿":"1f9d8-1f3ff","🛀🏻":"1f6c0-1f3fb","🛀🏼":"1f6c0-1f3fc","🛀🏽":"1f6c0-1f3fd","🛀🏾":"1f6c0-1f3fe","🛀🏿":"1f6c0-1f3ff","🛌🏻":"1f6cc-1f3fb","🛌🏼":"1f6cc-1f3fc","🛌🏽":"1f6cc-1f3fd","🛌🏾":"1f6cc-1f3fe","🛌🏿":"1f6cc-1f3ff","🕴️":"1f574","🕴🏻":"1f574-1f3fb","🕴🏼":"1f574-1f3fc","🕴🏽":"1f574-1f3fd","🕴🏾":"1f574-1f3fe","🕴🏿":"1f574-1f3ff","🗣️":"1f5e3","🏇🏻":"1f3c7-1f3fb","🏇🏼":"1f3c7-1f3fc","🏇🏽":"1f3c7-1f3fd","🏇🏾":"1f3c7-1f3fe","🏇🏿":"1f3c7-1f3ff","⛷️":"26f7","🏂🏻":"1f3c2-1f3fb","🏂🏼":"1f3c2-1f3fc","🏂🏽":"1f3c2-1f3fd","🏂🏾":"1f3c2-1f3fe","🏂🏿":"1f3c2-1f3ff","🏌️":"1f3cc","🏌🏻":"1f3cc-1f3fb","🏌🏼":"1f3cc-1f3fc","🏌🏽":"1f3cc-1f3fd","🏌🏾":"1f3cc-1f3fe","🏌🏿":"1f3cc-1f3ff","🏄🏻":"1f3c4-1f3fb","🏄🏼":"1f3c4-1f3fc","🏄🏽":"1f3c4-1f3fd","🏄🏾":"1f3c4-1f3fe","🏄🏿":"1f3c4-1f3ff","🚣🏻":"1f6a3-1f3fb","🚣🏼":"1f6a3-1f3fc","🚣🏽":"1f6a3-1f3fd","🚣🏾":"1f6a3-1f3fe","🚣🏿":"1f6a3-1f3ff","🏊🏻":"1f3ca-1f3fb","🏊🏼":"1f3ca-1f3fc","🏊🏽":"1f3ca-1f3fd","🏊🏾":"1f3ca-1f3fe","🏊🏿":"1f3ca-1f3ff","⛹️":"26f9","⛹🏻":"26f9-1f3fb","⛹🏼":"26f9-1f3fc","⛹🏽":"26f9-1f3fd","⛹🏾":"26f9-1f3fe","⛹🏿":"26f9-1f3ff","🏋️":"1f3cb","🏋🏻":"1f3cb-1f3fb","🏋🏼":"1f3cb-1f3fc","🏋🏽":"1f3cb-1f3fd","🏋🏾":"1f3cb-1f3fe","🏋🏿":"1f3cb-1f3ff","🚴🏻":"1f6b4-1f3fb","🚴🏼":"1f6b4-1f3fc","🚴🏽":"1f6b4-1f3fd","🚴🏾":"1f6b4-1f3fe","🚴🏿":"1f6b4-1f3ff","🚵🏻":"1f6b5-1f3fb","🚵🏼":"1f6b5-1f3fc","🚵🏽":"1f6b5-1f3fd","🚵🏾":"1f6b5-1f3fe","🚵🏿":"1f6b5-1f3ff","🏎️":"1f3ce","🏍️":"1f3cd","🤸🏻":"1f938-1f3fb","🤸🏼":"1f938-1f3fc","🤸🏽":"1f938-1f3fd","🤸🏾":"1f938-1f3fe","🤸🏿":"1f938-1f3ff","🤽🏻":"1f93d-1f3fb","🤽🏼":"1f93d-1f3fc","🤽🏽":"1f93d-1f3fd","🤽🏾":"1f93d-1f3fe","🤽🏿":"1f93d-1f3ff","🤾🏻":"1f93e-1f3fb","🤾🏼":"1f93e-1f3fc","🤾🏽":"1f93e-1f3fd","🤾🏾":"1f93e-1f3fe","🤾🏿":"1f93e-1f3ff","🤹🏻":"1f939-1f3fb","🤹🏼":"1f939-1f3fc","🤹🏽":"1f939-1f3fd","🤹🏾":"1f939-1f3fe","🤹🏿":"1f939-1f3ff","🤳🏻":"1f933-1f3fb","🤳🏼":"1f933-1f3fc","🤳🏽":"1f933-1f3fd","🤳🏾":"1f933-1f3fe","🤳🏿":"1f933-1f3ff","💪🏻":"1f4aa-1f3fb","💪🏼":"1f4aa-1f3fc","💪🏽":"1f4aa-1f3fd","💪🏾":"1f4aa-1f3fe","💪🏿":"1f4aa-1f3ff","👈🏻":"1f448-1f3fb","👈🏼":"1f448-1f3fc","👈🏽":"1f448-1f3fd","👈🏾":"1f448-1f3fe","👈🏿":"1f448-1f3ff","👉🏻":"1f449-1f3fb","👉🏼":"1f449-1f3fc","👉🏽":"1f449-1f3fd","👉🏾":"1f449-1f3fe","👉🏿":"1f449-1f3ff","☝️":"261d","☝🏻":"261d-1f3fb","☝🏼":"261d-1f3fc","☝🏽":"261d-1f3fd","☝🏾":"261d-1f3fe","☝🏿":"261d-1f3ff","👆🏻":"1f446-1f3fb","👆🏼":"1f446-1f3fc","👆🏽":"1f446-1f3fd","👆🏾":"1f446-1f3fe","👆🏿":"1f446-1f3ff","🖕🏻":"1f595-1f3fb","🖕🏼":"1f595-1f3fc","🖕🏽":"1f595-1f3fd","🖕🏾":"1f595-1f3fe","🖕🏿":"1f595-1f3ff","👇🏻":"1f447-1f3fb","👇🏼":"1f447-1f3fc","👇🏽":"1f447-1f3fd","👇🏾":"1f447-1f3fe","👇🏿":"1f447-1f3ff","✌️":"270c","✌🏻":"270c-1f3fb","✌🏼":"270c-1f3fc","✌🏽":"270c-1f3fd","✌🏾":"270c-1f3fe","✌🏿":"270c-1f3ff","🤞🏻":"1f91e-1f3fb","🤞🏼":"1f91e-1f3fc","🤞🏽":"1f91e-1f3fd","🤞🏾":"1f91e-1f3fe","🤞🏿":"1f91e-1f3ff","🖖🏻":"1f596-1f3fb","🖖🏼":"1f596-1f3fc","🖖🏽":"1f596-1f3fd","🖖🏾":"1f596-1f3fe","🖖🏿":"1f596-1f3ff","🤘🏻":"1f918-1f3fb","🤘🏼":"1f918-1f3fc","🤘🏽":"1f918-1f3fd","🤘🏾":"1f918-1f3fe","🤘🏿":"1f918-1f3ff","🤙🏻":"1f919-1f3fb","🤙🏼":"1f919-1f3fc","🤙🏽":"1f919-1f3fd","🤙🏾":"1f919-1f3fe","🤙🏿":"1f919-1f3ff","🖐️":"1f590","🖐🏻":"1f590-1f3fb","🖐🏼":"1f590-1f3fc","🖐🏽":"1f590-1f3fd","🖐🏾":"1f590-1f3fe","🖐🏿":"1f590-1f3ff","✋🏻":"270b-1f3fb","✋🏼":"270b-1f3fc","✋🏽":"270b-1f3fd","✋🏾":"270b-1f3fe","✋🏿":"270b-1f3ff","👌🏻":"1f44c-1f3fb","👌🏼":"1f44c-1f3fc","👌🏽":"1f44c-1f3fd","👌🏾":"1f44c-1f3fe","👌🏿":"1f44c-1f3ff","👍🏻":"1f44d-1f3fb","👍🏼":"1f44d-1f3fc","👍🏽":"1f44d-1f3fd","👍🏾":"1f44d-1f3fe","👍🏿":"1f44d-1f3ff","👎🏻":"1f44e-1f3fb","👎🏼":"1f44e-1f3fc","👎🏽":"1f44e-1f3fd","👎🏾":"1f44e-1f3fe","👎🏿":"1f44e-1f3ff","✊🏻":"270a-1f3fb","✊🏼":"270a-1f3fc","✊🏽":"270a-1f3fd","✊🏾":"270a-1f3fe","✊🏿":"270a-1f3ff","👊🏻":"1f44a-1f3fb","👊🏼":"1f44a-1f3fc","👊🏽":"1f44a-1f3fd","👊🏾":"1f44a-1f3fe","👊🏿":"1f44a-1f3ff","🤛🏻":"1f91b-1f3fb","🤛🏼":"1f91b-1f3fc","🤛🏽":"1f91b-1f3fd","🤛🏾":"1f91b-1f3fe","🤛🏿":"1f91b-1f3ff","🤜🏻":"1f91c-1f3fb","🤜🏼":"1f91c-1f3fc","🤜🏽":"1f91c-1f3fd","🤜🏾":"1f91c-1f3fe","🤜🏿":"1f91c-1f3ff","🤚🏻":"1f91a-1f3fb","🤚🏼":"1f91a-1f3fc","🤚🏽":"1f91a-1f3fd","🤚🏾":"1f91a-1f3fe","🤚🏿":"1f91a-1f3ff","👋🏻":"1f44b-1f3fb","👋🏼":"1f44b-1f3fc","👋🏽":"1f44b-1f3fd","👋🏾":"1f44b-1f3fe","👋🏿":"1f44b-1f3ff","🤟🏻":"1f91f-1f3fb","🤟🏼":"1f91f-1f3fc","🤟🏽":"1f91f-1f3fd","🤟🏾":"1f91f-1f3fe","🤟🏿":"1f91f-1f3ff","✍️":"270d","✍🏻":"270d-1f3fb","✍🏼":"270d-1f3fc","✍🏽":"270d-1f3fd","✍🏾":"270d-1f3fe","✍🏿":"270d-1f3ff","👏🏻":"1f44f-1f3fb","👏🏼":"1f44f-1f3fc","👏🏽":"1f44f-1f3fd","👏🏾":"1f44f-1f3fe","👏🏿":"1f44f-1f3ff","👐🏻":"1f450-1f3fb","👐🏼":"1f450-1f3fc","👐🏽":"1f450-1f3fd","👐🏾":"1f450-1f3fe","👐🏿":"1f450-1f3ff","🙌🏻":"1f64c-1f3fb","🙌🏼":"1f64c-1f3fc","🙌🏽":"1f64c-1f3fd","🙌🏾":"1f64c-1f3fe","🙌🏿":"1f64c-1f3ff","🤲🏻":"1f932-1f3fb","🤲🏼":"1f932-1f3fc","🤲🏽":"1f932-1f3fd","🤲🏾":"1f932-1f3fe","🤲🏿":"1f932-1f3ff","🙏🏻":"1f64f-1f3fb","🙏🏼":"1f64f-1f3fc","🙏🏽":"1f64f-1f3fd","🙏🏾":"1f64f-1f3fe","🙏🏿":"1f64f-1f3ff","💅🏻":"1f485-1f3fb","💅🏼":"1f485-1f3fc","💅🏽":"1f485-1f3fd","💅🏾":"1f485-1f3fe","💅🏿":"1f485-1f3ff","👂🏻":"1f442-1f3fb","👂🏼":"1f442-1f3fc","👂🏽":"1f442-1f3fd","👂🏾":"1f442-1f3fe","👂🏿":"1f442-1f3ff","👃🏻":"1f443-1f3fb","👃🏼":"1f443-1f3fc","👃🏽":"1f443-1f3fd","👃🏾":"1f443-1f3fe","👃🏿":"1f443-1f3ff","👁️":"1f441","❤️":"2764","❣️":"2763","🗨️":"1f5e8","🗯️":"1f5ef","🕳️":"1f573","🕶️":"1f576","🛍️":"1f6cd","⛑️":"26d1","🐿️":"1f43f","🕊️":"1f54a","🕷️":"1f577","🕸️":"1f578","🏵️":"1f3f5","☘️":"2618","🌶️":"1f336","🍽️":"1f37d","🗺️":"1f5fa","🏔️":"1f3d4","⛰️":"26f0","🏕️":"1f3d5","🏖️":"1f3d6","🏜️":"1f3dc","🏝️":"1f3dd","🏞️":"1f3de","🏟️":"1f3df","🏛️":"1f3db","🏗️":"1f3d7","🏘️":"1f3d8","🏙️":"1f3d9","🏚️":"1f3da","⛩️":"26e9","♨️":"2668","🖼️":"1f5bc","🛣️":"1f6e3","🛤️":"1f6e4","🛳️":"1f6f3","⛴️":"26f4","🛥️":"1f6e5","✈️":"2708","🛩️":"1f6e9","🛰️":"1f6f0","🛎️":"1f6ce","🛏️":"1f6cf","🛋️":"1f6cb","⏱️":"23f1","⏲️":"23f2","🕰️":"1f570","🌡️":"1f321","☀️":"2600","☁️":"2601","⛈️":"26c8","🌤️":"1f324","🌥️":"1f325","🌦️":"1f326","🌧️":"1f327","🌨️":"1f328","🌩️":"1f329","🌪️":"1f32a","🌫️":"1f32b","🌬️":"1f32c","☂️":"2602","⛱️":"26f1","❄️":"2744","☃️":"2603","☄️":"2604","🎗️":"1f397","🎟️":"1f39f","🎖️":"1f396","⛸️":"26f8","🕹️":"1f579","♠️":"2660","♥️":"2665","♦️":"2666","♣️":"2663","🎙️":"1f399","🎚️":"1f39a","🎛️":"1f39b","☎️":"260e","🖥️":"1f5a5","🖨️":"1f5a8","⌨️":"2328","🖱️":"1f5b1","🖲️":"1f5b2","🎞️":"1f39e","📽️":"1f4fd","🕯️":"1f56f","🗞️":"1f5de","🏷️":"1f3f7","✉️":"2709","🗳️":"1f5f3","✏️":"270f","✒️":"2712","🖋️":"1f58b","🖊️":"1f58a","🖌️":"1f58c","🖍️":"1f58d","🗂️":"1f5c2","🗒️":"1f5d2","🗓️":"1f5d3","🖇️":"1f587","✂️":"2702","🗃️":"1f5c3","🗄️":"1f5c4","🗑️":"1f5d1","🗝️":"1f5dd","⛏️":"26cf","⚒️":"2692","🛠️":"1f6e0","🗡️":"1f5e1","⚔️":"2694","🛡️":"1f6e1","⚙️":"2699","🗜️":"1f5dc","⚗️":"2697","⚖️":"2696","⛓️":"26d3","⚰️":"26b0","⚱️":"26b1","🛢️":"1f6e2","⚠️":"26a0","☢️":"2622","☣️":"2623","⬆️":"2b06","↗️":"2197","➡️":"27a1","↘️":"2198","⬇️":"2b07","↙️":"2199","⬅️":"2b05","↖️":"2196","↕️":"2195","↔️":"2194","↩️":"21a9","↪️":"21aa","⤴️":"2934","⤵️":"2935","⚛️":"269b","🕉️":"1f549","✡️":"2721","☸️":"2638","☯️":"262f","✝️":"271d","☦️":"2626","☪️":"262a","☮️":"262e","▶️":"25b6","⏭️":"23ed","⏯️":"23ef","◀️":"25c0","⏮️":"23ee","⏸️":"23f8","⏹️":"23f9","⏺️":"23fa","⏏️":"23cf","♀️":"2640","♂️":"2642","⚕️":"2695","♻️":"267b","⚜️":"269c","☑️":"2611","✔️":"2714","✖️":"2716","〽️":"303d","✳️":"2733","✴️":"2734","❇️":"2747","‼️":"203c","⁉️":"2049","〰️":"3030","©️":"a9","®️":"ae","™️":"2122","#⃣":"23-20e3","*⃣":"2a-20e3","0⃣":"30-20e3","1⃣":"31-20e3","2⃣":"32-20e3","3⃣":"33-20e3","4⃣":"34-20e3","5⃣":"35-20e3","6⃣":"36-20e3","7⃣":"37-20e3","8⃣":"38-20e3","9⃣":"39-20e3","🅰️":"1f170","🅱️":"1f171","ℹ️":"2139","Ⓜ️":"24c2","🅾️":"1f17e","🅿️":"1f17f","🈂️":"1f202","🈷️":"1f237","㊗️":"3297","㊙️":"3299","▪️":"25aa","▫️":"25ab","◻️":"25fb","◼️":"25fc","🏳️":"1f3f3","🇦🇨":"1f1e6-1f1e8","🇦🇩":"1f1e6-1f1e9","🇦🇪":"1f1e6-1f1ea","🇦🇫":"1f1e6-1f1eb","🇦🇬":"1f1e6-1f1ec","🇦🇮":"1f1e6-1f1ee","🇦🇱":"1f1e6-1f1f1","🇦🇲":"1f1e6-1f1f2","🇦🇴":"1f1e6-1f1f4","🇦🇶":"1f1e6-1f1f6","🇦🇷":"1f1e6-1f1f7","🇦🇸":"1f1e6-1f1f8","🇦🇹":"1f1e6-1f1f9","🇦🇺":"1f1e6-1f1fa","🇦🇼":"1f1e6-1f1fc","🇦🇽":"1f1e6-1f1fd","🇦🇿":"1f1e6-1f1ff","🇧🇦":"1f1e7-1f1e6","🇧🇧":"1f1e7-1f1e7","🇧🇩":"1f1e7-1f1e9","🇧🇪":"1f1e7-1f1ea","🇧🇫":"1f1e7-1f1eb","🇧🇬":"1f1e7-1f1ec","🇧🇭":"1f1e7-1f1ed","🇧🇮":"1f1e7-1f1ee","🇧🇯":"1f1e7-1f1ef","🇧🇱":"1f1e7-1f1f1","🇧🇲":"1f1e7-1f1f2","🇧🇳":"1f1e7-1f1f3","🇧🇴":"1f1e7-1f1f4","🇧🇶":"1f1e7-1f1f6","🇧🇷":"1f1e7-1f1f7","🇧🇸":"1f1e7-1f1f8","🇧🇹":"1f1e7-1f1f9","🇧🇻":"1f1e7-1f1fb","🇧🇼":"1f1e7-1f1fc","🇧🇾":"1f1e7-1f1fe","🇧🇿":"1f1e7-1f1ff","🇨🇦":"1f1e8-1f1e6","🇨🇨":"1f1e8-1f1e8","🇨🇩":"1f1e8-1f1e9","🇨🇫":"1f1e8-1f1eb","🇨🇬":"1f1e8-1f1ec","🇨🇭":"1f1e8-1f1ed","🇨🇮":"1f1e8-1f1ee","🇨🇰":"1f1e8-1f1f0","🇨🇱":"1f1e8-1f1f1","🇨🇲":"1f1e8-1f1f2","🇨🇳":"1f1e8-1f1f3","🇨🇴":"1f1e8-1f1f4","🇨🇵":"1f1e8-1f1f5","🇨🇷":"1f1e8-1f1f7","🇨🇺":"1f1e8-1f1fa","🇨🇻":"1f1e8-1f1fb","🇨🇼":"1f1e8-1f1fc","🇨🇽":"1f1e8-1f1fd","🇨🇾":"1f1e8-1f1fe","🇨🇿":"1f1e8-1f1ff","🇩🇪":"1f1e9-1f1ea","🇩🇬":"1f1e9-1f1ec","🇩🇯":"1f1e9-1f1ef","🇩🇰":"1f1e9-1f1f0","🇩🇲":"1f1e9-1f1f2","🇩🇴":"1f1e9-1f1f4","🇩🇿":"1f1e9-1f1ff","🇪🇦":"1f1ea-1f1e6","🇪🇨":"1f1ea-1f1e8","🇪🇪":"1f1ea-1f1ea","🇪🇬":"1f1ea-1f1ec","🇪🇭":"1f1ea-1f1ed","🇪🇷":"1f1ea-1f1f7","🇪🇸":"1f1ea-1f1f8","🇪🇹":"1f1ea-1f1f9","🇪🇺":"1f1ea-1f1fa","🇫🇮":"1f1eb-1f1ee","🇫🇯":"1f1eb-1f1ef","🇫🇰":"1f1eb-1f1f0","🇫🇲":"1f1eb-1f1f2","🇫🇴":"1f1eb-1f1f4","🇫🇷":"1f1eb-1f1f7","🇬🇦":"1f1ec-1f1e6","🇬🇧":"1f1ec-1f1e7","🇬🇩":"1f1ec-1f1e9","🇬🇪":"1f1ec-1f1ea","🇬🇫":"1f1ec-1f1eb","🇬🇬":"1f1ec-1f1ec","🇬🇭":"1f1ec-1f1ed","🇬🇮":"1f1ec-1f1ee","🇬🇱":"1f1ec-1f1f1","🇬🇲":"1f1ec-1f1f2","🇬🇳":"1f1ec-1f1f3","🇬🇵":"1f1ec-1f1f5","🇬🇶":"1f1ec-1f1f6","🇬🇷":"1f1ec-1f1f7","🇬🇸":"1f1ec-1f1f8","🇬🇹":"1f1ec-1f1f9","🇬🇺":"1f1ec-1f1fa","🇬🇼":"1f1ec-1f1fc","🇬🇾":"1f1ec-1f1fe","🇭🇰":"1f1ed-1f1f0","🇭🇲":"1f1ed-1f1f2","🇭🇳":"1f1ed-1f1f3","🇭🇷":"1f1ed-1f1f7","🇭🇹":"1f1ed-1f1f9","🇭🇺":"1f1ed-1f1fa","🇮🇨":"1f1ee-1f1e8","🇮🇩":"1f1ee-1f1e9","🇮🇪":"1f1ee-1f1ea","🇮🇱":"1f1ee-1f1f1","🇮🇲":"1f1ee-1f1f2","🇮🇳":"1f1ee-1f1f3","🇮🇴":"1f1ee-1f1f4","🇮🇶":"1f1ee-1f1f6","🇮🇷":"1f1ee-1f1f7","🇮🇸":"1f1ee-1f1f8","🇮🇹":"1f1ee-1f1f9","🇯🇪":"1f1ef-1f1ea","🇯🇲":"1f1ef-1f1f2","🇯🇴":"1f1ef-1f1f4","🇯🇵":"1f1ef-1f1f5","🇰🇪":"1f1f0-1f1ea","🇰🇬":"1f1f0-1f1ec","🇰🇭":"1f1f0-1f1ed","🇰🇮":"1f1f0-1f1ee","🇰🇲":"1f1f0-1f1f2","🇰🇳":"1f1f0-1f1f3","🇰🇵":"1f1f0-1f1f5","🇰🇷":"1f1f0-1f1f7","🇰🇼":"1f1f0-1f1fc","🇰🇾":"1f1f0-1f1fe","🇰🇿":"1f1f0-1f1ff","🇱🇦":"1f1f1-1f1e6","🇱🇧":"1f1f1-1f1e7","🇱🇨":"1f1f1-1f1e8","🇱🇮":"1f1f1-1f1ee","🇱🇰":"1f1f1-1f1f0","🇱🇷":"1f1f1-1f1f7","🇱🇸":"1f1f1-1f1f8","🇱🇹":"1f1f1-1f1f9","🇱🇺":"1f1f1-1f1fa","🇱🇻":"1f1f1-1f1fb","🇱🇾":"1f1f1-1f1fe","🇲🇦":"1f1f2-1f1e6","🇲🇨":"1f1f2-1f1e8","🇲🇩":"1f1f2-1f1e9","🇲🇪":"1f1f2-1f1ea","🇲🇫":"1f1f2-1f1eb","🇲🇬":"1f1f2-1f1ec","🇲🇭":"1f1f2-1f1ed","🇲🇰":"1f1f2-1f1f0","🇲🇱":"1f1f2-1f1f1","🇲🇲":"1f1f2-1f1f2","🇲🇳":"1f1f2-1f1f3","🇲🇴":"1f1f2-1f1f4","🇲🇵":"1f1f2-1f1f5","🇲🇶":"1f1f2-1f1f6","🇲🇷":"1f1f2-1f1f7","🇲🇸":"1f1f2-1f1f8","🇲🇹":"1f1f2-1f1f9","🇲🇺":"1f1f2-1f1fa","🇲🇻":"1f1f2-1f1fb","🇲🇼":"1f1f2-1f1fc","🇲🇽":"1f1f2-1f1fd","🇲🇾":"1f1f2-1f1fe","🇲🇿":"1f1f2-1f1ff","🇳🇦":"1f1f3-1f1e6","🇳🇨":"1f1f3-1f1e8","🇳🇪":"1f1f3-1f1ea","🇳🇫":"1f1f3-1f1eb","🇳🇬":"1f1f3-1f1ec","🇳🇮":"1f1f3-1f1ee","🇳🇱":"1f1f3-1f1f1","🇳🇴":"1f1f3-1f1f4","🇳🇵":"1f1f3-1f1f5","🇳🇷":"1f1f3-1f1f7","🇳🇺":"1f1f3-1f1fa","🇳🇿":"1f1f3-1f1ff","🇴🇲":"1f1f4-1f1f2","🇵🇦":"1f1f5-1f1e6","🇵🇪":"1f1f5-1f1ea","🇵🇫":"1f1f5-1f1eb","🇵🇬":"1f1f5-1f1ec","🇵🇭":"1f1f5-1f1ed","🇵🇰":"1f1f5-1f1f0","🇵🇱":"1f1f5-1f1f1","🇵🇲":"1f1f5-1f1f2","🇵🇳":"1f1f5-1f1f3","🇵🇷":"1f1f5-1f1f7","🇵🇸":"1f1f5-1f1f8","🇵🇹":"1f1f5-1f1f9","🇵🇼":"1f1f5-1f1fc","🇵🇾":"1f1f5-1f1fe","🇶🇦":"1f1f6-1f1e6","🇷🇪":"1f1f7-1f1ea","🇷🇴":"1f1f7-1f1f4","🇷🇸":"1f1f7-1f1f8","🇷🇺":"1f1f7-1f1fa","🇷🇼":"1f1f7-1f1fc","🇸🇦":"1f1f8-1f1e6","🇸🇧":"1f1f8-1f1e7","🇸🇨":"1f1f8-1f1e8","🇸🇩":"1f1f8-1f1e9","🇸🇪":"1f1f8-1f1ea","🇸🇬":"1f1f8-1f1ec","🇸🇭":"1f1f8-1f1ed","🇸🇮":"1f1f8-1f1ee","🇸🇯":"1f1f8-1f1ef","🇸🇰":"1f1f8-1f1f0","🇸🇱":"1f1f8-1f1f1","🇸🇲":"1f1f8-1f1f2","🇸🇳":"1f1f8-1f1f3","🇸🇴":"1f1f8-1f1f4","🇸🇷":"1f1f8-1f1f7","🇸🇸":"1f1f8-1f1f8","🇸🇹":"1f1f8-1f1f9","🇸🇻":"1f1f8-1f1fb","🇸🇽":"1f1f8-1f1fd","🇸🇾":"1f1f8-1f1fe","🇸🇿":"1f1f8-1f1ff","🇹🇦":"1f1f9-1f1e6","🇹🇨":"1f1f9-1f1e8","🇹🇩":"1f1f9-1f1e9","🇹🇫":"1f1f9-1f1eb","🇹🇬":"1f1f9-1f1ec","🇹🇭":"1f1f9-1f1ed","🇹🇯":"1f1f9-1f1ef","🇹🇰":"1f1f9-1f1f0","🇹🇱":"1f1f9-1f1f1","🇹🇲":"1f1f9-1f1f2","🇹🇳":"1f1f9-1f1f3","🇹🇴":"1f1f9-1f1f4","🇹🇷":"1f1f9-1f1f7","🇹🇹":"1f1f9-1f1f9","🇹🇻":"1f1f9-1f1fb","🇹🇼":"1f1f9-1f1fc","🇹🇿":"1f1f9-1f1ff","🇺🇦":"1f1fa-1f1e6","🇺🇬":"1f1fa-1f1ec","🇺🇲":"1f1fa-1f1f2","🇺🇳":"1f1fa-1f1f3","🇺🇸":"1f1fa-1f1f8","🇺🇾":"1f1fa-1f1fe","🇺🇿":"1f1fa-1f1ff","🇻🇦":"1f1fb-1f1e6","🇻🇨":"1f1fb-1f1e8","🇻🇪":"1f1fb-1f1ea","🇻🇬":"1f1fb-1f1ec","🇻🇮":"1f1fb-1f1ee","🇻🇳":"1f1fb-1f1f3","🇻🇺":"1f1fb-1f1fa","🇼🇫":"1f1fc-1f1eb","🇼🇸":"1f1fc-1f1f8","🇽🇰":"1f1fd-1f1f0","🇾🇪":"1f1fe-1f1ea","🇾🇹":"1f1fe-1f1f9","🇿🇦":"1f1ff-1f1e6","🇿🇲":"1f1ff-1f1f2","🇿🇼":"1f1ff-1f1fc","👨⚕":"1f468-200d-2695-fe0f","👩⚕":"1f469-200d-2695-fe0f","👨🎓":"1f468-200d-1f393","👩🎓":"1f469-200d-1f393","👨🏫":"1f468-200d-1f3eb","👩🏫":"1f469-200d-1f3eb","👨⚖":"1f468-200d-2696-fe0f","👩⚖":"1f469-200d-2696-fe0f","👨🌾":"1f468-200d-1f33e","👩🌾":"1f469-200d-1f33e","👨🍳":"1f468-200d-1f373","👩🍳":"1f469-200d-1f373","👨🔧":"1f468-200d-1f527","👩🔧":"1f469-200d-1f527","👨🏭":"1f468-200d-1f3ed","👩🏭":"1f469-200d-1f3ed","👨💼":"1f468-200d-1f4bc","👩💼":"1f469-200d-1f4bc","👨🔬":"1f468-200d-1f52c","👩🔬":"1f469-200d-1f52c","👨💻":"1f468-200d-1f4bb","👩💻":"1f469-200d-1f4bb","👨🎤":"1f468-200d-1f3a4","👩🎤":"1f469-200d-1f3a4","👨🎨":"1f468-200d-1f3a8","👩🎨":"1f469-200d-1f3a8","👨✈":"1f468-200d-2708-fe0f","👩✈":"1f469-200d-2708-fe0f","👨🚀":"1f468-200d-1f680","👩🚀":"1f469-200d-1f680","👨🚒":"1f468-200d-1f692","👩🚒":"1f469-200d-1f692","👮♂":"1f46e-200d-2642-fe0f","👮♀":"1f46e-200d-2640-fe0f","🕵♂":"1f575-fe0f-200d-2642-fe0f","🕵♀":"1f575-fe0f-200d-2640-fe0f","💂♂":"1f482-200d-2642-fe0f","💂♀":"1f482-200d-2640-fe0f","👷♂":"1f477-200d-2642-fe0f","👷♀":"1f477-200d-2640-fe0f","👳♂":"1f473-200d-2642-fe0f","👳♀":"1f473-200d-2640-fe0f","👱♂":"1f471-200d-2642-fe0f","👱♀":"1f471-200d-2640-fe0f","🧙♀":"1f9d9-200d-2640-fe0f","🧙♂":"1f9d9-200d-2642-fe0f","🧚♀":"1f9da-200d-2640-fe0f","🧚♂":"1f9da-200d-2642-fe0f","🧛♀":"1f9db-200d-2640-fe0f","🧛♂":"1f9db-200d-2642-fe0f","🧜♀":"1f9dc-200d-2640-fe0f","🧜♂":"1f9dc-200d-2642-fe0f","🧝♀":"1f9dd-200d-2640-fe0f","🧝♂":"1f9dd-200d-2642-fe0f","🧞♀":"1f9de-200d-2640-fe0f","🧞♂":"1f9de-200d-2642-fe0f","🧟♀":"1f9df-200d-2640-fe0f","🧟♂":"1f9df-200d-2642-fe0f","🙍♂":"1f64d-200d-2642-fe0f","🙍♀":"1f64d-200d-2640-fe0f","🙎♂":"1f64e-200d-2642-fe0f","🙎♀":"1f64e-200d-2640-fe0f","🙅♂":"1f645-200d-2642-fe0f","🙅♀":"1f645-200d-2640-fe0f","🙆♂":"1f646-200d-2642-fe0f","🙆♀":"1f646-200d-2640-fe0f","💁♂":"1f481-200d-2642-fe0f","💁♀":"1f481-200d-2640-fe0f","🙋♂":"1f64b-200d-2642-fe0f","🙋♀":"1f64b-200d-2640-fe0f","🙇♂":"1f647-200d-2642-fe0f","🙇♀":"1f647-200d-2640-fe0f","🤦♂":"1f926-200d-2642-fe0f","🤦♀":"1f926-200d-2640-fe0f","🤷♂":"1f937-200d-2642-fe0f","🤷♀":"1f937-200d-2640-fe0f","💆♂":"1f486-200d-2642-fe0f","💆♀":"1f486-200d-2640-fe0f","💇♂":"1f487-200d-2642-fe0f","💇♀":"1f487-200d-2640-fe0f","🚶♂":"1f6b6-200d-2642-fe0f","🚶♀":"1f6b6-200d-2640-fe0f","🏃♂":"1f3c3-200d-2642-fe0f","🏃♀":"1f3c3-200d-2640-fe0f","👯♂":"1f46f-200d-2642-fe0f","👯♀":"1f46f-200d-2640-fe0f","🧖♀":"1f9d6-200d-2640-fe0f","🧖♂":"1f9d6-200d-2642-fe0f","🧗♀":"1f9d7-200d-2640-fe0f","🧗♂":"1f9d7-200d-2642-fe0f","🧘♀":"1f9d8-200d-2640-fe0f","🧘♂":"1f9d8-200d-2642-fe0f","🏌♂":"1f3cc-fe0f-200d-2642-fe0f","🏌♀":"1f3cc-fe0f-200d-2640-fe0f","🏄♂":"1f3c4-200d-2642-fe0f","🏄♀":"1f3c4-200d-2640-fe0f","🚣♂":"1f6a3-200d-2642-fe0f","🚣♀":"1f6a3-200d-2640-fe0f","🏊♂":"1f3ca-200d-2642-fe0f","🏊♀":"1f3ca-200d-2640-fe0f","⛹♂":"26f9-fe0f-200d-2642-fe0f","⛹♀":"26f9-fe0f-200d-2640-fe0f","🏋♂":"1f3cb-fe0f-200d-2642-fe0f","🏋♀":"1f3cb-fe0f-200d-2640-fe0f","🚴♂":"1f6b4-200d-2642-fe0f","🚴♀":"1f6b4-200d-2640-fe0f","🚵♂":"1f6b5-200d-2642-fe0f","🚵♀":"1f6b5-200d-2640-fe0f","🤸♂":"1f938-200d-2642-fe0f","🤸♀":"1f938-200d-2640-fe0f","🤼♂":"1f93c-200d-2642-fe0f","🤼♀":"1f93c-200d-2640-fe0f","🤽♂":"1f93d-200d-2642-fe0f","🤽♀":"1f93d-200d-2640-fe0f","🤾♂":"1f93e-200d-2642-fe0f","🤾♀":"1f93e-200d-2640-fe0f","🤹♂":"1f939-200d-2642-fe0f","🤹♀":"1f939-200d-2640-fe0f","👨👦":"1f468-200d-1f466","👨👧":"1f468-200d-1f467","👩👦":"1f469-200d-1f466","👩👧":"1f469-200d-1f467","👁🗨":"1f441-200d-1f5e8","#️⃣":"23-20e3","*️⃣":"2a-20e3","0️⃣":"30-20e3","1️⃣":"31-20e3","2️⃣":"32-20e3","3️⃣":"33-20e3","4️⃣":"34-20e3","5️⃣":"35-20e3","6️⃣":"36-20e3","7️⃣":"37-20e3","8️⃣":"38-20e3","9️⃣":"39-20e3","🏳🌈":"1f3f3-fe0f-200d-1f308","👨⚕️":"1f468-200d-2695-fe0f","👨🏻⚕":"1f468-1f3fb-200d-2695-fe0f","👨🏼⚕":"1f468-1f3fc-200d-2695-fe0f","👨🏽⚕":"1f468-1f3fd-200d-2695-fe0f","👨🏾⚕":"1f468-1f3fe-200d-2695-fe0f","👨🏿⚕":"1f468-1f3ff-200d-2695-fe0f","👩⚕️":"1f469-200d-2695-fe0f","👩🏻⚕":"1f469-1f3fb-200d-2695-fe0f","👩🏼⚕":"1f469-1f3fc-200d-2695-fe0f","👩🏽⚕":"1f469-1f3fd-200d-2695-fe0f","👩🏾⚕":"1f469-1f3fe-200d-2695-fe0f","👩🏿⚕":"1f469-1f3ff-200d-2695-fe0f","👨🏻🎓":"1f468-1f3fb-200d-1f393","👨🏼🎓":"1f468-1f3fc-200d-1f393","👨🏽🎓":"1f468-1f3fd-200d-1f393","👨🏾🎓":"1f468-1f3fe-200d-1f393","👨🏿🎓":"1f468-1f3ff-200d-1f393","👩🏻🎓":"1f469-1f3fb-200d-1f393","👩🏼🎓":"1f469-1f3fc-200d-1f393","👩🏽🎓":"1f469-1f3fd-200d-1f393","👩🏾🎓":"1f469-1f3fe-200d-1f393","👩🏿🎓":"1f469-1f3ff-200d-1f393","👨🏻🏫":"1f468-1f3fb-200d-1f3eb","👨🏼🏫":"1f468-1f3fc-200d-1f3eb","👨🏽🏫":"1f468-1f3fd-200d-1f3eb","👨🏾🏫":"1f468-1f3fe-200d-1f3eb","👨🏿🏫":"1f468-1f3ff-200d-1f3eb","👩🏻🏫":"1f469-1f3fb-200d-1f3eb","👩🏼🏫":"1f469-1f3fc-200d-1f3eb","👩🏽🏫":"1f469-1f3fd-200d-1f3eb","👩🏾🏫":"1f469-1f3fe-200d-1f3eb","👩🏿🏫":"1f469-1f3ff-200d-1f3eb","👨⚖️":"1f468-200d-2696-fe0f","👨🏻⚖":"1f468-1f3fb-200d-2696-fe0f","👨🏼⚖":"1f468-1f3fc-200d-2696-fe0f","👨🏽⚖":"1f468-1f3fd-200d-2696-fe0f","👨🏾⚖":"1f468-1f3fe-200d-2696-fe0f","👨🏿⚖":"1f468-1f3ff-200d-2696-fe0f","👩⚖️":"1f469-200d-2696-fe0f","👩🏻⚖":"1f469-1f3fb-200d-2696-fe0f","👩🏼⚖":"1f469-1f3fc-200d-2696-fe0f","👩🏽⚖":"1f469-1f3fd-200d-2696-fe0f","👩🏾⚖":"1f469-1f3fe-200d-2696-fe0f","👩🏿⚖":"1f469-1f3ff-200d-2696-fe0f","👨🏻🌾":"1f468-1f3fb-200d-1f33e","👨🏼🌾":"1f468-1f3fc-200d-1f33e","👨🏽🌾":"1f468-1f3fd-200d-1f33e","👨🏾🌾":"1f468-1f3fe-200d-1f33e","👨🏿🌾":"1f468-1f3ff-200d-1f33e","👩🏻🌾":"1f469-1f3fb-200d-1f33e","👩🏼🌾":"1f469-1f3fc-200d-1f33e","👩🏽🌾":"1f469-1f3fd-200d-1f33e","👩🏾🌾":"1f469-1f3fe-200d-1f33e","👩🏿🌾":"1f469-1f3ff-200d-1f33e","👨🏻🍳":"1f468-1f3fb-200d-1f373","👨🏼🍳":"1f468-1f3fc-200d-1f373","👨🏽🍳":"1f468-1f3fd-200d-1f373","👨🏾🍳":"1f468-1f3fe-200d-1f373","👨🏿🍳":"1f468-1f3ff-200d-1f373","👩🏻🍳":"1f469-1f3fb-200d-1f373","👩🏼🍳":"1f469-1f3fc-200d-1f373","👩🏽🍳":"1f469-1f3fd-200d-1f373","👩🏾🍳":"1f469-1f3fe-200d-1f373","👩🏿🍳":"1f469-1f3ff-200d-1f373","👨🏻🔧":"1f468-1f3fb-200d-1f527","👨🏼🔧":"1f468-1f3fc-200d-1f527","👨🏽🔧":"1f468-1f3fd-200d-1f527","👨🏾🔧":"1f468-1f3fe-200d-1f527","👨🏿🔧":"1f468-1f3ff-200d-1f527","👩🏻🔧":"1f469-1f3fb-200d-1f527","👩🏼🔧":"1f469-1f3fc-200d-1f527","👩🏽🔧":"1f469-1f3fd-200d-1f527","👩🏾🔧":"1f469-1f3fe-200d-1f527","👩🏿🔧":"1f469-1f3ff-200d-1f527","👨🏻🏭":"1f468-1f3fb-200d-1f3ed","👨🏼🏭":"1f468-1f3fc-200d-1f3ed","👨🏽🏭":"1f468-1f3fd-200d-1f3ed","👨🏾🏭":"1f468-1f3fe-200d-1f3ed","👨🏿🏭":"1f468-1f3ff-200d-1f3ed","👩🏻🏭":"1f469-1f3fb-200d-1f3ed","👩🏼🏭":"1f469-1f3fc-200d-1f3ed","👩🏽🏭":"1f469-1f3fd-200d-1f3ed","👩🏾🏭":"1f469-1f3fe-200d-1f3ed","👩🏿🏭":"1f469-1f3ff-200d-1f3ed","👨🏻💼":"1f468-1f3fb-200d-1f4bc","👨🏼💼":"1f468-1f3fc-200d-1f4bc","👨🏽💼":"1f468-1f3fd-200d-1f4bc","👨🏾💼":"1f468-1f3fe-200d-1f4bc","👨🏿💼":"1f468-1f3ff-200d-1f4bc","👩🏻💼":"1f469-1f3fb-200d-1f4bc","👩🏼💼":"1f469-1f3fc-200d-1f4bc","👩🏽💼":"1f469-1f3fd-200d-1f4bc","👩🏾💼":"1f469-1f3fe-200d-1f4bc","👩🏿💼":"1f469-1f3ff-200d-1f4bc","👨🏻🔬":"1f468-1f3fb-200d-1f52c","👨🏼🔬":"1f468-1f3fc-200d-1f52c","👨🏽🔬":"1f468-1f3fd-200d-1f52c","👨🏾🔬":"1f468-1f3fe-200d-1f52c","👨🏿🔬":"1f468-1f3ff-200d-1f52c","👩🏻🔬":"1f469-1f3fb-200d-1f52c","👩🏼🔬":"1f469-1f3fc-200d-1f52c","👩🏽🔬":"1f469-1f3fd-200d-1f52c","👩🏾🔬":"1f469-1f3fe-200d-1f52c","👩🏿🔬":"1f469-1f3ff-200d-1f52c","👨🏻💻":"1f468-1f3fb-200d-1f4bb","👨🏼💻":"1f468-1f3fc-200d-1f4bb","👨🏽💻":"1f468-1f3fd-200d-1f4bb","👨🏾💻":"1f468-1f3fe-200d-1f4bb","👨🏿💻":"1f468-1f3ff-200d-1f4bb","👩🏻💻":"1f469-1f3fb-200d-1f4bb","👩🏼💻":"1f469-1f3fc-200d-1f4bb","👩🏽💻":"1f469-1f3fd-200d-1f4bb","👩🏾💻":"1f469-1f3fe-200d-1f4bb","👩🏿💻":"1f469-1f3ff-200d-1f4bb","👨🏻🎤":"1f468-1f3fb-200d-1f3a4","👨🏼🎤":"1f468-1f3fc-200d-1f3a4","👨🏽🎤":"1f468-1f3fd-200d-1f3a4","👨🏾🎤":"1f468-1f3fe-200d-1f3a4","👨🏿🎤":"1f468-1f3ff-200d-1f3a4","👩🏻🎤":"1f469-1f3fb-200d-1f3a4","👩🏼🎤":"1f469-1f3fc-200d-1f3a4","👩🏽🎤":"1f469-1f3fd-200d-1f3a4","👩🏾🎤":"1f469-1f3fe-200d-1f3a4","👩🏿🎤":"1f469-1f3ff-200d-1f3a4","👨🏻🎨":"1f468-1f3fb-200d-1f3a8","👨🏼🎨":"1f468-1f3fc-200d-1f3a8","👨🏽🎨":"1f468-1f3fd-200d-1f3a8","👨🏾🎨":"1f468-1f3fe-200d-1f3a8","👨🏿🎨":"1f468-1f3ff-200d-1f3a8","👩🏻🎨":"1f469-1f3fb-200d-1f3a8","👩🏼🎨":"1f469-1f3fc-200d-1f3a8","👩🏽🎨":"1f469-1f3fd-200d-1f3a8","👩🏾🎨":"1f469-1f3fe-200d-1f3a8","👩🏿🎨":"1f469-1f3ff-200d-1f3a8","👨✈️":"1f468-200d-2708-fe0f","👨🏻✈":"1f468-1f3fb-200d-2708-fe0f","👨🏼✈":"1f468-1f3fc-200d-2708-fe0f","👨🏽✈":"1f468-1f3fd-200d-2708-fe0f","👨🏾✈":"1f468-1f3fe-200d-2708-fe0f","👨🏿✈":"1f468-1f3ff-200d-2708-fe0f","👩✈️":"1f469-200d-2708-fe0f","👩🏻✈":"1f469-1f3fb-200d-2708-fe0f","👩🏼✈":"1f469-1f3fc-200d-2708-fe0f","👩🏽✈":"1f469-1f3fd-200d-2708-fe0f","👩🏾✈":"1f469-1f3fe-200d-2708-fe0f","👩🏿✈":"1f469-1f3ff-200d-2708-fe0f","👨🏻🚀":"1f468-1f3fb-200d-1f680","👨🏼🚀":"1f468-1f3fc-200d-1f680","👨🏽🚀":"1f468-1f3fd-200d-1f680","👨🏾🚀":"1f468-1f3fe-200d-1f680","👨🏿🚀":"1f468-1f3ff-200d-1f680","👩🏻🚀":"1f469-1f3fb-200d-1f680","👩🏼🚀":"1f469-1f3fc-200d-1f680","👩🏽🚀":"1f469-1f3fd-200d-1f680","👩🏾🚀":"1f469-1f3fe-200d-1f680","👩🏿🚀":"1f469-1f3ff-200d-1f680","👨🏻🚒":"1f468-1f3fb-200d-1f692","👨🏼🚒":"1f468-1f3fc-200d-1f692","👨🏽🚒":"1f468-1f3fd-200d-1f692","👨🏾🚒":"1f468-1f3fe-200d-1f692","👨🏿🚒":"1f468-1f3ff-200d-1f692","👩🏻🚒":"1f469-1f3fb-200d-1f692","👩🏼🚒":"1f469-1f3fc-200d-1f692","👩🏽🚒":"1f469-1f3fd-200d-1f692","👩🏾🚒":"1f469-1f3fe-200d-1f692","👩🏿🚒":"1f469-1f3ff-200d-1f692","👮♂️":"1f46e-200d-2642-fe0f","👮🏻♂":"1f46e-1f3fb-200d-2642-fe0f","👮🏼♂":"1f46e-1f3fc-200d-2642-fe0f","👮🏽♂":"1f46e-1f3fd-200d-2642-fe0f","👮🏾♂":"1f46e-1f3fe-200d-2642-fe0f","👮🏿♂":"1f46e-1f3ff-200d-2642-fe0f","👮♀️":"1f46e-200d-2640-fe0f","👮🏻♀":"1f46e-1f3fb-200d-2640-fe0f","👮🏼♀":"1f46e-1f3fc-200d-2640-fe0f","👮🏽♀":"1f46e-1f3fd-200d-2640-fe0f","👮🏾♀":"1f46e-1f3fe-200d-2640-fe0f","👮🏿♀":"1f46e-1f3ff-200d-2640-fe0f","🕵♂️":"1f575-fe0f-200d-2642-fe0f","🕵️♂":"1f575-fe0f-200d-2642-fe0f","🕵🏻♂":"1f575-1f3fb-200d-2642-fe0f","🕵🏼♂":"1f575-1f3fc-200d-2642-fe0f","🕵🏽♂":"1f575-1f3fd-200d-2642-fe0f","🕵🏾♂":"1f575-1f3fe-200d-2642-fe0f","🕵🏿♂":"1f575-1f3ff-200d-2642-fe0f","🕵♀️":"1f575-fe0f-200d-2640-fe0f","🕵️♀":"1f575-fe0f-200d-2640-fe0f","🕵🏻♀":"1f575-1f3fb-200d-2640-fe0f","🕵🏼♀":"1f575-1f3fc-200d-2640-fe0f","🕵🏽♀":"1f575-1f3fd-200d-2640-fe0f","🕵🏾♀":"1f575-1f3fe-200d-2640-fe0f","🕵🏿♀":"1f575-1f3ff-200d-2640-fe0f","💂♂️":"1f482-200d-2642-fe0f","💂🏻♂":"1f482-1f3fb-200d-2642-fe0f","💂🏼♂":"1f482-1f3fc-200d-2642-fe0f","💂🏽♂":"1f482-1f3fd-200d-2642-fe0f","💂🏾♂":"1f482-1f3fe-200d-2642-fe0f","💂🏿♂":"1f482-1f3ff-200d-2642-fe0f","💂♀️":"1f482-200d-2640-fe0f","💂🏻♀":"1f482-1f3fb-200d-2640-fe0f","💂🏼♀":"1f482-1f3fc-200d-2640-fe0f","💂🏽♀":"1f482-1f3fd-200d-2640-fe0f","💂🏾♀":"1f482-1f3fe-200d-2640-fe0f","💂🏿♀":"1f482-1f3ff-200d-2640-fe0f","👷♂️":"1f477-200d-2642-fe0f","👷🏻♂":"1f477-1f3fb-200d-2642-fe0f","👷🏼♂":"1f477-1f3fc-200d-2642-fe0f","👷🏽♂":"1f477-1f3fd-200d-2642-fe0f","👷🏾♂":"1f477-1f3fe-200d-2642-fe0f","👷🏿♂":"1f477-1f3ff-200d-2642-fe0f","👷♀️":"1f477-200d-2640-fe0f","👷🏻♀":"1f477-1f3fb-200d-2640-fe0f","👷🏼♀":"1f477-1f3fc-200d-2640-fe0f","👷🏽♀":"1f477-1f3fd-200d-2640-fe0f","👷🏾♀":"1f477-1f3fe-200d-2640-fe0f","👷🏿♀":"1f477-1f3ff-200d-2640-fe0f","👳♂️":"1f473-200d-2642-fe0f","👳🏻♂":"1f473-1f3fb-200d-2642-fe0f","👳🏼♂":"1f473-1f3fc-200d-2642-fe0f","👳🏽♂":"1f473-1f3fd-200d-2642-fe0f","👳🏾♂":"1f473-1f3fe-200d-2642-fe0f","👳🏿♂":"1f473-1f3ff-200d-2642-fe0f","👳♀️":"1f473-200d-2640-fe0f","👳🏻♀":"1f473-1f3fb-200d-2640-fe0f","👳🏼♀":"1f473-1f3fc-200d-2640-fe0f","👳🏽♀":"1f473-1f3fd-200d-2640-fe0f","👳🏾♀":"1f473-1f3fe-200d-2640-fe0f","👳🏿♀":"1f473-1f3ff-200d-2640-fe0f","👱♂️":"1f471-200d-2642-fe0f","👱🏻♂":"1f471-1f3fb-200d-2642-fe0f","👱🏼♂":"1f471-1f3fc-200d-2642-fe0f","👱🏽♂":"1f471-1f3fd-200d-2642-fe0f","👱🏾♂":"1f471-1f3fe-200d-2642-fe0f","👱🏿♂":"1f471-1f3ff-200d-2642-fe0f","👱♀️":"1f471-200d-2640-fe0f","👱🏻♀":"1f471-1f3fb-200d-2640-fe0f","👱🏼♀":"1f471-1f3fc-200d-2640-fe0f","👱🏽♀":"1f471-1f3fd-200d-2640-fe0f","👱🏾♀":"1f471-1f3fe-200d-2640-fe0f","👱🏿♀":"1f471-1f3ff-200d-2640-fe0f","🧙♀️":"1f9d9-200d-2640-fe0f","🧙🏻♀":"1f9d9-1f3fb-200d-2640-fe0f","🧙🏼♀":"1f9d9-1f3fc-200d-2640-fe0f","🧙🏽♀":"1f9d9-1f3fd-200d-2640-fe0f","🧙🏾♀":"1f9d9-1f3fe-200d-2640-fe0f","🧙🏿♀":"1f9d9-1f3ff-200d-2640-fe0f","🧙♂️":"1f9d9-200d-2642-fe0f","🧙🏻♂":"1f9d9-1f3fb-200d-2642-fe0f","🧙🏼♂":"1f9d9-1f3fc-200d-2642-fe0f","🧙🏽♂":"1f9d9-1f3fd-200d-2642-fe0f","🧙🏾♂":"1f9d9-1f3fe-200d-2642-fe0f","🧙🏿♂":"1f9d9-1f3ff-200d-2642-fe0f","🧚♀️":"1f9da-200d-2640-fe0f","🧚🏻♀":"1f9da-1f3fb-200d-2640-fe0f","🧚🏼♀":"1f9da-1f3fc-200d-2640-fe0f","🧚🏽♀":"1f9da-1f3fd-200d-2640-fe0f","🧚🏾♀":"1f9da-1f3fe-200d-2640-fe0f","🧚🏿♀":"1f9da-1f3ff-200d-2640-fe0f","🧚♂️":"1f9da-200d-2642-fe0f","🧚🏻♂":"1f9da-1f3fb-200d-2642-fe0f","🧚🏼♂":"1f9da-1f3fc-200d-2642-fe0f","🧚🏽♂":"1f9da-1f3fd-200d-2642-fe0f","🧚🏾♂":"1f9da-1f3fe-200d-2642-fe0f","🧚🏿♂":"1f9da-1f3ff-200d-2642-fe0f","🧛♀️":"1f9db-200d-2640-fe0f","🧛🏻♀":"1f9db-1f3fb-200d-2640-fe0f","🧛🏼♀":"1f9db-1f3fc-200d-2640-fe0f","🧛🏽♀":"1f9db-1f3fd-200d-2640-fe0f","🧛🏾♀":"1f9db-1f3fe-200d-2640-fe0f","🧛🏿♀":"1f9db-1f3ff-200d-2640-fe0f","🧛♂️":"1f9db-200d-2642-fe0f","🧛🏻♂":"1f9db-1f3fb-200d-2642-fe0f","🧛🏼♂":"1f9db-1f3fc-200d-2642-fe0f","🧛🏽♂":"1f9db-1f3fd-200d-2642-fe0f","🧛🏾♂":"1f9db-1f3fe-200d-2642-fe0f","🧛🏿♂":"1f9db-1f3ff-200d-2642-fe0f","🧜♀️":"1f9dc-200d-2640-fe0f","🧜🏻♀":"1f9dc-1f3fb-200d-2640-fe0f","🧜🏼♀":"1f9dc-1f3fc-200d-2640-fe0f","🧜🏽♀":"1f9dc-1f3fd-200d-2640-fe0f","🧜🏾♀":"1f9dc-1f3fe-200d-2640-fe0f","🧜🏿♀":"1f9dc-1f3ff-200d-2640-fe0f","🧜♂️":"1f9dc-200d-2642-fe0f","🧜🏻♂":"1f9dc-1f3fb-200d-2642-fe0f","🧜🏼♂":"1f9dc-1f3fc-200d-2642-fe0f","🧜🏽♂":"1f9dc-1f3fd-200d-2642-fe0f","🧜🏾♂":"1f9dc-1f3fe-200d-2642-fe0f","🧜🏿♂":"1f9dc-1f3ff-200d-2642-fe0f","🧝♀️":"1f9dd-200d-2640-fe0f","🧝🏻♀":"1f9dd-1f3fb-200d-2640-fe0f","🧝🏼♀":"1f9dd-1f3fc-200d-2640-fe0f","🧝🏽♀":"1f9dd-1f3fd-200d-2640-fe0f","🧝🏾♀":"1f9dd-1f3fe-200d-2640-fe0f","🧝🏿♀":"1f9dd-1f3ff-200d-2640-fe0f","🧝♂️":"1f9dd-200d-2642-fe0f","🧝🏻♂":"1f9dd-1f3fb-200d-2642-fe0f","🧝🏼♂":"1f9dd-1f3fc-200d-2642-fe0f","🧝🏽♂":"1f9dd-1f3fd-200d-2642-fe0f","🧝🏾♂":"1f9dd-1f3fe-200d-2642-fe0f","🧝🏿♂":"1f9dd-1f3ff-200d-2642-fe0f","🧞♀️":"1f9de-200d-2640-fe0f","🧞♂️":"1f9de-200d-2642-fe0f","🧟♀️":"1f9df-200d-2640-fe0f","🧟♂️":"1f9df-200d-2642-fe0f","🙍♂️":"1f64d-200d-2642-fe0f","🙍🏻♂":"1f64d-1f3fb-200d-2642-fe0f","🙍🏼♂":"1f64d-1f3fc-200d-2642-fe0f","🙍🏽♂":"1f64d-1f3fd-200d-2642-fe0f","🙍🏾♂":"1f64d-1f3fe-200d-2642-fe0f","🙍🏿♂":"1f64d-1f3ff-200d-2642-fe0f","🙍♀️":"1f64d-200d-2640-fe0f","🙍🏻♀":"1f64d-1f3fb-200d-2640-fe0f","🙍🏼♀":"1f64d-1f3fc-200d-2640-fe0f","🙍🏽♀":"1f64d-1f3fd-200d-2640-fe0f","🙍🏾♀":"1f64d-1f3fe-200d-2640-fe0f","🙍🏿♀":"1f64d-1f3ff-200d-2640-fe0f","🙎♂️":"1f64e-200d-2642-fe0f","🙎🏻♂":"1f64e-1f3fb-200d-2642-fe0f","🙎🏼♂":"1f64e-1f3fc-200d-2642-fe0f","🙎🏽♂":"1f64e-1f3fd-200d-2642-fe0f","🙎🏾♂":"1f64e-1f3fe-200d-2642-fe0f","🙎🏿♂":"1f64e-1f3ff-200d-2642-fe0f","🙎♀️":"1f64e-200d-2640-fe0f","🙎🏻♀":"1f64e-1f3fb-200d-2640-fe0f","🙎🏼♀":"1f64e-1f3fc-200d-2640-fe0f","🙎🏽♀":"1f64e-1f3fd-200d-2640-fe0f","🙎🏾♀":"1f64e-1f3fe-200d-2640-fe0f","🙎🏿♀":"1f64e-1f3ff-200d-2640-fe0f","🙅♂️":"1f645-200d-2642-fe0f","🙅🏻♂":"1f645-1f3fb-200d-2642-fe0f","🙅🏼♂":"1f645-1f3fc-200d-2642-fe0f","🙅🏽♂":"1f645-1f3fd-200d-2642-fe0f","🙅🏾♂":"1f645-1f3fe-200d-2642-fe0f","🙅🏿♂":"1f645-1f3ff-200d-2642-fe0f","🙅♀️":"1f645-200d-2640-fe0f","🙅🏻♀":"1f645-1f3fb-200d-2640-fe0f","🙅🏼♀":"1f645-1f3fc-200d-2640-fe0f","🙅🏽♀":"1f645-1f3fd-200d-2640-fe0f","🙅🏾♀":"1f645-1f3fe-200d-2640-fe0f","🙅🏿♀":"1f645-1f3ff-200d-2640-fe0f","🙆♂️":"1f646-200d-2642-fe0f","🙆🏻♂":"1f646-1f3fb-200d-2642-fe0f","🙆🏼♂":"1f646-1f3fc-200d-2642-fe0f","🙆🏽♂":"1f646-1f3fd-200d-2642-fe0f","🙆🏾♂":"1f646-1f3fe-200d-2642-fe0f","🙆🏿♂":"1f646-1f3ff-200d-2642-fe0f","🙆♀️":"1f646-200d-2640-fe0f","🙆🏻♀":"1f646-1f3fb-200d-2640-fe0f","🙆🏼♀":"1f646-1f3fc-200d-2640-fe0f","🙆🏽♀":"1f646-1f3fd-200d-2640-fe0f","🙆🏾♀":"1f646-1f3fe-200d-2640-fe0f","🙆🏿♀":"1f646-1f3ff-200d-2640-fe0f","💁♂️":"1f481-200d-2642-fe0f","💁🏻♂":"1f481-1f3fb-200d-2642-fe0f","💁🏼♂":"1f481-1f3fc-200d-2642-fe0f","💁🏽♂":"1f481-1f3fd-200d-2642-fe0f","💁🏾♂":"1f481-1f3fe-200d-2642-fe0f","💁🏿♂":"1f481-1f3ff-200d-2642-fe0f","💁♀️":"1f481-200d-2640-fe0f","💁🏻♀":"1f481-1f3fb-200d-2640-fe0f","💁🏼♀":"1f481-1f3fc-200d-2640-fe0f","💁🏽♀":"1f481-1f3fd-200d-2640-fe0f","💁🏾♀":"1f481-1f3fe-200d-2640-fe0f","💁🏿♀":"1f481-1f3ff-200d-2640-fe0f","🙋♂️":"1f64b-200d-2642-fe0f","🙋🏻♂":"1f64b-1f3fb-200d-2642-fe0f","🙋🏼♂":"1f64b-1f3fc-200d-2642-fe0f","🙋🏽♂":"1f64b-1f3fd-200d-2642-fe0f","🙋🏾♂":"1f64b-1f3fe-200d-2642-fe0f","🙋🏿♂":"1f64b-1f3ff-200d-2642-fe0f","🙋♀️":"1f64b-200d-2640-fe0f","🙋🏻♀":"1f64b-1f3fb-200d-2640-fe0f","🙋🏼♀":"1f64b-1f3fc-200d-2640-fe0f","🙋🏽♀":"1f64b-1f3fd-200d-2640-fe0f","🙋🏾♀":"1f64b-1f3fe-200d-2640-fe0f","🙋🏿♀":"1f64b-1f3ff-200d-2640-fe0f","🙇♂️":"1f647-200d-2642-fe0f","🙇🏻♂":"1f647-1f3fb-200d-2642-fe0f","🙇🏼♂":"1f647-1f3fc-200d-2642-fe0f","🙇🏽♂":"1f647-1f3fd-200d-2642-fe0f","🙇🏾♂":"1f647-1f3fe-200d-2642-fe0f","🙇🏿♂":"1f647-1f3ff-200d-2642-fe0f","🙇♀️":"1f647-200d-2640-fe0f","🙇🏻♀":"1f647-1f3fb-200d-2640-fe0f","🙇🏼♀":"1f647-1f3fc-200d-2640-fe0f","🙇🏽♀":"1f647-1f3fd-200d-2640-fe0f","🙇🏾♀":"1f647-1f3fe-200d-2640-fe0f","🙇🏿♀":"1f647-1f3ff-200d-2640-fe0f","🤦♂️":"1f926-200d-2642-fe0f","🤦🏻♂":"1f926-1f3fb-200d-2642-fe0f","🤦🏼♂":"1f926-1f3fc-200d-2642-fe0f","🤦🏽♂":"1f926-1f3fd-200d-2642-fe0f","🤦🏾♂":"1f926-1f3fe-200d-2642-fe0f","🤦🏿♂":"1f926-1f3ff-200d-2642-fe0f","🤦♀️":"1f926-200d-2640-fe0f","🤦🏻♀":"1f926-1f3fb-200d-2640-fe0f","🤦🏼♀":"1f926-1f3fc-200d-2640-fe0f","🤦🏽♀":"1f926-1f3fd-200d-2640-fe0f","🤦🏾♀":"1f926-1f3fe-200d-2640-fe0f","🤦🏿♀":"1f926-1f3ff-200d-2640-fe0f","🤷♂️":"1f937-200d-2642-fe0f","🤷🏻♂":"1f937-1f3fb-200d-2642-fe0f","🤷🏼♂":"1f937-1f3fc-200d-2642-fe0f","🤷🏽♂":"1f937-1f3fd-200d-2642-fe0f","🤷🏾♂":"1f937-1f3fe-200d-2642-fe0f","🤷🏿♂":"1f937-1f3ff-200d-2642-fe0f","🤷♀️":"1f937-200d-2640-fe0f","🤷🏻♀":"1f937-1f3fb-200d-2640-fe0f","🤷🏼♀":"1f937-1f3fc-200d-2640-fe0f","🤷🏽♀":"1f937-1f3fd-200d-2640-fe0f","🤷🏾♀":"1f937-1f3fe-200d-2640-fe0f","🤷🏿♀":"1f937-1f3ff-200d-2640-fe0f","💆♂️":"1f486-200d-2642-fe0f","💆🏻♂":"1f486-1f3fb-200d-2642-fe0f","💆🏼♂":"1f486-1f3fc-200d-2642-fe0f","💆🏽♂":"1f486-1f3fd-200d-2642-fe0f","💆🏾♂":"1f486-1f3fe-200d-2642-fe0f","💆🏿♂":"1f486-1f3ff-200d-2642-fe0f","💆♀️":"1f486-200d-2640-fe0f","💆🏻♀":"1f486-1f3fb-200d-2640-fe0f","💆🏼♀":"1f486-1f3fc-200d-2640-fe0f","💆🏽♀":"1f486-1f3fd-200d-2640-fe0f","💆🏾♀":"1f486-1f3fe-200d-2640-fe0f","💆🏿♀":"1f486-1f3ff-200d-2640-fe0f","💇♂️":"1f487-200d-2642-fe0f","💇🏻♂":"1f487-1f3fb-200d-2642-fe0f","💇🏼♂":"1f487-1f3fc-200d-2642-fe0f","💇🏽♂":"1f487-1f3fd-200d-2642-fe0f","💇🏾♂":"1f487-1f3fe-200d-2642-fe0f","💇🏿♂":"1f487-1f3ff-200d-2642-fe0f","💇♀️":"1f487-200d-2640-fe0f","💇🏻♀":"1f487-1f3fb-200d-2640-fe0f","💇🏼♀":"1f487-1f3fc-200d-2640-fe0f","💇🏽♀":"1f487-1f3fd-200d-2640-fe0f","💇🏾♀":"1f487-1f3fe-200d-2640-fe0f","💇🏿♀":"1f487-1f3ff-200d-2640-fe0f","🚶♂️":"1f6b6-200d-2642-fe0f","🚶🏻♂":"1f6b6-1f3fb-200d-2642-fe0f","🚶🏼♂":"1f6b6-1f3fc-200d-2642-fe0f","🚶🏽♂":"1f6b6-1f3fd-200d-2642-fe0f","🚶🏾♂":"1f6b6-1f3fe-200d-2642-fe0f","🚶🏿♂":"1f6b6-1f3ff-200d-2642-fe0f","🚶♀️":"1f6b6-200d-2640-fe0f","🚶🏻♀":"1f6b6-1f3fb-200d-2640-fe0f","🚶🏼♀":"1f6b6-1f3fc-200d-2640-fe0f","🚶🏽♀":"1f6b6-1f3fd-200d-2640-fe0f","🚶🏾♀":"1f6b6-1f3fe-200d-2640-fe0f","🚶🏿♀":"1f6b6-1f3ff-200d-2640-fe0f","🏃♂️":"1f3c3-200d-2642-fe0f","🏃🏻♂":"1f3c3-1f3fb-200d-2642-fe0f","🏃🏼♂":"1f3c3-1f3fc-200d-2642-fe0f","🏃🏽♂":"1f3c3-1f3fd-200d-2642-fe0f","🏃🏾♂":"1f3c3-1f3fe-200d-2642-fe0f","🏃🏿♂":"1f3c3-1f3ff-200d-2642-fe0f","🏃♀️":"1f3c3-200d-2640-fe0f","🏃🏻♀":"1f3c3-1f3fb-200d-2640-fe0f","🏃🏼♀":"1f3c3-1f3fc-200d-2640-fe0f","🏃🏽♀":"1f3c3-1f3fd-200d-2640-fe0f","🏃🏾♀":"1f3c3-1f3fe-200d-2640-fe0f","🏃🏿♀":"1f3c3-1f3ff-200d-2640-fe0f","👯♂️":"1f46f-200d-2642-fe0f","👯♀️":"1f46f-200d-2640-fe0f","🧖♀️":"1f9d6-200d-2640-fe0f","🧖🏻♀":"1f9d6-1f3fb-200d-2640-fe0f","🧖🏼♀":"1f9d6-1f3fc-200d-2640-fe0f","🧖🏽♀":"1f9d6-1f3fd-200d-2640-fe0f","🧖🏾♀":"1f9d6-1f3fe-200d-2640-fe0f","🧖🏿♀":"1f9d6-1f3ff-200d-2640-fe0f","🧖♂️":"1f9d6-200d-2642-fe0f","🧖🏻♂":"1f9d6-1f3fb-200d-2642-fe0f","🧖🏼♂":"1f9d6-1f3fc-200d-2642-fe0f","🧖🏽♂":"1f9d6-1f3fd-200d-2642-fe0f","🧖🏾♂":"1f9d6-1f3fe-200d-2642-fe0f","🧖🏿♂":"1f9d6-1f3ff-200d-2642-fe0f","🧗♀️":"1f9d7-200d-2640-fe0f","🧗🏻♀":"1f9d7-1f3fb-200d-2640-fe0f","🧗🏼♀":"1f9d7-1f3fc-200d-2640-fe0f","🧗🏽♀":"1f9d7-1f3fd-200d-2640-fe0f","🧗🏾♀":"1f9d7-1f3fe-200d-2640-fe0f","🧗🏿♀":"1f9d7-1f3ff-200d-2640-fe0f","🧗♂️":"1f9d7-200d-2642-fe0f","🧗🏻♂":"1f9d7-1f3fb-200d-2642-fe0f","🧗🏼♂":"1f9d7-1f3fc-200d-2642-fe0f","🧗🏽♂":"1f9d7-1f3fd-200d-2642-fe0f","🧗🏾♂":"1f9d7-1f3fe-200d-2642-fe0f","🧗🏿♂":"1f9d7-1f3ff-200d-2642-fe0f","🧘♀️":"1f9d8-200d-2640-fe0f","🧘🏻♀":"1f9d8-1f3fb-200d-2640-fe0f","🧘🏼♀":"1f9d8-1f3fc-200d-2640-fe0f","🧘🏽♀":"1f9d8-1f3fd-200d-2640-fe0f","🧘🏾♀":"1f9d8-1f3fe-200d-2640-fe0f","🧘🏿♀":"1f9d8-1f3ff-200d-2640-fe0f","🧘♂️":"1f9d8-200d-2642-fe0f","🧘🏻♂":"1f9d8-1f3fb-200d-2642-fe0f","🧘🏼♂":"1f9d8-1f3fc-200d-2642-fe0f","🧘🏽♂":"1f9d8-1f3fd-200d-2642-fe0f","🧘🏾♂":"1f9d8-1f3fe-200d-2642-fe0f","🧘🏿♂":"1f9d8-1f3ff-200d-2642-fe0f","🏌♂️":"1f3cc-fe0f-200d-2642-fe0f","🏌️♂":"1f3cc-fe0f-200d-2642-fe0f","🏌🏻♂":"1f3cc-1f3fb-200d-2642-fe0f","🏌🏼♂":"1f3cc-1f3fc-200d-2642-fe0f","🏌🏽♂":"1f3cc-1f3fd-200d-2642-fe0f","🏌🏾♂":"1f3cc-1f3fe-200d-2642-fe0f","🏌🏿♂":"1f3cc-1f3ff-200d-2642-fe0f","🏌♀️":"1f3cc-fe0f-200d-2640-fe0f","🏌️♀":"1f3cc-fe0f-200d-2640-fe0f","🏌🏻♀":"1f3cc-1f3fb-200d-2640-fe0f","🏌🏼♀":"1f3cc-1f3fc-200d-2640-fe0f","🏌🏽♀":"1f3cc-1f3fd-200d-2640-fe0f","🏌🏾♀":"1f3cc-1f3fe-200d-2640-fe0f","🏌🏿♀":"1f3cc-1f3ff-200d-2640-fe0f","🏄♂️":"1f3c4-200d-2642-fe0f","🏄🏻♂":"1f3c4-1f3fb-200d-2642-fe0f","🏄🏼♂":"1f3c4-1f3fc-200d-2642-fe0f","🏄🏽♂":"1f3c4-1f3fd-200d-2642-fe0f","🏄🏾♂":"1f3c4-1f3fe-200d-2642-fe0f","🏄🏿♂":"1f3c4-1f3ff-200d-2642-fe0f","🏄♀️":"1f3c4-200d-2640-fe0f","🏄🏻♀":"1f3c4-1f3fb-200d-2640-fe0f","🏄🏼♀":"1f3c4-1f3fc-200d-2640-fe0f","🏄🏽♀":"1f3c4-1f3fd-200d-2640-fe0f","🏄🏾♀":"1f3c4-1f3fe-200d-2640-fe0f","🏄🏿♀":"1f3c4-1f3ff-200d-2640-fe0f","🚣♂️":"1f6a3-200d-2642-fe0f","🚣🏻♂":"1f6a3-1f3fb-200d-2642-fe0f","🚣🏼♂":"1f6a3-1f3fc-200d-2642-fe0f","🚣🏽♂":"1f6a3-1f3fd-200d-2642-fe0f","🚣🏾♂":"1f6a3-1f3fe-200d-2642-fe0f","🚣🏿♂":"1f6a3-1f3ff-200d-2642-fe0f","🚣♀️":"1f6a3-200d-2640-fe0f","🚣🏻♀":"1f6a3-1f3fb-200d-2640-fe0f","🚣🏼♀":"1f6a3-1f3fc-200d-2640-fe0f","🚣🏽♀":"1f6a3-1f3fd-200d-2640-fe0f","🚣🏾♀":"1f6a3-1f3fe-200d-2640-fe0f","🚣🏿♀":"1f6a3-1f3ff-200d-2640-fe0f","🏊♂️":"1f3ca-200d-2642-fe0f","🏊🏻♂":"1f3ca-1f3fb-200d-2642-fe0f","🏊🏼♂":"1f3ca-1f3fc-200d-2642-fe0f","🏊🏽♂":"1f3ca-1f3fd-200d-2642-fe0f","🏊🏾♂":"1f3ca-1f3fe-200d-2642-fe0f","🏊🏿♂":"1f3ca-1f3ff-200d-2642-fe0f","🏊♀️":"1f3ca-200d-2640-fe0f","🏊🏻♀":"1f3ca-1f3fb-200d-2640-fe0f","🏊🏼♀":"1f3ca-1f3fc-200d-2640-fe0f","🏊🏽♀":"1f3ca-1f3fd-200d-2640-fe0f","🏊🏾♀":"1f3ca-1f3fe-200d-2640-fe0f","🏊🏿♀":"1f3ca-1f3ff-200d-2640-fe0f","⛹♂️":"26f9-fe0f-200d-2642-fe0f","⛹️♂":"26f9-fe0f-200d-2642-fe0f","⛹🏻♂":"26f9-1f3fb-200d-2642-fe0f","⛹🏼♂":"26f9-1f3fc-200d-2642-fe0f","⛹🏽♂":"26f9-1f3fd-200d-2642-fe0f","⛹🏾♂":"26f9-1f3fe-200d-2642-fe0f","⛹🏿♂":"26f9-1f3ff-200d-2642-fe0f","⛹♀️":"26f9-fe0f-200d-2640-fe0f","⛹️♀":"26f9-fe0f-200d-2640-fe0f","⛹🏻♀":"26f9-1f3fb-200d-2640-fe0f","⛹🏼♀":"26f9-1f3fc-200d-2640-fe0f","⛹🏽♀":"26f9-1f3fd-200d-2640-fe0f","⛹🏾♀":"26f9-1f3fe-200d-2640-fe0f","⛹🏿♀":"26f9-1f3ff-200d-2640-fe0f","🏋♂️":"1f3cb-fe0f-200d-2642-fe0f","🏋️♂":"1f3cb-fe0f-200d-2642-fe0f","🏋🏻♂":"1f3cb-1f3fb-200d-2642-fe0f","🏋🏼♂":"1f3cb-1f3fc-200d-2642-fe0f","🏋🏽♂":"1f3cb-1f3fd-200d-2642-fe0f","🏋🏾♂":"1f3cb-1f3fe-200d-2642-fe0f","🏋🏿♂":"1f3cb-1f3ff-200d-2642-fe0f","🏋♀️":"1f3cb-fe0f-200d-2640-fe0f","🏋️♀":"1f3cb-fe0f-200d-2640-fe0f","🏋🏻♀":"1f3cb-1f3fb-200d-2640-fe0f","🏋🏼♀":"1f3cb-1f3fc-200d-2640-fe0f","🏋🏽♀":"1f3cb-1f3fd-200d-2640-fe0f","🏋🏾♀":"1f3cb-1f3fe-200d-2640-fe0f","🏋🏿♀":"1f3cb-1f3ff-200d-2640-fe0f","🚴♂️":"1f6b4-200d-2642-fe0f","🚴🏻♂":"1f6b4-1f3fb-200d-2642-fe0f","🚴🏼♂":"1f6b4-1f3fc-200d-2642-fe0f","🚴🏽♂":"1f6b4-1f3fd-200d-2642-fe0f","🚴🏾♂":"1f6b4-1f3fe-200d-2642-fe0f","🚴🏿♂":"1f6b4-1f3ff-200d-2642-fe0f","🚴♀️":"1f6b4-200d-2640-fe0f","🚴🏻♀":"1f6b4-1f3fb-200d-2640-fe0f","🚴🏼♀":"1f6b4-1f3fc-200d-2640-fe0f","🚴🏽♀":"1f6b4-1f3fd-200d-2640-fe0f","🚴🏾♀":"1f6b4-1f3fe-200d-2640-fe0f","🚴🏿♀":"1f6b4-1f3ff-200d-2640-fe0f","🚵♂️":"1f6b5-200d-2642-fe0f","🚵🏻♂":"1f6b5-1f3fb-200d-2642-fe0f","🚵🏼♂":"1f6b5-1f3fc-200d-2642-fe0f","🚵🏽♂":"1f6b5-1f3fd-200d-2642-fe0f","🚵🏾♂":"1f6b5-1f3fe-200d-2642-fe0f","🚵🏿♂":"1f6b5-1f3ff-200d-2642-fe0f","🚵♀️":"1f6b5-200d-2640-fe0f","🚵🏻♀":"1f6b5-1f3fb-200d-2640-fe0f","🚵🏼♀":"1f6b5-1f3fc-200d-2640-fe0f","🚵🏽♀":"1f6b5-1f3fd-200d-2640-fe0f","🚵🏾♀":"1f6b5-1f3fe-200d-2640-fe0f","🚵🏿♀":"1f6b5-1f3ff-200d-2640-fe0f","🤸♂️":"1f938-200d-2642-fe0f","🤸🏻♂":"1f938-1f3fb-200d-2642-fe0f","🤸🏼♂":"1f938-1f3fc-200d-2642-fe0f","🤸🏽♂":"1f938-1f3fd-200d-2642-fe0f","🤸🏾♂":"1f938-1f3fe-200d-2642-fe0f","🤸🏿♂":"1f938-1f3ff-200d-2642-fe0f","🤸♀️":"1f938-200d-2640-fe0f","🤸🏻♀":"1f938-1f3fb-200d-2640-fe0f","🤸🏼♀":"1f938-1f3fc-200d-2640-fe0f","🤸🏽♀":"1f938-1f3fd-200d-2640-fe0f","🤸🏾♀":"1f938-1f3fe-200d-2640-fe0f","🤸🏿♀":"1f938-1f3ff-200d-2640-fe0f","🤼♂️":"1f93c-200d-2642-fe0f","🤼♀️":"1f93c-200d-2640-fe0f","🤽♂️":"1f93d-200d-2642-fe0f","🤽🏻♂":"1f93d-1f3fb-200d-2642-fe0f","🤽🏼♂":"1f93d-1f3fc-200d-2642-fe0f","🤽🏽♂":"1f93d-1f3fd-200d-2642-fe0f","🤽🏾♂":"1f93d-1f3fe-200d-2642-fe0f","🤽🏿♂":"1f93d-1f3ff-200d-2642-fe0f","🤽♀️":"1f93d-200d-2640-fe0f","🤽🏻♀":"1f93d-1f3fb-200d-2640-fe0f","🤽🏼♀":"1f93d-1f3fc-200d-2640-fe0f","🤽🏽♀":"1f93d-1f3fd-200d-2640-fe0f","🤽🏾♀":"1f93d-1f3fe-200d-2640-fe0f","🤽🏿♀":"1f93d-1f3ff-200d-2640-fe0f","🤾♂️":"1f93e-200d-2642-fe0f","🤾🏻♂":"1f93e-1f3fb-200d-2642-fe0f","🤾🏼♂":"1f93e-1f3fc-200d-2642-fe0f","🤾🏽♂":"1f93e-1f3fd-200d-2642-fe0f","🤾🏾♂":"1f93e-1f3fe-200d-2642-fe0f","🤾🏿♂":"1f93e-1f3ff-200d-2642-fe0f","🤾♀️":"1f93e-200d-2640-fe0f","🤾🏻♀":"1f93e-1f3fb-200d-2640-fe0f","🤾🏼♀":"1f93e-1f3fc-200d-2640-fe0f","🤾🏽♀":"1f93e-1f3fd-200d-2640-fe0f","🤾🏾♀":"1f93e-1f3fe-200d-2640-fe0f","🤾🏿♀":"1f93e-1f3ff-200d-2640-fe0f","🤹♂️":"1f939-200d-2642-fe0f","🤹🏻♂":"1f939-1f3fb-200d-2642-fe0f","🤹🏼♂":"1f939-1f3fc-200d-2642-fe0f","🤹🏽♂":"1f939-1f3fd-200d-2642-fe0f","🤹🏾♂":"1f939-1f3fe-200d-2642-fe0f","🤹🏿♂":"1f939-1f3ff-200d-2642-fe0f","🤹♀️":"1f939-200d-2640-fe0f","🤹🏻♀":"1f939-1f3fb-200d-2640-fe0f","🤹🏼♀":"1f939-1f3fc-200d-2640-fe0f","🤹🏽♀":"1f939-1f3fd-200d-2640-fe0f","🤹🏾♀":"1f939-1f3fe-200d-2640-fe0f","🤹🏿♀":"1f939-1f3ff-200d-2640-fe0f","👁🗨️":"1f441-200d-1f5e8","👁️🗨":"1f441-200d-1f5e8","🏳️🌈":"1f3f3-fe0f-200d-1f308","👨🏻⚕️":"1f468-1f3fb-200d-2695-fe0f","👨🏼⚕️":"1f468-1f3fc-200d-2695-fe0f","👨🏽⚕️":"1f468-1f3fd-200d-2695-fe0f","👨🏾⚕️":"1f468-1f3fe-200d-2695-fe0f","👨🏿⚕️":"1f468-1f3ff-200d-2695-fe0f","👩🏻⚕️":"1f469-1f3fb-200d-2695-fe0f","👩🏼⚕️":"1f469-1f3fc-200d-2695-fe0f","👩🏽⚕️":"1f469-1f3fd-200d-2695-fe0f","👩🏾⚕️":"1f469-1f3fe-200d-2695-fe0f","👩🏿⚕️":"1f469-1f3ff-200d-2695-fe0f","👨🏻⚖️":"1f468-1f3fb-200d-2696-fe0f","👨🏼⚖️":"1f468-1f3fc-200d-2696-fe0f","👨🏽⚖️":"1f468-1f3fd-200d-2696-fe0f","👨🏾⚖️":"1f468-1f3fe-200d-2696-fe0f","👨🏿⚖️":"1f468-1f3ff-200d-2696-fe0f","👩🏻⚖️":"1f469-1f3fb-200d-2696-fe0f","👩🏼⚖️":"1f469-1f3fc-200d-2696-fe0f","👩🏽⚖️":"1f469-1f3fd-200d-2696-fe0f","👩🏾⚖️":"1f469-1f3fe-200d-2696-fe0f","👩🏿⚖️":"1f469-1f3ff-200d-2696-fe0f","👨🏻✈️":"1f468-1f3fb-200d-2708-fe0f","👨🏼✈️":"1f468-1f3fc-200d-2708-fe0f","👨🏽✈️":"1f468-1f3fd-200d-2708-fe0f","👨🏾✈️":"1f468-1f3fe-200d-2708-fe0f","👨🏿✈️":"1f468-1f3ff-200d-2708-fe0f","👩🏻✈️":"1f469-1f3fb-200d-2708-fe0f","👩🏼✈️":"1f469-1f3fc-200d-2708-fe0f","👩🏽✈️":"1f469-1f3fd-200d-2708-fe0f","👩🏾✈️":"1f469-1f3fe-200d-2708-fe0f","👩🏿✈️":"1f469-1f3ff-200d-2708-fe0f","👮🏻♂️":"1f46e-1f3fb-200d-2642-fe0f","👮🏼♂️":"1f46e-1f3fc-200d-2642-fe0f","👮🏽♂️":"1f46e-1f3fd-200d-2642-fe0f","👮🏾♂️":"1f46e-1f3fe-200d-2642-fe0f","👮🏿♂️":"1f46e-1f3ff-200d-2642-fe0f","👮🏻♀️":"1f46e-1f3fb-200d-2640-fe0f","👮🏼♀️":"1f46e-1f3fc-200d-2640-fe0f","👮🏽♀️":"1f46e-1f3fd-200d-2640-fe0f","👮🏾♀️":"1f46e-1f3fe-200d-2640-fe0f","👮🏿♀️":"1f46e-1f3ff-200d-2640-fe0f","🕵️♂️":"1f575-fe0f-200d-2642-fe0f","🕵🏻♂️":"1f575-1f3fb-200d-2642-fe0f","🕵🏼♂️":"1f575-1f3fc-200d-2642-fe0f","🕵🏽♂️":"1f575-1f3fd-200d-2642-fe0f","🕵🏾♂️":"1f575-1f3fe-200d-2642-fe0f","🕵🏿♂️":"1f575-1f3ff-200d-2642-fe0f","🕵️♀️":"1f575-fe0f-200d-2640-fe0f","🕵🏻♀️":"1f575-1f3fb-200d-2640-fe0f","🕵🏼♀️":"1f575-1f3fc-200d-2640-fe0f","🕵🏽♀️":"1f575-1f3fd-200d-2640-fe0f","🕵🏾♀️":"1f575-1f3fe-200d-2640-fe0f","🕵🏿♀️":"1f575-1f3ff-200d-2640-fe0f","💂🏻♂️":"1f482-1f3fb-200d-2642-fe0f","💂🏼♂️":"1f482-1f3fc-200d-2642-fe0f","💂🏽♂️":"1f482-1f3fd-200d-2642-fe0f","💂🏾♂️":"1f482-1f3fe-200d-2642-fe0f","💂🏿♂️":"1f482-1f3ff-200d-2642-fe0f","💂🏻♀️":"1f482-1f3fb-200d-2640-fe0f","💂🏼♀️":"1f482-1f3fc-200d-2640-fe0f","💂🏽♀️":"1f482-1f3fd-200d-2640-fe0f","💂🏾♀️":"1f482-1f3fe-200d-2640-fe0f","💂🏿♀️":"1f482-1f3ff-200d-2640-fe0f","👷🏻♂️":"1f477-1f3fb-200d-2642-fe0f","👷🏼♂️":"1f477-1f3fc-200d-2642-fe0f","👷🏽♂️":"1f477-1f3fd-200d-2642-fe0f","👷🏾♂️":"1f477-1f3fe-200d-2642-fe0f","👷🏿♂️":"1f477-1f3ff-200d-2642-fe0f","👷🏻♀️":"1f477-1f3fb-200d-2640-fe0f","👷🏼♀️":"1f477-1f3fc-200d-2640-fe0f","👷🏽♀️":"1f477-1f3fd-200d-2640-fe0f","👷🏾♀️":"1f477-1f3fe-200d-2640-fe0f","👷🏿♀️":"1f477-1f3ff-200d-2640-fe0f","👳🏻♂️":"1f473-1f3fb-200d-2642-fe0f","👳🏼♂️":"1f473-1f3fc-200d-2642-fe0f","👳🏽♂️":"1f473-1f3fd-200d-2642-fe0f","👳🏾♂️":"1f473-1f3fe-200d-2642-fe0f","👳🏿♂️":"1f473-1f3ff-200d-2642-fe0f","👳🏻♀️":"1f473-1f3fb-200d-2640-fe0f","👳🏼♀️":"1f473-1f3fc-200d-2640-fe0f","👳🏽♀️":"1f473-1f3fd-200d-2640-fe0f","👳🏾♀️":"1f473-1f3fe-200d-2640-fe0f","👳🏿♀️":"1f473-1f3ff-200d-2640-fe0f","👱🏻♂️":"1f471-1f3fb-200d-2642-fe0f","👱🏼♂️":"1f471-1f3fc-200d-2642-fe0f","👱🏽♂️":"1f471-1f3fd-200d-2642-fe0f","👱🏾♂️":"1f471-1f3fe-200d-2642-fe0f","👱🏿♂️":"1f471-1f3ff-200d-2642-fe0f","👱🏻♀️":"1f471-1f3fb-200d-2640-fe0f","👱🏼♀️":"1f471-1f3fc-200d-2640-fe0f","👱🏽♀️":"1f471-1f3fd-200d-2640-fe0f","👱🏾♀️":"1f471-1f3fe-200d-2640-fe0f","👱🏿♀️":"1f471-1f3ff-200d-2640-fe0f","🧙🏻♀️":"1f9d9-1f3fb-200d-2640-fe0f","🧙🏼♀️":"1f9d9-1f3fc-200d-2640-fe0f","🧙🏽♀️":"1f9d9-1f3fd-200d-2640-fe0f","🧙🏾♀️":"1f9d9-1f3fe-200d-2640-fe0f","🧙🏿♀️":"1f9d9-1f3ff-200d-2640-fe0f","🧙🏻♂️":"1f9d9-1f3fb-200d-2642-fe0f","🧙🏼♂️":"1f9d9-1f3fc-200d-2642-fe0f","🧙🏽♂️":"1f9d9-1f3fd-200d-2642-fe0f","🧙🏾♂️":"1f9d9-1f3fe-200d-2642-fe0f","🧙🏿♂️":"1f9d9-1f3ff-200d-2642-fe0f","🧚🏻♀️":"1f9da-1f3fb-200d-2640-fe0f","🧚🏼♀️":"1f9da-1f3fc-200d-2640-fe0f","🧚🏽♀️":"1f9da-1f3fd-200d-2640-fe0f","🧚🏾♀️":"1f9da-1f3fe-200d-2640-fe0f","🧚🏿♀️":"1f9da-1f3ff-200d-2640-fe0f","🧚🏻♂️":"1f9da-1f3fb-200d-2642-fe0f","🧚🏼♂️":"1f9da-1f3fc-200d-2642-fe0f","🧚🏽♂️":"1f9da-1f3fd-200d-2642-fe0f","🧚🏾♂️":"1f9da-1f3fe-200d-2642-fe0f","🧚🏿♂️":"1f9da-1f3ff-200d-2642-fe0f","🧛🏻♀️":"1f9db-1f3fb-200d-2640-fe0f","🧛🏼♀️":"1f9db-1f3fc-200d-2640-fe0f","🧛🏽♀️":"1f9db-1f3fd-200d-2640-fe0f","🧛🏾♀️":"1f9db-1f3fe-200d-2640-fe0f","🧛🏿♀️":"1f9db-1f3ff-200d-2640-fe0f","🧛🏻♂️":"1f9db-1f3fb-200d-2642-fe0f","🧛🏼♂️":"1f9db-1f3fc-200d-2642-fe0f","🧛🏽♂️":"1f9db-1f3fd-200d-2642-fe0f","🧛🏾♂️":"1f9db-1f3fe-200d-2642-fe0f","🧛🏿♂️":"1f9db-1f3ff-200d-2642-fe0f","🧜🏻♀️":"1f9dc-1f3fb-200d-2640-fe0f","🧜🏼♀️":"1f9dc-1f3fc-200d-2640-fe0f","🧜🏽♀️":"1f9dc-1f3fd-200d-2640-fe0f","🧜🏾♀️":"1f9dc-1f3fe-200d-2640-fe0f","🧜🏿♀️":"1f9dc-1f3ff-200d-2640-fe0f","🧜🏻♂️":"1f9dc-1f3fb-200d-2642-fe0f","🧜🏼♂️":"1f9dc-1f3fc-200d-2642-fe0f","🧜🏽♂️":"1f9dc-1f3fd-200d-2642-fe0f","🧜🏾♂️":"1f9dc-1f3fe-200d-2642-fe0f","🧜🏿♂️":"1f9dc-1f3ff-200d-2642-fe0f","🧝🏻♀️":"1f9dd-1f3fb-200d-2640-fe0f","🧝🏼♀️":"1f9dd-1f3fc-200d-2640-fe0f","🧝🏽♀️":"1f9dd-1f3fd-200d-2640-fe0f","🧝🏾♀️":"1f9dd-1f3fe-200d-2640-fe0f","🧝🏿♀️":"1f9dd-1f3ff-200d-2640-fe0f","🧝🏻♂️":"1f9dd-1f3fb-200d-2642-fe0f","🧝🏼♂️":"1f9dd-1f3fc-200d-2642-fe0f","🧝🏽♂️":"1f9dd-1f3fd-200d-2642-fe0f","🧝🏾♂️":"1f9dd-1f3fe-200d-2642-fe0f","🧝🏿♂️":"1f9dd-1f3ff-200d-2642-fe0f","🙍🏻♂️":"1f64d-1f3fb-200d-2642-fe0f","🙍🏼♂️":"1f64d-1f3fc-200d-2642-fe0f","🙍🏽♂️":"1f64d-1f3fd-200d-2642-fe0f","🙍🏾♂️":"1f64d-1f3fe-200d-2642-fe0f","🙍🏿♂️":"1f64d-1f3ff-200d-2642-fe0f","🙍🏻♀️":"1f64d-1f3fb-200d-2640-fe0f","🙍🏼♀️":"1f64d-1f3fc-200d-2640-fe0f","🙍🏽♀️":"1f64d-1f3fd-200d-2640-fe0f","🙍🏾♀️":"1f64d-1f3fe-200d-2640-fe0f","🙍🏿♀️":"1f64d-1f3ff-200d-2640-fe0f","🙎🏻♂️":"1f64e-1f3fb-200d-2642-fe0f","🙎🏼♂️":"1f64e-1f3fc-200d-2642-fe0f","🙎🏽♂️":"1f64e-1f3fd-200d-2642-fe0f","🙎🏾♂️":"1f64e-1f3fe-200d-2642-fe0f","🙎🏿♂️":"1f64e-1f3ff-200d-2642-fe0f","🙎🏻♀️":"1f64e-1f3fb-200d-2640-fe0f","🙎🏼♀️":"1f64e-1f3fc-200d-2640-fe0f","🙎🏽♀️":"1f64e-1f3fd-200d-2640-fe0f","🙎🏾♀️":"1f64e-1f3fe-200d-2640-fe0f","🙎🏿♀️":"1f64e-1f3ff-200d-2640-fe0f","🙅🏻♂️":"1f645-1f3fb-200d-2642-fe0f","🙅🏼♂️":"1f645-1f3fc-200d-2642-fe0f","🙅🏽♂️":"1f645-1f3fd-200d-2642-fe0f","🙅🏾♂️":"1f645-1f3fe-200d-2642-fe0f","🙅🏿♂️":"1f645-1f3ff-200d-2642-fe0f","🙅🏻♀️":"1f645-1f3fb-200d-2640-fe0f","🙅🏼♀️":"1f645-1f3fc-200d-2640-fe0f","🙅🏽♀️":"1f645-1f3fd-200d-2640-fe0f","🙅🏾♀️":"1f645-1f3fe-200d-2640-fe0f","🙅🏿♀️":"1f645-1f3ff-200d-2640-fe0f","🙆🏻♂️":"1f646-1f3fb-200d-2642-fe0f","🙆🏼♂️":"1f646-1f3fc-200d-2642-fe0f","🙆🏽♂️":"1f646-1f3fd-200d-2642-fe0f","🙆🏾♂️":"1f646-1f3fe-200d-2642-fe0f","🙆🏿♂️":"1f646-1f3ff-200d-2642-fe0f","🙆🏻♀️":"1f646-1f3fb-200d-2640-fe0f","🙆🏼♀️":"1f646-1f3fc-200d-2640-fe0f","🙆🏽♀️":"1f646-1f3fd-200d-2640-fe0f","🙆🏾♀️":"1f646-1f3fe-200d-2640-fe0f","🙆🏿♀️":"1f646-1f3ff-200d-2640-fe0f","💁🏻♂️":"1f481-1f3fb-200d-2642-fe0f","💁🏼♂️":"1f481-1f3fc-200d-2642-fe0f","💁🏽♂️":"1f481-1f3fd-200d-2642-fe0f","💁🏾♂️":"1f481-1f3fe-200d-2642-fe0f","💁🏿♂️":"1f481-1f3ff-200d-2642-fe0f","💁🏻♀️":"1f481-1f3fb-200d-2640-fe0f","💁🏼♀️":"1f481-1f3fc-200d-2640-fe0f","💁🏽♀️":"1f481-1f3fd-200d-2640-fe0f","💁🏾♀️":"1f481-1f3fe-200d-2640-fe0f","💁🏿♀️":"1f481-1f3ff-200d-2640-fe0f","🙋🏻♂️":"1f64b-1f3fb-200d-2642-fe0f","🙋🏼♂️":"1f64b-1f3fc-200d-2642-fe0f","🙋🏽♂️":"1f64b-1f3fd-200d-2642-fe0f","🙋🏾♂️":"1f64b-1f3fe-200d-2642-fe0f","🙋🏿♂️":"1f64b-1f3ff-200d-2642-fe0f","🙋🏻♀️":"1f64b-1f3fb-200d-2640-fe0f","🙋🏼♀️":"1f64b-1f3fc-200d-2640-fe0f","🙋🏽♀️":"1f64b-1f3fd-200d-2640-fe0f","🙋🏾♀️":"1f64b-1f3fe-200d-2640-fe0f","🙋🏿♀️":"1f64b-1f3ff-200d-2640-fe0f","🙇🏻♂️":"1f647-1f3fb-200d-2642-fe0f","🙇🏼♂️":"1f647-1f3fc-200d-2642-fe0f","🙇🏽♂️":"1f647-1f3fd-200d-2642-fe0f","🙇🏾♂️":"1f647-1f3fe-200d-2642-fe0f","🙇🏿♂️":"1f647-1f3ff-200d-2642-fe0f","🙇🏻♀️":"1f647-1f3fb-200d-2640-fe0f","🙇🏼♀️":"1f647-1f3fc-200d-2640-fe0f","🙇🏽♀️":"1f647-1f3fd-200d-2640-fe0f","🙇🏾♀️":"1f647-1f3fe-200d-2640-fe0f","🙇🏿♀️":"1f647-1f3ff-200d-2640-fe0f","🤦🏻♂️":"1f926-1f3fb-200d-2642-fe0f","🤦🏼♂️":"1f926-1f3fc-200d-2642-fe0f","🤦🏽♂️":"1f926-1f3fd-200d-2642-fe0f","🤦🏾♂️":"1f926-1f3fe-200d-2642-fe0f","🤦🏿♂️":"1f926-1f3ff-200d-2642-fe0f","🤦🏻♀️":"1f926-1f3fb-200d-2640-fe0f","🤦🏼♀️":"1f926-1f3fc-200d-2640-fe0f","🤦🏽♀️":"1f926-1f3fd-200d-2640-fe0f","🤦🏾♀️":"1f926-1f3fe-200d-2640-fe0f","🤦🏿♀️":"1f926-1f3ff-200d-2640-fe0f","🤷🏻♂️":"1f937-1f3fb-200d-2642-fe0f","🤷🏼♂️":"1f937-1f3fc-200d-2642-fe0f","🤷🏽♂️":"1f937-1f3fd-200d-2642-fe0f","🤷🏾♂️":"1f937-1f3fe-200d-2642-fe0f","🤷🏿♂️":"1f937-1f3ff-200d-2642-fe0f","🤷🏻♀️":"1f937-1f3fb-200d-2640-fe0f","🤷🏼♀️":"1f937-1f3fc-200d-2640-fe0f","🤷🏽♀️":"1f937-1f3fd-200d-2640-fe0f","🤷🏾♀️":"1f937-1f3fe-200d-2640-fe0f","🤷🏿♀️":"1f937-1f3ff-200d-2640-fe0f","💆🏻♂️":"1f486-1f3fb-200d-2642-fe0f","💆🏼♂️":"1f486-1f3fc-200d-2642-fe0f","💆🏽♂️":"1f486-1f3fd-200d-2642-fe0f","💆🏾♂️":"1f486-1f3fe-200d-2642-fe0f","💆🏿♂️":"1f486-1f3ff-200d-2642-fe0f","💆🏻♀️":"1f486-1f3fb-200d-2640-fe0f","💆🏼♀️":"1f486-1f3fc-200d-2640-fe0f","💆🏽♀️":"1f486-1f3fd-200d-2640-fe0f","💆🏾♀️":"1f486-1f3fe-200d-2640-fe0f","💆🏿♀️":"1f486-1f3ff-200d-2640-fe0f","💇🏻♂️":"1f487-1f3fb-200d-2642-fe0f","💇🏼♂️":"1f487-1f3fc-200d-2642-fe0f","💇🏽♂️":"1f487-1f3fd-200d-2642-fe0f","💇🏾♂️":"1f487-1f3fe-200d-2642-fe0f","💇🏿♂️":"1f487-1f3ff-200d-2642-fe0f","💇🏻♀️":"1f487-1f3fb-200d-2640-fe0f","💇🏼♀️":"1f487-1f3fc-200d-2640-fe0f","💇🏽♀️":"1f487-1f3fd-200d-2640-fe0f","💇🏾♀️":"1f487-1f3fe-200d-2640-fe0f","💇🏿♀️":"1f487-1f3ff-200d-2640-fe0f","🚶🏻♂️":"1f6b6-1f3fb-200d-2642-fe0f","🚶🏼♂️":"1f6b6-1f3fc-200d-2642-fe0f","🚶🏽♂️":"1f6b6-1f3fd-200d-2642-fe0f","🚶🏾♂️":"1f6b6-1f3fe-200d-2642-fe0f","🚶🏿♂️":"1f6b6-1f3ff-200d-2642-fe0f","🚶🏻♀️":"1f6b6-1f3fb-200d-2640-fe0f","🚶🏼♀️":"1f6b6-1f3fc-200d-2640-fe0f","🚶🏽♀️":"1f6b6-1f3fd-200d-2640-fe0f","🚶🏾♀️":"1f6b6-1f3fe-200d-2640-fe0f","🚶🏿♀️":"1f6b6-1f3ff-200d-2640-fe0f","🏃🏻♂️":"1f3c3-1f3fb-200d-2642-fe0f","🏃🏼♂️":"1f3c3-1f3fc-200d-2642-fe0f","🏃🏽♂️":"1f3c3-1f3fd-200d-2642-fe0f","🏃🏾♂️":"1f3c3-1f3fe-200d-2642-fe0f","🏃🏿♂️":"1f3c3-1f3ff-200d-2642-fe0f","🏃🏻♀️":"1f3c3-1f3fb-200d-2640-fe0f","🏃🏼♀️":"1f3c3-1f3fc-200d-2640-fe0f","🏃🏽♀️":"1f3c3-1f3fd-200d-2640-fe0f","🏃🏾♀️":"1f3c3-1f3fe-200d-2640-fe0f","🏃🏿♀️":"1f3c3-1f3ff-200d-2640-fe0f","🧖🏻♀️":"1f9d6-1f3fb-200d-2640-fe0f","🧖🏼♀️":"1f9d6-1f3fc-200d-2640-fe0f","🧖🏽♀️":"1f9d6-1f3fd-200d-2640-fe0f","🧖🏾♀️":"1f9d6-1f3fe-200d-2640-fe0f","🧖🏿♀️":"1f9d6-1f3ff-200d-2640-fe0f","🧖🏻♂️":"1f9d6-1f3fb-200d-2642-fe0f","🧖🏼♂️":"1f9d6-1f3fc-200d-2642-fe0f","🧖🏽♂️":"1f9d6-1f3fd-200d-2642-fe0f","🧖🏾♂️":"1f9d6-1f3fe-200d-2642-fe0f","🧖🏿♂️":"1f9d6-1f3ff-200d-2642-fe0f","🧗🏻♀️":"1f9d7-1f3fb-200d-2640-fe0f","🧗🏼♀️":"1f9d7-1f3fc-200d-2640-fe0f","🧗🏽♀️":"1f9d7-1f3fd-200d-2640-fe0f","🧗🏾♀️":"1f9d7-1f3fe-200d-2640-fe0f","🧗🏿♀️":"1f9d7-1f3ff-200d-2640-fe0f","🧗🏻♂️":"1f9d7-1f3fb-200d-2642-fe0f","🧗🏼♂️":"1f9d7-1f3fc-200d-2642-fe0f","🧗🏽♂️":"1f9d7-1f3fd-200d-2642-fe0f","🧗🏾♂️":"1f9d7-1f3fe-200d-2642-fe0f","🧗🏿♂️":"1f9d7-1f3ff-200d-2642-fe0f","🧘🏻♀️":"1f9d8-1f3fb-200d-2640-fe0f","🧘🏼♀️":"1f9d8-1f3fc-200d-2640-fe0f","🧘🏽♀️":"1f9d8-1f3fd-200d-2640-fe0f","🧘🏾♀️":"1f9d8-1f3fe-200d-2640-fe0f","🧘🏿♀️":"1f9d8-1f3ff-200d-2640-fe0f","🧘🏻♂️":"1f9d8-1f3fb-200d-2642-fe0f","🧘🏼♂️":"1f9d8-1f3fc-200d-2642-fe0f","🧘🏽♂️":"1f9d8-1f3fd-200d-2642-fe0f","🧘🏾♂️":"1f9d8-1f3fe-200d-2642-fe0f","🧘🏿♂️":"1f9d8-1f3ff-200d-2642-fe0f","🏌️♂️":"1f3cc-fe0f-200d-2642-fe0f","🏌🏻♂️":"1f3cc-1f3fb-200d-2642-fe0f","🏌🏼♂️":"1f3cc-1f3fc-200d-2642-fe0f","🏌🏽♂️":"1f3cc-1f3fd-200d-2642-fe0f","🏌🏾♂️":"1f3cc-1f3fe-200d-2642-fe0f","🏌🏿♂️":"1f3cc-1f3ff-200d-2642-fe0f","🏌️♀️":"1f3cc-fe0f-200d-2640-fe0f","🏌🏻♀️":"1f3cc-1f3fb-200d-2640-fe0f","🏌🏼♀️":"1f3cc-1f3fc-200d-2640-fe0f","🏌🏽♀️":"1f3cc-1f3fd-200d-2640-fe0f","🏌🏾♀️":"1f3cc-1f3fe-200d-2640-fe0f","🏌🏿♀️":"1f3cc-1f3ff-200d-2640-fe0f","🏄🏻♂️":"1f3c4-1f3fb-200d-2642-fe0f","🏄🏼♂️":"1f3c4-1f3fc-200d-2642-fe0f","🏄🏽♂️":"1f3c4-1f3fd-200d-2642-fe0f","🏄🏾♂️":"1f3c4-1f3fe-200d-2642-fe0f","🏄🏿♂️":"1f3c4-1f3ff-200d-2642-fe0f","🏄🏻♀️":"1f3c4-1f3fb-200d-2640-fe0f","🏄🏼♀️":"1f3c4-1f3fc-200d-2640-fe0f","🏄🏽♀️":"1f3c4-1f3fd-200d-2640-fe0f","🏄🏾♀️":"1f3c4-1f3fe-200d-2640-fe0f","🏄🏿♀️":"1f3c4-1f3ff-200d-2640-fe0f","🚣🏻♂️":"1f6a3-1f3fb-200d-2642-fe0f","🚣🏼♂️":"1f6a3-1f3fc-200d-2642-fe0f","🚣🏽♂️":"1f6a3-1f3fd-200d-2642-fe0f","🚣🏾♂️":"1f6a3-1f3fe-200d-2642-fe0f","🚣🏿♂️":"1f6a3-1f3ff-200d-2642-fe0f","🚣🏻♀️":"1f6a3-1f3fb-200d-2640-fe0f","🚣🏼♀️":"1f6a3-1f3fc-200d-2640-fe0f","🚣🏽♀️":"1f6a3-1f3fd-200d-2640-fe0f","🚣🏾♀️":"1f6a3-1f3fe-200d-2640-fe0f","🚣🏿♀️":"1f6a3-1f3ff-200d-2640-fe0f","🏊🏻♂️":"1f3ca-1f3fb-200d-2642-fe0f","🏊🏼♂️":"1f3ca-1f3fc-200d-2642-fe0f","🏊🏽♂️":"1f3ca-1f3fd-200d-2642-fe0f","🏊🏾♂️":"1f3ca-1f3fe-200d-2642-fe0f","🏊🏿♂️":"1f3ca-1f3ff-200d-2642-fe0f","🏊🏻♀️":"1f3ca-1f3fb-200d-2640-fe0f","🏊🏼♀️":"1f3ca-1f3fc-200d-2640-fe0f","🏊🏽♀️":"1f3ca-1f3fd-200d-2640-fe0f","🏊🏾♀️":"1f3ca-1f3fe-200d-2640-fe0f","🏊🏿♀️":"1f3ca-1f3ff-200d-2640-fe0f","⛹️♂️":"26f9-fe0f-200d-2642-fe0f","⛹🏻♂️":"26f9-1f3fb-200d-2642-fe0f","⛹🏼♂️":"26f9-1f3fc-200d-2642-fe0f","⛹🏽♂️":"26f9-1f3fd-200d-2642-fe0f","⛹🏾♂️":"26f9-1f3fe-200d-2642-fe0f","⛹🏿♂️":"26f9-1f3ff-200d-2642-fe0f","⛹️♀️":"26f9-fe0f-200d-2640-fe0f","⛹🏻♀️":"26f9-1f3fb-200d-2640-fe0f","⛹🏼♀️":"26f9-1f3fc-200d-2640-fe0f","⛹🏽♀️":"26f9-1f3fd-200d-2640-fe0f","⛹🏾♀️":"26f9-1f3fe-200d-2640-fe0f","⛹🏿♀️":"26f9-1f3ff-200d-2640-fe0f","🏋️♂️":"1f3cb-fe0f-200d-2642-fe0f","🏋🏻♂️":"1f3cb-1f3fb-200d-2642-fe0f","🏋🏼♂️":"1f3cb-1f3fc-200d-2642-fe0f","🏋🏽♂️":"1f3cb-1f3fd-200d-2642-fe0f","🏋🏾♂️":"1f3cb-1f3fe-200d-2642-fe0f","🏋🏿♂️":"1f3cb-1f3ff-200d-2642-fe0f","🏋️♀️":"1f3cb-fe0f-200d-2640-fe0f","🏋🏻♀️":"1f3cb-1f3fb-200d-2640-fe0f","🏋🏼♀️":"1f3cb-1f3fc-200d-2640-fe0f","🏋🏽♀️":"1f3cb-1f3fd-200d-2640-fe0f","🏋🏾♀️":"1f3cb-1f3fe-200d-2640-fe0f","🏋🏿♀️":"1f3cb-1f3ff-200d-2640-fe0f","🚴🏻♂️":"1f6b4-1f3fb-200d-2642-fe0f","🚴🏼♂️":"1f6b4-1f3fc-200d-2642-fe0f","🚴🏽♂️":"1f6b4-1f3fd-200d-2642-fe0f","🚴🏾♂️":"1f6b4-1f3fe-200d-2642-fe0f","🚴🏿♂️":"1f6b4-1f3ff-200d-2642-fe0f","🚴🏻♀️":"1f6b4-1f3fb-200d-2640-fe0f","🚴🏼♀️":"1f6b4-1f3fc-200d-2640-fe0f","🚴🏽♀️":"1f6b4-1f3fd-200d-2640-fe0f","🚴🏾♀️":"1f6b4-1f3fe-200d-2640-fe0f","🚴🏿♀️":"1f6b4-1f3ff-200d-2640-fe0f","🚵🏻♂️":"1f6b5-1f3fb-200d-2642-fe0f","🚵🏼♂️":"1f6b5-1f3fc-200d-2642-fe0f","🚵🏽♂️":"1f6b5-1f3fd-200d-2642-fe0f","🚵🏾♂️":"1f6b5-1f3fe-200d-2642-fe0f","🚵🏿♂️":"1f6b5-1f3ff-200d-2642-fe0f","🚵🏻♀️":"1f6b5-1f3fb-200d-2640-fe0f","🚵🏼♀️":"1f6b5-1f3fc-200d-2640-fe0f","🚵🏽♀️":"1f6b5-1f3fd-200d-2640-fe0f","🚵🏾♀️":"1f6b5-1f3fe-200d-2640-fe0f","🚵🏿♀️":"1f6b5-1f3ff-200d-2640-fe0f","🤸🏻♂️":"1f938-1f3fb-200d-2642-fe0f","🤸🏼♂️":"1f938-1f3fc-200d-2642-fe0f","🤸🏽♂️":"1f938-1f3fd-200d-2642-fe0f","🤸🏾♂️":"1f938-1f3fe-200d-2642-fe0f","🤸🏿♂️":"1f938-1f3ff-200d-2642-fe0f","🤸🏻♀️":"1f938-1f3fb-200d-2640-fe0f","🤸🏼♀️":"1f938-1f3fc-200d-2640-fe0f","🤸🏽♀️":"1f938-1f3fd-200d-2640-fe0f","🤸🏾♀️":"1f938-1f3fe-200d-2640-fe0f","🤸🏿♀️":"1f938-1f3ff-200d-2640-fe0f","🤽🏻♂️":"1f93d-1f3fb-200d-2642-fe0f","🤽🏼♂️":"1f93d-1f3fc-200d-2642-fe0f","🤽🏽♂️":"1f93d-1f3fd-200d-2642-fe0f","🤽🏾♂️":"1f93d-1f3fe-200d-2642-fe0f","🤽🏿♂️":"1f93d-1f3ff-200d-2642-fe0f","🤽🏻♀️":"1f93d-1f3fb-200d-2640-fe0f","🤽🏼♀️":"1f93d-1f3fc-200d-2640-fe0f","🤽🏽♀️":"1f93d-1f3fd-200d-2640-fe0f","🤽🏾♀️":"1f93d-1f3fe-200d-2640-fe0f","🤽🏿♀️":"1f93d-1f3ff-200d-2640-fe0f","🤾🏻♂️":"1f93e-1f3fb-200d-2642-fe0f","🤾🏼♂️":"1f93e-1f3fc-200d-2642-fe0f","🤾🏽♂️":"1f93e-1f3fd-200d-2642-fe0f","🤾🏾♂️":"1f93e-1f3fe-200d-2642-fe0f","🤾🏿♂️":"1f93e-1f3ff-200d-2642-fe0f","🤾🏻♀️":"1f93e-1f3fb-200d-2640-fe0f","🤾🏼♀️":"1f93e-1f3fc-200d-2640-fe0f","🤾🏽♀️":"1f93e-1f3fd-200d-2640-fe0f","🤾🏾♀️":"1f93e-1f3fe-200d-2640-fe0f","🤾🏿♀️":"1f93e-1f3ff-200d-2640-fe0f","🤹🏻♂️":"1f939-1f3fb-200d-2642-fe0f","🤹🏼♂️":"1f939-1f3fc-200d-2642-fe0f","🤹🏽♂️":"1f939-1f3fd-200d-2642-fe0f","🤹🏾♂️":"1f939-1f3fe-200d-2642-fe0f","🤹🏿♂️":"1f939-1f3ff-200d-2642-fe0f","🤹🏻♀️":"1f939-1f3fb-200d-2640-fe0f","🤹🏼♀️":"1f939-1f3fc-200d-2640-fe0f","🤹🏽♀️":"1f939-1f3fd-200d-2640-fe0f","🤹🏾♀️":"1f939-1f3fe-200d-2640-fe0f","🤹🏿♀️":"1f939-1f3ff-200d-2640-fe0f","👩❤👨":"1f469-200d-2764-fe0f-200d-1f468","👨❤👨":"1f468-200d-2764-fe0f-200d-1f468","👩❤👩":"1f469-200d-2764-fe0f-200d-1f469","👨👩👦":"1f468-200d-1f469-200d-1f466","👨👩👧":"1f468-200d-1f469-200d-1f467","👨👨👦":"1f468-200d-1f468-200d-1f466","👨👨👧":"1f468-200d-1f468-200d-1f467","👩👩👦":"1f469-200d-1f469-200d-1f466","👩👩👧":"1f469-200d-1f469-200d-1f467","👨👦👦":"1f468-200d-1f466-200d-1f466","👨👧👦":"1f468-200d-1f467-200d-1f466","👨👧👧":"1f468-200d-1f467-200d-1f467","👩👦👦":"1f469-200d-1f466-200d-1f466","👩👧👦":"1f469-200d-1f467-200d-1f466","👩👧👧":"1f469-200d-1f467-200d-1f467","👁️🗨️":"1f441-200d-1f5e8","👩❤️👨":"1f469-200d-2764-fe0f-200d-1f468","👨❤️👨":"1f468-200d-2764-fe0f-200d-1f468","👩❤️👩":"1f469-200d-2764-fe0f-200d-1f469","👩❤💋👨":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","👨❤💋👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👩❤💋👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","👨👩👧👦":"1f468-200d-1f469-200d-1f467-200d-1f466","👨👩👦👦":"1f468-200d-1f469-200d-1f466-200d-1f466","👨👩👧👧":"1f468-200d-1f469-200d-1f467-200d-1f467","👨👨👧👦":"1f468-200d-1f468-200d-1f467-200d-1f466","👨👨👦👦":"1f468-200d-1f468-200d-1f466-200d-1f466","👨👨👧👧":"1f468-200d-1f468-200d-1f467-200d-1f467","👩👩👧👦":"1f469-200d-1f469-200d-1f467-200d-1f466","👩👩👦👦":"1f469-200d-1f469-200d-1f466-200d-1f466","👩👩👧👧":"1f469-200d-1f469-200d-1f467-200d-1f467","🏴":"1f3f4-e0067-e0062-e0065-e006e-e0067-e007f","🏴":"1f3f4-e0067-e0062-e0073-e0063-e0074-e007f","🏴":"1f3f4-e0067-e0062-e0077-e006c-e0073-e007f","👩❤️💋👨":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f468","👨❤️💋👨":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","👩❤️💋👩":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469"}
\ No newline at end of file
diff --git a/app/javascript/mastodon/emojione_light.js b/app/javascript/mastodon/emojione_light.js
index 0d07d012f05d9..2296497b08aec 100644
--- a/app/javascript/mastodon/emojione_light.js
+++ b/app/javascript/mastodon/emojione_light.js
@@ -1,13 +1,38 @@
// @preval
-// Force tree shaking on emojione by exposing just a subset of its functionality
+// http://www.unicode.org/Public/emoji/5.0/emoji-test.txt
-const emojione = require('emojione');
+const emojis = require('./emoji_map.json');
+const { emojiIndex } = require('emoji-mart');
+const excluded = ['®', '©', '™'];
+const skins = ['🏻', '🏼', '🏽', '🏾', '🏿'];
+const shortcodeMap = {};
-const mappedUnicode = emojione.mapUnicodeToShort();
-const excluded = ['®', '©', '™'];
+Object.keys(emojiIndex.emojis).forEach(key => {
+ shortcodeMap[emojiIndex.emojis[key].native] = emojiIndex.emojis[key].id;
+});
-module.exports.unicodeMapping = Object.keys(emojione.jsEscapeMap)
- .filter(c => !excluded.includes(c))
- .map(unicodeStr => [unicodeStr, mappedUnicode[emojione.jsEscapeMap[unicodeStr]]])
- .map(([unicodeStr, shortCode]) => ({ [unicodeStr]: [emojione.emojioneList[shortCode].fname, shortCode.slice(1, shortCode.length - 1)] }))
- .reduce((x, y) => Object.assign(x, y), { });
+const stripModifiers = unicode => {
+ skins.forEach(tone => {
+ unicode = unicode.replace(tone, '');
+ });
+
+ return unicode;
+};
+
+Object.keys(emojis).forEach(key => {
+ if (excluded.includes(key)) {
+ delete emojis[key];
+ return;
+ }
+
+ const normalizedKey = stripModifiers(key);
+ let shortcode = shortcodeMap[normalizedKey];
+
+ if (!shortcode) {
+ shortcode = shortcodeMap[normalizedKey + '\uFE0F'];
+ }
+
+ emojis[key] = [emojis[key], shortcode];
+});
+
+module.exports.unicodeMapping = emojis;
diff --git a/app/javascript/mastodon/features/account/components/action_bar.js b/app/javascript/mastodon/features/account/components/action_bar.js
index c12c0889e4b0c..9e8fea69d1298 100644
--- a/app/javascript/mastodon/features/account/components/action_bar.js
+++ b/app/javascript/mastodon/features/account/components/action_bar.js
@@ -26,7 +26,7 @@ export default class ActionBar extends React.PureComponent {
static propTypes = {
account: ImmutablePropTypes.map.isRequired,
- me: PropTypes.number.isRequired,
+ me: PropTypes.string.isRequired,
onFollow: PropTypes.func,
onBlock: PropTypes.func.isRequired,
onMention: PropTypes.func.isRequired,
diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js
index 7ab4922250c37..5402d67535655 100644
--- a/app/javascript/mastodon/features/account/components/header.js
+++ b/app/javascript/mastodon/features/account/components/header.js
@@ -80,7 +80,7 @@ export default class Header extends ImmutablePureComponent {
static propTypes = {
account: ImmutablePropTypes.map,
- me: PropTypes.number.isRequired,
+ me: PropTypes.string.isRequired,
onFollow: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
autoPlayGif: PropTypes.bool.isRequired,
diff --git a/app/javascript/mastodon/features/account_gallery/index.js b/app/javascript/mastodon/features/account_gallery/index.js
index 0cfd98f23157a..2a88addc422b7 100644
--- a/app/javascript/mastodon/features/account_gallery/index.js
+++ b/app/javascript/mastodon/features/account_gallery/index.js
@@ -16,9 +16,9 @@ import { ScrollContainer } from 'react-router-scroll';
import LoadMore from '../../components/load_more';
const mapStateToProps = (state, props) => ({
- medias: getAccountGallery(state, Number(props.params.accountId)),
- isLoading: state.getIn(['timelines', `account:${Number(props.params.accountId)}:media`, 'isLoading']),
- hasMore: !!state.getIn(['timelines', `account:${Number(props.params.accountId)}:media`, 'next']),
+ medias: getAccountGallery(state, props.params.accountId),
+ isLoading: state.getIn(['timelines', `account:${props.params.accountId}:media`, 'isLoading']),
+ hasMore: !!state.getIn(['timelines', `account:${props.params.accountId}:media`, 'next']),
autoPlayGif: state.getIn(['meta', 'auto_play_gif']),
});
@@ -35,20 +35,20 @@ export default class AccountGallery extends ImmutablePureComponent {
};
componentDidMount () {
- this.props.dispatch(fetchAccount(Number(this.props.params.accountId)));
- this.props.dispatch(refreshAccountMediaTimeline(Number(this.props.params.accountId)));
+ this.props.dispatch(fetchAccount(this.props.params.accountId));
+ this.props.dispatch(refreshAccountMediaTimeline(this.props.params.accountId));
}
componentWillReceiveProps (nextProps) {
if (nextProps.params.accountId !== this.props.params.accountId && nextProps.params.accountId) {
- this.props.dispatch(fetchAccount(Number(nextProps.params.accountId)));
- this.props.dispatch(refreshAccountMediaTimeline(Number(this.props.params.accountId)));
+ this.props.dispatch(fetchAccount(nextProps.params.accountId));
+ this.props.dispatch(refreshAccountMediaTimeline(this.props.params.accountId));
}
}
handleScrollToBottom = () => {
if (this.props.hasMore) {
- this.props.dispatch(expandAccountMediaTimeline(Number(this.props.params.accountId)));
+ this.props.dispatch(expandAccountMediaTimeline(this.props.params.accountId));
}
}
diff --git a/app/javascript/mastodon/features/account_timeline/components/header.js b/app/javascript/mastodon/features/account_timeline/components/header.js
index 09883d7d655cc..c3cd4e55dd856 100644
--- a/app/javascript/mastodon/features/account_timeline/components/header.js
+++ b/app/javascript/mastodon/features/account_timeline/components/header.js
@@ -10,7 +10,7 @@ export default class Header extends ImmutablePureComponent {
static propTypes = {
account: ImmutablePropTypes.map,
- me: PropTypes.number.isRequired,
+ me: PropTypes.string.isRequired,
onFollow: PropTypes.func.isRequired,
onBlock: PropTypes.func.isRequired,
onMention: PropTypes.func.isRequired,
diff --git a/app/javascript/mastodon/features/account_timeline/containers/header_container.js b/app/javascript/mastodon/features/account_timeline/containers/header_container.js
index ac1364441c05a..9ad13a231020d 100644
--- a/app/javascript/mastodon/features/account_timeline/containers/header_container.js
+++ b/app/javascript/mastodon/features/account_timeline/containers/header_container.js
@@ -26,7 +26,7 @@ const makeMapStateToProps = () => {
const getAccount = makeGetAccount();
const mapStateToProps = (state, { accountId }) => ({
- account: getAccount(state, Number(accountId)),
+ account: getAccount(state, accountId),
me: state.getIn(['meta', 'me']),
unfollowModal: state.getIn(['meta', 'unfollow_modal']),
});
diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js
index 3c8b63114f6af..fe92216d53323 100644
--- a/app/javascript/mastodon/features/account_timeline/index.js
+++ b/app/javascript/mastodon/features/account_timeline/index.js
@@ -13,9 +13,9 @@ import { List as ImmutableList } from 'immutable';
import ImmutablePureComponent from 'react-immutable-pure-component';
const mapStateToProps = (state, props) => ({
- statusIds: state.getIn(['timelines', `account:${Number(props.params.accountId)}`, 'items'], ImmutableList()),
- isLoading: state.getIn(['timelines', `account:${Number(props.params.accountId)}`, 'isLoading']),
- hasMore: !!state.getIn(['timelines', `account:${Number(props.params.accountId)}`, 'next']),
+ statusIds: state.getIn(['timelines', `account:${props.params.accountId}`, 'items'], ImmutableList()),
+ isLoading: state.getIn(['timelines', `account:${props.params.accountId}`, 'isLoading']),
+ hasMore: !!state.getIn(['timelines', `account:${props.params.accountId}`, 'next']),
me: state.getIn(['meta', 'me']),
});
@@ -28,24 +28,24 @@ export default class AccountTimeline extends ImmutablePureComponent {
statusIds: ImmutablePropTypes.list,
isLoading: PropTypes.bool,
hasMore: PropTypes.bool,
- me: PropTypes.number.isRequired,
+ me: PropTypes.string.isRequired,
};
componentWillMount () {
- this.props.dispatch(fetchAccount(Number(this.props.params.accountId)));
- this.props.dispatch(refreshAccountTimeline(Number(this.props.params.accountId)));
+ this.props.dispatch(fetchAccount(this.props.params.accountId));
+ this.props.dispatch(refreshAccountTimeline(this.props.params.accountId));
}
componentWillReceiveProps (nextProps) {
if (nextProps.params.accountId !== this.props.params.accountId && nextProps.params.accountId) {
- this.props.dispatch(fetchAccount(Number(nextProps.params.accountId)));
- this.props.dispatch(refreshAccountTimeline(Number(nextProps.params.accountId)));
+ this.props.dispatch(fetchAccount(nextProps.params.accountId));
+ this.props.dispatch(refreshAccountTimeline(nextProps.params.accountId));
}
}
handleScrollToBottom = () => {
if (!this.props.isLoading && this.props.hasMore) {
- this.props.dispatch(expandAccountTimeline(Number(this.props.params.accountId)));
+ this.props.dispatch(expandAccountTimeline(this.props.params.accountId));
}
}
diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js
index 8fbcf6a3d86c3..b85105c53e30b 100644
--- a/app/javascript/mastodon/features/compose/components/compose_form.js
+++ b/app/javascript/mastodon/features/compose/components/compose_form.js
@@ -13,7 +13,7 @@ import SpoilerButtonContainer from '../containers/spoiler_button_container';
import PrivacyDropdownContainer from '../containers/privacy_dropdown_container';
import ComposeAdvancedOptionsContainer from '../../../../glitch/components/compose/advanced_options/container';
import SensitiveButtonContainer from '../containers/sensitive_button_container';
-import EmojiPickerDropdown from './emoji_picker_dropdown';
+import EmojiPickerDropdown from '../containers/emoji_picker_dropdown_container';
import UploadFormContainer from '../containers/upload_form_container';
import WarningContainer from '../containers/warning_container';
import { isMobile } from '../../../is_mobile';
@@ -46,7 +46,7 @@ export default class ComposeForm extends ImmutablePureComponent {
preselectDate: PropTypes.instanceOf(Date),
is_submitting: PropTypes.bool,
is_uploading: PropTypes.bool,
- me: PropTypes.number,
+ me: PropTypes.string,
onChange: PropTypes.func.isRequired,
onSubmit: PropTypes.func.isRequired,
onClearSuggestions: PropTypes.func.isRequired,
@@ -150,7 +150,7 @@ export default class ComposeForm extends ImmutablePureComponent {
handleEmojiPick = (data) => {
const position = this.autosuggestTextarea.textarea.selectionStart;
- const emojiChar = data.unicode.split('-').map(code => String.fromCodePoint(parseInt(code, 16))).join('');
+ const emojiChar = data.native;
this._restoreCaret = position + emojiChar.length + 1;
this.props.onPickEmoji(position, data);
}
diff --git a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
index 9d05b7a343da1..621cc21ceb626 100644
--- a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
+++ b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
@@ -1,12 +1,19 @@
import React from 'react';
-import Dropdown, { DropdownTrigger, DropdownContent } from 'react-simple-dropdown';
import PropTypes from 'prop-types';
import { defineMessages, injectIntl } from 'react-intl';
-import { EmojiPicker as EmojiPickerAsync } from '../../ui/util/async-components';
+import { Picker, Emoji } from 'emoji-mart';
+import { Overlay } from 'react-overlays';
+import classNames from 'classnames';
+import ImmutablePropTypes from 'react-immutable-proptypes';
+import detectPassiveEvents from 'detect-passive-events';
const messages = defineMessages({
emoji: { id: 'emoji_button.label', defaultMessage: 'Insert emoji' },
emoji_search: { id: 'emoji_button.search', defaultMessage: 'Search...' },
+ emoji_not_found: { id: 'emoji_button.not_found', defaultMessage: 'No emojos!! (╯°□°)╯︵ ┻━┻' },
+ custom: { id: 'emoji_button.custom', defaultMessage: 'Custom' },
+ recent: { id: 'emoji_button.recent', defaultMessage: 'Frequently used' },
+ search_results: { id: 'emoji_button.search_results', defaultMessage: 'Search results' },
people: { id: 'emoji_button.people', defaultMessage: 'People' },
nature: { id: 'emoji_button.nature', defaultMessage: 'Nature' },
food: { id: 'emoji_button.food', defaultMessage: 'Food & Drink' },
@@ -17,48 +24,250 @@ const messages = defineMessages({
flags: { id: 'emoji_button.flags', defaultMessage: 'Flags' },
});
-const settings = {
- imageType: 'png',
- sprites: false,
- imagePathPNG: '/emoji/',
-};
+const assetHost = process.env.CDN_HOST || '';
+const backgroundImageFn = () => `${assetHost}/emoji/sheet.png`;
+const listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false;
-let EmojiPicker; // load asynchronously
+class ModifierPickerMenu extends React.PureComponent {
+
+ static propTypes = {
+ active: PropTypes.bool,
+ onSelect: PropTypes.func.isRequired,
+ onClose: PropTypes.func.isRequired,
+ };
+
+ handleClick = (e) => {
+ const modifier = [].slice.call(e.currentTarget.parentNode.children).indexOf(e.target) + 1;
+ this.props.onSelect(modifier);
+ }
+
+ componentWillReceiveProps (nextProps) {
+ if (nextProps.active) {
+ this.attachListeners();
+ } else {
+ this.removeListeners();
+ }
+ }
+
+ componentWillUnmount () {
+ this.removeListeners();
+ }
+
+ handleDocumentClick = e => {
+ if (this.node && !this.node.contains(e.target)) {
+ this.props.onClose();
+ }
+ }
+
+ attachListeners () {
+ document.addEventListener('click', this.handleDocumentClick, false);
+ document.addEventListener('touchend', this.handleDocumentClick, listenerOptions);
+ }
+
+ removeListeners () {
+ document.removeEventListener('click', this.handleDocumentClick, false);
+ document.removeEventListener('touchend', this.handleDocumentClick, listenerOptions);
+ }
+
+ setRef = c => {
+ this.node = c;
+ }
+
+ render () {
+ const { active } = this.props;
+
+ return (
+
+
+
+
+
+
+
+
+ );
+ }
+
+}
+
+class ModifierPicker extends React.PureComponent {
+
+ static propTypes = {
+ active: PropTypes.bool,
+ modifier: PropTypes.number,
+ onChange: PropTypes.func,
+ onClose: PropTypes.func,
+ onOpen: PropTypes.func,
+ };
+
+ handleClick = () => {
+ if (this.props.active) {
+ this.props.onClose();
+ } else {
+ this.props.onOpen();
+ }
+ }
+
+ handleSelect = modifier => {
+ this.props.onChange(modifier);
+ this.props.onClose();
+ }
+
+ render () {
+ const { active, modifier } = this.props;
+
+ return (
+
+
+
+
+ );
+ }
+
+}
+
+@injectIntl
+class EmojiPickerMenu extends React.PureComponent {
+
+ static propTypes = {
+ custom_emojis: ImmutablePropTypes.list,
+ onClose: PropTypes.func.isRequired,
+ onPick: PropTypes.func.isRequired,
+ style: PropTypes.object,
+ placement: PropTypes.string,
+ arrowOffsetLeft: PropTypes.string,
+ arrowOffsetTop: PropTypes.string,
+ intl: PropTypes.object.isRequired,
+ };
+
+ static defaultProps = {
+ style: {},
+ placement: 'bottom',
+ };
+
+ state = {
+ modifierOpen: false,
+ modifier: 1,
+ };
+
+ handleDocumentClick = e => {
+ if (this.node && !this.node.contains(e.target)) {
+ this.props.onClose();
+ }
+ }
+
+ componentDidMount () {
+ document.addEventListener('click', this.handleDocumentClick, false);
+ document.addEventListener('touchend', this.handleDocumentClick, listenerOptions);
+ }
+
+ componentWillUnmount () {
+ document.removeEventListener('click', this.handleDocumentClick, false);
+ document.removeEventListener('touchend', this.handleDocumentClick, listenerOptions);
+ }
+
+ setRef = c => {
+ this.node = c;
+ }
+
+ getI18n = () => {
+ const { intl } = this.props;
+
+ return {
+ search: intl.formatMessage(messages.emoji_search),
+ notfound: intl.formatMessage(messages.emoji_not_found),
+ categories: {
+ search: intl.formatMessage(messages.search_results),
+ recent: intl.formatMessage(messages.recent),
+ people: intl.formatMessage(messages.people),
+ nature: intl.formatMessage(messages.nature),
+ foods: intl.formatMessage(messages.food),
+ activity: intl.formatMessage(messages.activity),
+ places: intl.formatMessage(messages.travel),
+ objects: intl.formatMessage(messages.objects),
+ symbols: intl.formatMessage(messages.symbols),
+ flags: intl.formatMessage(messages.flags),
+ custom: intl.formatMessage(messages.custom),
+ },
+ };
+ }
+
+ handleClick = emoji => {
+ if (!emoji.native) {
+ emoji.native = emoji.colons;
+ }
+
+ this.props.onClose();
+ this.props.onPick(emoji);
+ }
+
+ handleModifierOpen = () => {
+ this.setState({ modifierOpen: true });
+ }
+
+ handleModifierClose = () => {
+ this.setState({ modifierOpen: false });
+ }
+
+ handleModifierChange = modifier => {
+ if (modifier !== this.state.modifier) {
+ this.setState({ modifier });
+ }
+ }
+
+ render () {
+ const { style, intl } = this.props;
+ const title = intl.formatMessage(messages.emoji);
+ const { modifierOpen, modifier } = this.state;
+
+ return (
+
+ );
+ }
+
+}
@injectIntl
export default class EmojiPickerDropdown extends React.PureComponent {
static propTypes = {
+ custom_emojis: ImmutablePropTypes.list,
intl: PropTypes.object.isRequired,
onPickEmoji: PropTypes.func.isRequired,
};
state = {
active: false,
- loading: false,
};
setRef = (c) => {
this.dropdown = c;
}
- handleChange = (data) => {
- this.dropdown.hide();
- this.props.onPickEmoji(data);
- }
-
onShowDropdown = () => {
this.setState({ active: true });
- if (!EmojiPicker) {
- this.setState({ loading: true });
- EmojiPickerAsync().then(TheEmojiPicker => {
- EmojiPicker = TheEmojiPicker.default;
- this.setState({ loading: false });
- }).catch(() => {
- // TODO: show the user an error?
- this.setState({ loading: false });
- });
- }
}
onHideDropdown = () => {
@@ -66,7 +275,7 @@ export default class EmojiPickerDropdown extends React.PureComponent {
}
onToggle = (e) => {
- if (!this.state.loading && (!e.key || e.key === 'Enter')) {
+ if (!e.key || e.key === 'Enter') {
if (this.state.active) {
this.onHideDropdown();
} else {
@@ -75,70 +284,43 @@ export default class EmojiPickerDropdown extends React.PureComponent {
}
}
- onEmojiPickerKeyDown = (e) => {
+ handleKeyDown = e => {
if (e.key === 'Escape') {
this.onHideDropdown();
}
}
+ setTargetRef = c => {
+ this.target = c;
+ }
+
+ findTarget = () => {
+ return this.target;
+ }
+
render () {
- const { intl } = this.props;
-
- const categories = {
- people: {
- title: intl.formatMessage(messages.people),
- emoji: 'smile',
- },
- nature: {
- title: intl.formatMessage(messages.nature),
- emoji: 'hamster',
- },
- food: {
- title: intl.formatMessage(messages.food),
- emoji: 'pizza',
- },
- activity: {
- title: intl.formatMessage(messages.activity),
- emoji: 'soccer',
- },
- travel: {
- title: intl.formatMessage(messages.travel),
- emoji: 'earth_americas',
- },
- objects: {
- title: intl.formatMessage(messages.objects),
- emoji: 'bulb',
- },
- symbols: {
- title: intl.formatMessage(messages.symbols),
- emoji: 'clock9',
- },
- flags: {
- title: intl.formatMessage(messages.flags),
- emoji: 'flag_gb',
- },
- };
-
- const { active, loading } = this.state;
+ const { intl, onPickEmoji } = this.props;
const title = intl.formatMessage(messages.emoji);
+ const { active } = this.state;
return (
-
-
+
+
-
+
-
- {
- this.state.active && !this.state.loading &&
- ( )
- }
-
-
+
+
+
+
);
}
diff --git a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js
index da3c0a0ab206a..0474dfb4e3fd1 100644
--- a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js
+++ b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js
@@ -2,6 +2,7 @@ import React from 'react';
import PropTypes from 'prop-types';
import { injectIntl, defineMessages } from 'react-intl';
import IconButton from '../../../components/icon_button';
+import detectPassiveEvents from 'detect-passive-events';
const messages = defineMessages({
public_short: { id: 'privacy.public.short', defaultMessage: 'Public' },
@@ -89,12 +90,12 @@ export default class PrivacyDropdown extends React.PureComponent {
componentDidMount () {
window.addEventListener('click', this.onGlobalClick);
- window.addEventListener('touchstart', this.onGlobalClick);
+ window.addEventListener('touchstart', this.onGlobalClick, detectPassiveEvents.hasSupport ? { passive: true } : false);
}
componentWillUnmount () {
window.removeEventListener('click', this.onGlobalClick);
- window.removeEventListener('touchstart', this.onGlobalClick);
+ window.removeEventListener('touchstart', this.onGlobalClick, detectPassiveEvents.hasSupport ? { passive: true } : false);
}
setRef = (c) => {
diff --git a/app/javascript/mastodon/features/compose/components/upload_form.js b/app/javascript/mastodon/features/compose/components/upload_form.js
index 78473dab40e06..cf2d2658aeff7 100644
--- a/app/javascript/mastodon/features/compose/components/upload_form.js
+++ b/app/javascript/mastodon/features/compose/components/upload_form.js
@@ -21,7 +21,7 @@ export default class UploadForm extends React.PureComponent {
};
onRemoveFile = (e) => {
- const id = Number(e.currentTarget.parentElement.getAttribute('data-id'));
+ const id = e.currentTarget.parentElement.getAttribute('data-id');
this.props.onRemoveFile(id);
}
diff --git a/app/javascript/mastodon/features/compose/containers/emoji_picker_dropdown_container.js b/app/javascript/mastodon/features/compose/containers/emoji_picker_dropdown_container.js
new file mode 100644
index 0000000000000..7a8026bbc6644
--- /dev/null
+++ b/app/javascript/mastodon/features/compose/containers/emoji_picker_dropdown_container.js
@@ -0,0 +1,8 @@
+import { connect } from 'react-redux';
+import EmojiPickerDropdown from '../components/emoji_picker_dropdown';
+
+const mapStateToProps = state => ({
+ custom_emojis: state.get('custom_emojis'),
+});
+
+export default connect(mapStateToProps)(EmojiPickerDropdown);
diff --git a/app/javascript/mastodon/features/compose/containers/warning_container.js b/app/javascript/mastodon/features/compose/containers/warning_container.js
index 6e7d11c634813..35eab5976dd0c 100644
--- a/app/javascript/mastodon/features/compose/containers/warning_container.js
+++ b/app/javascript/mastodon/features/compose/containers/warning_container.js
@@ -1,51 +1,23 @@
import React from 'react';
-import ImmutablePropTypes from 'react-immutable-proptypes';
import { connect } from 'react-redux';
import Warning from '../components/warning';
-import { createSelector } from 'reselect';
import PropTypes from 'prop-types';
import { FormattedMessage } from 'react-intl';
-import { OrderedSet } from 'immutable';
-const getMentionedUsernames = createSelector(state => state.getIn(['compose', 'text']), text => text.match(/(?:^|[^\/\w])@([a-z0-9_]+@[a-z0-9\.\-]+)/ig));
-
-const getMentionedDomains = createSelector(getMentionedUsernames, mentionedUsernamesWithDomains => {
- return OrderedSet(mentionedUsernamesWithDomains !== null ? mentionedUsernamesWithDomains.map(item => item.split('@')[2]) : []);
+const mapStateToProps = state => ({
+ needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', state.getIn(['meta', 'me']), 'locked']),
});
-const mapStateToProps = state => {
- const mentionedUsernames = getMentionedUsernames(state);
- const mentionedUsernamesWithDomains = getMentionedDomains(state);
-
- return {
- needsLeakWarning: (state.getIn(['compose', 'privacy']) === 'private' || state.getIn(['compose', 'privacy']) === 'direct') && mentionedUsernames !== null,
- mentionedDomains: mentionedUsernamesWithDomains,
- needsLockWarning: state.getIn(['compose', 'privacy']) === 'private' && !state.getIn(['accounts', state.getIn(['meta', 'me']), 'locked']),
- };
-};
-
-const WarningWrapper = ({ needsLeakWarning, needsLockWarning, mentionedDomains }) => {
+const WarningWrapper = ({ needsLockWarning }) => {
if (needsLockWarning) {
return }} />} />;
- } else if (needsLeakWarning) {
- return (
- {mentionedDomains.join(', ')}, domainsCount: mentionedDomains.size }}
- />}
- />
- );
}
return null;
};
WarningWrapper.propTypes = {
- needsLeakWarning: PropTypes.bool,
needsLockWarning: PropTypes.bool,
- mentionedDomains: ImmutablePropTypes.orderedSet.isRequired,
};
export default connect(mapStateToProps)(WarningWrapper);
diff --git a/app/javascript/mastodon/features/favourites/index.js b/app/javascript/mastodon/features/favourites/index.js
index dc8109d16e3a1..4dbfefd87690f 100644
--- a/app/javascript/mastodon/features/favourites/index.js
+++ b/app/javascript/mastodon/features/favourites/index.js
@@ -11,7 +11,7 @@ import ColumnBackButton from '../../components/column_back_button';
import ImmutablePureComponent from 'react-immutable-pure-component';
const mapStateToProps = (state, props) => ({
- accountIds: state.getIn(['user_lists', 'favourited_by', Number(props.params.statusId)]),
+ accountIds: state.getIn(['user_lists', 'favourited_by', props.params.statusId]),
});
@connect(mapStateToProps)
@@ -24,12 +24,12 @@ export default class Favourites extends ImmutablePureComponent {
};
componentWillMount () {
- this.props.dispatch(fetchFavourites(Number(this.props.params.statusId)));
+ this.props.dispatch(fetchFavourites(this.props.params.statusId));
}
componentWillReceiveProps (nextProps) {
if (nextProps.params.statusId !== this.props.params.statusId && nextProps.params.statusId) {
- this.props.dispatch(fetchFavourites(Number(nextProps.params.statusId)));
+ this.props.dispatch(fetchFavourites(nextProps.params.statusId));
}
}
diff --git a/app/javascript/mastodon/features/followers/index.js b/app/javascript/mastodon/features/followers/index.js
index 2d85b9cc0b980..89445559fe392 100644
--- a/app/javascript/mastodon/features/followers/index.js
+++ b/app/javascript/mastodon/features/followers/index.js
@@ -17,8 +17,8 @@ import ColumnBackButton from '../../components/column_back_button';
import ImmutablePureComponent from 'react-immutable-pure-component';
const mapStateToProps = (state, props) => ({
- accountIds: state.getIn(['user_lists', 'followers', Number(props.params.accountId), 'items']),
- hasMore: !!state.getIn(['user_lists', 'followers', Number(props.params.accountId), 'next']),
+ accountIds: state.getIn(['user_lists', 'followers', props.params.accountId, 'items']),
+ hasMore: !!state.getIn(['user_lists', 'followers', props.params.accountId, 'next']),
});
@connect(mapStateToProps)
@@ -32,14 +32,14 @@ export default class Followers extends ImmutablePureComponent {
};
componentWillMount () {
- this.props.dispatch(fetchAccount(Number(this.props.params.accountId)));
- this.props.dispatch(fetchFollowers(Number(this.props.params.accountId)));
+ this.props.dispatch(fetchAccount(this.props.params.accountId));
+ this.props.dispatch(fetchFollowers(this.props.params.accountId));
}
componentWillReceiveProps (nextProps) {
if (nextProps.params.accountId !== this.props.params.accountId && nextProps.params.accountId) {
- this.props.dispatch(fetchAccount(Number(nextProps.params.accountId)));
- this.props.dispatch(fetchFollowers(Number(nextProps.params.accountId)));
+ this.props.dispatch(fetchAccount(nextProps.params.accountId));
+ this.props.dispatch(fetchFollowers(nextProps.params.accountId));
}
}
@@ -47,13 +47,13 @@ export default class Followers extends ImmutablePureComponent {
const { scrollTop, scrollHeight, clientHeight } = e.target;
if (scrollTop === scrollHeight - clientHeight && this.props.hasMore) {
- this.props.dispatch(expandFollowers(Number(this.props.params.accountId)));
+ this.props.dispatch(expandFollowers(this.props.params.accountId));
}
}
handleLoadMore = (e) => {
e.preventDefault();
- this.props.dispatch(expandFollowers(Number(this.props.params.accountId)));
+ this.props.dispatch(expandFollowers(this.props.params.accountId));
}
render () {
diff --git a/app/javascript/mastodon/features/following/index.js b/app/javascript/mastodon/features/following/index.js
index e4e2a4811eb2b..c34830276849d 100644
--- a/app/javascript/mastodon/features/following/index.js
+++ b/app/javascript/mastodon/features/following/index.js
@@ -17,8 +17,8 @@ import ColumnBackButton from '../../components/column_back_button';
import ImmutablePureComponent from 'react-immutable-pure-component';
const mapStateToProps = (state, props) => ({
- accountIds: state.getIn(['user_lists', 'following', Number(props.params.accountId), 'items']),
- hasMore: !!state.getIn(['user_lists', 'following', Number(props.params.accountId), 'next']),
+ accountIds: state.getIn(['user_lists', 'following', props.params.accountId, 'items']),
+ hasMore: !!state.getIn(['user_lists', 'following', props.params.accountId, 'next']),
});
@connect(mapStateToProps)
@@ -32,14 +32,14 @@ export default class Following extends ImmutablePureComponent {
};
componentWillMount () {
- this.props.dispatch(fetchAccount(Number(this.props.params.accountId)));
- this.props.dispatch(fetchFollowing(Number(this.props.params.accountId)));
+ this.props.dispatch(fetchAccount(this.props.params.accountId));
+ this.props.dispatch(fetchFollowing(this.props.params.accountId));
}
componentWillReceiveProps (nextProps) {
if (nextProps.params.accountId !== this.props.params.accountId && nextProps.params.accountId) {
- this.props.dispatch(fetchAccount(Number(nextProps.params.accountId)));
- this.props.dispatch(fetchFollowing(Number(nextProps.params.accountId)));
+ this.props.dispatch(fetchAccount(nextProps.params.accountId));
+ this.props.dispatch(fetchFollowing(nextProps.params.accountId));
}
}
@@ -47,13 +47,13 @@ export default class Following extends ImmutablePureComponent {
const { scrollTop, scrollHeight, clientHeight } = e.target;
if (scrollTop === scrollHeight - clientHeight && this.props.hasMore) {
- this.props.dispatch(expandFollowing(Number(this.props.params.accountId)));
+ this.props.dispatch(expandFollowing(this.props.params.accountId));
}
}
handleLoadMore = (e) => {
e.preventDefault();
- this.props.dispatch(expandFollowing(Number(this.props.params.accountId)));
+ this.props.dispatch(expandFollowing(this.props.params.accountId));
}
render () {
diff --git a/app/javascript/mastodon/features/reblogs/index.js b/app/javascript/mastodon/features/reblogs/index.js
index dc940ae01a620..f1904786a611d 100644
--- a/app/javascript/mastodon/features/reblogs/index.js
+++ b/app/javascript/mastodon/features/reblogs/index.js
@@ -11,7 +11,7 @@ import ColumnBackButton from '../../components/column_back_button';
import ImmutablePureComponent from 'react-immutable-pure-component';
const mapStateToProps = (state, props) => ({
- accountIds: state.getIn(['user_lists', 'reblogged_by', Number(props.params.statusId)]),
+ accountIds: state.getIn(['user_lists', 'reblogged_by', props.params.statusId]),
});
@connect(mapStateToProps)
@@ -24,12 +24,12 @@ export default class Reblogs extends ImmutablePureComponent {
};
componentWillMount () {
- this.props.dispatch(fetchReblogs(Number(this.props.params.statusId)));
+ this.props.dispatch(fetchReblogs(this.props.params.statusId));
}
componentWillReceiveProps(nextProps) {
if (nextProps.params.statusId !== this.props.params.statusId && nextProps.params.statusId) {
- this.props.dispatch(fetchReblogs(Number(nextProps.params.statusId)));
+ this.props.dispatch(fetchReblogs(nextProps.params.statusId));
}
}
diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js
index 4be013be73d21..3e94f7446dddf 100644
--- a/app/javascript/mastodon/features/status/components/action_bar.js
+++ b/app/javascript/mastodon/features/status/components/action_bar.js
@@ -36,7 +36,7 @@ export default class ActionBar extends React.PureComponent {
onReport: PropTypes.func,
onPin: PropTypes.func,
onEmbed: PropTypes.func,
- me: PropTypes.number.isRequired,
+ me: PropTypes.string.isRequired,
intl: PropTypes.object.isRequired,
};
diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js
index 03010cf0a3f87..fc45d5f211a00 100644
--- a/app/javascript/mastodon/features/status/index.js
+++ b/app/javascript/mastodon/features/status/index.js
@@ -38,10 +38,10 @@ const makeMapStateToProps = () => {
const getStatus = makeGetStatus();
const mapStateToProps = (state, props) => ({
- status: getStatus(state, Number(props.params.statusId)),
+ status: getStatus(state, props.params.statusId),
settings: state.get('local_settings'),
- ancestorsIds: state.getIn(['contexts', 'ancestors', Number(props.params.statusId)]),
- descendantsIds: state.getIn(['contexts', 'descendants', Number(props.params.statusId)]),
+ ancestorsIds: state.getIn(['contexts', 'ancestors', props.params.statusId]),
+ descendantsIds: state.getIn(['contexts', 'descendants', props.params.statusId]),
me: state.getIn(['meta', 'me']),
boostModal: state.getIn(['meta', 'boost_modal']),
deleteModal: state.getIn(['meta', 'delete_modal']),
@@ -66,7 +66,7 @@ export default class Status extends ImmutablePureComponent {
settings: ImmutablePropTypes.map.isRequired,
ancestorsIds: ImmutablePropTypes.list,
descendantsIds: ImmutablePropTypes.list,
- me: PropTypes.number,
+ me: PropTypes.string,
boostModal: PropTypes.bool,
deleteModal: PropTypes.bool,
autoPlayGif: PropTypes.bool,
@@ -74,12 +74,12 @@ export default class Status extends ImmutablePureComponent {
};
componentWillMount () {
- this.props.dispatch(fetchStatus(Number(this.props.params.statusId)));
+ this.props.dispatch(fetchStatus(this.props.params.statusId));
}
componentWillReceiveProps (nextProps) {
if (nextProps.params.statusId !== this.props.params.statusId && nextProps.params.statusId) {
- this.props.dispatch(fetchStatus(Number(nextProps.params.statusId)));
+ this.props.dispatch(fetchStatus(nextProps.params.statusId));
}
}
diff --git a/app/javascript/mastodon/features/ui/components/actions_modal.js b/app/javascript/mastodon/features/ui/components/actions_modal.js
index 3d40033be1fc8..79a5a20ef6737 100644
--- a/app/javascript/mastodon/features/ui/components/actions_modal.js
+++ b/app/javascript/mastodon/features/ui/components/actions_modal.js
@@ -1,32 +1,35 @@
import React from 'react';
import PropTypes from 'prop-types';
+import ImmutablePropTypes from 'react-immutable-proptypes';
import ImmutablePureComponent from 'react-immutable-pure-component';
import StatusContent from '../../../components/status_content';
import Avatar from '../../../components/avatar';
import RelativeTimestamp from '../../../components/relative_timestamp';
import DisplayName from '../../../components/display_name';
import IconButton from '../../../components/icon_button';
+import classNames from 'classnames';
export default class ActionsModal extends ImmutablePureComponent {
static propTypes = {
+ status: ImmutablePropTypes.map,
actions: PropTypes.array,
onClick: PropTypes.func,
};
renderAction = (action, i) => {
if (action === null) {
- return ;
+ return ;
}
const { icon = null, text, meta = null, active = false, href = '#' } = action;
return (
-
+
{icon && }
diff --git a/app/javascript/mastodon/features/ui/components/column_loading.js b/app/javascript/mastodon/features/ui/components/column_loading.js
index 1c4058926cb8b..9503a7a1ac60d 100644
--- a/app/javascript/mastodon/features/ui/components/column_loading.js
+++ b/app/javascript/mastodon/features/ui/components/column_loading.js
@@ -3,17 +3,28 @@ import PropTypes from 'prop-types';
import Column from '../../../components/column';
import ColumnHeader from '../../../components/column_header';
+import ImmutablePureComponent from 'react-immutable-pure-component';
-const ColumnLoading = ({ title = '', icon = ' ' }) => (
-
-
-
-
-);
+export default class ColumnLoading extends ImmutablePureComponent {
-ColumnLoading.propTypes = {
- title: PropTypes.node,
- icon: PropTypes.string,
-};
+ static propTypes = {
+ title: PropTypes.oneOfType([PropTypes.node, PropTypes.string]),
+ icon: PropTypes.string,
+ };
-export default ColumnLoading;
+ static defaultProps = {
+ title: '',
+ icon: '',
+ };
+
+ render() {
+ let { title, icon } = this.props;
+ return (
+
+
+
+
+ );
+ }
+
+}
diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js
index 3732d301fee22..73bd23432dc35 100644
--- a/app/javascript/mastodon/features/ui/index.js
+++ b/app/javascript/mastodon/features/ui/index.js
@@ -57,7 +57,7 @@ export default class UI extends React.PureComponent {
static contextTypes = {
router: PropTypes.object.isRequired,
- }
+ };
static propTypes = {
dispatch: PropTypes.func.isRequired,
@@ -193,14 +193,18 @@ export default class UI extends React.PureComponent {
document.removeEventListener('dragend', this.handleDragEnd);
}
- setRef = (c) => {
+ setRef = c => {
this.node = c;
}
- setColumnsAreaRef = (c) => {
+ setColumnsAreaRef = c => {
this.columnsAreaNode = c.getWrappedInstance().getWrappedInstance();
}
+ setOverlayRef = c => {
+ this.overlay = c;
+ }
+
render () {
const { width, draggingOver } = this.state;
const { children, layout, isWide, navbarUnder } = this.props;
diff --git a/app/javascript/mastodon/features/ui/util/async-components.js b/app/javascript/mastodon/features/ui/util/async-components.js
index ddb7e32c91355..5d640810f492a 100644
--- a/app/javascript/mastodon/features/ui/util/async-components.js
+++ b/app/javascript/mastodon/features/ui/util/async-components.js
@@ -1,7 +1,3 @@
-export function EmojiPicker () {
- return import(/* webpackChunkName: "emojione_picker" */'emojione-picker');
-}
-
export function Compose () {
return import(/* webpackChunkName: "features/compose" */'../../compose');
}
diff --git a/app/javascript/mastodon/is_mobile.js b/app/javascript/mastodon/is_mobile.js
index 129d666821b0b..80e8e0a8a8f29 100644
--- a/app/javascript/mastodon/is_mobile.js
+++ b/app/javascript/mastodon/is_mobile.js
@@ -1,4 +1,6 @@
-const LAYOUT_BREAKPOINT = 1024;
+import detectPassiveEvents from 'detect-passive-events';
+
+const LAYOUT_BREAKPOINT = 630;
export function isMobile(width, columns) {
switch (columns) {
@@ -12,11 +14,16 @@ export function isMobile(width, columns) {
};
const iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
-let userTouching = false;
-window.addEventListener('touchstart', () => {
+let userTouching = false;
+let listenerOptions = detectPassiveEvents.hasSupport ? { passive: true } : false;
+
+function touchListener() {
userTouching = true;
-}, { once: true });
+ window.removeEventListener('touchstart', touchListener, listenerOptions);
+}
+
+window.addEventListener('touchstart', touchListener, listenerOptions);
export function isUserTouching() {
return userTouching;
diff --git a/app/javascript/mastodon/locales/ar.json b/app/javascript/mastodon/locales/ar.json
index 3a6fa2874ccf1..bd09f19705a73 100644
--- a/app/javascript/mastodon/locales/ar.json
+++ b/app/javascript/mastodon/locales/ar.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "حسابك ليس {locked}. يمكن لأي شخص متابعتك و عرض المنشورات.",
"compose_form.lock_disclaimer.lock": "مقفل",
"compose_form.placeholder": "فيمَ تفكّر؟",
- "compose_form.privacy_disclaimer": "Your private status will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is private, and it may be boosted or otherwise made visible to unintended recipients.",
"compose_form.publish": "بوّق",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "ضع علامة على الوسيط باعتباره حسّاس",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "الأنشطة",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "الأعلام",
"emoji_button.food": "الطعام والشراب",
"emoji_button.label": "أدرج إيموجي",
"emoji_button.nature": "الطبيعة",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "أشياء",
"emoji_button.people": "الناس",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "ابحث...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "رموز",
"emoji_button.travel": "أماكن و أسفار",
"empty_column.community": "الخط الزمني المحلي فارغ. اكتب شيئا ما للعامة كبداية.",
diff --git a/app/javascript/mastodon/locales/bg.json b/app/javascript/mastodon/locales/bg.json
index 9afe2d038b555..d391a57ba0798 100644
--- a/app/javascript/mastodon/locales/bg.json
+++ b/app/javascript/mastodon/locales/bg.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "Какво си мислиш?",
- "compose_form.privacy_disclaimer": "Поверителни публикации ще бъдат изпратени до споменатите потребители на {domains}. Доверяваш ли се на {domainsCount, plural, one {that server} other {those servers}}, че няма да издаде твоята публикация?",
"compose_form.publish": "Раздумай",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Отбележи съдържанието като деликатно",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
diff --git a/app/javascript/mastodon/locales/ca.json b/app/javascript/mastodon/locales/ca.json
index 7d45b4d6b09a7..286da3ac67706 100644
--- a/app/javascript/mastodon/locales/ca.json
+++ b/app/javascript/mastodon/locales/ca.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "El teu compte no està bloquejat {locked}. Tothom pot seguir-te i veure els teus missatges a seguidors.",
"compose_form.lock_disclaimer.lock": "bloquejat",
"compose_form.placeholder": "En què estàs pensant?",
- "compose_form.privacy_disclaimer": "El teu missatge serà lliurat als usuaris esmentats en els dominis {domains}. Confies en {domainsCount, plural, one {that server} other {those servers}}? Els missatges privats només funcionen en instàncies Mastodon. Si {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, res indicarà que el teu missatge no es públic i pot ser impulsat (boosted) o ser visible per destinataris no desitjats.",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Marcar multimèdia com a sensible",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activitat",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Menjar i Beure",
"emoji_button.label": "Inserir emoji",
"emoji_button.nature": "Natura",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objectes",
"emoji_button.people": "Gent",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Cercar...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Símbols",
"emoji_button.travel": "Viatges i Llocs",
"empty_column.community": "La línia de temps local és buida. Escriu alguna cosa públicament per fer rodar la pilota!",
diff --git a/app/javascript/mastodon/locales/de.json b/app/javascript/mastodon/locales/de.json
index 712c635c8acea..461e7e3043e8d 100644
--- a/app/javascript/mastodon/locales/de.json
+++ b/app/javascript/mastodon/locales/de.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Dein Profil ist nicht {locked}. Jeder kann dir jederzeit folgen, um deine privaten Beiträge einzusehen.",
"compose_form.lock_disclaimer.lock": "gesperrt",
"compose_form.placeholder": "Worüber möchtest du schreiben?",
- "compose_form.privacy_disclaimer": "Dein privater Status wird an die genannten Profile auf den Domains {domains} zugestellt. Vertraust du {domainsCount, plural, one {diesem Server} other {diesen Servern}}? Private Beiträge funktionieren nur auf Mastodon-Instanzen. Wenn {domains} {domainsCount, plural, one {keine Mastodon-Instanz ist} other {keine Mastodon-Instanzen sind}}, wird es dort kein Anzeichen geben, dass dein Beitrag privat ist und er könnte geteilt oder anderweitig für unerwünschte Empfänger sichtbar gemacht werden.",
"compose_form.publish": "Tröt",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Medien als heikel markieren",
@@ -67,13 +66,17 @@
"embed.instructions": "Du kannst diesen Beitrag auf deiner Webseite einbetten, in dem du den folgenden Code einfügst.",
"embed.preview": "So wird es aussehen:",
"emoji_button.activity": "Aktivitäten",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Flaggen",
"emoji_button.food": "Essen und Trinken",
"emoji_button.label": "Emoji einfügen",
"emoji_button.nature": "Natur",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Dinge",
"emoji_button.people": "Leute",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Suche…",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbole",
"emoji_button.travel": "Reise und Orte",
"empty_column.community": "Die lokale Zeitleiste ist leer. Schreibe etwas öffentlich, um den Ball ins Rollen zu bringen!",
diff --git a/app/javascript/mastodon/locales/defaultMessages.json b/app/javascript/mastodon/locales/defaultMessages.json
index 3c19ad7dc2857..5b711fd261150 100644
--- a/app/javascript/mastodon/locales/defaultMessages.json
+++ b/app/javascript/mastodon/locales/defaultMessages.json
@@ -516,6 +516,22 @@
"defaultMessage": "Search...",
"id": "emoji_button.search"
},
+ {
+ "defaultMessage": "No emojos!! (╯°□°)╯︵ ┻━┻",
+ "id": "emoji_button.not_found"
+ },
+ {
+ "defaultMessage": "Custom",
+ "id": "emoji_button.custom"
+ },
+ {
+ "defaultMessage": "Frequently used",
+ "id": "emoji_button.recent"
+ },
+ {
+ "defaultMessage": "Search results",
+ "id": "emoji_button.search_results"
+ },
{
"defaultMessage": "People",
"id": "emoji_button.people"
@@ -682,10 +698,6 @@
{
"defaultMessage": "locked",
"id": "compose_form.lock_disclaimer.lock"
- },
- {
- "defaultMessage": "Your private status will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is private, and it may be boosted or otherwise made visible to unintended recipients.",
- "id": "compose_form.privacy_disclaimer"
}
],
"path": "app/javascript/mastodon/features/compose/containers/warning_container.json"
@@ -1331,15 +1343,6 @@
],
"path": "app/javascript/mastodon/features/ui/components/upload_area.json"
},
- {
- "descriptors": [
- {
- "defaultMessage": "Close",
- "id": "lightbox.close"
- }
- ],
- "path": "app/javascript/mastodon/features/ui/components/video_modal.json"
- },
{
"descriptors": [
{
diff --git a/app/javascript/mastodon/locales/en.json b/app/javascript/mastodon/locales/en.json
index 436079aeb8a31..fc6aa4280fa6f 100644
--- a/app/javascript/mastodon/locales/en.json
+++ b/app/javascript/mastodon/locales/en.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "What is on your mind?",
- "compose_form.privacy_disclaimer": "Your post will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is not a public post, and it may be boosted or otherwise made visible to unintended recipients.",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Mark media as sensitive",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
diff --git a/app/javascript/mastodon/locales/eo.json b/app/javascript/mastodon/locales/eo.json
index 945fcd8e08adc..21b92ed3a1a01 100644
--- a/app/javascript/mastodon/locales/eo.json
+++ b/app/javascript/mastodon/locales/eo.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "Pri kio vi pensas?",
- "compose_form.privacy_disclaimer": "Via privata mesaĝo estos sendita nur al menciitaj uzantoj en {domains}. Ĉu vi fidas {domainsCount, plural, one {tiun servilon} other {tiujn servilojn}}? Mesaĝa privateco funkcias nur en aperaĵoj de Mastodon. Se {domains} {domainsCount, plural, one {ne estas aperaĵo de Mastodon} other {ne estas aperaĵoj de Mastodon}}, estos neniu indiko ke via mesaĝo estas privata, kaj ĝi povus esti diskonigita aŭ videbligita al necelitaj ricevantoj.",
"compose_form.publish": "Hup",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Marki ke la enhavo estas tikla",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
diff --git a/app/javascript/mastodon/locales/es.json b/app/javascript/mastodon/locales/es.json
index 5182b50946cb8..59c7dc5a72e71 100644
--- a/app/javascript/mastodon/locales/es.json
+++ b/app/javascript/mastodon/locales/es.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Tu cuenta no está bloqueada. Todos pueden seguirte para ver tus toots solo para seguidores.",
"compose_form.lock_disclaimer.lock": "bloqueado",
"compose_form.placeholder": "¿En qué estás pensando?",
- "compose_form.privacy_disclaimer": "Tu toot privado será enviado a usuario/s mencionados de {domains}. ¿Confías en {domainsCount, plural, one {ese servidor} other {esos servidores}}? La privacidad del toot funcionará solamente en instancias de Mastodon. Si {domains} {domainsCount, plural, one {no es una instancia de Mastodon} other {no son instancias de Mastodon}}, no habrá indicación de que tu toot es privado, y puede hacerse visible a remitentes inesperados.",
"compose_form.publish": "Tootear",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Marcar contenido como sensible",
@@ -67,13 +66,17 @@
"embed.instructions": "Añade este toot a tu sitio web con el siguiente código.",
"embed.preview": "Así es como se verá:",
"emoji_button.activity": "Actividad",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Marcas",
"emoji_button.food": "Comida y bebida",
"emoji_button.label": "Insertar emoji",
"emoji_button.nature": "Naturaleza",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objetos",
"emoji_button.people": "Gente",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Buscar…",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viajes y lugares",
"empty_column.community": "La línea de tiempo local está vacía. ¡Escribe algo para empezar la fiesta!",
diff --git a/app/javascript/mastodon/locales/fa.json b/app/javascript/mastodon/locales/fa.json
index 23f4a41d61b4b..6e4771392eb66 100644
--- a/app/javascript/mastodon/locales/fa.json
+++ b/app/javascript/mastodon/locales/fa.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "حساب شما {locked} نیست. هر کسی میتواند پیگیر شما شود و نوشتههای ویژهٔ پیگیران شما را ببیند.",
"compose_form.lock_disclaimer.lock": "قفل",
"compose_form.placeholder": "تازه چه خبر؟",
- "compose_form.privacy_disclaimer": "نوشتهٔ خصوصی شما به کاربران نامبردهشده در {domains} فرستاده میشود. آیا به {domainsCount, plural, one {آن سرور} other {آن سرورها}} اعتماد دارید؟ تنظیمات حریم خصوصی نوشتهها تنها در سرورهای ماستدون کار میکند. اگر {domains} {domainsCount, plural, one {یک سرور ماستدون نباشد} other {سرورهای ماستدون نباشند}}، اشارهای به خصوصیبودن نوشتهٔ شما نخواهد شد و شاید نوشتهٔ شما همرسان شود یا برای کاربرانی که نمیخواهید نمایش یابد.",
"compose_form.publish": "بوق",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "تصاویر حساس هستند",
@@ -67,13 +66,17 @@
"embed.instructions": "برای جاگذاری این نوشته در سایت خودتان، کد زیر را کپی کنید.",
"embed.preview": "نوشتهٔ جاگذاریشده این گونه به نظر خواهد رسید:",
"emoji_button.activity": "فعالیت",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "پرچمها",
"emoji_button.food": "غذا و نوشیدنی",
"emoji_button.label": "افزودن شکلک",
"emoji_button.nature": "طبیعت",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "اشیا",
"emoji_button.people": "مردم",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "جستجو...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "نمادها",
"emoji_button.travel": "سفر و مکان",
"empty_column.community": "فهرست نوشتههای محلی خالی است. چیزی بنویسید تا چرخش بچرخد!",
diff --git a/app/javascript/mastodon/locales/fi.json b/app/javascript/mastodon/locales/fi.json
index fc409a9326bcd..ccdf19dd65bef 100644
--- a/app/javascript/mastodon/locales/fi.json
+++ b/app/javascript/mastodon/locales/fi.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "Mitä sinulla on mielessä?",
- "compose_form.privacy_disclaimer": "Sinun yksityinen status toimitetaan mainitsemallesi käyttäjille domaineissa {domains}. Luotatko {domainsCount, plural, one {tähän palvelimeen} other {näihin palvelimiin}}? Postauksen yksityisyys toimii van Mastodon palvelimilla. Jos {domains} {domainsCount, plural, one {ei ole Mastodon palvelin} other {eivät ole Mastodon palvelin}}, viestiin ei tule Yksityinen-merkintää, ja sitä voidaan boostata tai muuten tehdä näkyväksi muille vastaanottajille.",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Merkitse media herkäksi",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
diff --git a/app/javascript/mastodon/locales/fr.json b/app/javascript/mastodon/locales/fr.json
index 5a436891b340c..417c1062a1ea5 100644
--- a/app/javascript/mastodon/locales/fr.json
+++ b/app/javascript/mastodon/locales/fr.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Votre compte n’est pas {locked}. Tout le monde peut vous suivre et voir vos pouets privés.",
"compose_form.lock_disclaimer.lock": "verrouillé",
"compose_form.placeholder": "Qu’avez-vous en tête ?",
- "compose_form.privacy_disclaimer": "Votre statut privé va être transmis aux personnes mentionnées sur {domains}. Avez-vous confiance en {domainsCount, plural, one {ce serveur} other {ces serveurs}} pour ne pas divulguer votre statut ? Les statuts privés ne fonctionnent que sur les instances de Mastodon. Si {domains} {domainsCount, plural, one {n’est pas une instance de Mastodon} other {ne sont pas des instances de Mastodon}}, il n’y aura aucune indication que votre statut est privé, et il pourrait être partagé ou rendu visible d’une autre manière à d’autres personnes imprévues.",
"compose_form.publish": "Pouet ",
"compose_form.publish_loud": "{publish} !",
"compose_form.sensitive": "Marquer le média comme sensible",
@@ -67,13 +66,17 @@
"embed.instructions": "Intégrez ce statut à votre site en copiant ce code ci-dessous.",
"embed.preview": "Il apparaîtra comme cela : ",
"emoji_button.activity": "Activités",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Drapeaux",
"emoji_button.food": "Boire et manger",
"emoji_button.label": "Insérer un emoji",
"emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objets",
"emoji_button.people": "Personnages",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Recherche…",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symboles",
"emoji_button.travel": "Lieux et voyages",
"empty_column.community": "Le fil public local est vide. Écrivez-donc quelque chose pour le remplir !",
diff --git a/app/javascript/mastodon/locales/he.json b/app/javascript/mastodon/locales/he.json
index 06b401d39125d..f78c31a46444e 100644
--- a/app/javascript/mastodon/locales/he.json
+++ b/app/javascript/mastodon/locales/he.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "חשבונך אינו {locked}. כל אחד יוכל לעקוב אחריך כדי לקרוא את הודעותיך המיועדות לעוקבים בלבד.",
"compose_form.lock_disclaimer.lock": "נעול",
"compose_form.placeholder": "מה עובר לך בראש?",
- "compose_form.privacy_disclaimer": "הודעתך הפרטית תשלח למשתמשים על {domains}. האם ניתן לסמוך על {domainsCount, plural, one {שרת זה} other {שרתים אלו}}? פרטיות ההודעה קיימת רק על שרתי מסטודון. אם {domains} {domainsCount, plural, one {הוא לא שרת מסטודון} other {הם לא שרתי מסטודון}}, לא יהיה שום סימן שההודעה פרטית, והוא עשוי להיות מקודם או להחשף למשתמשים שלא ברשימת היעד.",
"compose_form.publish": "ללחוש",
"compose_form.publish_loud": "לחצרץ!",
"compose_form.sensitive": "סימון תוכן כרגיש",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "פעילות",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "דגלים",
"emoji_button.food": "אוכל ושתיה",
"emoji_button.label": "הוספת אמוג'י",
"emoji_button.nature": "טבע",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "חפצים",
"emoji_button.people": "אנשים",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "חיפוש...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "סמלים",
"emoji_button.travel": "טיולים ואתרים",
"empty_column.community": "טור הסביבה ריק. יש לפרסם משהו כדי שדברים יתרחילו להתגלגל!",
diff --git a/app/javascript/mastodon/locales/hr.json b/app/javascript/mastodon/locales/hr.json
index cb28ce9c134b5..43fe95eb8ebe1 100644
--- a/app/javascript/mastodon/locales/hr.json
+++ b/app/javascript/mastodon/locales/hr.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Tvoj račun nije {locked}. Svatko te može slijediti kako bi vidio postove namijenjene samo tvojim sljedbenicima.",
"compose_form.lock_disclaimer.lock": "zaključan",
"compose_form.placeholder": "Što ti je na umu?",
- "compose_form.privacy_disclaimer": "Tvoj privatni status će biti dostavljen spomenutim korisnicima na {domains}. Vjeruješ li {domainsCount, plural, one {that server} drugim {those servers}}? Privatnost postova radi samo na Mastodon instancama. Ako {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, neće biti indikacije da je tvoj post privatan, i mogao bi biti podignut ili biti učinjen vidljivim na drugi način neželjenim primateljima.",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Označi media sadržaj kao osjetljiv",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Aktivnost",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Zastave",
"emoji_button.food": "Hrana & Piće",
"emoji_button.label": "Umetni smajlije",
"emoji_button.nature": "Priroda",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objekti",
"emoji_button.people": "Ljudi",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Traži...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Simboli",
"emoji_button.travel": "Putovanja & Mjesta",
"empty_column.community": "Lokalni timeline je prazan. Napiši nešto javno kako bi pokrenuo stvari!",
diff --git a/app/javascript/mastodon/locales/hu.json b/app/javascript/mastodon/locales/hu.json
index a13e4fee280f9..f73295dca2767 100644
--- a/app/javascript/mastodon/locales/hu.json
+++ b/app/javascript/mastodon/locales/hu.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "Mire gondolsz?",
- "compose_form.privacy_disclaimer": "Your private status will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is private, and it may be boosted or otherwise made visible to unintended recipients.",
"compose_form.publish": "Tülk!",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Tartalom érzékenynek jelölése",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
diff --git a/app/javascript/mastodon/locales/id.json b/app/javascript/mastodon/locales/id.json
index 349423cce37df..4d5f0a5d8d5c7 100644
--- a/app/javascript/mastodon/locales/id.json
+++ b/app/javascript/mastodon/locales/id.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Akun anda tidak {locked}. Semua orang dapat mengikuti anda untuk melihat postingan khusus untuk pengikut anda.",
"compose_form.lock_disclaimer.lock": "dikunci",
"compose_form.placeholder": "Apa yang ada di pikiran anda?",
- "compose_form.privacy_disclaimer": "Status pribadi anda akan dikirim ke pengguna yang disebut dalam {domains}. Apa anda mempercayai {domainsCount, plural, one {server tersebut} other {server tersebut}}? Privasi postingan hanya bekerja dalam server Mastodon. Jika {domains} {domainsCount, plural, one {bukan server Mastodon} other {bukan server Mastodon}}, akan ada indikasi bahwa postingan anda adalah postingan pribadi, dan dapat di-boost atau dapat dilihat oleh orang lain.",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Tandai media sensitif",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Aktivitas",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Bendera",
"emoji_button.food": "Makanan & Minuman",
"emoji_button.label": "Tambahkan emoji",
"emoji_button.nature": "Alam",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Benda-benda",
"emoji_button.people": "Orang",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Cari...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Simbol",
"emoji_button.travel": "Tempat Wisata",
"empty_column.community": "Linimasa lokal masih kosong. Tulis sesuatu secara publik dan buat roda berputar!",
diff --git a/app/javascript/mastodon/locales/io.json b/app/javascript/mastodon/locales/io.json
index 5f19509e276b4..d2c1ee73d66a1 100644
--- a/app/javascript/mastodon/locales/io.json
+++ b/app/javascript/mastodon/locales/io.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "Quo esas en tua spirito?",
- "compose_form.privacy_disclaimer": "Tua privata mesajo livresos a mencionata uzeri en {domains}. Ka tu fidas {domainsCount, plural, one {ta servero} other {ta serveri}}? Privateso di mesaji funcionas nur en instaluri di Mastodon. Se {domains} {domainsCount, plural, one {ne esas instaluro di Mastodon} other {ne esas instaluri di Mastodon}}, esos nula indiko, ke tua mesajo esas privata, ed ol povos repetesar od altre divenar videbla da nedezirinda recevanti.",
"compose_form.publish": "Siflar",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Markizar kontenajo kom trubliva",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insertar emoji",
"emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "La lokala tempolineo esas vakua. Skribez ulo publike por iniciar la agiveso!",
diff --git a/app/javascript/mastodon/locales/it.json b/app/javascript/mastodon/locales/it.json
index cedbb947c1f5b..33f0e7fdce014 100644
--- a/app/javascript/mastodon/locales/it.json
+++ b/app/javascript/mastodon/locales/it.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "A cosa stai pensando?",
- "compose_form.privacy_disclaimer": "Il tuo status privato verrà condiviso con gli utenti menzionati su {domains}. Ti fidi di {domainsCount, plural, one {quel server} other {quei server}}? Le impostazioni sulla privacy valgono solo su server Mastodon. Se {domains} {domainsCount, plural, one {non è un server Mastodon} other {non sono server Mastodon}}, non ci saranno indicazioni sulla privacy del tuo status, e potrebbe essere condiviso o reso visibile a destinatari indesiderati.",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Segnala file come sensibile",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Inserisci emoji",
"emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "La timeline locale è vuota. Condividi qualcosa pubblicamente per dare inizio alla festa!",
diff --git a/app/javascript/mastodon/locales/ja.json b/app/javascript/mastodon/locales/ja.json
index e78ac4c26bd4d..c3d96baf37ad8 100644
--- a/app/javascript/mastodon/locales/ja.json
+++ b/app/javascript/mastodon/locales/ja.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "あなたのアカウントは{locked}になっていません。誰でもあなたをフォローすることができ、フォロワー限定の投稿を見ることができます。",
"compose_form.lock_disclaimer.lock": "非公開",
"compose_form.placeholder": "今なにしてる?",
- "compose_form.privacy_disclaimer": "あなたの非公開トゥートは返信先ユーザーが所属する{domains}に送信されます。{domainsCount, plural, one {このサーバー} other {これらのサーバー}}は信頼できますか? 投稿のプライバシー保護はMastodonサーバー内でのみ有効です。{domains}がMastodonインスタンスでない場合、あなたの投稿がプライベートなものとして扱われず、ブーストされたり予期しないユーザーに見られる可能性があります。",
"compose_form.publish": "トゥート",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "メディアを閲覧注意としてマークする",
@@ -67,13 +66,17 @@
"embed.instructions": "下記のコードをコピーしてウェブサイトに埋め込みます。",
"embed.preview": "表示例:",
"emoji_button.activity": "活動",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "国旗",
"emoji_button.food": "食べ物",
"emoji_button.label": "絵文字を追加",
"emoji_button.nature": "自然",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "物",
"emoji_button.people": "人々",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "検索...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "記号",
"emoji_button.travel": "旅行と場所",
"empty_column.community": "ローカルタイムラインはまだ使われていません。何か書いてみましょう!",
diff --git a/app/javascript/mastodon/locales/ko.json b/app/javascript/mastodon/locales/ko.json
index 46ed772cfb3ae..c50bb2f340440 100644
--- a/app/javascript/mastodon/locales/ko.json
+++ b/app/javascript/mastodon/locales/ko.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "이 계정은 {locked}로 설정 되어 있지 않습니다. 누구나 이 계정을 팔로우 할 수 있으며, 팔로워 공개의 포스팅을 볼 수 있습니다.",
"compose_form.lock_disclaimer.lock": "비공개",
"compose_form.placeholder": "지금 무엇을 하고 있나요?",
- "compose_form.privacy_disclaimer": "이 계정의 비공개 포스트는 멘션된 사용자가 소속된 {domains}으로 전송됩니다. {domainsCount, plural, one {이 서버를} other {이 서버들을}} 신뢰할 수 있습니까? 포스팅의 프라이버시 보호는 Mastodon 서버에서만 유효합니다. {domains}가 Mastodon 인스턴스가 아닐 경우, 이 투고가 사적인 것으로 취급되지 않은 채 부스트 되거나 원하지 않는 사용자에게 보여질 가능성이 있습니다.",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "이 미디어를 민감한 미디어로 취급",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "활동",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "국기",
"emoji_button.food": "음식",
"emoji_button.label": "emoji를 추가",
"emoji_button.nature": "자연",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "물건",
"emoji_button.people": "사람들",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "검색...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "기호",
"emoji_button.travel": "여행과 장소",
"empty_column.community": "로컬 타임라인에 아무 것도 없습니다. 아무거나 적어 보세요!",
diff --git a/app/javascript/mastodon/locales/nl.json b/app/javascript/mastodon/locales/nl.json
index b696bccfdda7b..c333bec706559 100644
--- a/app/javascript/mastodon/locales/nl.json
+++ b/app/javascript/mastodon/locales/nl.json
@@ -33,9 +33,8 @@
"column.home": "Start",
"column.mutes": "Genegeerde gebruikers",
"column.notifications": "Meldingen",
- "column.pins": "Pinned toot",
- "column.public": "Globale tijdlijn",
"column.pins": "Vastgezette toots",
+ "column.public": "Globale tijdlijn",
"column_back_button.label": "terug",
"column_header.hide_settings": "Instellingen verbergen",
"column_header.moveLeft_settings": "Kolom naar links verplaatsen",
@@ -48,7 +47,6 @@
"compose_form.lock_disclaimer": "Jouw account is niet {locked}. Iedereen kan jou volgen en toots zien die je alleen aan volgers hebt gericht.",
"compose_form.lock_disclaimer.lock": "besloten",
"compose_form.placeholder": "Wat wil je kwijt?",
- "compose_form.privacy_disclaimer": "Jouw privétoot wordt afgeleverd aan de vermelde gebruikers op {domains}. Vertrouw jij {domainsCount, plural, one {die server} other {die servers}}? Het privé plaatsen van toots werkt alleen op Mastodon-servers. Wanneer {domains} {domainsCount, plural, one {geen Mastodon-server is} other {geen Mastodon-servers zijn}}, dan wordt er niet aangegeven dat de toot privé is, waardoor het kan worden geboost of op een andere manier zichtbaar wordt gemaakt voor mensen waarvoor het niet was bedoeld.",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Media als gevoelig markeren (nsfw)",
@@ -68,13 +66,17 @@
"embed.instructions": "Embed deze toot op jouw website, door de onderstaande code te kopiëren.",
"embed.preview": "Zo komt het eruit te zien:",
"emoji_button.activity": "Activiteiten",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Vlaggen",
"emoji_button.food": "Eten en drinken",
"emoji_button.label": "Emoji toevoegen",
"emoji_button.nature": "Natuur",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Voorwerpen",
"emoji_button.people": "Mensen",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Zoeken...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbolen",
"emoji_button.travel": "Reizen en plekken",
"empty_column.community": "De lokale tijdlijn is nog leeg. Toot iets in het openbaar om de bal aan het rollen te krijgen!",
@@ -87,7 +89,6 @@
"follow_request.authorize": "Goedkeuren",
"follow_request.reject": "Afkeuren",
"getting_started.appsshort": "Apps",
- "getting_started.donate": "Doneren",
"getting_started.faq": "FAQ",
"getting_started.heading": "Beginnen",
"getting_started.open_source_notice": "Mastodon is open-sourcesoftware. Je kunt bijdragen of problemen melden op GitHub via {github}.",
@@ -112,10 +113,9 @@
"navigation_bar.info": "Uitgebreide informatie",
"navigation_bar.logout": "Afmelden",
"navigation_bar.mutes": "Genegeerde gebruikers",
- "navigation_bar.pins": "Pinned toots",
+ "navigation_bar.pins": "Vastgezette toots",
"navigation_bar.preferences": "Instellingen",
"navigation_bar.public_timeline": "Globale tijdlijn",
- "navigation_bar.pins": "Vastgezette toots",
"notification.favourite": "{name} markeerde jouw toot als favoriet",
"notification.follow": "{name} volgt jou nu",
"notification.mention": "{name} vermeldde jou",
diff --git a/app/javascript/mastodon/locales/no.json b/app/javascript/mastodon/locales/no.json
index 742017c662e98..d28190faf7398 100644
--- a/app/javascript/mastodon/locales/no.json
+++ b/app/javascript/mastodon/locales/no.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Din konto er ikke {locked}. Hvem som helst kan følge deg og se dine private poster.",
"compose_form.lock_disclaimer.lock": "låst",
"compose_form.placeholder": "Hva har du på hjertet?",
- "compose_form.privacy_disclaimer": "Din private status vil leveres til nevnte brukere på {domains}. Stoler du på {domainsCount, plural, one {den serveren} other {de serverne}}? Synlighet fungerer kun på Mastodon-instanser. Hvis {domains} {domainsCount, plural, one {ikke er en Mastodon-instans} other {ikke er Mastodon-instanser}}, vil det ikke indikeres at posten din er privat, og den kan kanskje bli fremhevd eller på annen måte bli synlig for uventede mottakere.",
"compose_form.publish": "Tut",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Merk media som følsomt",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Aktivitet",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Flagg",
"emoji_button.food": "Mat og drikke",
"emoji_button.label": "Sett inn emoji",
"emoji_button.nature": "Natur",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objekter",
"emoji_button.people": "Mennesker",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Søk...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symboler",
"emoji_button.travel": "Reise & steder",
"empty_column.community": "Den lokale tidslinjen er tom. Skriv noe offentlig for å få snøballen til å rulle!",
diff --git a/app/javascript/mastodon/locales/oc.json b/app/javascript/mastodon/locales/oc.json
index 512e4120d803a..8e9d06642a083 100644
--- a/app/javascript/mastodon/locales/oc.json
+++ b/app/javascript/mastodon/locales/oc.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Vòstre compte es pas {locked}. Tot lo mond pòt vos sègre e veire los estatuts reservats als seguidors.",
"compose_form.lock_disclaimer.lock": "clavat",
"compose_form.placeholder": "A de qué pensatz ?",
- "compose_form.privacy_disclaimer": "Vòstre estatut privat serà enviat a las personas mencionadas sus {domains}. Vos fisatz d’aqueste {domainsCount, plural, one { servidor} other {s servidors}} per divulgar pas vòstre estatut ? Los estatuts privats foncionan pas que sus las instàncias de Mastodon. Se {domains} {domainsCount, plural, one {es pas una instància a Mastodon} other {son pas d'instàncias a Mastodon}}, i aurà pas d’indicacion disent que vòstre estatut es privat e poirà èsser partejat o èsser visible a de mond pas prevists",
"compose_form.publish": "Tut",
"compose_form.publish_loud": "{publish} !",
"compose_form.sensitive": "Marcar lo mèdia coma sensible",
@@ -67,13 +66,17 @@
"embed.instructions": "Embarcar aqueste estatut per lo far veire sus un site Internet en copiar lo còdi çai-jos.",
"embed.preview": "Semblarà aquò : ",
"emoji_button.activity": "Activitats",
+ "emoji_button.custom": "Personalizats",
"emoji_button.flags": "Drapèus",
"emoji_button.food": "Beure e manjar",
"emoji_button.label": "Inserir un emoji",
"emoji_button.nature": "Natura",
+ "emoji_button.not_found": "Cap emoji ! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objèctes",
"emoji_button.people": "Gents",
+ "emoji_button.recent": "Sovent utilizats",
"emoji_button.search": "Cercar…",
+ "emoji_button.search_results": "Resultat de recèrca",
"emoji_button.symbols": "Simbòls",
"emoji_button.travel": "Viatges & lòcs",
"empty_column.community": "Lo flux public local es void. Escrivètz quicòm per lo garnir !",
diff --git a/app/javascript/mastodon/locales/pl.json b/app/javascript/mastodon/locales/pl.json
index 1d24436907b3a..35b1a31010b4e 100644
--- a/app/javascript/mastodon/locales/pl.json
+++ b/app/javascript/mastodon/locales/pl.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Twoje konto nie jest {locked}. Każdy, kto Cię śledzi, może wyświetlać Twoje wpisy przeznaczone tylko dla śledzących.",
"compose_form.lock_disclaimer.lock": "zablokowane",
"compose_form.placeholder": "Co Ci chodzi po głowie?",
- "compose_form.privacy_disclaimer": "Twój wpis zostanie dostarczony do użytkowników z {domains}. Czy ufasz {domainsCount, plural, one {temu serwerowi} other {tym serwerom}}? Prywatność wpisów obowiązuje tylko na instancjach Mastodona. Jeżeli {domains} {domainsCount, plural, one {nie jest instancją Mastodona} other {nie są instancjami Mastodona}}, wpis może być widoczny dla niewłaściwych osób.",
"compose_form.publish": "Wyślij",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Oznacz treści jako wrażliwe",
@@ -67,13 +66,17 @@
"embed.instructions": "Osadź ten status na swojej stronie wklejając poniższy kod.",
"embed.preview": "Tak będzie to wyglądać:",
"emoji_button.activity": "Aktywność",
+ "emoji_button.custom": "Niestandardowe",
"emoji_button.flags": "Flagi",
"emoji_button.food": "Żywność i napoje",
"emoji_button.label": "Wstaw emoji",
"emoji_button.nature": "Natura",
+ "emoji_button.not_found": "Brak emoji!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objekty",
"emoji_button.people": "Ludzie",
+ "emoji_button.recent": "Najczęściej używane",
"emoji_button.search": "Szukaj…",
+ "emoji_button.search_results": "Wyniki wyszukiwania",
"emoji_button.symbols": "Symbole",
"emoji_button.travel": "Podróże i miejsca",
"empty_column.community": "Lokalna oś czasu jest pusta. Napisz coś publicznie, aby zagaić!",
diff --git a/app/javascript/mastodon/locales/pt-BR.json b/app/javascript/mastodon/locales/pt-BR.json
index a5def0ad0b416..187343e83f7b1 100644
--- a/app/javascript/mastodon/locales/pt-BR.json
+++ b/app/javascript/mastodon/locales/pt-BR.json
@@ -35,7 +35,6 @@
"column.notifications": "Notificações",
"column.pins": "Postagens fixadas",
"column.public": "Global",
- "column.pins": "Postagens fixadas",
"column_back_button.label": "Voltar",
"column_header.hide_settings": "Esconder configurações",
"column_header.moveLeft_settings": "Mover coluna para a esquerda",
@@ -48,7 +47,6 @@
"compose_form.lock_disclaimer": "A sua conta não está {locked}. Qualquer pessoa pode te seguir e visualizar postagens direcionadas a apenas seguidores.",
"compose_form.lock_disclaimer.lock": "trancado",
"compose_form.placeholder": "No que você está pensando?",
- "compose_form.privacy_disclaimer": "O seu conteúdo privado será compartilhado com os usuários de {domains}. Você confia {domainsCount, plural, one {neste servidor} other {nestes servidores}}? As configurações de privacidade só funcionam em instâncias do Mastodon. Se {domains} {domainsCount, plural, one {não é uma instância} other {não são instâncias}}, não há como garantir a privacidade de suas postagens, e elas podem ser compartilhadas com destinatários indesejados.",
"compose_form.publish": "Publicar",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Marcar mídia como conteúdo sensível",
@@ -68,13 +66,17 @@
"embed.instructions": "Incorpore esta postagem em seu site copiando o código abaixo:",
"embed.preview": "Aqui está uma previsão de como ficará:",
"emoji_button.activity": "Atividades",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Bandeiras",
"emoji_button.food": "Comidas & Bebidas",
"emoji_button.label": "Inserir Emoji",
"emoji_button.nature": "Natureza",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objetos",
"emoji_button.people": "Pessoas",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Buscar...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Símbolos",
"emoji_button.travel": "Viagens & Lugares",
"empty_column.community": "A timeline local está vazia. Escreva algo publicamente para começar!",
@@ -114,9 +116,6 @@
"navigation_bar.pins": "Postagens fixadas",
"navigation_bar.preferences": "Preferências",
"navigation_bar.public_timeline": "Global",
- "navigation_bar.preferences": "Preferências",
- "navigation_bar.public_timeline": "Global",
- "navigation_bar.pins": "Postagens fixadas",
"notification.favourite": "{name} adicionou a sua postagem aos favoritos",
"notification.follow": "{name} te seguiu",
"notification.mention": "{name} te mencionou",
diff --git a/app/javascript/mastodon/locales/pt.json b/app/javascript/mastodon/locales/pt.json
index cff528f831500..782aaf114330d 100644
--- a/app/javascript/mastodon/locales/pt.json
+++ b/app/javascript/mastodon/locales/pt.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "Em que estás a pensar?",
- "compose_form.privacy_disclaimer": "O teu conteúdo privado vai ser partilhado com os utilizadores do {domains}. Confias {domainsCount, plural, one {neste servidor} other {nestes servidores}}? A privacidade só funciona em instâncias do Mastodon. Se {domains} {domainsCount, plural, one {não é uma instância} other {não são instâncias}}, não existem indicadores da privacidade da tua partilha, e podem ser partilhados com outros.",
"compose_form.publish": "Publicar",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Marcar media como conteúdo sensível",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Inserir Emoji",
"emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "Ainda não existem conteúdo local para mostrar!",
diff --git a/app/javascript/mastodon/locales/ru.json b/app/javascript/mastodon/locales/ru.json
index fcc147c87c3b9..6f39d098c2bdf 100644
--- a/app/javascript/mastodon/locales/ru.json
+++ b/app/javascript/mastodon/locales/ru.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Ваш аккаунт не {locked}. Любой человек может подписаться на Вас и просматривать посты для подписчиков.",
"compose_form.lock_disclaimer.lock": "закрыт",
"compose_form.placeholder": "О чем Вы думаете?",
- "compose_form.privacy_disclaimer": "Ваш приватный статус будет доставлен упомянутым пользователям на доменах {domains}. Доверяете ли вы {domainsCount, plural, one {этому серверу} other {этим серверам}}? Приватность постов работает только на узлах Mastodon. Если {domains} {domainsCount, plural, one {не является узлом Mastodon} other {не являются узлами Mastodon}}, приватность поста не будет указана, и он может оказаться продвинут или иным образом показан не обозначенным Вами пользователям.",
"compose_form.publish": "Трубить",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Отметить как чувствительный контент",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Занятия",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Флаги",
"emoji_button.food": "Еда и напитки",
"emoji_button.label": "Вставить эмодзи",
"emoji_button.nature": "Природа",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Предметы",
"emoji_button.people": "Люди",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Найти...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Символы",
"emoji_button.travel": "Путешествия",
"empty_column.community": "Локальная лента пуста. Напишите что-нибудь, чтобы разогреть народ!",
diff --git a/app/javascript/mastodon/locales/th.json b/app/javascript/mastodon/locales/th.json
index f2752f5e0e4dd..ecc7a00db75ae 100644
--- a/app/javascript/mastodon/locales/th.json
+++ b/app/javascript/mastodon/locales/th.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Your account is not {locked}. Anyone can follow you to view your follower-only posts.",
"compose_form.lock_disclaimer.lock": "locked",
"compose_form.placeholder": "What is on your mind?",
- "compose_form.privacy_disclaimer": "Your post will be delivered to mentioned users on {domains}. Do you trust {domainsCount, plural, one {that server} other {those servers}}? Post privacy only works on Mastodon instances. If {domains} {domainsCount, plural, one {is not a Mastodon instance} other {are not Mastodon instances}}, there will be no indication that your post is not a public post, and it may be boosted or otherwise made visible to unintended recipients.",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Mark media as sensitive",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Activity",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Flags",
"emoji_button.food": "Food & Drink",
"emoji_button.label": "Insert emoji",
"emoji_button.nature": "Nature",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Objects",
"emoji_button.people": "People",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Search...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Symbols",
"emoji_button.travel": "Travel & Places",
"empty_column.community": "The local timeline is empty. Write something publicly to get the ball rolling!",
diff --git a/app/javascript/mastodon/locales/tr.json b/app/javascript/mastodon/locales/tr.json
index 2676b851cd737..b7ecd2cdb40ae 100644
--- a/app/javascript/mastodon/locales/tr.json
+++ b/app/javascript/mastodon/locales/tr.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Hesabınız {locked} değil. Sadece takipçilerle paylaştığınız gönderileri görebilmek için sizi herhangi bir kullanıcı takip edebilir.",
"compose_form.lock_disclaimer.lock": "kilitli",
"compose_form.placeholder": "Ne düşünüyorsun?",
- "compose_form.privacy_disclaimer": "Gönderiniz {domains}’teki bahsettiğiniz kullanıcılara iletilecektir.{domainsCount, plural, one {bu sunucuya} other {bu sunuculara}} güveniyor musunuz? Gönderi gizliliği sadece Mastodon sunucularında çalışır. Eğer {domains} {domainsCount, plural, one {bir Mastodon sunucusu değilse} other {Mastodon sunucuları değilse}}, gönderinizin herkese açık bir gönderi olmadığına ilişkin bir gösterge bulunmayacaktır. Bu yüzden gönderiniz boost edilebilir veya istenmeyen alıcılara görünebilir.",
"compose_form.publish": "Toot",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Görseli hassas olarak işaretle",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Aktivite",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Bayraklar",
"emoji_button.food": "Yiyecek ve İçecek",
"emoji_button.label": "Emoji ekle",
"emoji_button.nature": "Doğa",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Nesneler",
"emoji_button.people": "İnsanlar",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Emoji ara...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Semboller",
"emoji_button.travel": "Seyahat ve Yerler",
"empty_column.community": "Yerel zaman tüneliniz boş. Daha fazla eğlence için herkese açık bir gönderi paylaşın.",
diff --git a/app/javascript/mastodon/locales/uk.json b/app/javascript/mastodon/locales/uk.json
index 6b5ab64efcf17..45b2c2ee01068 100644
--- a/app/javascript/mastodon/locales/uk.json
+++ b/app/javascript/mastodon/locales/uk.json
@@ -47,7 +47,6 @@
"compose_form.lock_disclaimer": "Ваш акаунт не {locked}. Кожен може підписатися на Вас та бачити Ваші приватні пости.",
"compose_form.lock_disclaimer.lock": "приватний",
"compose_form.placeholder": "Що у Вас на думці?",
- "compose_form.privacy_disclaimer": "Ваш приватний допис буде доставлено до згаданих користувачів на доменах {domains}. Ви довіряєте {domainsCount, plural, one {цьому серверу} other {цим серверам}}? Приватність постів працює тільки на інстанціях Mastodon. Якщо {domains} {domainsCount, plural, one {не є інстанцією Mastodon} other {не є інстанціями Mastodon}}, приватність поста не буде активована, та він може бути передмухнутий або іншим чином показаний не позначеним Вами користувачам.",
"compose_form.publish": "Дмухнути",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "Відмітити як непристойний зміст",
@@ -67,13 +66,17 @@
"embed.instructions": "Embed this status on your website by copying the code below.",
"embed.preview": "Here is what it will look like:",
"emoji_button.activity": "Заняття",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "Прапори",
"emoji_button.food": "Їжа та напої",
"emoji_button.label": "Вставити емодзі",
"emoji_button.nature": "Природа",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "Предмети",
"emoji_button.people": "Люди",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "Знайти...",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "Символи",
"emoji_button.travel": "Подорожі",
"empty_column.community": "Локальна стрічка пуста. Напишіть щось, щоб розігріти народ!",
diff --git a/app/javascript/mastodon/locales/zh-CN.json b/app/javascript/mastodon/locales/zh-CN.json
index 6037e7581a683..58e3d67803385 100644
--- a/app/javascript/mastodon/locales/zh-CN.json
+++ b/app/javascript/mastodon/locales/zh-CN.json
@@ -33,21 +33,20 @@
"column.home": "主页",
"column.mutes": "被静音的用户",
"column.notifications": "通知",
- "column.pins": "Pinned toot",
+ "column.pins": "置顶嘟文",
"column.public": "跨站公共时间轴",
"column_back_button.label": "返回",
"column_header.hide_settings": "隐藏设置",
"column_header.moveLeft_settings": "将栏左移",
"column_header.moveRight_settings": "将栏右移",
- "column_header.pin": "置顶",
+ "column_header.pin": "固定",
"column_header.show_settings": "显示设置",
- "column_header.unpin": "撤顶",
+ "column_header.unpin": "取下",
"column_subheading.navigation": "导航",
"column_subheading.settings": "设置",
"compose_form.lock_disclaimer": "你的帐户没 {locked}. 任何人可以通过关注你来查看只有关注者可见的嘟文.",
"compose_form.lock_disclaimer.lock": "被保护",
"compose_form.placeholder": "在想啥?",
- "compose_form.privacy_disclaimer": "你的私人嘟文,将被发送至你所提及的 {domains} 用户。你是否信任{domainsCount, plural, one {这个网站} other {这些网站}}?请留意,嘟文隐私设置只适用于各 Mastodon 服务器实例,如果 {domains} {domainsCount, plural, one {不是 Mastodon 服务器实例} other {之中有些不是 Mastodon 服务器实例}},对方将无法收到这篇嘟文的隐私设置,然后可能被转嘟给不能预知的用户阅读。",
"compose_form.publish": "嘟嘟",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "将媒体文件标示为“敏感内容”",
@@ -67,13 +66,17 @@
"embed.instructions": "要内嵌此嘟文,请将以下代码贴进你的网站。",
"embed.preview": "到时大概长这样:",
"emoji_button.activity": "活动",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "旗帜",
"emoji_button.food": "食物和饮料",
"emoji_button.label": "加入表情符号",
"emoji_button.nature": "自然",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "物体",
"emoji_button.people": "人物",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "搜索…",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "符号",
"emoji_button.travel": "旅途和地点",
"empty_column.community": "本站时间轴暂时未有内容,快嘟几个来抢头香啊!",
@@ -196,9 +199,9 @@
"upload_form.undo": "还原",
"upload_progress.label": "上传中……",
"video.close": "关闭影片",
- "video.exit_fullscreen": "退出全荧幕",
+ "video.exit_fullscreen": "退出全屏",
"video.expand": "展开影片",
- "video.fullscreen": "全荧幕",
+ "video.fullscreen": "全屏",
"video.hide": "隐藏影片",
"video.mute": "静音",
"video.pause": "暂停",
diff --git a/app/javascript/mastodon/locales/zh-HK.json b/app/javascript/mastodon/locales/zh-HK.json
index 66d32fb7e95e9..610aa6dafa0f8 100644
--- a/app/javascript/mastodon/locales/zh-HK.json
+++ b/app/javascript/mastodon/locales/zh-HK.json
@@ -33,21 +33,20 @@
"column.home": "主頁",
"column.mutes": "靜音名單",
"column.notifications": "通知",
- "column.pins": "Pinned toot",
+ "column.pins": "置頂文章",
"column.public": "跨站時間軸",
"column_back_button.label": "返回",
"column_header.hide_settings": "隱藏設定",
"column_header.moveLeft_settings": "將欄左移",
"column_header.moveRight_settings": "將欄右移",
- "column_header.pin": "置頂",
+ "column_header.pin": "固定",
"column_header.show_settings": "顯示設定",
- "column_header.unpin": "撤頂",
+ "column_header.unpin": "取下",
"column_subheading.navigation": "瀏覽",
"column_subheading.settings": "設定",
"compose_form.lock_disclaimer": "你的用戶狀態為「{locked}」,任何人都能立即關注你,然後看到「只有關注者能看」的文章。",
"compose_form.lock_disclaimer.lock": "公共",
"compose_form.placeholder": "你在想甚麼?",
- "compose_form.privacy_disclaimer": "你的私人文章,將被遞送至 {domains}。你是否信任{domainsCount, plural, one {這個網站} other {這些網站}}?請留意,文章私隱設定只適用於 Mastodon 服務站,如果 {domains} {domainsCount, plural, one {不是 Mastodon 服務站} other {之中有些不是 Mastodon 服務站}},對方將可無視文章的私隱設定,轉推文章給其他用戶閱讀。",
"compose_form.publish": "發文",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "將媒體檔案標示為「敏感內容」",
@@ -67,13 +66,17 @@
"embed.instructions": "要內嵌此文章,請將以下代碼貼進你的網站。",
"embed.preview": "看上去會是這樣:",
"emoji_button.activity": "活動",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "旗幟",
"emoji_button.food": "飲飲食食",
"emoji_button.label": "加入表情符號",
"emoji_button.nature": "自然",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "物品",
"emoji_button.people": "人物",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "搜尋…",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊景物",
"empty_column.community": "本站時間軸暫時未有內容,快文章來搶頭香啊!",
diff --git a/app/javascript/mastodon/locales/zh-TW.json b/app/javascript/mastodon/locales/zh-TW.json
index b3cc6add7581b..ad2f1a05ab73d 100644
--- a/app/javascript/mastodon/locales/zh-TW.json
+++ b/app/javascript/mastodon/locales/zh-TW.json
@@ -39,15 +39,14 @@
"column_header.hide_settings": "隱藏設定",
"column_header.moveLeft_settings": "將欄左移",
"column_header.moveRight_settings": "將欄右移",
- "column_header.pin": "置頂",
+ "column_header.pin": "固定",
"column_header.show_settings": "顯示設定",
- "column_header.unpin": "撤頂",
+ "column_header.unpin": "取下",
"column_subheading.navigation": "瀏覽",
"column_subheading.settings": "設定",
"compose_form.lock_disclaimer": "你的帳號沒有{locked}。任何人都可以關注你,看到發給關注者的貼文。",
"compose_form.lock_disclaimer.lock": "上鎖",
"compose_form.placeholder": "在想些什麼?",
- "compose_form.privacy_disclaimer": "你的貼文會被傳到 {domains} 上被提到的使用者。你信任 {domainsCount, plural, one {這個伺服器} other {這些伺服器}}嗎?貼文的隱私設定只會在 Mastodon 副本上生效。如果 {domains} {domainsCount, plural, one {不是一個 Mastodon 副本} other {都不是 Mastodon 副本}},就不會被標記為非公開貼文,而且可能會被轉推或是讓不預期的人看見。",
"compose_form.publish": "貼掉",
"compose_form.publish_loud": "{publish}!",
"compose_form.sensitive": "將此媒體標為敏感",
@@ -67,13 +66,17 @@
"embed.instructions": "要內嵌此貼文,請將以下代碼貼進你的網站。",
"embed.preview": "看上去會變成這樣:",
"emoji_button.activity": "活動",
+ "emoji_button.custom": "Custom",
"emoji_button.flags": "旗幟",
"emoji_button.food": "食物與飲料",
"emoji_button.label": "插入表情符號",
"emoji_button.nature": "自然",
+ "emoji_button.not_found": "No emojos!! (╯°□°)╯︵ ┻━┻",
"emoji_button.objects": "物件",
"emoji_button.people": "人",
+ "emoji_button.recent": "Frequently used",
"emoji_button.search": "搜尋…",
+ "emoji_button.search_results": "Search results",
"emoji_button.symbols": "符號",
"emoji_button.travel": "旅遊與地點",
"empty_column.community": "本地時間軸是空的。公開寫點什麼吧!",
diff --git a/app/javascript/mastodon/reducers/accounts.js b/app/javascript/mastodon/reducers/accounts.js
index 6442d13bef9da..5391a93ae0c9b 100644
--- a/app/javascript/mastodon/reducers/accounts.js
+++ b/app/javascript/mastodon/reducers/accounts.js
@@ -110,7 +110,7 @@ export default function accounts(state = initialState, action) {
case BLOCKS_EXPAND_SUCCESS:
case MUTES_FETCH_SUCCESS:
case MUTES_EXPAND_SUCCESS:
- return normalizeAccounts(state, action.accounts);
+ return action.accounts ? normalizeAccounts(state, action.accounts) : state;
case NOTIFICATIONS_REFRESH_SUCCESS:
case NOTIFICATIONS_EXPAND_SUCCESS:
case SEARCH_FETCH_SUCCESS:
diff --git a/app/javascript/mastodon/reducers/accounts_counters.js b/app/javascript/mastodon/reducers/accounts_counters.js
index 4423e1b50e745..1ed0fe3e39f69 100644
--- a/app/javascript/mastodon/reducers/accounts_counters.js
+++ b/app/javascript/mastodon/reducers/accounts_counters.js
@@ -106,7 +106,7 @@ export default function accountsCounters(state = initialState, action) {
case BLOCKS_EXPAND_SUCCESS:
case MUTES_FETCH_SUCCESS:
case MUTES_EXPAND_SUCCESS:
- return normalizeAccounts(state, action.accounts);
+ return action.accounts ? normalizeAccounts(state, action.accounts) : state;
case NOTIFICATIONS_REFRESH_SUCCESS:
case NOTIFICATIONS_EXPAND_SUCCESS:
case SEARCH_FETCH_SUCCESS:
diff --git a/app/javascript/mastodon/reducers/compose.js b/app/javascript/mastodon/reducers/compose.js
index e7a3567b49907..5756a393f4ecc 100644
--- a/app/javascript/mastodon/reducers/compose.js
+++ b/app/javascript/mastodon/reducers/compose.js
@@ -128,7 +128,7 @@ const insertSuggestion = (state, position, token, completion) => {
};
const insertEmoji = (state, position, emojiData) => {
- const emoji = emojiData.unicode.split('-').map(code => String.fromCodePoint(parseInt(code, 16))).join('');
+ const emoji = emojiData.native;
return state.withMutations(map => {
map.update('text', oldText => `${oldText.slice(0, position)}${emoji} ${oldText.slice(position)}`);
@@ -262,7 +262,7 @@ export default function compose(state = initialState, action) {
case COMPOSE_SUGGESTIONS_CLEAR:
return state.update('suggestions', ImmutableList(), list => list.clear()).set('suggestion_token', null);
case COMPOSE_SUGGESTIONS_READY:
- return state.set('suggestions', ImmutableList(action.accounts.map(item => item.id))).set('suggestion_token', action.token);
+ return state.set('suggestions', ImmutableList(action.accounts ? action.accounts.map(item => item.id) : action.emojis)).set('suggestion_token', action.token);
case COMPOSE_SUGGESTION_SELECT:
return insertSuggestion(state, action.position, action.token, action.completion);
case TIMELINE_DELETE:
diff --git a/app/javascript/mastodon/reducers/custom_emojis.js b/app/javascript/mastodon/reducers/custom_emojis.js
new file mode 100644
index 0000000000000..d80c0d156a974
--- /dev/null
+++ b/app/javascript/mastodon/reducers/custom_emojis.js
@@ -0,0 +1,16 @@
+import { List as ImmutableList } from 'immutable';
+import { STORE_HYDRATE } from '../actions/store';
+import { emojiIndex } from 'emoji-mart';
+import { buildCustomEmojis } from '../emoji';
+
+const initialState = ImmutableList();
+
+export default function custom_emojis(state = initialState, action) {
+ switch(action.type) {
+ case STORE_HYDRATE:
+ emojiIndex.search('', { custom: buildCustomEmojis(action.state.get('custom_emojis', [])) });
+ return action.state.get('custom_emojis');
+ default:
+ return state;
+ }
+};
diff --git a/app/javascript/mastodon/reducers/index.js b/app/javascript/mastodon/reducers/index.js
index 444a208458da8..593d0efa4a1e7 100644
--- a/app/javascript/mastodon/reducers/index.js
+++ b/app/javascript/mastodon/reducers/index.js
@@ -22,6 +22,7 @@ import search from './search';
import media_attachments from './media_attachments';
import notifications from './notifications';
import height_cache from './height_cache';
+import custom_emojis from './custom_emojis';
const reducers = {
timelines,
@@ -47,6 +48,7 @@ const reducers = {
media_attachments,
notifications,
height_cache,
+ custom_emojis,
};
export default combineReducers(reducers);
diff --git a/app/javascript/styles/about.scss b/app/javascript/styles/about.scss
index 343de15900ccf..2adcb5ba2d908 100644
--- a/app/javascript/styles/about.scss
+++ b/app/javascript/styles/about.scss
@@ -124,6 +124,7 @@
box-sizing: border-box;
max-width: 800px;
margin: 0 auto;
+ word-wrap: break-word;
}
.header-wrapper {
diff --git a/app/javascript/styles/application.scss b/app/javascript/styles/application.scss
index 33c7783f3e29b..e35937be133d4 100644
--- a/app/javascript/styles/application.scss
+++ b/app/javascript/styles/application.scss
@@ -13,6 +13,7 @@
@import 'accounts';
@import 'stream_entries';
@import 'components';
+@import 'emoji_picker';
@import 'about';
@import 'tables';
@import 'admin';
diff --git a/app/javascript/styles/basics.scss b/app/javascript/styles/basics.scss
index c5f98750cdd9f..96f0023c3d8ae 100644
--- a/app/javascript/styles/basics.scss
+++ b/app/javascript/styles/basics.scss
@@ -62,6 +62,26 @@ body {
height: 100%;
padding: 0;
}
+
+ &.error {
+ text-align: center;
+ color: $ui-primary-color;
+ padding: 20px;
+
+ .dialog img {
+ display: block;
+ margin: 0 auto;
+ max-width: 470px;
+ width: 100%;
+ height: auto;
+ }
+
+ .dialog h1 {
+ font-size: 20px;
+ line-height: 28px;
+ font-weight: 400;
+ }
+ }
}
button {
diff --git a/app/javascript/styles/compact_header.scss b/app/javascript/styles/compact_header.scss
index cf12fcfec36b8..90d98cc8c5e0d 100644
--- a/app/javascript/styles/compact_header.scss
+++ b/app/javascript/styles/compact_header.scss
@@ -6,7 +6,7 @@
font-weight: 500;
margin-bottom: 20px;
padding: 0 10px;
- overflow-wrap: break-word;
+ word-wrap: break-word;
@media screen and (max-width: 740px) {
text-align: center;
diff --git a/app/javascript/styles/components.scss b/app/javascript/styles/components.scss
index a6e5946a75847..2f02af0981339 100644
--- a/app/javascript/styles/components.scss
+++ b/app/javascript/styles/components.scss
@@ -222,12 +222,16 @@
}
}
+.dropdown-menu {
+ position: absolute;
+}
+
.dropdown--active .icon-button {
color: $ui-highlight-color;
}
.dropdown--active::after {
- @media screen and (min-width: 1025px) {
+ @media screen and (min-width: 631px) {
content: "";
display: block;
position: absolute;
@@ -395,17 +399,11 @@
.compose-form__autosuggest-wrapper {
position: relative;
- .emoji-picker__dropdown {
+ .emoji-picker-dropdown {
position: absolute;
right: 5px;
top: 5px;
- &.dropdown--active::after {
- border-color: transparent transparent $base-border-color;
- bottom: -1px;
- right: 8px;
- }
-
::-webkit-scrollbar-track:hover,
::-webkit-scrollbar-track:active {
background-color: rgba($base-overlay-background, 0.3);
@@ -444,6 +442,7 @@
display: inline-block;
font-size: inherit;
vertical-align: middle;
+ object-fit: contain;
margin: -.2ex .15em .2ex;
width: 16px;
height: 16px;
@@ -809,8 +808,8 @@
.status__action-bar-dropdown {
float: left;
- height: 18px;
- width: 18px;
+ height: 23.15px;
+ width: 23.15px;
// Dropdown style override for centering on the icon
.dropdown--active {
@@ -836,26 +835,6 @@
align-items: center;
justify-content: center;
position: relative;
-
- .dropdown {
- display: block;
- width: 18px;
- height: 18px;
- }
-
- .dropdown--active {
- .dropdown__content.dropdown__left {
- left: 20px;
- right: initial;
- }
-
- &::after {
- bottom: initial;
- margin-left: 7px;
- margin-top: -7px;
- right: initial;
- }
- }
}
.detailed-status {
@@ -1131,7 +1110,7 @@
}
.account__action-bar-dropdown {
- flex: 1 1 auto;
+ flex: 0 1 calc(50% - 140px);
padding: 10px;
.dropdown--active {
@@ -1158,7 +1137,7 @@
.account__action-bar__tab {
text-decoration: none;
overflow: hidden;
- width: 80px;
+ flex: 0 1 80px;
border-left: 1px solid lighten($ui-base-color, 8%);
padding: 10px 5px;
@@ -1445,10 +1424,80 @@
position: absolute;
}
-.dropdown__sep {
+.dropdown-menu__separator {
border-bottom: 1px solid darken($ui-secondary-color, 8%);
margin: 5px 7px 6px;
- padding-top: 1px;
+ height: 0;
+}
+
+.dropdown-menu {
+ background: $ui-secondary-color;
+ padding: 4px 0;
+ border-radius: 4px;
+ box-shadow: 0 0 15px rgba($base-shadow-color, 0.4);
+
+ ul {
+ list-style: none;
+ }
+}
+
+.dropdown-menu__arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border: 0 solid transparent;
+
+ &.left {
+ right: -5px;
+ margin-top: -5px;
+ border-width: 5px 0 5px 5px;
+ border-left-color: $ui-secondary-color;
+ }
+
+ &.top {
+ bottom: -5px;
+ margin-left: -13px;
+ border-width: 5px 7px 0;
+ border-top-color: $ui-secondary-color;
+ }
+
+ &.bottom {
+ top: -5px;
+ margin-left: -13px;
+ border-width: 0 7px 5px;
+ border-bottom-color: $ui-secondary-color;
+ }
+
+ &.right {
+ left: -5px;
+ margin-top: -5px;
+ border-width: 5px 5px 5px 0;
+ border-right-color: $ui-secondary-color;
+ }
+}
+
+.dropdown-menu__item {
+ a {
+ font-size: 13px;
+ line-height: 18px;
+ display: block;
+ padding: 4px 14px;
+ box-sizing: border-box;
+ text-decoration: none;
+ background: $ui-secondary-color;
+ color: $ui-base-color;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+
+ &:focus,
+ &:hover,
+ &:active {
+ background: $ui-highlight-color;
+ color: $ui-secondary-color;
+ outline: 0;
+ }
+ }
}
.dropdown--active .dropdown__content {
@@ -1633,7 +1682,7 @@
}
:root { // Overrides .wide stylings for mobile view
- @include single-column('screen and (max-width: 1024px)', $parent: null) {
+ @include single-column('screen and (max-width: 630px)', $parent: null) {
.column,
.drawer {
flex: auto;
@@ -1654,7 +1703,7 @@
}
}
-@include multi-columns('screen and (min-width: 1025px)', $parent: null) {
+@include multi-columns('screen and (min-width: 631px)', $parent: null) {
.columns-area {
padding: 0;
}
@@ -1766,7 +1815,7 @@
&:hover,
&:focus,
&:active {
- @include multi-columns('screen and (min-width: 1025px)') {
+ @include multi-columns('screen and (min-width: 631px)') {
background: lighten($ui-base-color, 14%);
transition: all 100ms linear;
}
@@ -1786,7 +1835,7 @@
}
}
-@include multi-columns('screen and (min-width: 1025px)', $parent: null) {
+@include multi-columns('screen and (min-width: 631px)', $parent: null) {
.tabs-bar {
display: none;
}
@@ -2043,15 +2092,18 @@
}
.autosuggest-textarea__suggestions {
+ box-sizing: border-box;
display: none;
position: absolute;
top: 100%;
width: 100%;
z-index: 99;
- box-shadow: 0 0 15px rgba($base-shadow-color, 0.4);
+ box-shadow: 4px 4px 6px rgba($base-shadow-color, 0.4);
background: $ui-secondary-color;
+ border-radius: 0 0 4px 4px;
color: $ui-base-color;
font-size: 14px;
+ padding: 6px;
&.autosuggest-textarea__suggestions--visible {
display: block;
@@ -2061,34 +2113,36 @@
.autosuggest-textarea__suggestions__item {
padding: 10px;
cursor: pointer;
+ border-radius: 4px;
- &:hover {
+ &:hover,
+ &:focus,
+ &:active,
+ &.selected {
background: darken($ui-secondary-color, 10%);
}
-
- &.selected {
- background: $ui-highlight-color;
- color: $base-border-color;
- }
}
-.autosuggest-account {
- overflow: hidden;
+.autosuggest-account,
+.autosuggest-emoji {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ justify-content: flex-start;
+ line-height: 18px;
+ font-size: 14px;
}
-.autosuggest-account-icon {
- float: left;
- margin-right: 5px;
+.autosuggest-account-icon,
+.autosuggest-emoji img {
+ display: block;
+ margin-right: 8px;
+ width: 16px;
+ height: 16px;
}
-.autosuggest-status {
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
-
- strong {
- font-weight: 500;
- }
+.autosuggest-account .display-name__account {
+ color: lighten($ui-base-color, 36%);
}
.character-counter__wrapper {
@@ -2837,198 +2891,62 @@ button.icon-button.active i.fa-retweet {
animation-direction: alternate;
}
-.emoji-dialog {
- width: 245px;
- height: 270px;
+.emoji-picker-dropdown__menu {
background: $simple-background-color;
- box-sizing: border-box;
+ position: absolute;
+ box-shadow: 4px 4px 6px rgba($base-shadow-color, 0.4);
border-radius: 4px;
+ margin-top: 5px;
+
+ .emoji-mart-scroll {
+ transition: opacity 200ms ease;
+ }
+
+ &.selecting .emoji-mart-scroll {
+ opacity: 0.5;
+ }
+}
+
+.emoji-picker-dropdown__modifiers {
+ position: absolute;
+ top: 60px;
+ right: 11px;
+ cursor: pointer;
+}
+
+.emoji-picker-dropdown__modifiers__menu {
+ position: absolute;
+ z-index: 4;
+ top: -4px;
+ left: -8px;
+ background: $simple-background-color;
+ border-radius: 4px;
+ box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2);
overflow: hidden;
- position: relative;
- box-shadow: 0 0 8px rgba($base-shadow-color, 0.2);
- .emojione {
- margin: 0;
- width: 100%;
- height: auto;
- }
-
- .emoji-dialog-header {
- padding: 0 10px;
-
- ul {
- padding: 0;
- margin: 0;
- list-style: none;
- }
-
- li {
- display: inline-block;
- box-sizing: border-box;
- padding: 10px 5px;
- cursor: pointer;
- border-bottom: 2px solid transparent;
-
- .emoji {
- width: 18px;
- height: 18px;
- }
-
- img,
- svg {
- width: 18px;
- height: 18px;
- filter: grayscale(100%);
- }
-
- &:hover {
- img,
- svg {
- filter: grayscale(0);
- }
- }
-
- &.active {
- border-bottom-color: $ui-highlight-color;
-
- img,
- svg {
- filter: grayscale(0);
- }
- }
- }
- }
-
- .emoji-row {
- box-sizing: border-box;
- overflow-y: hidden;
- padding-left: 10px;
-
- .emoji {
- display: inline-block;
- padding: 2.5px;
- border-radius: 4px;
- }
- }
-
- .emoji-category-header {
- box-sizing: border-box;
- overflow-y: hidden;
- padding: 10px 8px 10px 16px;
- display: table;
-
- > * {
- display: table-cell;
- vertical-align: middle;
- }
- }
-
- .emoji-category-title {
- font-size: 12px;
- text-transform: uppercase;
- font-weight: 500;
- color: darken($ui-secondary-color, 18%);
- cursor: default;
- }
-
- .emoji-category-heading-decoration {
- text-align: right;
- }
-
- .modifiers {
- list-style: none;
- padding: 0;
- margin: 0;
- vertical-align: middle;
- white-space: nowrap;
- margin-top: 4px;
-
- li {
- display: inline-block;
- padding: 0 2px;
-
- &:last-of-type {
- padding-right: 0;
- }
- }
-
- .modifier {
- display: inline-block;
- border-radius: 10px;
- width: 15px;
- height: 15px;
- position: relative;
- cursor: pointer;
-
- &.active::after {
- content: "";
- display: block;
- position: absolute;
- width: 7px;
- height: 7px;
- border-radius: 10px;
- border: 2px solid $base-border-color;
- top: 2px;
- left: 2px;
- }
- }
- }
-
- .emoji-search-wrapper {
- padding: 10px;
- border-bottom: 1px solid lighten($ui-secondary-color, 4%);
- }
-
- .emoji-search {
- font-size: 14px;
- font-weight: 400;
- padding: 7px 9px;
- font-family: inherit;
+ button {
display: block;
- width: 100%;
- background: rgba($ui-secondary-color, 0.3);
- color: darken($ui-secondary-color, 18%);
- border: 1px solid $ui-secondary-color;
- border-radius: 4px;
- }
-
- .emoji-categories-wrapper {
- position: absolute;
- top: 42px;
- bottom: 0;
- left: 0;
- right: 0;
- }
-
- .emoji-search-wrapper + .emoji-categories-wrapper {
- top: 93px;
- }
-
- .emoji-row .emoji {
- img,
- svg {
- transition: transform 60ms ease-in-out;
- }
-
- &:hover {
- background: lighten($ui-secondary-color, 3%);
-
- img,
- svg {
- transform: translateZ(0) scale(1.2);
- }
- }
- }
-
- .emoji {
- width: 22px;
- height: 22px;
cursor: pointer;
+ border: 0;
+ padding: 4px 8px;
+ background: transparent;
- &:focus {
- outline: 0;
+ &:hover,
+ &:focus,
+ &:active {
+ background: rgba($ui-secondary-color, 0.4);
}
}
+
+ .emoji-mart-emoji {
+ height: 22px;
+ }
+}
+
+.emoji-mart-emoji {
+ span {
+ background-repeat: no-repeat;
+ }
}
.upload-area {
@@ -3314,8 +3232,6 @@ button.icon-button.active i.fa-retweet {
}
.search__input {
- padding-right: 30px;
- color: $ui-secondary-color;
outline: 0;
box-sizing: border-box;
display: block;
@@ -3851,6 +3767,10 @@ button.icon-button.active i.fa-retweet {
padding-top: 10px;
padding-bottom: 10px;
}
+
+ .dropdown-menu__separator {
+ border-bottom-color: $ui-secondary-color;
+ }
}
.boost-modal__container {
@@ -3929,6 +3849,10 @@ button.icon-button.active i.fa-retweet {
max-height: 80vh;
max-width: 80vw;
+ .actions-modal__item-label {
+ font-weight: 500;
+ }
+
ul {
overflow-y: auto;
flex-shrink: 0;
@@ -3941,11 +3865,20 @@ button.icon-button.active i.fa-retweet {
a {
color: $ui-base-color;
display: flex;
- padding: 10px;
+ padding: 12px 16px;
+ font-size: 15px;
align-items: center;
text-decoration: none;
- &.active {
+ &,
+ button {
+ transition: none;
+ }
+
+ &.active,
+ &:hover,
+ &:active,
+ &:focus {
&,
button {
background: $ui-highlight-color;
@@ -4102,6 +4035,12 @@ button.icon-button.active i.fa-retweet {
display: block;
float: left;
position: relative;
+
+ &.standalone {
+ .media-gallery__item-gifv-thumbnail {
+ transform: none;
+ }
+ }
}
.media-gallery__item-thumbnail {
@@ -4109,6 +4048,7 @@ button.icon-button.active i.fa-retweet {
text-decoration: none;
width: 100%;
height: 100%;
+ line-height: 0;
display: flex;
img {
@@ -4417,12 +4357,14 @@ button.icon-button.active i.fa-retweet {
.account-gallery__container {
margin: -2px;
padding: 4px;
+ display: flex;
+ flex-wrap: wrap;
}
.account-gallery__item {
- float: left;
- width: 96px;
- height: 96px;
+ flex: 1 1 auto;
+ width: calc(100% / 3 - 4px);
+ height: 95px;
margin: 2px;
a {
@@ -4433,6 +4375,14 @@ button.icon-button.active i.fa-retweet {
background-size: cover;
background-position: center;
position: relative;
+ color: inherit;
+ text-decoration: none;
+
+ &:hover,
+ &:active,
+ &:focus {
+ outline: 0;
+ }
}
}
@@ -4502,7 +4452,7 @@ noscript {
100% { opacity: 1; }
}
-@media screen and (max-width: 1024px) and (max-height: 400px) {
+@media screen and (max-width: 630px) and (max-height: 400px) {
$duration: 400ms;
$delay: 100ms;
diff --git a/app/javascript/styles/emoji_picker.scss b/app/javascript/styles/emoji_picker.scss
new file mode 100644
index 0000000000000..2b46d30fce371
--- /dev/null
+++ b/app/javascript/styles/emoji_picker.scss
@@ -0,0 +1,199 @@
+.emoji-mart {
+ &,
+ * {
+ box-sizing: border-box;
+ line-height: 1.15;
+ }
+
+ font-size: 13px;
+ display: inline-block;
+ color: $ui-base-color;
+
+ .emoji-mart-emoji {
+ padding: 6px;
+ }
+}
+
+.emoji-mart-bar {
+ border: 0 solid darken($ui-secondary-color, 8%);
+
+ &:first-child {
+ border-bottom-width: 1px;
+ border-top-left-radius: 5px;
+ border-top-right-radius: 5px;
+ background: $ui-secondary-color;
+ }
+
+ &:last-child {
+ border-top-width: 1px;
+ border-bottom-left-radius: 5px;
+ border-bottom-right-radius: 5px;
+ display: none;
+ }
+}
+
+.emoji-mart-anchors {
+ display: flex;
+ justify-content: space-between;
+ padding: 0 6px;
+ color: $ui-primary-color;
+ line-height: 0;
+}
+
+.emoji-mart-anchor {
+ position: relative;
+ flex: 1;
+ text-align: center;
+ padding: 12px 4px;
+ overflow: hidden;
+ transition: color .1s ease-out;
+ cursor: pointer;
+
+ &:hover {
+ color: darken($ui-primary-color, 4%);
+ }
+}
+
+.emoji-mart-anchor-selected {
+ color: darken($ui-highlight-color, 3%);
+
+ &:hover {
+ color: darken($ui-highlight-color, 3%);
+ }
+
+ .emoji-mart-anchor-bar {
+ bottom: 0;
+ }
+}
+
+.emoji-mart-anchor-bar {
+ position: absolute;
+ bottom: -3px;
+ left: 0;
+ width: 100%;
+ height: 3px;
+ background-color: darken($ui-highlight-color, 3%);
+}
+
+.emoji-mart-anchors {
+ i {
+ display: inline-block;
+ width: 100%;
+ max-width: 22px;
+ }
+
+ svg {
+ fill: currentColor;
+ max-height: 18px;
+ }
+}
+
+.emoji-mart-scroll {
+ overflow-y: scroll;
+ height: 270px;
+ max-height: 35vh;
+ padding: 0 6px 6px;
+ background: $simple-background-color;
+ will-change: transform;
+}
+
+.emoji-mart-search {
+ padding: 10px;
+ padding-right: 45px;
+ background: $simple-background-color;
+
+ input {
+ font-size: 14px;
+ font-weight: 400;
+ padding: 7px 9px;
+ font-family: inherit;
+ display: block;
+ width: 100%;
+ background: rgba($ui-secondary-color, 0.3);
+ color: $ui-primary-color;
+ border: 1px solid $ui-secondary-color;
+ border-radius: 4px;
+
+ &::-moz-focus-inner {
+ border: 0;
+ }
+
+ &::-moz-focus-inner,
+ &:focus,
+ &:active {
+ outline: 0 !important;
+ }
+ }
+}
+
+.emoji-mart-category .emoji-mart-emoji {
+ cursor: pointer;
+
+ span {
+ z-index: 1;
+ position: relative;
+ text-align: center;
+ }
+
+ &:hover::before {
+ z-index: 0;
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba($ui-secondary-color, 0.7);
+ border-radius: 100%;
+ }
+}
+
+.emoji-mart-category-label {
+ z-index: 2;
+ position: relative;
+ position: -webkit-sticky;
+ position: sticky;
+ top: 0;
+
+ span {
+ display: block;
+ width: 100%;
+ font-weight: 500;
+ padding: 5px 6px;
+ background: $simple-background-color;
+ }
+}
+
+.emoji-mart-emoji {
+ position: relative;
+ display: inline-block;
+ font-size: 0;
+
+ span {
+ width: 22px;
+ height: 22px;
+ }
+}
+
+.emoji-mart-no-results {
+ font-size: 14px;
+ text-align: center;
+ padding-top: 70px;
+ color: $ui-primary-color;
+
+ .emoji-mart-category-label {
+ display: none;
+ }
+
+ .emoji-mart-no-results-label {
+ margin-top: .2em;
+ }
+
+ .emoji-mart-emoji:hover::before {
+ content: none;
+ }
+}
+
+.emoji-mart-preview {
+ display: none;
+}
diff --git a/app/javascript/styles/rtl.scss b/app/javascript/styles/rtl.scss
index 6c003d69ad9fe..0fdeccd9c3152 100644
--- a/app/javascript/styles/rtl.scss
+++ b/app/javascript/styles/rtl.scss
@@ -245,7 +245,7 @@ body.rtl {
margin-left: 30px;
}
- @media screen and (min-width: 1025px) {
+ @media screen and (min-width: 631px) {
.column,
.drawer {
padding-left: 5px;
diff --git a/app/lib/activitypub/activity/announce.rb b/app/lib/activitypub/activity/announce.rb
index 556f91235614d..4516454e18ce6 100644
--- a/app/lib/activitypub/activity/announce.rb
+++ b/app/lib/activitypub/activity/announce.rb
@@ -25,6 +25,8 @@ class ActivityPub::Activity::Announce < ActivityPub::Activity
def fetch_remote_original_status
if object_uri.start_with?('http')
+ return if ActivityPub::TagManager.instance.local_uri?(object_uri)
+
ActivityPub::FetchRemoteStatusService.new.call(object_uri)
elsif @object['url'].present?
::FetchRemoteStatusService.new.call(@object['url'])
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index 41f2b0bad783f..4e19b3096447f 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -68,6 +68,8 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end
def process_hashtag(tag, status)
+ return if tag['name'].blank?
+
hashtag = tag['name'].gsub(/\A#/, '').mb_chars.downcase
hashtag = Tag.where(name: hashtag).first_or_initialize(name: hashtag)
@@ -75,6 +77,8 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end
def process_mention(tag, status)
+ return if tag['href'].blank?
+
account = account_from_uri(tag['href'])
account = FetchRemoteAccountService.new.call(tag['href']) if account.nil?
return if account.nil?
@@ -82,6 +86,8 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
end
def process_emoji(tag, _status)
+ return if tag['name'].blank? || tag['href'].blank?
+
shortcode = tag['name'].delete(':')
emoji = CustomEmoji.find_by(shortcode: shortcode, domain: @account.domain)
@@ -96,7 +102,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
return unless @object['attachment'].is_a?(Array)
@object['attachment'].each do |attachment|
- next if unsupported_media_type?(attachment['mediaType'])
+ next if unsupported_media_type?(attachment['mediaType']) || attachment['url'].blank?
href = Addressable::URI.parse(attachment['url']).normalize.to_s
media_attachment = MediaAttachment.create(status: status, account: status.account, remote_url: href)
@@ -106,6 +112,8 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
media_attachment.file_remote_url = href
media_attachment.save
end
+ rescue Addressable::URI::InvalidURIError => e
+ Rails.logger.debug e
end
def resolve_thread(status)
@@ -115,8 +123,8 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
def conversation_from_uri(uri)
return nil if uri.nil?
- return Conversation.find_by(id: TagManager.instance.unique_tag_to_local_id(uri, 'Conversation')) if TagManager.instance.local_id?(uri)
- Conversation.find_by(uri: uri) || Conversation.create!(uri: uri)
+ return Conversation.find_by(id: OStatus::TagManager.instance.unique_tag_to_local_id(uri, 'Conversation')) if OStatus::TagManager.instance.local_id?(uri)
+ Conversation.find_by(uri: uri) || Conversation.create(uri: uri)
end
def visibility_from_audience
diff --git a/app/lib/activitypub/tag_manager.rb b/app/lib/activitypub/tag_manager.rb
index 1b4e271db5617..4ec3b8c56ec23 100644
--- a/app/lib/activitypub/tag_manager.rb
+++ b/app/lib/activitypub/tag_manager.rb
@@ -98,8 +98,8 @@ class ActivityPub::TagManager
else
StatusFinder.new(uri).status
end
- elsif ::TagManager.instance.local_id?(uri)
- klass.find_by(id: ::TagManager.instance.unique_tag_to_local_id(uri, klass.to_s))
+ elsif OStatus::TagManager.instance.local_id?(uri)
+ klass.find_by(id: OStatus::TagManager.instance.unique_tag_to_local_id(uri, klass.to_s))
else
klass.find_by(uri: uri.split('#').first)
end
diff --git a/app/lib/emoji.rb b/app/lib/emoji.rb
deleted file mode 100644
index 45b7f53deca52..0000000000000
--- a/app/lib/emoji.rb
+++ /dev/null
@@ -1,40 +0,0 @@
-# frozen_string_literal: true
-
-require 'singleton'
-
-class Emoji
- include Singleton
-
- def initialize
- data = Oj.load(File.open(Rails.root.join('lib', 'assets', 'emoji.json')))
-
- @map = {}
-
- data.each do |_, emoji|
- keys = [emoji['shortname']] + emoji['aliases']
- unicode = codepoint_to_unicode(emoji['unicode'])
-
- keys.each do |key|
- @map[key] = unicode
- end
- end
- end
-
- def unicode(shortcode)
- @map[shortcode]
- end
-
- def names
- @map.keys
- end
-
- private
-
- def codepoint_to_unicode(codepoint)
- if codepoint.include?('-')
- codepoint.split('-').map(&:hex).pack('U*')
- else
- [codepoint.hex].pack('U')
- end
- end
-end
diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb
index 29fea27de7b8a..42cd7299034b6 100644
--- a/app/lib/formatter.rb
+++ b/app/lib/formatter.rb
@@ -22,7 +22,7 @@ class Formatter
unless status.local?
html = reformat(raw_content)
html = encode_custom_emojis(html, status.emojis) if options[:custom_emojify]
- return html
+ return html.html_safe # rubocop:disable Rails/OutputSafety
end
linkable_accounts = status.mentions.map(&:account)
@@ -39,7 +39,7 @@ class Formatter
end
def reformat(html)
- sanitize(html, Sanitize::Config::MASTODON_STRICT).html_safe # rubocop:disable Rails/OutputSafety
+ sanitize(html, Sanitize::Config::MASTODON_STRICT)
end
def plaintext(status)
@@ -63,6 +63,12 @@ class Formatter
Sanitize.fragment(html, config)
end
+ def format_spoiler(status)
+ html = encode(status.spoiler_text)
+ html = encode_custom_emojis(html, status.emojis)
+ html.html_safe # rubocop:disable Rails/OutputSafety
+ end
+
private
def encode(html)
diff --git a/app/lib/ostatus/activity/base.rb b/app/lib/ostatus/activity/base.rb
index 1dc7abee3f39b..0393813979727 100644
--- a/app/lib/ostatus/activity/base.rb
+++ b/app/lib/ostatus/activity/base.rb
@@ -11,30 +11,30 @@ class OStatus::Activity::Base
end
def verb
- raw = @xml.at_xpath('./activity:verb', activity: TagManager::AS_XMLNS).content
- TagManager::VERBS.key(raw)
+ raw = @xml.at_xpath('./activity:verb', activity: OStatus::TagManager::AS_XMLNS).content
+ OStatus::TagManager::VERBS.key(raw)
rescue
:post
end
def type
- raw = @xml.at_xpath('./activity:object-type', activity: TagManager::AS_XMLNS).content
- TagManager::TYPES.key(raw)
+ raw = @xml.at_xpath('./activity:object-type', activity: OStatus::TagManager::AS_XMLNS).content
+ OStatus::TagManager::TYPES.key(raw)
rescue
:activity
end
def id
- @xml.at_xpath('./xmlns:id', xmlns: TagManager::XMLNS).content
+ @xml.at_xpath('./xmlns:id', xmlns: OStatus::TagManager::XMLNS).content
end
def url
- link = @xml.xpath('./xmlns:link[@rel="alternate"]', xmlns: TagManager::XMLNS).find { |link_candidate| link_candidate['type'] == 'text/html' }
+ link = @xml.xpath('./xmlns:link[@rel="alternate"]', xmlns: OStatus::TagManager::XMLNS).find { |link_candidate| link_candidate['type'] == 'text/html' }
link.nil? ? nil : link['href']
end
def activitypub_uri
- link = @xml.xpath('./xmlns:link[@rel="alternate"]', xmlns: TagManager::XMLNS).find { |link_candidate| ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'].include?(link_candidate['type']) }
+ link = @xml.xpath('./xmlns:link[@rel="alternate"]', xmlns: OStatus::TagManager::XMLNS).find { |link_candidate| ['application/activity+json', 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"'].include?(link_candidate['type']) }
link.nil? ? nil : link['href']
end
@@ -45,8 +45,8 @@ class OStatus::Activity::Base
private
def find_status(uri)
- if TagManager.instance.local_id?(uri)
- local_id = TagManager.instance.unique_tag_to_local_id(uri, 'Status')
+ if OStatus::TagManager.instance.local_id?(uri)
+ local_id = OStatus::TagManager.instance.unique_tag_to_local_id(uri, 'Status')
return Status.find_by(id: local_id)
elsif ActivityPub::TagManager.instance.local_uri?(uri)
local_id = ActivityPub::TagManager.instance.uri_to_local_id(uri)
diff --git a/app/lib/ostatus/activity/creation.rb b/app/lib/ostatus/activity/creation.rb
index d3f1629c457ed..2687776f9407d 100644
--- a/app/lib/ostatus/activity/creation.rb
+++ b/app/lib/ostatus/activity/creation.rb
@@ -14,14 +14,22 @@ class OStatus::Activity::Creation < OStatus::Activity::Base
return result if result.first.present?
end
+ RedisLock.acquire(lock_options) do |lock|
+ if lock.acquired?
+ # Return early if status already exists in db
+ @status = find_status(id)
+ return [@status, false] unless @status.nil?
+ @status = process_status
+ end
+ end
+
+ [@status, true]
+ end
+
+ def process_status
Rails.logger.debug "Creating remote status #{id}"
-
- # Return early if status already exists in db
- status = find_status(id)
-
- return [status, false] unless status.nil?
-
cached_reblog = reblog
+ status = nil
ApplicationRecord.transaction do
status = Status.create!(
@@ -55,7 +63,7 @@ class OStatus::Activity::Creation < OStatus::Activity::Base
LinkCrawlWorker.perform_async(status.id) unless status.spoiler_text?
DistributionWorker.perform_async(status.id)
- [status, true]
+ status
end
def perform_via_activitypub
@@ -63,42 +71,42 @@ class OStatus::Activity::Creation < OStatus::Activity::Base
end
def content
- @xml.at_xpath('./xmlns:content', xmlns: TagManager::XMLNS).content
+ @xml.at_xpath('./xmlns:content', xmlns: OStatus::TagManager::XMLNS).content
end
def content_language
- @xml.at_xpath('./xmlns:content', xmlns: TagManager::XMLNS)['xml:lang']&.presence || 'en'
+ @xml.at_xpath('./xmlns:content', xmlns: OStatus::TagManager::XMLNS)['xml:lang']&.presence || 'en'
end
def content_warning
- @xml.at_xpath('./xmlns:summary', xmlns: TagManager::XMLNS)&.content || ''
+ @xml.at_xpath('./xmlns:summary', xmlns: OStatus::TagManager::XMLNS)&.content || ''
end
def visibility_scope
- @xml.at_xpath('./mastodon:scope', mastodon: TagManager::MTDN_XMLNS)&.content&.to_sym || :public
+ @xml.at_xpath('./mastodon:scope', mastodon: OStatus::TagManager::MTDN_XMLNS)&.content&.to_sym || :public
end
def published
- @xml.at_xpath('./xmlns:published', xmlns: TagManager::XMLNS).content
+ @xml.at_xpath('./xmlns:published', xmlns: OStatus::TagManager::XMLNS).content
end
def thread?
- !@xml.at_xpath('./thr:in-reply-to', thr: TagManager::THR_XMLNS).nil?
+ !@xml.at_xpath('./thr:in-reply-to', thr: OStatus::TagManager::THR_XMLNS).nil?
end
def thread
- thr = @xml.at_xpath('./thr:in-reply-to', thr: TagManager::THR_XMLNS)
+ thr = @xml.at_xpath('./thr:in-reply-to', thr: OStatus::TagManager::THR_XMLNS)
[thr['ref'], thr['href']]
end
private
def find_or_create_conversation
- uri = @xml.at_xpath('./ostatus:conversation', ostatus: TagManager::OS_XMLNS)&.attribute('ref')&.content
+ uri = @xml.at_xpath('./ostatus:conversation', ostatus: OStatus::TagManager::OS_XMLNS)&.attribute('ref')&.content
return if uri.nil?
- if TagManager.instance.local_id?(uri)
- local_id = TagManager.instance.unique_tag_to_local_id(uri, 'Conversation')
+ if OStatus::TagManager.instance.local_id?(uri)
+ local_id = OStatus::TagManager.instance.unique_tag_to_local_id(uri, 'Conversation')
return Conversation.find_by(id: local_id)
end
@@ -108,8 +116,8 @@ class OStatus::Activity::Creation < OStatus::Activity::Base
def save_mentions(parent)
processed_account_ids = []
- @xml.xpath('./xmlns:link[@rel="mentioned"]', xmlns: TagManager::XMLNS).each do |link|
- next if [TagManager::TYPES[:group], TagManager::TYPES[:collection]].include? link['ostatus:object-type']
+ @xml.xpath('./xmlns:link[@rel="mentioned"]', xmlns: OStatus::TagManager::XMLNS).each do |link|
+ next if [OStatus::TagManager::TYPES[:group], OStatus::TagManager::TYPES[:collection]].include? link['ostatus:object-type']
mentioned_account = account_from_href(link['href'])
@@ -123,14 +131,14 @@ class OStatus::Activity::Creation < OStatus::Activity::Base
end
def save_hashtags(parent)
- tags = @xml.xpath('./xmlns:category', xmlns: TagManager::XMLNS).map { |category| category['term'] }.select(&:present?)
+ tags = @xml.xpath('./xmlns:category', xmlns: OStatus::TagManager::XMLNS).map { |category| category['term'] }.select(&:present?)
ProcessHashtagsService.new.call(parent, tags)
end
def save_media(parent)
do_not_download = DomainBlock.find_by(domain: parent.account.domain)&.reject_media?
- @xml.xpath('./xmlns:link[@rel="enclosure"]', xmlns: TagManager::XMLNS).each do |link|
+ @xml.xpath('./xmlns:link[@rel="enclosure"]', xmlns: OStatus::TagManager::XMLNS).each do |link|
next unless link['href']
media = MediaAttachment.where(status: parent, remote_url: link['href']).first_or_initialize(account: parent.account, status: parent, remote_url: link['href'])
@@ -156,7 +164,7 @@ class OStatus::Activity::Creation < OStatus::Activity::Base
return if do_not_download
- @xml.xpath('./xmlns:link[@rel="emoji"]', xmlns: TagManager::XMLNS).each do |link|
+ @xml.xpath('./xmlns:link[@rel="emoji"]', xmlns: OStatus::TagManager::XMLNS).each do |link|
next unless link['href'] && link['name']
shortcode = link['name'].delete(':')
@@ -179,4 +187,8 @@ class OStatus::Activity::Creation < OStatus::Activity::Base
Account.where(uri: href).or(Account.where(url: href)).first || FetchRemoteAccountService.new.call(href)
end
end
+
+ def lock_options
+ { redis: Redis.current, key: "create:#{id}" }
+ end
end
diff --git a/app/lib/ostatus/activity/share.rb b/app/lib/ostatus/activity/share.rb
index 29000802165cb..5ca6014154ba7 100644
--- a/app/lib/ostatus/activity/share.rb
+++ b/app/lib/ostatus/activity/share.rb
@@ -10,7 +10,7 @@ class OStatus::Activity::Share < OStatus::Activity::Creation
end
def object
- @xml.at_xpath('.//activity:object', activity: TagManager::AS_XMLNS)
+ @xml.at_xpath('.//activity:object', activity: OStatus::TagManager::AS_XMLNS)
end
private
diff --git a/app/lib/ostatus/atom_serializer.rb b/app/lib/ostatus/atom_serializer.rb
index a6a5cb0c45f16..a1ac11a5190be 100644
--- a/app/lib/ostatus/atom_serializer.rb
+++ b/app/lib/ostatus/atom_serializer.rb
@@ -15,10 +15,10 @@ class OStatus::AtomSerializer
def author(account)
author = Ox::Element.new('author')
- uri = TagManager.instance.uri_for(account)
+ uri = OStatus::TagManager.instance.uri_for(account)
append_element(author, 'id', uri)
- append_element(author, 'activity:object-type', TagManager::TYPES[:person])
+ append_element(author, 'activity:object-type', OStatus::TagManager::TYPES[:person])
append_element(author, 'uri', uri)
append_element(author, 'name', account.username)
append_element(author, 'email', account.local? ? account.local_username_and_domain : account.acct)
@@ -65,15 +65,15 @@ class OStatus::AtomSerializer
add_namespaces(entry) if root
- append_element(entry, 'id', TagManager.instance.uri_for(stream_entry.status))
+ append_element(entry, 'id', OStatus::TagManager.instance.uri_for(stream_entry.status))
append_element(entry, 'published', stream_entry.created_at.iso8601)
append_element(entry, 'updated', stream_entry.updated_at.iso8601)
append_element(entry, 'title', stream_entry&.status&.title || "#{stream_entry.account.acct} deleted status")
entry << author(stream_entry.account) if root
- append_element(entry, 'activity:object-type', TagManager::TYPES[stream_entry.object_type])
- append_element(entry, 'activity:verb', TagManager::VERBS[stream_entry.verb])
+ append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[stream_entry.object_type])
+ append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[stream_entry.verb])
entry << object(stream_entry.target) if stream_entry.targeted?
@@ -88,7 +88,7 @@ class OStatus::AtomSerializer
append_element(entry, 'link', nil, rel: :alternate, type: 'text/html', href: TagManager.instance.url_for(stream_entry.status))
append_element(entry, 'link', nil, rel: :self, type: 'application/atom+xml', href: account_stream_entry_url(stream_entry.account, stream_entry, format: 'atom'))
- append_element(entry, 'thr:in-reply-to', nil, ref: TagManager.instance.uri_for(stream_entry.thread), href: TagManager.instance.url_for(stream_entry.thread)) if stream_entry.threaded?
+ append_element(entry, 'thr:in-reply-to', nil, ref: OStatus::TagManager.instance.uri_for(stream_entry.thread), href: TagManager.instance.url_for(stream_entry.thread)) if stream_entry.threaded?
append_element(entry, 'ostatus:conversation', nil, ref: conversation_uri(stream_entry.status.conversation)) unless stream_entry&.status&.conversation_id.nil?
entry
@@ -97,20 +97,20 @@ class OStatus::AtomSerializer
def object(status)
object = Ox::Element.new('activity:object')
- append_element(object, 'id', TagManager.instance.uri_for(status))
+ append_element(object, 'id', OStatus::TagManager.instance.uri_for(status))
append_element(object, 'published', status.created_at.iso8601)
append_element(object, 'updated', status.updated_at.iso8601)
append_element(object, 'title', status.title)
object << author(status.account)
- append_element(object, 'activity:object-type', TagManager::TYPES[status.object_type])
- append_element(object, 'activity:verb', TagManager::VERBS[status.verb])
+ append_element(object, 'activity:object-type', OStatus::TagManager::TYPES[status.object_type])
+ append_element(object, 'activity:verb', OStatus::TagManager::VERBS[status.verb])
serialize_status_attributes(object, status)
append_element(object, 'link', nil, rel: :alternate, type: 'text/html', href: TagManager.instance.url_for(status))
- append_element(object, 'thr:in-reply-to', nil, ref: TagManager.instance.uri_for(status.thread), href: TagManager.instance.url_for(status.thread)) unless status.thread.nil?
+ append_element(object, 'thr:in-reply-to', nil, ref: OStatus::TagManager.instance.uri_for(status.thread), href: TagManager.instance.url_for(status.thread)) unless status.thread.nil?
append_element(object, 'ostatus:conversation', nil, ref: conversation_uri(status.conversation)) unless status.conversation_id.nil?
object
@@ -122,14 +122,14 @@ class OStatus::AtomSerializer
description = "#{follow.account.acct} started following #{follow.target_account.acct}"
- append_element(entry, 'id', TagManager.instance.unique_tag(follow.created_at, follow.id, 'Follow'))
+ append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(follow.created_at, follow.id, 'Follow'))
append_element(entry, 'title', description)
append_element(entry, 'content', description, type: :html)
entry << author(follow.account)
- append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
- append_element(entry, 'activity:verb', TagManager::VERBS[:follow])
+ append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
+ append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:follow])
object = author(follow.target_account)
object.value = 'activity:object'
@@ -142,13 +142,13 @@ class OStatus::AtomSerializer
entry = Ox::Element.new('entry')
add_namespaces(entry)
- append_element(entry, 'id', TagManager.instance.unique_tag(follow_request.created_at, follow_request.id, 'FollowRequest'))
+ append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(follow_request.created_at, follow_request.id, 'FollowRequest'))
append_element(entry, 'title', "#{follow_request.account.acct} requested to follow #{follow_request.target_account.acct}")
entry << author(follow_request.account)
- append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
- append_element(entry, 'activity:verb', TagManager::VERBS[:request_friend])
+ append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
+ append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:request_friend])
object = author(follow_request.target_account)
object.value = 'activity:object'
@@ -161,19 +161,19 @@ class OStatus::AtomSerializer
entry = Ox::Element.new('entry')
add_namespaces(entry)
- append_element(entry, 'id', TagManager.instance.unique_tag(Time.now.utc, follow_request.id, 'FollowRequest'))
+ append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(Time.now.utc, follow_request.id, 'FollowRequest'))
append_element(entry, 'title', "#{follow_request.target_account.acct} authorizes follow request by #{follow_request.account.acct}")
entry << author(follow_request.target_account)
- append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
- append_element(entry, 'activity:verb', TagManager::VERBS[:authorize])
+ append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
+ append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:authorize])
object = Ox::Element.new('activity:object')
object << author(follow_request.account)
- append_element(object, 'activity:object-type', TagManager::TYPES[:activity])
- append_element(object, 'activity:verb', TagManager::VERBS[:request_friend])
+ append_element(object, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
+ append_element(object, 'activity:verb', OStatus::TagManager::VERBS[:request_friend])
inner_object = author(follow_request.target_account)
inner_object.value = 'activity:object'
@@ -187,19 +187,19 @@ class OStatus::AtomSerializer
entry = Ox::Element.new('entry')
add_namespaces(entry)
- append_element(entry, 'id', TagManager.instance.unique_tag(Time.now.utc, follow_request.id, 'FollowRequest'))
+ append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(Time.now.utc, follow_request.id, 'FollowRequest'))
append_element(entry, 'title', "#{follow_request.target_account.acct} rejects follow request by #{follow_request.account.acct}")
entry << author(follow_request.target_account)
- append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
- append_element(entry, 'activity:verb', TagManager::VERBS[:reject])
+ append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
+ append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:reject])
object = Ox::Element.new('activity:object')
object << author(follow_request.account)
- append_element(object, 'activity:object-type', TagManager::TYPES[:activity])
- append_element(object, 'activity:verb', TagManager::VERBS[:request_friend])
+ append_element(object, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
+ append_element(object, 'activity:verb', OStatus::TagManager::VERBS[:request_friend])
inner_object = author(follow_request.target_account)
inner_object.value = 'activity:object'
@@ -215,14 +215,14 @@ class OStatus::AtomSerializer
description = "#{follow.account.acct} is no longer following #{follow.target_account.acct}"
- append_element(entry, 'id', TagManager.instance.unique_tag(Time.now.utc, follow.id, 'Follow'))
+ append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(Time.now.utc, follow.id, 'Follow'))
append_element(entry, 'title', description)
append_element(entry, 'content', description, type: :html)
entry << author(follow.account)
- append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
- append_element(entry, 'activity:verb', TagManager::VERBS[:unfollow])
+ append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
+ append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:unfollow])
object = author(follow.target_account)
object.value = 'activity:object'
@@ -237,13 +237,13 @@ class OStatus::AtomSerializer
description = "#{block.account.acct} no longer wishes to interact with #{block.target_account.acct}"
- append_element(entry, 'id', TagManager.instance.unique_tag(Time.now.utc, block.id, 'Block'))
+ append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(Time.now.utc, block.id, 'Block'))
append_element(entry, 'title', description)
entry << author(block.account)
- append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
- append_element(entry, 'activity:verb', TagManager::VERBS[:block])
+ append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
+ append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:block])
object = author(block.target_account)
object.value = 'activity:object'
@@ -258,13 +258,13 @@ class OStatus::AtomSerializer
description = "#{block.account.acct} no longer blocks #{block.target_account.acct}"
- append_element(entry, 'id', TagManager.instance.unique_tag(Time.now.utc, block.id, 'Block'))
+ append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(Time.now.utc, block.id, 'Block'))
append_element(entry, 'title', description)
entry << author(block.account)
- append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
- append_element(entry, 'activity:verb', TagManager::VERBS[:unblock])
+ append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
+ append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:unblock])
object = author(block.target_account)
object.value = 'activity:object'
@@ -279,18 +279,18 @@ class OStatus::AtomSerializer
description = "#{favourite.account.acct} favourited a status by #{favourite.status.account.acct}"
- append_element(entry, 'id', TagManager.instance.unique_tag(favourite.created_at, favourite.id, 'Favourite'))
+ append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(favourite.created_at, favourite.id, 'Favourite'))
append_element(entry, 'title', description)
append_element(entry, 'content', description, type: :html)
entry << author(favourite.account)
- append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
- append_element(entry, 'activity:verb', TagManager::VERBS[:favorite])
+ append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
+ append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:favorite])
entry << object(favourite.status)
- append_element(entry, 'thr:in-reply-to', nil, ref: TagManager.instance.uri_for(favourite.status), href: TagManager.instance.url_for(favourite.status))
+ append_element(entry, 'thr:in-reply-to', nil, ref: OStatus::TagManager.instance.uri_for(favourite.status), href: TagManager.instance.url_for(favourite.status))
entry
end
@@ -301,18 +301,18 @@ class OStatus::AtomSerializer
description = "#{favourite.account.acct} no longer favourites a status by #{favourite.status.account.acct}"
- append_element(entry, 'id', TagManager.instance.unique_tag(Time.now.utc, favourite.id, 'Favourite'))
+ append_element(entry, 'id', OStatus::TagManager.instance.unique_tag(Time.now.utc, favourite.id, 'Favourite'))
append_element(entry, 'title', description)
append_element(entry, 'content', description, type: :html)
entry << author(favourite.account)
- append_element(entry, 'activity:object-type', TagManager::TYPES[:activity])
- append_element(entry, 'activity:verb', TagManager::VERBS[:unfavorite])
+ append_element(entry, 'activity:object-type', OStatus::TagManager::TYPES[:activity])
+ append_element(entry, 'activity:verb', OStatus::TagManager::VERBS[:unfavorite])
entry << object(favourite.status)
- append_element(entry, 'thr:in-reply-to', nil, ref: TagManager.instance.uri_for(favourite.status), href: TagManager.instance.url_for(favourite.status))
+ append_element(entry, 'thr:in-reply-to', nil, ref: OStatus::TagManager.instance.uri_for(favourite.status), href: TagManager.instance.url_for(favourite.status))
entry
end
@@ -332,17 +332,17 @@ class OStatus::AtomSerializer
def conversation_uri(conversation)
return conversation.uri if conversation.uri?
- TagManager.instance.unique_tag(conversation.created_at, conversation.id, 'Conversation')
+ OStatus::TagManager.instance.unique_tag(conversation.created_at, conversation.id, 'Conversation')
end
def add_namespaces(parent)
- parent['xmlns'] = TagManager::XMLNS
- parent['xmlns:thr'] = TagManager::THR_XMLNS
- parent['xmlns:activity'] = TagManager::AS_XMLNS
- parent['xmlns:poco'] = TagManager::POCO_XMLNS
- parent['xmlns:media'] = TagManager::MEDIA_XMLNS
- parent['xmlns:ostatus'] = TagManager::OS_XMLNS
- parent['xmlns:mastodon'] = TagManager::MTDN_XMLNS
+ parent['xmlns'] = OStatus::TagManager::XMLNS
+ parent['xmlns:thr'] = OStatus::TagManager::THR_XMLNS
+ parent['xmlns:activity'] = OStatus::TagManager::AS_XMLNS
+ parent['xmlns:poco'] = OStatus::TagManager::POCO_XMLNS
+ parent['xmlns:media'] = OStatus::TagManager::MEDIA_XMLNS
+ parent['xmlns:ostatus'] = OStatus::TagManager::OS_XMLNS
+ parent['xmlns:mastodon'] = OStatus::TagManager::MTDN_XMLNS
end
def serialize_status_attributes(entry, status)
@@ -352,10 +352,10 @@ class OStatus::AtomSerializer
append_element(entry, 'content', Formatter.instance.format(status).to_str, type: 'html', 'xml:lang': status.language)
status.mentions.each do |mentioned|
- append_element(entry, 'link', nil, rel: :mentioned, 'ostatus:object-type': TagManager::TYPES[:person], href: TagManager.instance.uri_for(mentioned.account))
+ append_element(entry, 'link', nil, rel: :mentioned, 'ostatus:object-type': OStatus::TagManager::TYPES[:person], href: OStatus::TagManager.instance.uri_for(mentioned.account))
end
- append_element(entry, 'link', nil, rel: :mentioned, 'ostatus:object-type': TagManager::TYPES[:collection], href: TagManager::COLLECTIONS[:public]) if status.public_visibility?
+ append_element(entry, 'link', nil, rel: :mentioned, 'ostatus:object-type': OStatus::TagManager::TYPES[:collection], href: OStatus::TagManager::COLLECTIONS[:public]) if status.public_visibility?
status.tags.each do |tag|
append_element(entry, 'category', nil, term: tag.name)
diff --git a/app/lib/ostatus/tag_manager.rb b/app/lib/ostatus/tag_manager.rb
new file mode 100644
index 0000000000000..4f45013126bda
--- /dev/null
+++ b/app/lib/ostatus/tag_manager.rb
@@ -0,0 +1,73 @@
+# frozen_string_literal: true
+
+class OStatus::TagManager
+ include Singleton
+ include RoutingHelper
+
+ VERBS = {
+ post: 'http://activitystrea.ms/schema/1.0/post',
+ share: 'http://activitystrea.ms/schema/1.0/share',
+ favorite: 'http://activitystrea.ms/schema/1.0/favorite',
+ unfavorite: 'http://activitystrea.ms/schema/1.0/unfavorite',
+ delete: 'http://activitystrea.ms/schema/1.0/delete',
+ follow: 'http://activitystrea.ms/schema/1.0/follow',
+ request_friend: 'http://activitystrea.ms/schema/1.0/request-friend',
+ authorize: 'http://activitystrea.ms/schema/1.0/authorize',
+ reject: 'http://activitystrea.ms/schema/1.0/reject',
+ unfollow: 'http://ostatus.org/schema/1.0/unfollow',
+ block: 'http://mastodon.social/schema/1.0/block',
+ unblock: 'http://mastodon.social/schema/1.0/unblock',
+ }.freeze
+
+ TYPES = {
+ activity: 'http://activitystrea.ms/schema/1.0/activity',
+ note: 'http://activitystrea.ms/schema/1.0/note',
+ comment: 'http://activitystrea.ms/schema/1.0/comment',
+ person: 'http://activitystrea.ms/schema/1.0/person',
+ collection: 'http://activitystrea.ms/schema/1.0/collection',
+ group: 'http://activitystrea.ms/schema/1.0/group',
+ }.freeze
+
+ COLLECTIONS = {
+ public: 'http://activityschema.org/collection/public',
+ }.freeze
+
+ XMLNS = 'http://www.w3.org/2005/Atom'
+ MEDIA_XMLNS = 'http://purl.org/syndication/atommedia'
+ AS_XMLNS = 'http://activitystrea.ms/spec/1.0/'
+ THR_XMLNS = 'http://purl.org/syndication/thread/1.0'
+ POCO_XMLNS = 'http://portablecontacts.net/spec/1.0'
+ DFRN_XMLNS = 'http://purl.org/macgirvin/dfrn/1.0'
+ OS_XMLNS = 'http://ostatus.org/schema/1.0'
+ MTDN_XMLNS = 'http://mastodon.social/schema/1.0'
+
+ def unique_tag(date, id, type)
+ "tag:#{Rails.configuration.x.local_domain},#{date.strftime('%Y-%m-%d')}:objectId=#{id}:objectType=#{type}"
+ end
+
+ def unique_tag_to_local_id(tag, expected_type)
+ return nil unless local_id?(tag)
+
+ if ActivityPub::TagManager.instance.local_uri?(tag)
+ ActivityPub::TagManager.instance.uri_to_local_id(tag)
+ else
+ matches = Regexp.new("objectId=([\\d]+):objectType=#{expected_type}").match(tag)
+ return matches[1] unless matches.nil?
+ end
+ end
+
+ def local_id?(id)
+ id.start_with?("tag:#{Rails.configuration.x.local_domain}") || ActivityPub::TagManager.instance.local_uri?(id)
+ end
+
+ def uri_for(target)
+ return target.uri if target.respond_to?(:local?) && !target.local?
+
+ case target.object_type
+ when :person
+ account_url(target)
+ when :note, :comment, :activity
+ target.uri || unique_tag(target.created_at, target.id, 'Status')
+ end
+ end
+end
diff --git a/app/lib/tag_manager.rb b/app/lib/tag_manager.rb
index 1d0a24e42ee7e..fb364cb98aea3 100644
--- a/app/lib/tag_manager.rb
+++ b/app/lib/tag_manager.rb
@@ -6,62 +6,6 @@ class TagManager
include Singleton
include RoutingHelper
- VERBS = {
- post: 'http://activitystrea.ms/schema/1.0/post',
- share: 'http://activitystrea.ms/schema/1.0/share',
- favorite: 'http://activitystrea.ms/schema/1.0/favorite',
- unfavorite: 'http://activitystrea.ms/schema/1.0/unfavorite',
- delete: 'http://activitystrea.ms/schema/1.0/delete',
- follow: 'http://activitystrea.ms/schema/1.0/follow',
- request_friend: 'http://activitystrea.ms/schema/1.0/request-friend',
- authorize: 'http://activitystrea.ms/schema/1.0/authorize',
- reject: 'http://activitystrea.ms/schema/1.0/reject',
- unfollow: 'http://ostatus.org/schema/1.0/unfollow',
- block: 'http://mastodon.social/schema/1.0/block',
- unblock: 'http://mastodon.social/schema/1.0/unblock',
- }.freeze
-
- TYPES = {
- activity: 'http://activitystrea.ms/schema/1.0/activity',
- note: 'http://activitystrea.ms/schema/1.0/note',
- comment: 'http://activitystrea.ms/schema/1.0/comment',
- person: 'http://activitystrea.ms/schema/1.0/person',
- collection: 'http://activitystrea.ms/schema/1.0/collection',
- group: 'http://activitystrea.ms/schema/1.0/group',
- }.freeze
-
- COLLECTIONS = {
- public: 'http://activityschema.org/collection/public',
- }.freeze
-
- XMLNS = 'http://www.w3.org/2005/Atom'
- MEDIA_XMLNS = 'http://purl.org/syndication/atommedia'
- AS_XMLNS = 'http://activitystrea.ms/spec/1.0/'
- THR_XMLNS = 'http://purl.org/syndication/thread/1.0'
- POCO_XMLNS = 'http://portablecontacts.net/spec/1.0'
- DFRN_XMLNS = 'http://purl.org/macgirvin/dfrn/1.0'
- OS_XMLNS = 'http://ostatus.org/schema/1.0'
- MTDN_XMLNS = 'http://mastodon.social/schema/1.0'
-
- def unique_tag(date, id, type)
- "tag:#{Rails.configuration.x.local_domain},#{date.strftime('%Y-%m-%d')}:objectId=#{id}:objectType=#{type}"
- end
-
- def unique_tag_to_local_id(tag, expected_type)
- return nil unless local_id?(tag)
-
- if ActivityPub::TagManager.instance.local_uri?(tag)
- ActivityPub::TagManager.instance.uri_to_local_id(tag)
- else
- matches = Regexp.new("objectId=([\\d]+):objectType=#{expected_type}").match(tag)
- return matches[1] unless matches.nil?
- end
- end
-
- def local_id?(id)
- id.start_with?("tag:#{Rails.configuration.x.local_domain}") || ActivityPub::TagManager.instance.local_uri?(id)
- end
-
def web_domain?(domain)
domain.nil? || domain.gsub(/[\/]/, '').casecmp(Rails.configuration.x.web_domain).zero?
end
@@ -90,17 +34,6 @@ class TagManager
TagManager.instance.web_domain?(domain)
end
- def uri_for(target)
- return target.uri if target.respond_to?(:local?) && !target.local?
-
- case target.object_type
- when :person
- account_url(target)
- when :note, :comment, :activity
- target.uri || unique_tag(target.created_at, target.id, 'Status')
- end
- end
-
def url_for(target)
return target.url if target.respond_to?(:local?) && !target.local?
diff --git a/app/mailers/notification_mailer.rb b/app/mailers/notification_mailer.rb
index 12b92bf45158b..80c9d8ccfaec0 100644
--- a/app/mailers/notification_mailer.rb
+++ b/app/mailers/notification_mailer.rb
@@ -8,6 +8,7 @@ class NotificationMailer < ApplicationMailer
@status = notification.target_status
locale_for_account(@me) do
+ thread_by_conversation(@status.conversation)
mail to: @me.user.email, subject: I18n.t('notification_mailer.mention.subject', name: @status.account.acct)
end
end
@@ -27,6 +28,7 @@ class NotificationMailer < ApplicationMailer
@status = notification.target_status
locale_for_account(@me) do
+ thread_by_conversation(@status.conversation)
mail to: @me.user.email, subject: I18n.t('notification_mailer.favourite.subject', name: @account.acct)
end
end
@@ -37,6 +39,7 @@ class NotificationMailer < ApplicationMailer
@status = notification.target_status
locale_for_account(@me) do
+ thread_by_conversation(@status.conversation)
mail to: @me.user.email, subject: I18n.t('notification_mailer.reblog.subject', name: @account.acct)
end
end
@@ -67,4 +70,13 @@ class NotificationMailer < ApplicationMailer
)
end
end
+
+ private
+
+ def thread_by_conversation(conversation)
+ return if conversation.nil?
+ msg_id = ""
+ headers['In-Reply-To'] = msg_id
+ headers['References'] = msg_id
+ end
end
diff --git a/app/models/account.rb b/app/models/account.rb
index 1b996e3cc8edf..de7998db43a7c 100644
--- a/app/models/account.rb
+++ b/app/models/account.rb
@@ -52,7 +52,6 @@ class Account < ApplicationRecord
include AccountInteractions
include Attachmentable
include Remotable
- include EmojiHelper
MAX_NOTE_LENGTH = 500
@@ -271,9 +270,6 @@ class Account < ApplicationRecord
def prepare_contents
display_name&.strip!
note&.strip!
-
- self.display_name = emojify(display_name)
- self.note = emojify(note)
end
def generate_keys
diff --git a/app/models/custom_emoji.rb b/app/models/custom_emoji.rb
index f4d3b16a031d4..e80c581553c8b 100644
--- a/app/models/custom_emoji.rb
+++ b/app/models/custom_emoji.rb
@@ -26,12 +26,18 @@ class CustomEmoji < ApplicationRecord
validates_attachment :image, content_type: { content_type: 'image/png' }, presence: true, size: { in: 0..50.kilobytes }
validates :shortcode, uniqueness: { scope: :domain }, format: { with: /\A#{SHORTCODE_RE_FRAGMENT}\z/ }, length: { minimum: 2 }
+ scope :local, -> { where(domain: nil) }
+
include Remotable
class << self
def from_text(text, domain)
return [] if text.blank?
- shortcodes = text.scan(SCAN_RE).map(&:first)
+
+ shortcodes = text.scan(SCAN_RE).map(&:first).uniq
+
+ return [] if shortcodes.empty?
+
where(shortcode: shortcodes, domain: domain)
end
end
diff --git a/app/models/media_attachment.rb b/app/models/media_attachment.rb
index d913e7372a73f..e4a974f9683df 100644
--- a/app/models/media_attachment.rb
+++ b/app/models/media_attachment.rb
@@ -25,6 +25,9 @@ class MediaAttachment < ApplicationRecord
enum type: [:image, :gifv, :video, :unknown]
+ IMAGE_FILE_EXTENSIONS = ['.jpg', '.jpeg', '.png', '.gif'].freeze
+ VIDEO_FILE_EXTENSIONS = ['.webm', '.mp4', '.m4v'].freeze
+
IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze
VIDEO_MIME_TYPES = ['video/webm', 'video/mp4'].freeze
diff --git a/app/models/preview_card.rb b/app/models/preview_card.rb
index b7efac354a64f..e2bf65d947766 100644
--- a/app/models/preview_card.rb
+++ b/app/models/preview_card.rb
@@ -32,7 +32,7 @@ class PreviewCard < ApplicationRecord
has_and_belongs_to_many :statuses
- has_attached_file :image, styles: { original: '280x120>' }, convert_options: { all: '-quality 80 -strip' }
+ has_attached_file :image, styles: { original: '280x280>' }, convert_options: { all: '-quality 80 -strip' }
include Attachmentable
include Remotable
diff --git a/app/models/remote_profile.rb b/app/models/remote_profile.rb
index 93c7599309839..613911c572cac 100644
--- a/app/models/remote_profile.rb
+++ b/app/models/remote_profile.rb
@@ -10,11 +10,11 @@ class RemoteProfile
end
def root
- @root ||= document.at_xpath('/atom:feed|/atom:entry', atom: TagManager::XMLNS)
+ @root ||= document.at_xpath('/atom:feed|/atom:entry', atom: OStatus::TagManager::XMLNS)
end
def author
- @author ||= root.at_xpath('./atom:author|./dfrn:owner', atom: TagManager::XMLNS, dfrn: TagManager::DFRN_XMLNS)
+ @author ||= root.at_xpath('./atom:author|./dfrn:owner', atom: OStatus::TagManager::XMLNS, dfrn: OStatus::TagManager::DFRN_XMLNS)
end
def hub_link
@@ -22,15 +22,15 @@ class RemoteProfile
end
def display_name
- @display_name ||= author.at_xpath('./poco:displayName', poco: TagManager::POCO_XMLNS)&.content
+ @display_name ||= author.at_xpath('./poco:displayName', poco: OStatus::TagManager::POCO_XMLNS)&.content
end
def note
- @note ||= author.at_xpath('./atom:summary|./poco:note', atom: TagManager::XMLNS, poco: TagManager::POCO_XMLNS)&.content
+ @note ||= author.at_xpath('./atom:summary|./poco:note', atom: OStatus::TagManager::XMLNS, poco: OStatus::TagManager::POCO_XMLNS)&.content
end
def scope
- @scope ||= author.at_xpath('./mastodon:scope', mastodon: TagManager::MTDN_XMLNS)&.content
+ @scope ||= author.at_xpath('./mastodon:scope', mastodon: OStatus::TagManager::MTDN_XMLNS)&.content
end
def avatar
@@ -48,6 +48,6 @@ class RemoteProfile
private
def link_href_from_xml(xml, type)
- xml.at_xpath(%(./atom:link[@rel="#{type}"]/@href), atom: TagManager::XMLNS)&.content
+ xml.at_xpath(%(./atom:link[@rel="#{type}"]/@href), atom: OStatus::TagManager::XMLNS)&.content
end
end
diff --git a/app/models/status.rb b/app/models/status.rb
index 326d128d6dbba..ea4c097bfca8a 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -30,7 +30,6 @@ class Status < ApplicationRecord
include Streamable
include Cacheable
include StatusThreadingConcern
- include EmojiHelper
enum visibility: [:public, :unlisted, :private, :direct], _suffix: :visibility
@@ -132,7 +131,7 @@ class Status < ApplicationRecord
end
def emojis
- CustomEmoji.from_text(text, account.domain)
+ CustomEmoji.from_text([spoiler_text, text].join(' '), account.domain)
end
after_create :store_uri, if: :local?
@@ -146,7 +145,7 @@ class Status < ApplicationRecord
class << self
def not_in_filtered_languages(account)
- where.not(language: account.filtered_languages)
+ where(language: nil).or where.not(language: account.filtered_languages)
end
def as_home_timeline(account)
@@ -267,9 +266,6 @@ class Status < ApplicationRecord
def prepare_contents
text&.strip!
spoiler_text&.strip!
-
- self.text = emojify(text)
- self.spoiler_text = emojify(spoiler_text)
end
def set_reblog
diff --git a/app/presenters/activitypub/collection_presenter.rb b/app/presenters/activitypub/collection_presenter.rb
index 631d87cd03c38..39657276f7896 100644
--- a/app/presenters/activitypub/collection_presenter.rb
+++ b/app/presenters/activitypub/collection_presenter.rb
@@ -1,5 +1,5 @@
# frozen_string_literal: true
class ActivityPub::CollectionPresenter < ActiveModelSerializers::Model
- attributes :id, :type, :size, :items
+ attributes :id, :type, :size, :items, :part_of, :first, :next, :prev
end
diff --git a/app/presenters/status_relationships_presenter.rb b/app/presenters/status_relationships_presenter.rb
index 10b44950487dd..bc3887a446b07 100644
--- a/app/presenters/status_relationships_presenter.rb
+++ b/app/presenters/status_relationships_presenter.rb
@@ -11,7 +11,7 @@ class StatusRelationshipsPresenter
@pins_map = {}
else
statuses = statuses.compact
- status_ids = statuses.flat_map { |s| [s.id, s.reblog_of_id] }.uniq
+ status_ids = statuses.flat_map { |s| [s.id, s.reblog_of_id] }.uniq.compact
conversation_ids = statuses.map(&:conversation_id).compact.uniq
pinnable_status_ids = statuses.map(&:proper).select { |s| s.account_id == current_account_id && %w(public unlisted).include?(s.visibility) }.map(&:id)
diff --git a/app/serializers/activitypub/collection_serializer.rb b/app/serializers/activitypub/collection_serializer.rb
index d01dead289e5f..9832133fc0c59 100644
--- a/app/serializers/activitypub/collection_serializer.rb
+++ b/app/serializers/activitypub/collection_serializer.rb
@@ -3,23 +3,38 @@
class ActivityPub::CollectionSerializer < ActiveModel::Serializer
def self.serializer_for(model, options)
return ActivityPub::ActivitySerializer if model.class.name == 'Status'
+ return ActivityPub::CollectionSerializer if model.class.name == 'ActivityPub::CollectionPresenter'
super
end
attributes :id, :type, :total_items
+ attribute :next, if: -> { object.next.present? }
+ attribute :prev, if: -> { object.prev.present? }
+ attribute :part_of, if: -> { object.part_of.present? }
- has_many :items, key: :ordered_items
+ has_one :first, if: -> { object.first.present? }
+ has_many :items, key: :items, if: -> { (object.items.present? || page?) && !ordered? }
+ has_many :items, key: :ordered_items, if: -> { (object.items.present? || page?) && ordered? }
def type
- case object.type
- when :ordered
- 'OrderedCollection'
+ if page?
+ ordered? ? 'OrderedCollectionPage' : 'CollectionPage'
else
- 'Collection'
+ ordered? ? 'OrderedCollection' : 'Collection'
end
end
def total_items
object.size
end
+
+ private
+
+ def ordered?
+ object.type == :ordered
+ end
+
+ def page?
+ object.part_of.present?
+ end
end
diff --git a/app/serializers/activitypub/delete_serializer.rb b/app/serializers/activitypub/delete_serializer.rb
index 87a43b95dc2f4..2bb65135f7c5c 100644
--- a/app/serializers/activitypub/delete_serializer.rb
+++ b/app/serializers/activitypub/delete_serializer.rb
@@ -13,7 +13,7 @@ class ActivityPub::DeleteSerializer < ActiveModel::Serializer
end
def atom_uri
- ::TagManager.instance.uri_for(object)
+ OStatus::TagManager.instance.uri_for(object)
end
end
diff --git a/app/serializers/activitypub/note_serializer.rb b/app/serializers/activitypub/note_serializer.rb
index e5d8e3f0304ce..f94c3b9dc0682 100644
--- a/app/serializers/activitypub/note_serializer.rb
+++ b/app/serializers/activitypub/note_serializer.rb
@@ -63,13 +63,13 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
def atom_uri
return unless object.local?
- ::TagManager.instance.uri_for(object)
+ OStatus::TagManager.instance.uri_for(object)
end
def in_reply_to_atom_uri
return unless object.reply? && !object.thread.nil?
- ::TagManager.instance.uri_for(object.thread)
+ OStatus::TagManager.instance.uri_for(object.thread)
end
def conversation
@@ -78,7 +78,7 @@ class ActivityPub::NoteSerializer < ActiveModel::Serializer
if object.conversation.uri?
object.conversation.uri
else
- TagManager.instance.unique_tag(object.conversation.created_at, object.conversation.id, 'Conversation')
+ OStatus::TagManager.instance.unique_tag(object.conversation.created_at, object.conversation.id, 'Conversation')
end
end
diff --git a/app/serializers/initial_state_serializer.rb b/app/serializers/initial_state_serializer.rb
index 32ffcc6880feb..e2f15a60100b5 100644
--- a/app/serializers/initial_state_serializer.rb
+++ b/app/serializers/initial_state_serializer.rb
@@ -4,17 +4,23 @@ class InitialStateSerializer < ActiveModel::Serializer
attributes :meta, :compose, :accounts,
:media_attachments, :settings, :push_subscription
+ has_many :custom_emojis, serializer: REST::CustomEmojiSerializer
+
+ def custom_emojis
+ CustomEmoji.local
+ end
+
def meta
store = {
streaming_api_base_url: Rails.configuration.x.streaming_api_base_url,
access_token: object.token,
locale: I18n.locale,
domain: Rails.configuration.x.local_domain,
- admin: object.admin&.id,
+ admin: object.admin&.id&.to_s,
}
if object.current_account
- store[:me] = object.current_account.id
+ store[:me] = object.current_account.id.to_s
store[:unfollow_modal] = object.current_account.user.setting_unfollow_modal
store[:boost_modal] = object.current_account.user.setting_boost_modal
store[:delete_modal] = object.current_account.user.setting_delete_modal
@@ -28,7 +34,7 @@ class InitialStateSerializer < ActiveModel::Serializer
store = {}
if object.current_account
- store[:me] = object.current_account.id
+ store[:me] = object.current_account.id.to_s
store[:default_privacy] = object.current_account.user.setting_default_privacy
store[:default_sensitive] = object.current_account.user.setting_default_sensitive
end
@@ -40,12 +46,12 @@ class InitialStateSerializer < ActiveModel::Serializer
def accounts
store = {}
- store[object.current_account.id] = ActiveModelSerializers::SerializableResource.new(object.current_account, serializer: REST::AccountSerializer) if object.current_account
- store[object.admin.id] = ActiveModelSerializers::SerializableResource.new(object.admin, serializer: REST::AccountSerializer) if object.admin
+ store[object.current_account.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.current_account, serializer: REST::AccountSerializer) if object.current_account
+ store[object.admin.id.to_s] = ActiveModelSerializers::SerializableResource.new(object.admin, serializer: REST::AccountSerializer) if object.admin
store
end
def media_attachments
- { accept_content_types: MediaAttachment::IMAGE_MIME_TYPES + MediaAttachment::VIDEO_MIME_TYPES }
+ { accept_content_types: MediaAttachment::IMAGE_FILE_EXTENSIONS + MediaAttachment::VIDEO_FILE_EXTENSIONS + MediaAttachment::IMAGE_MIME_TYPES + MediaAttachment::VIDEO_MIME_TYPES }
end
end
diff --git a/app/serializers/rest/account_serializer.rb b/app/serializers/rest/account_serializer.rb
index 012a4fd18aa2d..65fdb0308176c 100644
--- a/app/serializers/rest/account_serializer.rb
+++ b/app/serializers/rest/account_serializer.rb
@@ -7,6 +7,10 @@ class REST::AccountSerializer < ActiveModel::Serializer
:note, :url, :avatar, :avatar_static, :header, :header_static,
:followers_count, :following_count, :statuses_count
+ def id
+ object.id.to_s
+ end
+
def note
Formatter.instance.simplified_format(object)
end
diff --git a/app/serializers/rest/application_serializer.rb b/app/serializers/rest/application_serializer.rb
index 868a62f1e73ab..a8945f66ea5aa 100644
--- a/app/serializers/rest/application_serializer.rb
+++ b/app/serializers/rest/application_serializer.rb
@@ -4,6 +4,10 @@ class REST::ApplicationSerializer < ActiveModel::Serializer
attributes :id, :name, :website, :redirect_uri,
:client_id, :client_secret
+ def id
+ object.id.to_s
+ end
+
def client_id
object.uid
end
diff --git a/app/serializers/rest/custom_emoji_serializer.rb b/app/serializers/rest/custom_emoji_serializer.rb
new file mode 100644
index 0000000000000..b744dd4ec5dbf
--- /dev/null
+++ b/app/serializers/rest/custom_emoji_serializer.rb
@@ -0,0 +1,11 @@
+# frozen_string_literal: true
+
+class REST::CustomEmojiSerializer < ActiveModel::Serializer
+ include RoutingHelper
+
+ attributes :shortcode, :url
+
+ def url
+ full_asset_url(object.image.url)
+ end
+end
diff --git a/app/serializers/rest/media_attachment_serializer.rb b/app/serializers/rest/media_attachment_serializer.rb
index 31189406a1ad4..f6e7c79d1fb84 100644
--- a/app/serializers/rest/media_attachment_serializer.rb
+++ b/app/serializers/rest/media_attachment_serializer.rb
@@ -6,6 +6,10 @@ class REST::MediaAttachmentSerializer < ActiveModel::Serializer
attributes :id, :type, :url, :preview_url,
:remote_url, :text_url, :meta
+ def id
+ object.id.to_s
+ end
+
def url
if object.needs_redownload?
media_proxy_url(object.id, :original)
diff --git a/app/serializers/rest/notification_serializer.rb b/app/serializers/rest/notification_serializer.rb
index f95d099a319ce..541a6b8b5c4c2 100644
--- a/app/serializers/rest/notification_serializer.rb
+++ b/app/serializers/rest/notification_serializer.rb
@@ -6,6 +6,10 @@ class REST::NotificationSerializer < ActiveModel::Serializer
belongs_to :from_account, key: :account, serializer: REST::AccountSerializer
belongs_to :target_status, key: :status, if: :status_type?, serializer: REST::StatusSerializer
+ def id
+ object.id.to_s
+ end
+
def status_type?
[:favourite, :reblog, :mention].include?(object.type)
end
diff --git a/app/serializers/rest/relationship_serializer.rb b/app/serializers/rest/relationship_serializer.rb
index 1d431aa1b660f..998727e37a28f 100644
--- a/app/serializers/rest/relationship_serializer.rb
+++ b/app/serializers/rest/relationship_serializer.rb
@@ -4,6 +4,10 @@ class REST::RelationshipSerializer < ActiveModel::Serializer
attributes :id, :following, :followed_by, :blocking,
:muting, :requested, :domain_blocking
+ def id
+ object.id.to_s
+ end
+
def following
instance_options[:relationships].following[object.id] || false
end
diff --git a/app/serializers/rest/report_serializer.rb b/app/serializers/rest/report_serializer.rb
index 0c6bd65567dc7..ecb88d653facd 100644
--- a/app/serializers/rest/report_serializer.rb
+++ b/app/serializers/rest/report_serializer.rb
@@ -2,4 +2,8 @@
class REST::ReportSerializer < ActiveModel::Serializer
attributes :id, :action_taken
+
+ def id
+ object.id.to_s
+ end
end
diff --git a/app/serializers/rest/status_serializer.rb b/app/serializers/rest/status_serializer.rb
index d8efa8e60b124..e6270f9024b86 100644
--- a/app/serializers/rest/status_serializer.rb
+++ b/app/serializers/rest/status_serializer.rb
@@ -17,14 +17,26 @@ class REST::StatusSerializer < ActiveModel::Serializer
has_many :media_attachments, serializer: REST::MediaAttachmentSerializer
has_many :mentions
has_many :tags
- has_many :emojis
+ has_many :emojis, serializer: REST::CustomEmojiSerializer
+
+ def id
+ object.id.to_s
+ end
+
+ def in_reply_to_id
+ object.in_reply_to_id&.to_s
+ end
+
+ def in_reply_to_account_id
+ object.in_reply_to_account_id&.to_s
+ end
def current_user?
!current_user.nil?
end
def uri
- TagManager.instance.uri_for(object)
+ OStatus::TagManager.instance.uri_for(object)
end
def content
@@ -82,7 +94,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
attributes :id, :username, :url, :acct
def id
- object.account_id
+ object.account_id.to_s
end
def username
@@ -107,14 +119,4 @@ class REST::StatusSerializer < ActiveModel::Serializer
tag_url(object)
end
end
-
- class CustomEmojiSerializer < ActiveModel::Serializer
- include RoutingHelper
-
- attributes :shortcode, :url
-
- def url
- full_asset_url(object.image.url)
- end
- end
end
diff --git a/app/services/activitypub/process_collection_service.rb b/app/services/activitypub/process_collection_service.rb
index 0c6736a3fdd4e..59cb65c65e886 100644
--- a/app/services/activitypub/process_collection_service.rb
+++ b/app/services/activitypub/process_collection_service.rb
@@ -9,7 +9,7 @@ class ActivityPub::ProcessCollectionService < BaseService
return unless supported_context?
return if different_actor? && verify_account!.nil?
- return if @account.suspended?
+ return if @account.suspended? || @account.local?
case @json['type']
when 'Collection', 'CollectionPage'
diff --git a/app/services/batched_remove_status_service.rb b/app/services/batched_remove_status_service.rb
index 86eaa5735fe8d..2fd623922fe3c 100644
--- a/app/services/batched_remove_status_service.rb
+++ b/app/services/batched_remove_status_service.rb
@@ -18,7 +18,7 @@ class BatchedRemoveStatusService < BaseService
@stream_entry_batches = []
@salmon_batches = []
@activity_json_batches = []
- @json_payloads = statuses.map { |s| [s.id, Oj.dump(event: :delete, payload: s.id)] }.to_h
+ @json_payloads = statuses.map { |s| [s.id, Oj.dump(event: :delete, payload: s.id.to_s)] }.to_h
@activity_json = {}
@activity_xml = {}
@@ -84,6 +84,8 @@ class BatchedRemoveStatusService < BaseService
end
def unpush_from_public_timelines(status)
+ return unless status.public_visibility?
+
payload = @json_payloads[status.id]
redis.pipelined do
diff --git a/app/services/concerns/author_extractor.rb b/app/services/concerns/author_extractor.rb
index 867d6dc25974b..c2366188ab22c 100644
--- a/app/services/concerns/author_extractor.rb
+++ b/app/services/concerns/author_extractor.rb
@@ -5,12 +5,12 @@ module AuthorExtractor
return nil if xml.nil?
# Try for acct
- acct = xml.at_xpath('./xmlns:author/xmlns:email', xmlns: TagManager::XMLNS)&.content
+ acct = xml.at_xpath('./xmlns:author/xmlns:email', xmlns: OStatus::TagManager::XMLNS)&.content
# Try +
if acct.blank?
- username = xml.at_xpath('./xmlns:author/xmlns:name', xmlns: TagManager::XMLNS)&.content
- uri = xml.at_xpath('./xmlns:author/xmlns:uri', xmlns: TagManager::XMLNS)&.content
+ username = xml.at_xpath('./xmlns:author/xmlns:name', xmlns: OStatus::TagManager::XMLNS)&.content
+ uri = xml.at_xpath('./xmlns:author/xmlns:uri', xmlns: OStatus::TagManager::XMLNS)&.content
return nil if username.blank? || uri.blank?
diff --git a/app/services/fetch_remote_account_service.rb b/app/services/fetch_remote_account_service.rb
index 7c618a0b0c905..bd98e70d1bc45 100644
--- a/app/services/fetch_remote_account_service.rb
+++ b/app/services/fetch_remote_account_service.rb
@@ -25,7 +25,7 @@ class FetchRemoteAccountService < BaseService
xml = Nokogiri::XML(body)
xml.encoding = 'utf-8'
- account = author_from_xml(xml.at_xpath('/xmlns:feed', xmlns: TagManager::XMLNS), false)
+ account = author_from_xml(xml.at_xpath('/xmlns:feed', xmlns: OStatus::TagManager::XMLNS), false)
UpdateRemoteProfileService.new.call(xml, account) unless account.nil?
diff --git a/app/services/fetch_remote_status_service.rb b/app/services/fetch_remote_status_service.rb
index 18af18059b666..1b90854c4aa3b 100644
--- a/app/services/fetch_remote_status_service.rb
+++ b/app/services/fetch_remote_status_service.rb
@@ -27,7 +27,7 @@ class FetchRemoteStatusService < BaseService
xml = Nokogiri::XML(body)
xml.encoding = 'utf-8'
- account = author_from_xml(xml.at_xpath('/xmlns:entry', xmlns: TagManager::XMLNS))
+ account = author_from_xml(xml.at_xpath('/xmlns:entry', xmlns: OStatus::TagManager::XMLNS))
domain = Addressable::URI.parse(url).normalized_host
return nil unless !account.nil? && confirmed_domain?(domain, account)
diff --git a/app/services/process_feed_service.rb b/app/services/process_feed_service.rb
index 31191a818f83e..2a5f1e2bc4f57 100644
--- a/app/services/process_feed_service.rb
+++ b/app/services/process_feed_service.rb
@@ -16,7 +16,7 @@ class ProcessFeedService < BaseService
end
def process_entries(xml, account)
- xml.xpath('//xmlns:entry', xmlns: TagManager::XMLNS).reverse_each.map { |entry| process_entry(entry, account) }.compact
+ xml.xpath('//xmlns:entry', xmlns: OStatus::TagManager::XMLNS).reverse_each.map { |entry| process_entry(entry, account) }.compact
end
def process_entry(xml, account)
diff --git a/app/services/process_interaction_service.rb b/app/services/process_interaction_service.rb
index d04e926e7d7af..1fca3832b74fc 100644
--- a/app/services/process_interaction_service.rb
+++ b/app/services/process_interaction_service.rb
@@ -13,7 +13,7 @@ class ProcessInteractionService < BaseService
xml = Nokogiri::XML(body)
xml.encoding = 'utf-8'
- account = author_from_xml(xml.at_xpath('/xmlns:entry', xmlns: TagManager::XMLNS))
+ account = author_from_xml(xml.at_xpath('/xmlns:entry', xmlns: OStatus::TagManager::XMLNS))
return if account.nil? || account.suspended?
@@ -54,13 +54,13 @@ class ProcessInteractionService < BaseService
private
def mentions_account?(xml, account)
- xml.xpath('/xmlns:entry/xmlns:link[@rel="mentioned"]', xmlns: TagManager::XMLNS).each { |mention_link| return true if [TagManager.instance.uri_for(account), TagManager.instance.url_for(account)].include?(mention_link.attribute('href').value) }
+ xml.xpath('/xmlns:entry/xmlns:link[@rel="mentioned"]', xmlns: OStatus::TagManager::XMLNS).each { |mention_link| return true if [OStatus::TagManager.instance.uri_for(account), OStatus::TagManager.instance.url_for(account)].include?(mention_link.attribute('href').value) }
false
end
def verb(xml)
- raw = xml.at_xpath('//activity:verb', activity: TagManager::AS_XMLNS).content
- TagManager::VERBS.key(raw)
+ raw = xml.at_xpath('//activity:verb', activity: OStatus::TagManager::AS_XMLNS).content
+ OStatus::TagManager::VERBS.key(raw)
rescue
:post
end
@@ -104,7 +104,7 @@ class ProcessInteractionService < BaseService
end
def delete_post!(xml, account)
- status = Status.find(xml.at_xpath('//xmlns:id', xmlns: TagManager::XMLNS).content)
+ status = Status.find(xml.at_xpath('//xmlns:id', xmlns: OStatus::TagManager::XMLNS).content)
return if status.nil?
@@ -137,12 +137,12 @@ class ProcessInteractionService < BaseService
def status(xml)
uri = activity_id(xml)
- return nil unless TagManager.instance.local_id?(uri)
- Status.find(TagManager.instance.unique_tag_to_local_id(uri, 'Status'))
+ return nil unless OStatus::TagManager.instance.local_id?(uri)
+ Status.find(OStatus::TagManager.instance.unique_tag_to_local_id(uri, 'Status'))
end
def activity_id(xml)
- xml.at_xpath('//activity:object', activity: TagManager::AS_XMLNS).at_xpath('./xmlns:id', xmlns: TagManager::XMLNS).content
+ xml.at_xpath('//activity:object', activity: OStatus::TagManager::AS_XMLNS).at_xpath('./xmlns:id', xmlns: OStatus::TagManager::XMLNS).content
end
def salmon
diff --git a/app/services/process_mentions_service.rb b/app/services/process_mentions_service.rb
index f123bf8697dbe..1c3eea3697bc5 100644
--- a/app/services/process_mentions_service.rb
+++ b/app/services/process_mentions_service.rb
@@ -39,7 +39,7 @@ class ProcessMentionsService < BaseService
if mentioned_account.local?
NotifyService.new.call(mentioned_account, mention)
- elsif mentioned_account.ostatus? && (Rails.configuration.x.use_ostatus_privacy || !status.stream_entry.hidden?)
+ elsif mentioned_account.ostatus? && !status.stream_entry.hidden?
NotificationWorker.perform_async(stream_entry_to_xml(status.stream_entry), status.account_id, mentioned_account.id)
elsif mentioned_account.activitypub?
ActivityPub::DeliveryWorker.perform_async(build_json(mention.status), mention.status.account_id, mentioned_account.inbox_url)
diff --git a/app/services/remove_status_service.rb b/app/services/remove_status_service.rb
index 83fc77043b75d..14f24908c8eaa 100644
--- a/app/services/remove_status_service.rb
+++ b/app/services/remove_status_service.rb
@@ -4,7 +4,7 @@ class RemoveStatusService < BaseService
include StreamEntryRenderer
def call(status)
- @payload = Oj.dump(event: :delete, payload: status.id)
+ @payload = Oj.dump(event: :delete, payload: status.id.to_s)
@status = status
@account = status.account
@tags = status.tags.pluck(:name).to_a
@@ -14,6 +14,7 @@ class RemoveStatusService < BaseService
remove_from_self if status.account.local?
remove_from_followers
+ remove_from_affected
remove_reblogs
remove_from_hashtags
remove_from_public
@@ -38,6 +39,12 @@ class RemoveStatusService < BaseService
end
end
+ def remove_from_affected
+ @mentions.map(&:account).select(&:local?).each do |account|
+ Redis.current.publish("timeline:#{account.id}", @payload)
+ end
+ end
+
def remove_from_remote_affected
# People who got mentioned in the status, or who
# reblogged it from someone else might not follow
@@ -105,6 +112,8 @@ class RemoveStatusService < BaseService
end
def remove_from_hashtags
+ return unless @status.public_visibility?
+
@tags.each do |hashtag|
Redis.current.publish("timeline:hashtag:#{hashtag}", @payload)
Redis.current.publish("timeline:hashtag:#{hashtag}:local", @payload) if @status.local?
@@ -112,6 +121,8 @@ class RemoveStatusService < BaseService
end
def remove_from_public
+ return unless @status.public_visibility?
+
Redis.current.publish('timeline:public', @payload)
Redis.current.publish('timeline:public:local', @payload) if @status.local?
end
diff --git a/app/services/verify_salmon_service.rb b/app/services/verify_salmon_service.rb
index cd674837dcc71..205b35d8b19d2 100644
--- a/app/services/verify_salmon_service.rb
+++ b/app/services/verify_salmon_service.rb
@@ -9,7 +9,7 @@ class VerifySalmonService < BaseService
xml = Nokogiri::XML(body)
xml.encoding = 'utf-8'
- account = author_from_xml(xml.at_xpath('/xmlns:entry', xmlns: TagManager::XMLNS))
+ account = author_from_xml(xml.at_xpath('/xmlns:entry', xmlns: OStatus::TagManager::XMLNS))
if account.nil?
false
diff --git a/app/views/errors/500.html.haml b/app/views/errors/500.html.haml
new file mode 100644
index 0000000000000..6244ff209f66d
--- /dev/null
+++ b/app/views/errors/500.html.haml
@@ -0,0 +1,5 @@
+- content_for :page_title do
+ = t('errors.500.title')
+
+- content_for :content do
+ = t('errors.500.content')
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 6fd39c88eab2f..e6190f7e2a743 100755
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -27,7 +27,6 @@
%link{ href: asset_pack_path('features/notifications.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
%link{ href: asset_pack_path('features/community_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
%link{ href: asset_pack_path('features/public_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
- %link{ href: asset_pack_path('emojione_picker.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
= javascript_pack_tag "locale_#{I18n.locale}", integrity: true, crossorigin: 'anonymous'
= csrf_meta_tags
diff --git a/app/views/layouts/error.html.haml b/app/views/layouts/error.html.haml
index 08b94af54aadb..31f3220964a44 100644
--- a/app/views/layouts/error.html.haml
+++ b/app/views/layouts/error.html.haml
@@ -3,34 +3,12 @@
%head
%meta{ content: 'text/html; charset=UTF-8', 'http-equiv' => 'Content-Type' }/
%meta{ charset: 'utf-8' }/
- %title= yield :page_title
+ %title= safe_join([yield(:page_title), title], ' - ')
%meta{ content: 'width=device-width,initial-scale=1', name: 'viewport' }/
- %link{ href: 'https://fonts.googleapis.com/css?family=Roboto:400', rel: 'stylesheet' }/
- :css
- body {
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
- background: #282c37;
- color: #9baec8;
- text-align: center;
- margin: 0;
- padding: 20px;
- }
-
- .dialog img {
- display: block;
- margin: 20px auto;
- margin-top: 50px;
- max-width: 600px;
- width: 100%;
- height: auto;
- }
-
- .dialog h1 {
- font: 20px/28px -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
- font-weight: 400;
- }
- %body
+ = stylesheet_pack_tag 'common', media: 'all'
+ = stylesheet_pack_tag Setting.default_settings['theme'], media: 'all'
+ %body.error
.dialog
- %img{ alt: 'Mastodon', src: '/oops.png' }/
+ %img{ alt: title, src: '/oops.gif' }/
%div
%h1= yield :content
diff --git a/app/views/stream_entries/_detailed_status.html.haml b/app/views/stream_entries/_detailed_status.html.haml
index 1d943a2ca94e5..4c85fef8b56f5 100644
--- a/app/views/stream_entries/_detailed_status.html.haml
+++ b/app/views/stream_entries/_detailed_status.html.haml
@@ -15,7 +15,7 @@
.status__content.p-name.emojify<
- if status.spoiler_text?
%p{ style: 'margin-bottom: 0' }<
- %span.p-summary> #{status.spoiler_text}
+ %span.p-summary> #{Formatter.instance.format_spoiler(status)}
%a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
.e-content{ lang: status.language, style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }<
= Formatter.instance.format(status)
diff --git a/app/views/stream_entries/_simple_status.html.haml b/app/views/stream_entries/_simple_status.html.haml
index b44f9820fb3ef..88700543ddf0e 100644
--- a/app/views/stream_entries/_simple_status.html.haml
+++ b/app/views/stream_entries/_simple_status.html.haml
@@ -16,7 +16,7 @@
.status__content.p-name.emojify<
- if status.spoiler_text?
%p{ style: 'margin-bottom: 0' }<
- %span.p-summary> #{status.spoiler_text}
+ %span.p-summary> #{Formatter.instance.format_spoiler(status)}
%a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
.e-content{ lang: status.language, style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl_status?(status) ? 'rtl' : 'ltr'}" }<
= Formatter.instance.format(status)
diff --git a/app/workers/activitypub/delivery_worker.rb b/app/workers/activitypub/delivery_worker.rb
index cd67b67108ea3..a4e829343485d 100644
--- a/app/workers/activitypub/delivery_worker.rb
+++ b/app/workers/activitypub/delivery_worker.rb
@@ -16,7 +16,7 @@ class ActivityPub::DeliveryWorker
raise Mastodon::UnexpectedResponseError, @response unless response_successful?
rescue => e
- raise e.class, "Delivery failed for #{inbox_url}: #{e.message}"
+ raise e.class, "Delivery failed for #{inbox_url}: #{e.message}", e.backtrace[0]
end
private
diff --git a/app/workers/pubsubhubbub/delivery_worker.rb b/app/workers/pubsubhubbub/delivery_worker.rb
index 88645cf338ed0..110b8bf16223b 100644
--- a/app/workers/pubsubhubbub/delivery_worker.rb
+++ b/app/workers/pubsubhubbub/delivery_worker.rb
@@ -17,7 +17,7 @@ class Pubsubhubbub::DeliveryWorker
@payload = payload
process_delivery unless blocked_domain?
rescue => e
- raise e.class, "Delivery failed for #{subscription&.callback_url}: #{e.message}"
+ raise e.class, "Delivery failed for #{subscription&.callback_url}: #{e.message}", e.backtrace[0]
end
private
diff --git a/app/workers/pubsubhubbub/distribution_worker.rb b/app/workers/pubsubhubbub/distribution_worker.rb
index 524f6849fca9e..fed5e917d3dd2 100644
--- a/app/workers/pubsubhubbub/distribution_worker.rb
+++ b/app/workers/pubsubhubbub/distribution_worker.rb
@@ -6,45 +6,27 @@ class Pubsubhubbub::DistributionWorker
sidekiq_options queue: 'push'
def perform(stream_entry_ids)
- stream_entries = StreamEntry.where(id: stream_entry_ids).includes(:status).reject { |e| e.status.nil? || e.status.direct_visibility? }
+ stream_entries = StreamEntry.where(id: stream_entry_ids).includes(:status).reject { |e| e.status.nil? || e.status.hidden? }
return if stream_entries.empty?
@account = stream_entries.first.account
@subscriptions = active_subscriptions.to_a
- distribute_public!(stream_entries.reject(&:hidden?))
- distribute_hidden!(stream_entries.select(&:hidden?)) if Rails.configuration.x.use_ostatus_privacy
+ distribute_public!(stream_entries)
end
private
def distribute_public!(stream_entries)
- return if stream_entries.empty?
-
@payload = OStatus::AtomSerializer.render(OStatus::AtomSerializer.new.feed(@account, stream_entries))
- Pubsubhubbub::DeliveryWorker.push_bulk(@subscriptions) do |subscription|
- [subscription.id, @payload]
- end
- end
-
- def distribute_hidden!(stream_entries)
- return if stream_entries.empty?
-
- @payload = OStatus::AtomSerializer.render(OStatus::AtomSerializer.new.feed(@account, stream_entries))
- @domains = @account.followers.domains
-
- Pubsubhubbub::DeliveryWorker.push_bulk(@subscriptions.select { |s| allowed_to_receive?(s.callback_url, s.domain) }) do |subscription|
- [subscription.id, @payload]
+ Pubsubhubbub::DeliveryWorker.push_bulk(@subscriptions) do |subscription_id|
+ [subscription_id, @payload]
end
end
def active_subscriptions
- Subscription.where(account: @account).active.select('id, callback_url, domain')
- end
-
- def allowed_to_receive?(callback_url, domain)
- (!domain.nil? && @domains.include?(domain)) || @domains.include?(Addressable::URI.parse(callback_url).host)
+ Subscription.where(account: @account).active.pluck(:id)
end
end
diff --git a/app/workers/pubsubhubbub/subscribe_worker.rb b/app/workers/pubsubhubbub/subscribe_worker.rb
index 7560c2671f7c4..e350973e1e935 100644
--- a/app/workers/pubsubhubbub/subscribe_worker.rb
+++ b/app/workers/pubsubhubbub/subscribe_worker.rb
@@ -29,6 +29,6 @@ class Pubsubhubbub::SubscribeWorker
logger.debug "PuSH re-subscribing to #{account.acct}"
::SubscribeService.new.call(account)
rescue => e
- raise e.class, "Subscribe failed for #{account&.acct}: #{e.message}"
+ raise e.class, "Subscribe failed for #{account&.acct}: #{e.message}", e.backtrace[0]
end
end
diff --git a/bin/webpack b/bin/webpack
index 867550eb8fcf4..528233a784f0b 100755
--- a/bin/webpack
+++ b/bin/webpack
@@ -2,7 +2,6 @@
$stdout.sync = true
require "shellwords"
-require "yaml"
ENV["RAILS_ENV"] ||= "development"
RAILS_ENV = ENV["RAILS_ENV"]
@@ -20,9 +19,9 @@ unless File.exist?(WEBPACK_CONFIG)
exit!
end
-newenv = { "NODE_PATH" => NODE_MODULES_PATH.shellescape }
-cmdline = ["yarn", "run", "webpack", "--", "--config", WEBPACK_CONFIG] + ARGV
+env = { "NODE_PATH" => NODE_MODULES_PATH.shellescape }
+cmd = [ "#{NODE_MODULES_PATH}/.bin/webpack", "--config", WEBPACK_CONFIG ] + ARGV
Dir.chdir(APP_PATH) do
- exec newenv, *cmdline
+ exec env, *cmd
end
diff --git a/bin/webpack-dev-server b/bin/webpack-dev-server
index 0beec31753b66..c9672f6633f21 100755
--- a/bin/webpack-dev-server
+++ b/bin/webpack-dev-server
@@ -3,6 +3,7 @@ $stdout.sync = true
require "shellwords"
require "yaml"
+require "socket"
ENV["RAILS_ENV"] ||= "development"
RAILS_ENV = ENV["RAILS_ENV"]
@@ -13,7 +14,9 @@ NODE_ENV = ENV["NODE_ENV"]
APP_PATH = File.expand_path("../", __dir__)
CONFIG_FILE = File.join(APP_PATH, "config/webpacker.yml")
NODE_MODULES_PATH = File.join(APP_PATH, "node_modules")
-WEBPACK_CONFIG = File.join(APP_PATH, "config/webpack/development.js")
+WEBPACK_CONFIG = File.join(APP_PATH, "config/webpack/#{NODE_ENV}.js")
+
+DEFAULT_LISTEN_HOST_ADDR = NODE_ENV == 'development' ? 'localhost' : '0.0.0.0'
def args(key)
index = ARGV.index(key)
@@ -21,23 +24,45 @@ def args(key)
end
begin
- dev_server = YAML.load_file(CONFIG_FILE)["development"]["dev_server"]
+ dev_server = YAML.load_file(CONFIG_FILE)[RAILS_ENV]["dev_server"]
- DEV_SERVER_HOST = "http#{"s" if args('--https') || dev_server["https"]}://#{dev_server["host"]}:#{args('--port') || dev_server["port"]}"
+ HOSTNAME = args('--host') || dev_server["host"]
+ PORT = args('--port') || dev_server["port"]
+ HTTPS = ARGV.include?('--https') || dev_server["https"]
+ DEV_SERVER_ADDR = "http#{"s" if HTTPS}://#{HOSTNAME}:#{PORT}"
+ LISTEN_HOST_ADDR = args('--listen-host') || DEFAULT_LISTEN_HOST_ADDR
rescue Errno::ENOENT, NoMethodError
- puts "Webpack dev_server configuration not found in #{CONFIG_FILE}."
- puts "Please run bundle exec rails webpacker:install to install webpacker"
+ $stdout.puts "Webpack dev_server configuration not found in #{CONFIG_FILE}."
+ $stdout.puts "Please run bundle exec rails webpacker:install to install webpacker"
exit!
end
-newenv = {
- "NODE_PATH" => NODE_MODULES_PATH.shellescape,
- "ASSET_HOST" => DEV_SERVER_HOST.shellescape
-}.freeze
+begin
+ server = TCPServer.new(LISTEN_HOST_ADDR, PORT)
+ server.close
-cmdline = ["yarn", "run", "webpack-dev-server", "--", "--progress", "--color", "--config", WEBPACK_CONFIG] + ARGV
+rescue Errno::EADDRINUSE
+ $stdout.puts "Another program is running on port #{PORT}. Set a new port in #{CONFIG_FILE} for dev_server"
+ exit!
+end
+
+# Delete supplied host, port and listen-host CLI arguments
+["--host", "--port", "--listen-host"].each do |arg|
+ ARGV.delete(args(arg))
+ ARGV.delete(arg)
+end
+
+env = { "NODE_PATH" => NODE_MODULES_PATH.shellescape }
+
+cmd = [
+ "#{NODE_MODULES_PATH}/.bin/webpack-dev-server", "--progress", "--color",
+ "--config", WEBPACK_CONFIG,
+ "--host", LISTEN_HOST_ADDR,
+ "--public", "#{HOSTNAME}:#{PORT}",
+ "--port", PORT.to_s
+] + ARGV
Dir.chdir(APP_PATH) do
- exec newenv, *cmdline
+ exec env, *cmd
end
diff --git a/config/i18n-tasks.yml b/config/i18n-tasks.yml
index b51cf46df9531..b35e5c09ae76b 100644
--- a/config/i18n-tasks.yml
+++ b/config/i18n-tasks.yml
@@ -45,6 +45,7 @@ ignore_missing:
- 'sessions.{browsers,platforms}.*'
- 'terms.body_html'
- 'application_mailer.salutation'
+ - 'errors.500'
ignore_unused:
- 'activemodel.errors.*'
- 'activerecord.attributes.*'
diff --git a/config/initializers/doorkeeper.rb b/config/initializers/doorkeeper.rb
index 689e2ac4a5b60..074f8c410be58 100644
--- a/config/initializers/doorkeeper.rb
+++ b/config/initializers/doorkeeper.rb
@@ -7,15 +7,14 @@ Doorkeeper.configure do
current_user || redirect_to(new_user_session_url)
end
- resource_owner_from_credentials do |routes|
- request.params[:user] = { email: request.params[:username], password: request.params[:password] }
- request.env["devise.allow_params_authentication"] = true
- request.env["warden"].authenticate!(scope: :user)
+ resource_owner_from_credentials do |_routes|
+ user = User.find_by(email: request.params[:username])
+ user if !user&.otp_required_for_login? && user&.valid_password?(request.params[:password])
end
# If you want to restrict access to the web interface for adding oauth authorized applications, you need to declare the block below.
admin_authenticator do
- (current_user && current_user.admin?) || redirect_to(new_user_session_url)
+ current_user&.admin? || redirect_to(new_user_session_url)
end
# Authorization Code expiration time (default 10 minutes).
diff --git a/config/initializers/ostatus.rb b/config/initializers/ostatus.rb
index c00aba0ded742..ba96fda22ca79 100644
--- a/config/initializers/ostatus.rb
+++ b/config/initializers/ostatus.rb
@@ -18,7 +18,6 @@ Rails.application.configure do
config.action_mailer.default_url_options = { host: web_host, protocol: https ? 'https://' : 'http://', trailing_slash: false }
config.x.streaming_api_base_url = 'ws://localhost:4000'
- config.x.use_ostatus_privacy = true
if Rails.env.production?
config.x.streaming_api_base_url = ENV.fetch('STREAMING_API_BASE_URL') { "ws#{https ? 's' : ''}://#{web_host}" }
diff --git a/config/initializers/strong_migrations.rb b/config/initializers/strong_migrations.rb
new file mode 100644
index 0000000000000..3d7beac9ff855
--- /dev/null
+++ b/config/initializers/strong_migrations.rb
@@ -0,0 +1,3 @@
+# frozen_string_literal: true
+
+StrongMigrations.start_after = 20170924022025 if Rails.env.development?
diff --git a/config/locales/devise.ja.yml b/config/locales/devise.ja.yml
index 2001abe9653f4..aa333920e9405 100644
--- a/config/locales/devise.ja.yml
+++ b/config/locales/devise.ja.yml
@@ -11,7 +11,7 @@ ja:
invalid: "%{authentication_keys}かパスワードが誤っています。"
last_attempt: あと1回失敗するとアカウントがロックされます。
locked: アカウントはロックされました。
- not_found_in_database: "%{authentication_keys}かパスワードが誤っています"
+ not_found_in_database: "%{authentication_keys}かパスワードが誤っています。"
timeout: セッションの有効期限が切れました。続行するには再度ログインしてください。
unauthenticated: 続行するにはログインするか、アカウントを作成してください。
unconfirmed: 続行するにはメールアドレスを確認する必要があります。
diff --git a/config/locales/doorkeeper.ja.yml b/config/locales/doorkeeper.ja.yml
index 0b670fda4388d..1f145eaa3ea6f 100644
--- a/config/locales/doorkeeper.ja.yml
+++ b/config/locales/doorkeeper.ja.yml
@@ -25,14 +25,14 @@ ja:
edit: 編集
submit: 送信
confirmations:
- destroy: 本当に削除しますか?
+ destroy: 本当に削除しますか?
edit:
title: アプリの編集
form:
error: フォームにエラーが無いか確認してください。
help:
native_redirect_uri: ローカルテストに %{native_redirect_uri} を使用
- redirect_uri: 一行に一つのURLを入力してください
+ redirect_uri: 一行に一つのURLを入力してください。
scopes: アクセス権は半角スペースで区切ることができます。 空白のままにするとデフォルトを使用します。
index:
application: アプリ
diff --git a/config/locales/doorkeeper.oc.yml b/config/locales/doorkeeper.oc.yml
index 6069b77adbf25..1ec1b69e820df 100644
--- a/config/locales/doorkeeper.oc.yml
+++ b/config/locales/doorkeeper.oc.yml
@@ -6,7 +6,7 @@ oc:
name: Nom
redirect_uri: URL de redireccion
scopes: Encastres
- website: Aplicacion web
+ website: Site de l’aplicacion
errors:
models:
doorkeeper/application:
@@ -63,7 +63,7 @@ oc:
prompt: L’aplicacion %{client_name} demanda l’accès al vòstre compte.
title: Cal l’autorizacion
show:
- title: Copy this authorization code and paste it to the application.
+ title: Copiatz lo còdi d’autorizacion e pegatz-lo dins l’aplicacion.
authorized_applications:
buttons:
revoke: Revocar
diff --git a/config/locales/doorkeeper.pl.yml b/config/locales/doorkeeper.pl.yml
index 824a6be90e1f1..fa4324e4de654 100644
--- a/config/locales/doorkeeper.pl.yml
+++ b/config/locales/doorkeeper.pl.yml
@@ -63,7 +63,7 @@ pl:
prompt: Aplikacja %{client_name} prosi o dostęp do Twojego konta
title: Wymagana jest autoryzacja
show:
- title: Copy this authorization code and paste it to the application.
+ title: Skopiuj kod uwierzytelniający i wklej go w aplikacji.
authorized_applications:
buttons:
revoke: Unieważnij
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 9013f0ac9fc39..f87d8532c551c 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -310,6 +310,9 @@ en:
content: Security verification failed. Are you blocking cookies?
title: Security verification failed
'429': Throttled
+ '500':
+ content: We're sorry, but something went wrong on our end.
+ title: This page is not correct
noscript_html: To use the Mastodon web application, please enable JavaScript. Alternatively, try one of the native apps for Mastodon for your platform.
exports:
blocks: You block
@@ -552,6 +555,8 @@ en:
Originally adapted from the Discourse privacy policy .
title: "%{instance} Terms of Service and Privacy Policy"
+ themes:
+ default: Mastodon
time:
formats:
default: "%b %d, %Y, %H:%M"
diff --git a/config/locales/ja.yml b/config/locales/ja.yml
index f7170f6a399c0..5ffc09ab98f4f 100644
--- a/config/locales/ja.yml
+++ b/config/locales/ja.yml
@@ -50,7 +50,7 @@ ja:
unfollow: フォロー解除
admin:
accounts:
- are_you_sure: 本当に実行しますか?
+ are_you_sure: 本当に実行しますか?
confirm: 確認
confirmed: 確認済み
disable_two_factor_authentication: 二段階認証を無効にする
@@ -108,6 +108,18 @@ ja:
unsubscribe: 購読の解除
username: ユーザー名
web: Web
+ custom_emojis:
+ created_msg: 絵文字の追加に成功しました
+ delete: 削除
+ destroyed_msg: 絵文字の削除に成功しました
+ emoji: 絵文字
+ image_hint: 50KBまでのPNG画像を利用できます。
+ new:
+ title: 新規カスタム絵文字の追加
+ shortcode: ショートコード
+ shortcode_hint: 2文字以上の半角英数字とアンダーバーのみ利用できます。
+ title: カスタム絵文字
+ upload: アップロード
domain_blocks:
add_new: 新規追加
created_msg: ドメインブロック処理を完了しました
@@ -179,7 +191,7 @@ ja:
username: 連絡先のユーザー名
registrations:
closed_message:
- desc_html: 新規登録を停止しているときにフロントページに表示されます。HTMLタグが使えます
+ desc_html: 新規登録を停止しているときにフロントページに表示されます。HTMLタグが使えます。
title: 新規登録停止時のメッセージ
deletion:
desc_html: 誰でも自分のアカウントを削除できるようにします
@@ -191,10 +203,10 @@ ja:
desc_html: フロントページへの表示と meta タグに使用される紹介文です。HTMLタグ、特に<a>
と <em>
が使えます。
title: インスタンスの説明
site_description_extended:
- desc_html: あなたのインスタンスにおける行動規範やルール、ガイドライン、そのほかの記述をする際に最適な場所です。HTMLタグが使えます
+ desc_html: あなたのインスタンスにおける行動規範やルール、ガイドライン、そのほかの記述をする際に最適な場所です。HTMLタグが使えます。
title: カスタム詳細説明
site_terms:
- desc_html: あなたは独自のプライバシーポリシーや利用規約、そのほかの法的根拠を書くことができます。HTMLタグが使えます
+ desc_html: あなたは独自のプライバシーポリシーや利用規約、そのほかの法的根拠を書くことができます。HTMLタグが使えます。
title: カスタム利用規約
site_title: インスタンスの名前
thumbnail:
@@ -261,7 +273,7 @@ ja:
error: 残念ながら、リモートアカウント情報の取得中にエラーが発生しました。
follow: フォロー
follow_request: 'あなたは以下のアカウントにフォローリクエストを送信しました:'
- following: '成功! あなたは現在以下のアカウントをフォローしています:'
+ following: '成功! あなたは現在以下のアカウントをフォローしています:'
post_follow:
close: またはこのウィンドウを閉じます
return: ユーザーのプロフィールに戻る
@@ -290,7 +302,7 @@ ja:
warning_html: 削除が保証されるのはこのインスタンス上のコンテンツのみです。他のインスタンス等、外部に広く共有されたコンテンツについては痕跡が残ることがあります。また、現在接続できないサーバーや、あなたの更新を受け取らなくなったサーバーに対しては、削除は反映されません。
warning_title: 共有されたコンテンツについて
errors:
- '403': このページを表示する権限がありません
+ '403': このページを表示する権限がありません。
'404': お探しのページは見つかりませんでした。
'410': お探しのページはもう存在しません。
'422':
@@ -321,11 +333,11 @@ ja:
powered_by: powered by %{link}
save_changes: 変更を保存
validation_errors:
- one: エラーが発生しました。以下のエラーを確認してください
- other: エラーが発生しました。以下の%{count}個のエラーを確認してください
+ one: エラーが発生しました。以下のエラーを確認してください。
+ other: エラーが発生しました。以下の%{count}個のエラーを確認してください。
imports:
preface: 他のインスタンスでエクスポートされたファイルから、フォロー/ブロックした情報をこのインスタンス上のアカウントにインポートできます。
- success: ファイルは正常にアップロードされ、現在処理中です。しばらくしてから確認してください
+ success: ファイルは正常にアップロードされ、現在処理中です。しばらくしてから確認してください。
types:
blocking: ブロックしたアカウントリスト
following: フォロー中のアカウントリスト
@@ -354,7 +366,7 @@ ja:
body: "%{name} さんにフォローされています"
subject: "%{name} さんにフォローされています"
follow_request:
- body: "%{name} さんがあなたにフォローをリクエストしました。"
+ body: "%{name} さんがあなたにフォローをリクエストしました"
subject: "%{name} さんからのフォローリクエスト"
mention:
body: "%{name} さんから返信がありました:"
@@ -539,11 +551,13 @@ ja:
オリジナルの出典 Discourse privacy policy .
title: "%{instance} 利用規約・プライバシーポリシー"
+ themes:
+ default: Mastodon
time:
formats:
default: "%Y年%m月%d日 %H:%M"
two_factor_authentication:
- code_hint: 確認するには認証アプリで表示されたコードを入力してください
+ code_hint: 確認するには認証アプリで表示されたコードを入力してください。
description_html: "二段階認証 を有効にするとログイン時、電話でコードを受け取る必要があります。"
disable: 無効
enable: 有効
diff --git a/config/locales/oc.yml b/config/locales/oc.yml
index 5d9506132d6b0..584f4c6094581 100644
--- a/config/locales/oc.yml
+++ b/config/locales/oc.yml
@@ -60,6 +60,7 @@ oc:
email: Corrièl
feed_url: Flux URL
followers: Seguidors
+ followers_url: URL dels seguidors
follows: Abonaments
inbox_url: URL de recepcion
ip: IP
@@ -92,6 +93,7 @@ oc:
reset_password: Reïnicializar lo senhal
resubscribe: Se tornar abonar
salmon_url: URL Salmon
+ shared_inbox_url: URL de recepcion partejada
search: Cercar
show:
created_reports: Rapòrts creat per aqueste compte
@@ -106,6 +108,18 @@ oc:
unsubscribe: Se desabonar
username: Nom d’utilizaire
web: Web
+ custom_emojis:
+ created_msg: Emoji ben creat !
+ delete: Suprimir
+ destroyed_msg: Emojo ben suprimit !
+ emoji: Emoji
+ image_hint: PNG cap a 50Ko
+ new:
+ title: Ajustar un nòu emoji personal
+ shortcode: Acorchi
+ shortcode_hint: Almens 2 caractèrs, solament alfanumerics e jonhent bas
+ title: Emojis personals
+ upload: Enviar
domain_blocks:
add_new: N’ajustar un nòu
created_msg: Domeni blocat es a èsser tractat
@@ -141,6 +155,8 @@ oc:
instances:
account_count: Comptes coneguts
domain_name: Domeni
+ reset: Reïnicializar
+ search: Cercar
title: Instàncias conegudas
reports:
action_taken_by: Mesura menada per
@@ -167,6 +183,9 @@ oc:
unresolved: Pas resolguts
view: Veire
settings:
+ bootstrap_timeline_accounts:
+ desc_html: Separatz los noms d’utilizaire amb de virgula. Pas que los comptes locals e pas clavats foncionaràn. Se lo camp es void los admins seràn selecionats.
+ title: Per defaut los nouvenguts sègon
contact_information:
email: Picatz una adreça de corrièl
username: Picatz un nom d’utilizaire
@@ -190,6 +209,9 @@ oc:
desc_html: Afichada sus la pagina de las condicions d’utilizacion Podètz utilizar de balisas HTML
title: Politica de confidencialitat del site
site_title: Títol del site
+ thumbnail:
+ desc_html: Servís pels apercebuts via OpenGraph e las API. Talha de 1200x630px recomandada.
+ title: Miniatura de l’instància
timeline_preview:
desc_html: Mostrar lo flux public sus la pagina d’acuèlh
title: Apercebut flux public
@@ -521,6 +543,7 @@ oc:
open_in_web: Dobrir sul web
over_character_limit: limit de %{max} caractèrs passat
pin_errors:
+ limit: Tròp de tuts penjats
ownership: Se pòt pas penjar lo tut de qualqu’un mai
private: Se pòt pas penjar los tuts pas publics
reblog: Se pòt pas penjar un tut partejat
@@ -607,6 +630,8 @@ oc:
Prima adaptacion de la politica de confidencialitat de Discourse .
title: Condicions d’utilizacion e politica de confidencialitat de %{instance}
+ themes:
+ default: Mastodon
time:
formats:
default: Lo %d %b de %Y a %Ho%M
diff --git a/config/locales/pl.yml b/config/locales/pl.yml
index 4dbbd7cb17dba..9bf57e38b002f 100644
--- a/config/locales/pl.yml
+++ b/config/locales/pl.yml
@@ -62,6 +62,7 @@ pl:
followers: Śledzący
followers_url: Adres śledzących
follows: Śledzeni
+ inbox: Adres skrzynki
ip: Adres IP
location:
all: Wszystkie
@@ -105,6 +106,18 @@ pl:
unsubscribe: Przestań subskrybować
username: Nazwa użytkownika
web: Sieć
+ custom_emojis:
+ created_msg: Pomyślnie utworzono emoji!
+ delete: Usuń
+ destroyed_msg: Pomyślnie usunięto emoji!
+ emoji: Emoji
+ image_hint: Plik PNG ważący do 50KB
+ new:
+ title: Dodaj nowe niestandardowe emoji
+ shortcode: Shortcode
+ shortcode_hint: Co najmniej 2 znaki, tylko znaki alfanumeryczne i podkreślniki
+ title: Niestandardowe emoji
+ upload: Wyślij
domain_blocks:
add_new: Dodaj nową
created_msg: Blokada domen jest przetwarzana
@@ -294,6 +307,9 @@ pl:
content: Sprawdzanie bezpieczeństwa nie powiodło się. Czy blokujesz pliki cookie?
title: Sprawdzanie bezpieczeństwa nie powiodło się
'429': Uduszono
+ '500':
+ content: Przepraszamy, coś poszło nie tak…
+ title: Ta strona jest nieprawidłowa
noscript_html: Aby korzystać z aplikacji Mastodon, włącz JavaScript. Możesz też skorzystać z jednej z natywnych aplikacji obsługującej Twoje urządzenie.
exports:
blocks: Zablokowani
@@ -540,6 +556,8 @@ pl:
Tekst bazuje na polityce prywatności Discourse .
title: Zasady korzystania i polityka prywatności %{instance}
+ themes:
+ default: Mastodon
time:
formats:
default: "%b %d, %Y, %H:%M"
diff --git a/config/locales/simple_form.ja.yml b/config/locales/simple_form.ja.yml
index 70389e94826c2..17b35ba8f2e7e 100644
--- a/config/locales/simple_form.ja.yml
+++ b/config/locales/simple_form.ja.yml
@@ -6,11 +6,12 @@ ja:
avatar: 2MBまでのPNGやGIF、JPGが利用可能です。120x120pxまで縮小されます。
display_name: あと%{count} 文字入力できます。
header: 2MBまでのPNGやGIF、JPGが利用可能です。 700x335pxまで縮小されます。
- locked: フォロワーを手動で承認する必要があります。
+ locked: フォロワーを手動で承認する必要があります
note: あと%{count} 文字入力できます。
setting_noindex: 公開プロフィールおよび各投稿ページに影響します
+ setting_theme: ログインしている全てのデバイスで適用されるデザインです。
imports:
- data: 他の Mastodon インスタンスからエクスポートしたCSVファイルを選択して下さい
+ data: 他の Mastodon インスタンスからエクスポートしたCSVファイルを選択して下さい。
sessions:
otp: 携帯電話に表示された2段階認証コードを入力するか、生成したリカバリーコードを使用してください。
user:
@@ -39,6 +40,7 @@ ja:
setting_delete_modal: トゥートを削除する前に確認ダイアログを表示する
setting_noindex: 検索エンジンによるインデックスを拒否する
setting_system_font_ui: システムのデフォルトフォントを使う
+ setting_theme: サイトテーマ
setting_unfollow_modal: フォロー解除する前に確認ダイアログを表示する
severity: 重大性
type: インポートする項目
diff --git a/config/locales/simple_form.oc.yml b/config/locales/simple_form.oc.yml
index 442a7d4b66f4d..d45f98e66bf09 100644
--- a/config/locales/simple_form.oc.yml
+++ b/config/locales/simple_form.oc.yml
@@ -13,6 +13,7 @@ oc:
one: Demòra encara 1 caractèr
other: Demòran encara %{count} caractèrs
setting_noindex: Aquò es destinat a vòstre perfil public e vòstra pagina d’estatuts
+ setting_theme: Aquò càmbia lo tèma grafic de Mastodon quand sètz connectat qualque siaque lo periferic.
imports:
data: Fichièr CSV exportat d’una autra instància Mastodon
sessions:
@@ -43,6 +44,7 @@ oc:
setting_delete_modal: Afichar una fenèstra de confirmacion abans de suprimir un estatut
setting_noindex: Èsser pas indexat pels motors de recèrca
setting_system_font_ui: Utilizar la policia Font del sisèma
+ setting_theme: Tèma del site
setting_unfollow_modal: Afichar una confirmacion abans de quitar de sègre qualqu’un
severity: Severitat
type: Tip d’impòrt
diff --git a/config/locales/simple_form.pl.yml b/config/locales/simple_form.pl.yml
index e2eba3dd8ae97..d5de2dcd365c5 100644
--- a/config/locales/simple_form.pl.yml
+++ b/config/locales/simple_form.pl.yml
@@ -17,6 +17,7 @@ pl:
one: Pozostał 1 znak.
other: Pozostało %{count} znaków
setting_noindex: Wpływa na widoczność strony profilu i Twoich wpisów
+ setting_theme: Zmienia wygląd Mastodona po zalogowaniu z dowolnego urządzenia.
imports:
data: Plik CSV wyeksportowany z innej instancji Mastodona
sessions:
@@ -47,6 +48,7 @@ pl:
setting_delete_modal: Pytaj o potwierdzenie przed usunięciem wpisu
setting_noindex: Nie indeksuj mojego profilu w wyszukiwarkach internetowych
setting_system_font_ui: Używaj domyślnej czcionki systemu
+ setting_theme: Motyw strony
setting_unfollow_modal: Pytaj o potwierdzenie przed cofnięciem śledzenia
severity: Priorytet
type: Typ importu
diff --git a/config/routes.rb b/config/routes.rb
index ce7a884f9ae39..2c41c24e9402c 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -188,6 +188,7 @@ Rails.application.routes.draw do
end
resources :streaming, only: [:index]
+ resources :custom_emojis, only: [:index]
get '/search', to: 'search#index', as: :search
diff --git a/config/webpacker.yml b/config/webpacker.yml
index aa429a1ddac44..8d8470651ac41 100644
--- a/config/webpacker.yml
+++ b/config/webpacker.yml
@@ -4,6 +4,15 @@ default: &default
source_path: app/javascript
source_entry_path: packs
public_output_path: packs
+ cache_path: tmp/cache/webpacker
+
+ # Additional paths webpack should lookup modules
+ # ['app/assets', 'engine/foo/app/assets']
+ resolved_paths: []
+
+ # Reload manifest.json on all requests so we reload latest compiled packs
+ cache_manifest: false
+
extensions:
- .js
- .sass
@@ -17,16 +26,25 @@ default: &default
development:
<<: *default
+ compile: true
dev_server:
- host: 127.0.0.1
- port: 8080
+ host: localhost
+ port: 3035
+ hmr: false
https: false
test:
<<: *default
+ # Compile test packs to a separate directory
public_output_path: packs-test
production:
<<: *default
+
+ # Production depends on precompilation of packs prior to booting for performance.
+ compile: false
+
+ # Cache manifest.json for performance
+ cache_manifest: true
diff --git a/db/migrate/20170918125918_ids_to_bigints.rb b/db/migrate/20170918125918_ids_to_bigints.rb
new file mode 100644
index 0000000000000..7483dd77a44f4
--- /dev/null
+++ b/db/migrate/20170918125918_ids_to_bigints.rb
@@ -0,0 +1,127 @@
+class IdsToBigints < ActiveRecord::Migration[5.1]
+ def up
+ change_column :account_domain_blocks, :account_id, :bigint
+ change_column :account_domain_blocks, :id, :bigint
+ change_column :accounts, :id, :bigint
+ change_column :blocks, :account_id, :bigint
+ change_column :blocks, :id, :bigint
+ change_column :blocks, :target_account_id, :bigint
+ change_column :conversation_mutes, :account_id, :bigint
+ change_column :conversation_mutes, :id, :bigint
+ change_column :deprecated_preview_cards, :id, :bigint if table_exists?(:deprecated_preview_cards)
+ change_column :domain_blocks, :id, :bigint
+ change_column :favourites, :account_id, :bigint
+ change_column :favourites, :id, :bigint
+ change_column :favourites, :status_id, :bigint
+ change_column :follow_requests, :account_id, :bigint
+ change_column :follow_requests, :id, :bigint
+ change_column :follow_requests, :target_account_id, :bigint
+ change_column :follows, :account_id, :bigint
+ change_column :follows, :id, :bigint
+ change_column :follows, :target_account_id, :bigint
+ change_column :imports, :account_id, :bigint
+ change_column :imports, :id, :bigint
+ change_column :media_attachments, :account_id, :bigint
+ change_column :media_attachments, :id, :bigint
+ change_column :mentions, :account_id, :bigint
+ change_column :mentions, :id, :bigint
+ change_column :mutes, :account_id, :bigint
+ change_column :mutes, :id, :bigint
+ change_column :mutes, :target_account_id, :bigint
+ change_column :notifications, :account_id, :bigint
+ change_column :notifications, :from_account_id, :bigint
+ change_column :notifications, :id, :bigint
+ change_column :oauth_access_grants, :application_id, :bigint
+ change_column :oauth_access_grants, :id, :bigint
+ change_column :oauth_access_grants, :resource_owner_id, :bigint
+ change_column :oauth_access_tokens, :application_id, :bigint
+ change_column :oauth_access_tokens, :id, :bigint
+ change_column :oauth_access_tokens, :resource_owner_id, :bigint
+ change_column :oauth_applications, :id, :bigint
+ change_column :oauth_applications, :owner_id, :bigint
+ change_column :reports, :account_id, :bigint
+ change_column :reports, :action_taken_by_account_id, :bigint
+ change_column :reports, :id, :bigint
+ change_column :reports, :target_account_id, :bigint
+ change_column :session_activations, :access_token_id, :bigint
+ change_column :session_activations, :user_id, :bigint
+ change_column :session_activations, :web_push_subscription_id, :bigint
+ change_column :settings, :id, :bigint
+ change_column :settings, :thing_id, :bigint
+ change_column :statuses, :account_id, :bigint
+ change_column :statuses, :application_id, :bigint
+ change_column :statuses, :in_reply_to_account_id, :bigint
+ change_column :stream_entries, :account_id, :bigint
+ change_column :stream_entries, :id, :bigint
+ change_column :subscriptions, :account_id, :bigint
+ change_column :subscriptions, :id, :bigint
+ change_column :tags, :id, :bigint
+ change_column :users, :account_id, :bigint
+ change_column :users, :id, :bigint
+ change_column :web_settings, :id, :bigint
+ change_column :web_settings, :user_id, :bigint
+ end
+
+ def down
+ change_column :account_domain_blocks, :account_id, :integer
+ change_column :account_domain_blocks, :id, :integer
+ change_column :accounts, :id, :integer
+ change_column :blocks, :account_id, :integer
+ change_column :blocks, :id, :integer
+ change_column :blocks, :target_account_id, :integer
+ change_column :conversation_mutes, :account_id, :integer
+ change_column :conversation_mutes, :id, :integer
+ change_column :deprecated_preview_cards, :id, :integer if table_exists?(:deprecated_preview_cards)
+ change_column :domain_blocks, :id, :integer
+ change_column :favourites, :account_id, :integer
+ change_column :favourites, :id, :integer
+ change_column :favourites, :status_id, :integer
+ change_column :follow_requests, :account_id, :integer
+ change_column :follow_requests, :id, :integer
+ change_column :follow_requests, :target_account_id, :integer
+ change_column :follows, :account_id, :integer
+ change_column :follows, :id, :integer
+ change_column :follows, :target_account_id, :integer
+ change_column :imports, :account_id, :integer
+ change_column :imports, :id, :integer
+ change_column :media_attachments, :account_id, :integer
+ change_column :media_attachments, :id, :integer
+ change_column :mentions, :account_id, :integer
+ change_column :mentions, :id, :integer
+ change_column :mutes, :account_id, :integer
+ change_column :mutes, :id, :integer
+ change_column :mutes, :target_account_id, :integer
+ change_column :notifications, :account_id, :integer
+ change_column :notifications, :from_account_id, :integer
+ change_column :notifications, :id, :integer
+ change_column :oauth_access_grants, :application_id, :integer
+ change_column :oauth_access_grants, :id, :integer
+ change_column :oauth_access_grants, :resource_owner_id, :integer
+ change_column :oauth_access_tokens, :application_id, :integer
+ change_column :oauth_access_tokens, :id, :integer
+ change_column :oauth_access_tokens, :resource_owner_id, :integer
+ change_column :oauth_applications, :id, :integer
+ change_column :oauth_applications, :owner_id, :integer
+ change_column :reports, :account_id, :integer
+ change_column :reports, :action_taken_by_account_id, :integer
+ change_column :reports, :id, :integer
+ change_column :reports, :target_account_id, :integer
+ change_column :session_activations, :access_token_id, :integer
+ change_column :session_activations, :user_id, :integer
+ change_column :session_activations, :web_push_subscription_id, :integer
+ change_column :settings, :id, :integer
+ change_column :settings, :thing_id, :integer
+ change_column :statuses, :account_id, :integer
+ change_column :statuses, :application_id, :integer
+ change_column :statuses, :in_reply_to_account_id, :integer
+ change_column :stream_entries, :account_id, :integer
+ change_column :stream_entries, :id, :integer
+ change_column :subscriptions, :account_id, :integer
+ change_column :subscriptions, :id, :integer
+ change_column :tags, :id, :integer
+ change_column :users, :account_id, :integer
+ change_column :users, :id, :integer
+ change_column :web_settings, :id, :integer
+ change_column :web_settings, :user_id, :integer
+ end
+end
diff --git a/db/migrate/20170924022025_ids_to_bigints2.rb b/db/migrate/20170924022025_ids_to_bigints2.rb
new file mode 100644
index 0000000000000..db8ccd919ac97
--- /dev/null
+++ b/db/migrate/20170924022025_ids_to_bigints2.rb
@@ -0,0 +1,9 @@
+class IdsToBigints2 < ActiveRecord::Migration[5.1]
+ def up
+ change_column :statuses_tags, :tag_id, :bigint
+ end
+
+ def down
+ change_column :statuses_tags, :tag_id, :integer
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index b72f8f1a10f91..6b73ebb943322 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,20 +10,20 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema.define(version: 20170917153509) do
+ActiveRecord::Schema.define(version: 20170924022025) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
- create_table "account_domain_blocks", id: :serial, force: :cascade do |t|
- t.integer "account_id"
+ create_table "account_domain_blocks", force: :cascade do |t|
+ t.bigint "account_id"
t.string "domain"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["account_id", "domain"], name: "index_account_domain_blocks_on_account_id_and_domain", unique: true
end
- create_table "accounts", id: :serial, force: :cascade do |t|
+ create_table "accounts", force: :cascade do |t|
t.string "username", default: "", null: false
t.string "domain"
t.string "secret", default: "", null: false
@@ -68,16 +68,16 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.index ["username", "domain"], name: "index_accounts_on_username_and_domain", unique: true
end
- create_table "blocks", id: :serial, force: :cascade do |t|
- t.integer "account_id", null: false
- t.integer "target_account_id", null: false
+ create_table "blocks", force: :cascade do |t|
+ t.bigint "account_id", null: false
+ t.bigint "target_account_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["account_id", "target_account_id"], name: "index_blocks_on_account_id_and_target_account_id", unique: true
end
- create_table "conversation_mutes", id: :serial, force: :cascade do |t|
- t.integer "account_id", null: false
+ create_table "conversation_mutes", force: :cascade do |t|
+ t.bigint "account_id", null: false
t.bigint "conversation_id", null: false
t.index ["account_id", "conversation_id"], name: "index_conversation_mutes_on_account_id_and_conversation_id", unique: true
end
@@ -101,7 +101,7 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.index ["shortcode", "domain"], name: "index_custom_emojis_on_shortcode_and_domain", unique: true
end
- create_table "domain_blocks", id: :serial, force: :cascade do |t|
+ create_table "domain_blocks", force: :cascade do |t|
t.string "domain", default: "", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
@@ -110,9 +110,9 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.index ["domain"], name: "index_domain_blocks_on_domain", unique: true
end
- create_table "favourites", id: :serial, force: :cascade do |t|
- t.integer "account_id", null: false
- t.integer "status_id", null: false
+ create_table "favourites", force: :cascade do |t|
+ t.bigint "account_id", null: false
+ t.bigint "status_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["account_id", "id"], name: "index_favourites_on_account_id_and_id"
@@ -120,24 +120,24 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.index ["status_id"], name: "index_favourites_on_status_id"
end
- create_table "follow_requests", id: :serial, force: :cascade do |t|
- t.integer "account_id", null: false
- t.integer "target_account_id", null: false
+ create_table "follow_requests", force: :cascade do |t|
+ t.bigint "account_id", null: false
+ t.bigint "target_account_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["account_id", "target_account_id"], name: "index_follow_requests_on_account_id_and_target_account_id", unique: true
end
- create_table "follows", id: :serial, force: :cascade do |t|
- t.integer "account_id", null: false
- t.integer "target_account_id", null: false
+ create_table "follows", force: :cascade do |t|
+ t.bigint "account_id", null: false
+ t.bigint "target_account_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["account_id", "target_account_id"], name: "index_follows_on_account_id_and_target_account_id", unique: true
end
- create_table "imports", id: :serial, force: :cascade do |t|
- t.integer "account_id", null: false
+ create_table "imports", force: :cascade do |t|
+ t.bigint "account_id", null: false
t.integer "type", null: false
t.boolean "approved", default: false, null: false
t.datetime "created_at", null: false
@@ -148,14 +148,14 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.datetime "data_updated_at"
end
- create_table "media_attachments", id: :serial, force: :cascade do |t|
+ create_table "media_attachments", force: :cascade do |t|
t.bigint "status_id"
t.string "file_file_name"
t.string "file_content_type"
t.integer "file_file_size"
t.datetime "file_updated_at"
t.string "remote_url", default: "", null: false
- t.integer "account_id"
+ t.bigint "account_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "shortcode"
@@ -166,8 +166,8 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.index ["status_id"], name: "index_media_attachments_on_status_id"
end
- create_table "mentions", id: :serial, force: :cascade do |t|
- t.integer "account_id"
+ create_table "mentions", force: :cascade do |t|
+ t.bigint "account_id"
t.bigint "status_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
@@ -175,30 +175,30 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.index ["status_id"], name: "index_mentions_on_status_id"
end
- create_table "mutes", id: :serial, force: :cascade do |t|
- t.integer "account_id", null: false
- t.integer "target_account_id", null: false
+ create_table "mutes", force: :cascade do |t|
+ t.bigint "account_id", null: false
+ t.bigint "target_account_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.boolean "hide_notifications", default: true, null: false
t.index ["account_id", "target_account_id"], name: "index_mutes_on_account_id_and_target_account_id", unique: true
end
- create_table "notifications", id: :serial, force: :cascade do |t|
- t.integer "account_id"
+ create_table "notifications", force: :cascade do |t|
+ t.bigint "account_id"
t.bigint "activity_id"
t.string "activity_type"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
- t.integer "from_account_id"
+ t.bigint "from_account_id"
t.index ["account_id", "activity_id", "activity_type"], name: "account_activity", unique: true
t.index ["activity_id", "activity_type"], name: "index_notifications_on_activity_id_and_activity_type"
t.index ["id", "account_id", "activity_type"], name: "index_notifications_on_id_and_account_id_and_activity_type", order: { id: :desc }
end
- create_table "oauth_access_grants", id: :serial, force: :cascade do |t|
- t.integer "resource_owner_id", null: false
- t.integer "application_id", null: false
+ create_table "oauth_access_grants", force: :cascade do |t|
+ t.bigint "resource_owner_id", null: false
+ t.bigint "application_id", null: false
t.string "token", null: false
t.integer "expires_in", null: false
t.text "redirect_uri", null: false
@@ -208,9 +208,9 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.index ["token"], name: "index_oauth_access_grants_on_token", unique: true
end
- create_table "oauth_access_tokens", id: :serial, force: :cascade do |t|
- t.integer "resource_owner_id"
- t.integer "application_id"
+ create_table "oauth_access_tokens", force: :cascade do |t|
+ t.bigint "resource_owner_id"
+ t.bigint "application_id"
t.string "token", null: false
t.string "refresh_token"
t.integer "expires_in"
@@ -222,7 +222,7 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.index ["token"], name: "index_oauth_access_tokens_on_token", unique: true
end
- create_table "oauth_applications", id: :serial, force: :cascade do |t|
+ create_table "oauth_applications", force: :cascade do |t|
t.string "name", null: false
t.string "uid", null: false
t.string "secret", null: false
@@ -232,7 +232,7 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.datetime "updated_at"
t.boolean "superapp", default: false, null: false
t.string "website"
- t.integer "owner_id"
+ t.bigint "owner_id"
t.string "owner_type"
t.index ["owner_id", "owner_type"], name: "index_oauth_applications_on_owner_id_and_owner_type"
t.index ["uid"], name: "index_oauth_applications_on_uid", unique: true
@@ -265,37 +265,37 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.index ["status_id", "preview_card_id"], name: "index_preview_cards_statuses_on_status_id_and_preview_card_id"
end
- create_table "reports", id: :serial, force: :cascade do |t|
- t.integer "account_id", null: false
- t.integer "target_account_id", null: false
+ create_table "reports", force: :cascade do |t|
+ t.bigint "account_id", null: false
+ t.bigint "target_account_id", null: false
t.bigint "status_ids", default: [], null: false, array: true
t.text "comment", default: "", null: false
t.boolean "action_taken", default: false, null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
- t.integer "action_taken_by_account_id"
+ t.bigint "action_taken_by_account_id"
t.index ["account_id"], name: "index_reports_on_account_id"
t.index ["target_account_id"], name: "index_reports_on_target_account_id"
end
create_table "session_activations", force: :cascade do |t|
- t.integer "user_id", null: false
+ t.bigint "user_id", null: false
t.string "session_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "user_agent", default: "", null: false
t.inet "ip"
- t.integer "access_token_id"
- t.integer "web_push_subscription_id"
+ t.bigint "access_token_id"
+ t.bigint "web_push_subscription_id"
t.index ["session_id"], name: "index_session_activations_on_session_id", unique: true
t.index ["user_id"], name: "index_session_activations_on_user_id"
end
- create_table "settings", id: :serial, force: :cascade do |t|
+ create_table "settings", force: :cascade do |t|
t.string "var", null: false
t.text "value"
t.string "thing_type"
- t.integer "thing_id"
+ t.bigint "thing_id"
t.datetime "created_at"
t.datetime "updated_at"
t.index ["thing_type", "thing_id", "var"], name: "index_settings_on_thing_type_and_thing_id_and_var", unique: true
@@ -323,7 +323,7 @@ ActiveRecord::Schema.define(version: 20170917153509) do
create_table "statuses", force: :cascade do |t|
t.string "uri"
- t.integer "account_id", null: false
+ t.bigint "account_id", null: false
t.text "text", default: "", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
@@ -332,8 +332,8 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.string "url"
t.boolean "sensitive", default: false, null: false
t.integer "visibility", default: 0, null: false
- t.integer "in_reply_to_account_id"
- t.integer "application_id"
+ t.bigint "in_reply_to_account_id"
+ t.bigint "application_id"
t.text "spoiler_text", default: "", null: false
t.boolean "reply", default: false, null: false
t.integer "favourites_count", default: 0, null: false
@@ -350,13 +350,13 @@ ActiveRecord::Schema.define(version: 20170917153509) do
create_table "statuses_tags", id: false, force: :cascade do |t|
t.bigint "status_id", null: false
- t.integer "tag_id", null: false
+ t.bigint "tag_id", null: false
t.index ["status_id"], name: "index_statuses_tags_on_status_id"
t.index ["tag_id", "status_id"], name: "index_statuses_tags_on_tag_id_and_status_id", unique: true
end
- create_table "stream_entries", id: :serial, force: :cascade do |t|
- t.integer "account_id"
+ create_table "stream_entries", force: :cascade do |t|
+ t.bigint "account_id"
t.bigint "activity_id"
t.string "activity_type"
t.datetime "created_at", null: false
@@ -366,12 +366,12 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.index ["activity_id", "activity_type"], name: "index_stream_entries_on_activity_id_and_activity_type"
end
- create_table "subscriptions", id: :serial, force: :cascade do |t|
+ create_table "subscriptions", force: :cascade do |t|
t.string "callback_url", default: "", null: false
t.string "secret"
t.datetime "expires_at"
t.boolean "confirmed", default: false, null: false
- t.integer "account_id", null: false
+ t.bigint "account_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.datetime "last_successful_delivery_at"
@@ -379,7 +379,7 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.index ["account_id", "callback_url"], name: "index_subscriptions_on_account_id_and_callback_url", unique: true
end
- create_table "tags", id: :serial, force: :cascade do |t|
+ create_table "tags", force: :cascade do |t|
t.string "name", default: "", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
@@ -387,9 +387,9 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.index ["name"], name: "index_tags_on_name", unique: true
end
- create_table "users", id: :serial, force: :cascade do |t|
+ create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false
- t.integer "account_id", null: false
+ t.bigint "account_id", null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "encrypted_password", default: "", null: false
@@ -431,8 +431,8 @@ ActiveRecord::Schema.define(version: 20170917153509) do
t.datetime "updated_at", null: false
end
- create_table "web_settings", id: :serial, force: :cascade do |t|
- t.integer "user_id"
+ create_table "web_settings", force: :cascade do |t|
+ t.bigint "user_id"
t.json "data"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
diff --git a/lib/assets/emoji.json b/lib/assets/emoji.json
deleted file mode 100644
index b12b7602408cd..0000000000000
--- a/lib/assets/emoji.json
+++ /dev/null
@@ -1 +0,0 @@
-{"grinning":{"unicode":"1f600","unicode_alt":"","code_decimal":"😀","name":"grinning face","shortname":":grinning:","category":"people","emoji_order":"1","aliases":[],"aliases_ascii":[],"keywords":["happy","smiley","emotion"]},"grin":{"unicode":"1f601","unicode_alt":"","code_decimal":"😁","name":"grinning face with smiling eyes","shortname":":grin:","category":"people","emoji_order":"2","aliases":[],"aliases_ascii":[],"keywords":["happy","silly","smiley","emotion","good","selfie"]},"joy":{"unicode":"1f602","unicode_alt":"","code_decimal":"😂","name":"face with tears of joy","shortname":":joy:","category":"people","emoji_order":"3","aliases":[],"aliases_ascii":[":')",":'-)"],"keywords":["happy","silly","smiley","cry","laugh","emotion","sarcastic"]},"rofl":{"unicode":"1f923","unicode_alt":"","code_decimal":"🤣","name":"rolling on the floor laughing","shortname":":rofl:","category":"people","emoji_order":"4","aliases":[":rolling_on_the_floor_laughing:"],"aliases_ascii":[],"keywords":[]},"smiley":{"unicode":"1f603","unicode_alt":"","code_decimal":"😃","name":"smiling face with open mouth","shortname":":smiley:","category":"people","emoji_order":"5","aliases":[],"aliases_ascii":[":D",":-D","=D"],"keywords":["happy","smiley","emotion","good"]},"smile":{"unicode":"1f604","unicode_alt":"","code_decimal":"😄","name":"smiling face with open mouth and smiling eyes","shortname":":smile:","category":"people","emoji_order":"6","aliases":[],"aliases_ascii":[],"keywords":["happy","smiley","emotion"]},"sweat_smile":{"unicode":"1f605","unicode_alt":"","code_decimal":"😅","name":"smiling face with open mouth and cold sweat","shortname":":sweat_smile:","category":"people","emoji_order":"7","aliases":[],"aliases_ascii":["':)","':-)","'=)","':D","':-D","'=D"],"keywords":["smiley","workout","sweat","emotion"]},"laughing":{"unicode":"1f606","unicode_alt":"","code_decimal":"😆","name":"smiling face with open mouth and tightly-closed eyes","shortname":":laughing:","category":"people","emoji_order":"8","aliases":[":satisfied:"],"aliases_ascii":[">:)",">;)",">:-)",">=)"],"keywords":["happy","smiley","laugh","emotion"]},"wink":{"unicode":"1f609","unicode_alt":"","code_decimal":"😉","name":"winking face","shortname":":wink:","category":"people","emoji_order":"9","aliases":[],"aliases_ascii":[";)",";-)","*-)","*)",";-]",";]",";D",";^)"],"keywords":["silly","smiley","emotion"]},"blush":{"unicode":"1f60a","unicode_alt":"","code_decimal":"😊","name":"smiling face with smiling eyes","shortname":":blush:","category":"people","emoji_order":"10","aliases":[],"aliases_ascii":[],"keywords":["happy","smiley","emotion","good","beautiful"]},"yum":{"unicode":"1f60b","unicode_alt":"","code_decimal":"😋","name":"face savouring delicious food","shortname":":yum:","category":"people","emoji_order":"11","aliases":[],"aliases_ascii":[],"keywords":["happy","silly","smiley","emotion","sarcastic","good"]},"sunglasses":{"unicode":"1f60e","unicode_alt":"","code_decimal":"😎","name":"smiling face with sunglasses","shortname":":sunglasses:","category":"people","emoji_order":"12","aliases":[],"aliases_ascii":["B-)","B)","8)","8-)","B-D","8-D"],"keywords":["silly","smiley","emojione","glasses","boys night"]},"heart_eyes":{"unicode":"1f60d","unicode_alt":"","code_decimal":"😍","name":"smiling face with heart-shaped eyes","shortname":":heart_eyes:","category":"people","emoji_order":"13","aliases":[],"aliases_ascii":[],"keywords":["happy","smiley","love","sex","heart eyes","emotion","beautiful"]},"kissing_heart":{"unicode":"1f618","unicode_alt":"","code_decimal":"😘","name":"face throwing a kiss","shortname":":kissing_heart:","category":"people","emoji_order":"14","aliases":[],"aliases_ascii":[":*",":-*","=*",":^*"],"keywords":["smiley","love","sexy"]},"kissing":{"unicode":"1f617","unicode_alt":"","code_decimal":"😗","name":"kissing face","shortname":":kissing:","category":"people","emoji_order":"15","aliases":[],"aliases_ascii":[],"keywords":["smiley","sexy"]},"kissing_smiling_eyes":{"unicode":"1f619","unicode_alt":"","code_decimal":"😙","name":"kissing face with smiling eyes","shortname":":kissing_smiling_eyes:","category":"people","emoji_order":"16","aliases":[],"aliases_ascii":[],"keywords":["smiley","sexy"]},"kissing_closed_eyes":{"unicode":"1f61a","unicode_alt":"","code_decimal":"😚","name":"kissing face with closed eyes","shortname":":kissing_closed_eyes:","category":"people","emoji_order":"17","aliases":[],"aliases_ascii":[],"keywords":["smiley","sexy"]},"relaxed":{"unicode":"263a","unicode_alt":"263a-fe0f","code_decimal":"☺","name":"white smiling face","shortname":":relaxed:","category":"people","emoji_order":"18","aliases":[],"aliases_ascii":[],"keywords":["happy","smiley"]},"slight_smile":{"unicode":"1f642","unicode_alt":"","code_decimal":"🙂","name":"slightly smiling face","shortname":":slight_smile:","category":"people","emoji_order":"19","aliases":[":slightly_smiling_face:"],"aliases_ascii":[":)",":-)","=]","=)",":]"],"keywords":["happy","smiley"]},"hugging":{"unicode":"1f917","unicode_alt":"","code_decimal":"🤗","name":"hugging face","shortname":":hugging:","category":"people","emoji_order":"20","aliases":[":hugging_face:"],"aliases_ascii":[],"keywords":["smiley","hug","thank you"]},"thinking":{"unicode":"1f914","unicode_alt":"","code_decimal":"🤔","name":"thinking face","shortname":":thinking:","category":"people","emoji_order":"21","aliases":[":thinking_face:"],"aliases_ascii":[],"keywords":["smiley","thinking","boys night"]},"neutral_face":{"unicode":"1f610","unicode_alt":"","code_decimal":"😐","name":"neutral face","shortname":":neutral_face:","category":"people","emoji_order":"22","aliases":[],"aliases_ascii":[],"keywords":["mad","smiley","shrug","neutral","emotion"]},"expressionless":{"unicode":"1f611","unicode_alt":"","code_decimal":"😑","name":"expressionless face","shortname":":expressionless:","category":"people","emoji_order":"23","aliases":[],"aliases_ascii":["-_-","-__-","-___-"],"keywords":["mad","smiley","neutral","emotion"]},"no_mouth":{"unicode":"1f636","unicode_alt":"","code_decimal":"😶","name":"face without mouth","shortname":":no_mouth:","category":"people","emoji_order":"24","aliases":[],"aliases_ascii":[":-X",":X",":-#",":#","=X","=x",":x",":-x","=#"],"keywords":["mad","smiley","neutral","emotion"]},"rolling_eyes":{"unicode":"1f644","unicode_alt":"","code_decimal":"🙄","name":"face with rolling eyes","shortname":":rolling_eyes:","category":"people","emoji_order":"25","aliases":[":face_with_rolling_eyes:"],"aliases_ascii":[],"keywords":["mad","smiley","rolling eyes","emotion","sarcastic"]},"smirk":{"unicode":"1f60f","unicode_alt":"","code_decimal":"😏","name":"smirking face","shortname":":smirk:","category":"people","emoji_order":"26","aliases":[],"aliases_ascii":[],"keywords":["silly","smiley","sexy","sarcastic"]},"persevere":{"unicode":"1f623","unicode_alt":"","code_decimal":"😣","name":"persevering face","shortname":":persevere:","category":"people","emoji_order":"27","aliases":[],"aliases_ascii":[">.<"],"keywords":["sad","smiley","angry","emotion"]},"disappointed_relieved":{"unicode":"1f625","unicode_alt":"","code_decimal":"😥","name":"disappointed but relieved face","shortname":":disappointed_relieved:","category":"people","emoji_order":"28","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","stressed","sweat","cry","emotion"]},"open_mouth":{"unicode":"1f62e","unicode_alt":"","code_decimal":"😮","name":"face with open mouth","shortname":":open_mouth:","category":"people","emoji_order":"29","aliases":[],"aliases_ascii":[":-O",":O",":-o",":o","O_O",">:O"],"keywords":["smiley","surprised","wow","emotion"]},"zipper_mouth":{"unicode":"1f910","unicode_alt":"","code_decimal":"🤐","name":"zipper-mouth face","shortname":":zipper_mouth:","category":"people","emoji_order":"30","aliases":[":zipper_mouth_face:"],"aliases_ascii":[],"keywords":["mad","smiley"]},"hushed":{"unicode":"1f62f","unicode_alt":"","code_decimal":"😯","name":"hushed face","shortname":":hushed:","category":"people","emoji_order":"31","aliases":[],"aliases_ascii":[],"keywords":["smiley","surprised","wow"]},"sleepy":{"unicode":"1f62a","unicode_alt":"","code_decimal":"😪","name":"sleepy face","shortname":":sleepy:","category":"people","emoji_order":"32","aliases":[],"aliases_ascii":[],"keywords":["smiley","sick","emotion"]},"tired_face":{"unicode":"1f62b","unicode_alt":"","code_decimal":"😫","name":"tired face","shortname":":tired_face:","category":"people","emoji_order":"33","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","tired","emotion"]},"sleeping":{"unicode":"1f634","unicode_alt":"","code_decimal":"😴","name":"sleeping face","shortname":":sleeping:","category":"people","emoji_order":"34","aliases":[],"aliases_ascii":[],"keywords":["smiley","tired","emotion","goodnight"]},"relieved":{"unicode":"1f60c","unicode_alt":"","code_decimal":"😌","name":"relieved face","shortname":":relieved:","category":"people","emoji_order":"35","aliases":[],"aliases_ascii":[],"keywords":["smiley","emotion"]},"nerd":{"unicode":"1f913","unicode_alt":"","code_decimal":"🤓","name":"nerd face","shortname":":nerd:","category":"people","emoji_order":"36","aliases":[":nerd_face:"],"aliases_ascii":[],"keywords":["smiley","glasses"]},"stuck_out_tongue":{"unicode":"1f61b","unicode_alt":"","code_decimal":"😛","name":"face with stuck-out tongue","shortname":":stuck_out_tongue:","category":"people","emoji_order":"37","aliases":[],"aliases_ascii":[":P",":-P","=P",":-p",":p","=p",":-\u00de",":\u00de",":\u00fe",":-\u00fe",":-b",":b","d:"],"keywords":["smiley","sex","emotion"]},"stuck_out_tongue_winking_eye":{"unicode":"1f61c","unicode_alt":"","code_decimal":"😜","name":"face with stuck-out tongue and winking eye","shortname":":stuck_out_tongue_winking_eye:","category":"people","emoji_order":"38","aliases":[],"aliases_ascii":[">:P","X-P","x-p"],"keywords":["happy","smiley","emotion","parties"]},"stuck_out_tongue_closed_eyes":{"unicode":"1f61d","unicode_alt":"","code_decimal":"😝","name":"face with stuck-out tongue and tightly-closed eyes","shortname":":stuck_out_tongue_closed_eyes:","category":"people","emoji_order":"39","aliases":[],"aliases_ascii":[],"keywords":["happy","smiley","emotion"]},"drooling_face":{"unicode":"1f924","unicode_alt":"","code_decimal":"🤤","name":"drooling face","shortname":":drooling_face:","category":"people","emoji_order":"40","aliases":[":drool:"],"aliases_ascii":[],"keywords":[]},"unamused":{"unicode":"1f612","unicode_alt":"","code_decimal":"😒","name":"unamused face","shortname":":unamused:","category":"people","emoji_order":"41","aliases":[],"aliases_ascii":[],"keywords":["sad","mad","smiley","tired","emotion"]},"sweat":{"unicode":"1f613","unicode_alt":"","code_decimal":"😓","name":"face with cold sweat","shortname":":sweat:","category":"people","emoji_order":"42","aliases":[],"aliases_ascii":["':(","':-(","'=("],"keywords":["sad","smiley","stressed","sweat","emotion"]},"pensive":{"unicode":"1f614","unicode_alt":"","code_decimal":"😔","name":"pensive face","shortname":":pensive:","category":"people","emoji_order":"43","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","emotion","rip"]},"confused":{"unicode":"1f615","unicode_alt":"","code_decimal":"😕","name":"confused face","shortname":":confused:","category":"people","emoji_order":"44","aliases":[],"aliases_ascii":[">:\\",">:\/",":-\/",":-.",":\/",":\\","=\/","=\\",":L","=L"],"keywords":["smiley","surprised","emotion"]},"upside_down":{"unicode":"1f643","unicode_alt":"","code_decimal":"🙃","name":"upside-down face","shortname":":upside_down:","category":"people","emoji_order":"45","aliases":[":upside_down_face:"],"aliases_ascii":[],"keywords":["silly","smiley","sarcastic"]},"money_mouth":{"unicode":"1f911","unicode_alt":"","code_decimal":"🤑","name":"money-mouth face","shortname":":money_mouth:","category":"people","emoji_order":"46","aliases":[":money_mouth_face:"],"aliases_ascii":[],"keywords":["smiley","win","money","emotion","boys night"]},"astonished":{"unicode":"1f632","unicode_alt":"","code_decimal":"😲","name":"astonished face","shortname":":astonished:","category":"people","emoji_order":"47","aliases":[],"aliases_ascii":[],"keywords":["smiley","surprised","wow","emotion","omg"]},"frowning2":{"unicode":"2639","unicode_alt":"2639-fe0f","code_decimal":"☹","name":"white frowning face","shortname":":frowning2:","category":"people","emoji_order":"48","aliases":[":white_frowning_face:"],"aliases_ascii":[],"keywords":["sad","smiley","emotion"]},"slight_frown":{"unicode":"1f641","unicode_alt":"","code_decimal":"🙁","name":"slightly frowning face","shortname":":slight_frown:","category":"people","emoji_order":"49","aliases":[":slightly_frowning_face:"],"aliases_ascii":[],"keywords":["sad","smiley","emotion"]},"confounded":{"unicode":"1f616","unicode_alt":"","code_decimal":"😖","name":"confounded face","shortname":":confounded:","category":"people","emoji_order":"50","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","angry","emotion"]},"disappointed":{"unicode":"1f61e","unicode_alt":"","code_decimal":"😞","name":"disappointed face","shortname":":disappointed:","category":"people","emoji_order":"51","aliases":[],"aliases_ascii":[">:[",":-(",":(",":-[",":[","=("],"keywords":["sad","smiley","tired","emotion"]},"worried":{"unicode":"1f61f","unicode_alt":"","code_decimal":"😟","name":"worried face","shortname":":worried:","category":"people","emoji_order":"52","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","emotion"]},"triumph":{"unicode":"1f624","unicode_alt":"","code_decimal":"😤","name":"face with look of triumph","shortname":":triumph:","category":"people","emoji_order":"53","aliases":[],"aliases_ascii":[],"keywords":["mad","smiley","angry","emotion","steam"]},"cry":{"unicode":"1f622","unicode_alt":"","code_decimal":"😢","name":"crying face","shortname":":cry:","category":"people","emoji_order":"54","aliases":[],"aliases_ascii":[":'(",":'-(",";(",";-("],"keywords":["sad","smiley","cry","emotion","rip","heartbreak"]},"sob":{"unicode":"1f62d","unicode_alt":"","code_decimal":"😭","name":"loudly crying face","shortname":":sob:","category":"people","emoji_order":"55","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","cry","emotion","heartbreak"]},"frowning":{"unicode":"1f626","unicode_alt":"","code_decimal":"😦","name":"frowning face with open mouth","shortname":":frowning:","category":"people","emoji_order":"56","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","surprised","emotion"]},"anguished":{"unicode":"1f627","unicode_alt":"","code_decimal":"😧","name":"anguished face","shortname":":anguished:","category":"people","emoji_order":"57","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","surprised","emotion"]},"fearful":{"unicode":"1f628","unicode_alt":"","code_decimal":"😨","name":"fearful face","shortname":":fearful:","category":"people","emoji_order":"58","aliases":[],"aliases_ascii":["D:"],"keywords":["smiley","surprised","emotion"]},"weary":{"unicode":"1f629","unicode_alt":"","code_decimal":"😩","name":"weary face","shortname":":weary:","category":"people","emoji_order":"59","aliases":[],"aliases_ascii":[],"keywords":["sad","smiley","tired","stressed","emotion"]},"grimacing":{"unicode":"1f62c","unicode_alt":"","code_decimal":"😬","name":"grimacing face","shortname":":grimacing:","category":"people","emoji_order":"60","aliases":[],"aliases_ascii":[],"keywords":["silly","smiley","emotion","selfie"]},"cold_sweat":{"unicode":"1f630","unicode_alt":"","code_decimal":"😰","name":"face with open mouth and cold sweat","shortname":":cold_sweat:","category":"people","emoji_order":"61","aliases":[],"aliases_ascii":[],"keywords":["smiley","sweat","emotion"]},"scream":{"unicode":"1f631","unicode_alt":"","code_decimal":"😱","name":"face screaming in fear","shortname":":scream:","category":"people","emoji_order":"62","aliases":[],"aliases_ascii":[],"keywords":["smiley","surprised","wow","emotion","omg"]},"flushed":{"unicode":"1f633","unicode_alt":"","code_decimal":"😳","name":"flushed face","shortname":":flushed:","category":"people","emoji_order":"63","aliases":[],"aliases_ascii":[":$","=$"],"keywords":["smiley","emotion","omg"]},"dizzy_face":{"unicode":"1f635","unicode_alt":"","code_decimal":"😵","name":"dizzy face","shortname":":dizzy_face:","category":"people","emoji_order":"64","aliases":[],"aliases_ascii":["#-)","#)","%-)","%)","X)","X-)"],"keywords":["smiley","surprised","dead","wow","emotion","omg"]},"rage":{"unicode":"1f621","unicode_alt":"","code_decimal":"😡","name":"pouting face","shortname":":rage:","category":"people","emoji_order":"65","aliases":[],"aliases_ascii":[],"keywords":["mad","smiley","angry","emotion"]},"angry":{"unicode":"1f620","unicode_alt":"","code_decimal":"😠","name":"angry face","shortname":":angry:","category":"people","emoji_order":"66","aliases":[],"aliases_ascii":[">:(",">:-(",":@"],"keywords":["mad","smiley","emotion"]},"innocent":{"unicode":"1f607","unicode_alt":"","code_decimal":"😇","name":"smiling face with halo","shortname":":innocent:","category":"people","emoji_order":"67","aliases":[],"aliases_ascii":["O:-)","0:-3","0:3","0:-)","0:)","0;^)","O:)","O;-)","O=)","0;-)","O:-3","O:3"],"keywords":["smiley","emotion"]},"cowboy":{"unicode":"1f920","unicode_alt":"","code_decimal":"🤠","name":"face with cowboy hat","shortname":":cowboy:","category":"people","emoji_order":"68","aliases":[":face_with_cowboy_hat:"],"aliases_ascii":[],"keywords":[]},"clown":{"unicode":"1f921","unicode_alt":"","code_decimal":"🤡","name":"clown face","shortname":":clown:","category":"people","emoji_order":"69","aliases":[":clown_face:"],"aliases_ascii":[],"keywords":[]},"lying_face":{"unicode":"1f925","unicode_alt":"","code_decimal":"🤥","name":"lying face","shortname":":lying_face:","category":"people","emoji_order":"70","aliases":[":liar:"],"aliases_ascii":[],"keywords":[]},"mask":{"unicode":"1f637","unicode_alt":"","code_decimal":"😷","name":"face with medical mask","shortname":":mask:","category":"people","emoji_order":"71","aliases":[],"aliases_ascii":[],"keywords":["smiley","dead","health","sick"]},"thermometer_face":{"unicode":"1f912","unicode_alt":"","code_decimal":"🤒","name":"face with thermometer","shortname":":thermometer_face:","category":"people","emoji_order":"72","aliases":[":face_with_thermometer:"],"aliases_ascii":[],"keywords":["smiley","health","sick","emotion"]},"head_bandage":{"unicode":"1f915","unicode_alt":"","code_decimal":"🤕","name":"face with head-bandage","shortname":":head_bandage:","category":"people","emoji_order":"73","aliases":[":face_with_head_bandage:"],"aliases_ascii":[],"keywords":["smiley","health","sick","emotion"]},"nauseated_face":{"unicode":"1f922","unicode_alt":"","code_decimal":"🤢","name":"nauseated face","shortname":":nauseated_face:","category":"people","emoji_order":"74","aliases":[":sick:"],"aliases_ascii":[],"keywords":[]},"sneezing_face":{"unicode":"1f927","unicode_alt":"","code_decimal":"🤧","name":"sneezing face","shortname":":sneezing_face:","category":"people","emoji_order":"75","aliases":[":sneeze:"],"aliases_ascii":[],"keywords":[]},"smiling_imp":{"unicode":"1f608","unicode_alt":"","code_decimal":"😈","name":"smiling face with horns","shortname":":smiling_imp:","category":"people","emoji_order":"76","aliases":[],"aliases_ascii":[],"keywords":["silly","smiley","angry","monster","devil","boys night"]},"imp":{"unicode":"1f47f","unicode_alt":"","code_decimal":"👿","name":"imp","shortname":":imp:","category":"people","emoji_order":"77","aliases":[],"aliases_ascii":[],"keywords":["smiley","monster","devil","wth"]},"japanese_ogre":{"unicode":"1f479","unicode_alt":"","code_decimal":"👹","name":"japanese ogre","shortname":":japanese_ogre:","category":"people","emoji_order":"78","aliases":[],"aliases_ascii":[],"keywords":["monster"]},"japanese_goblin":{"unicode":"1f47a","unicode_alt":"","code_decimal":"👺","name":"japanese goblin","shortname":":japanese_goblin:","category":"people","emoji_order":"79","aliases":[],"aliases_ascii":[],"keywords":["angry","monster"]},"skull":{"unicode":"1f480","unicode_alt":"","code_decimal":"💀","name":"skull","shortname":":skull:","category":"people","emoji_order":"80","aliases":[":skeleton:"],"aliases_ascii":[],"keywords":["dead","halloween","skull"]},"skull_crossbones":{"unicode":"2620","unicode_alt":"2620-fe0f","code_decimal":"☠","name":"skull and crossbones","shortname":":skull_crossbones:","category":"objects","emoji_order":"81","aliases":[":skull_and_crossbones:"],"aliases_ascii":[],"keywords":["symbol","dead","skull"]},"ghost":{"unicode":"1f47b","unicode_alt":"","code_decimal":"👻","name":"ghost","shortname":":ghost:","category":"people","emoji_order":"82","aliases":[],"aliases_ascii":[],"keywords":["holidays","halloween","monster"]},"alien":{"unicode":"1f47d","unicode_alt":"","code_decimal":"👽","name":"extraterrestrial alien","shortname":":alien:","category":"people","emoji_order":"83","aliases":[],"aliases_ascii":[],"keywords":["space","monster","alien","scientology"]},"space_invader":{"unicode":"1f47e","unicode_alt":"","code_decimal":"👾","name":"alien monster","shortname":":space_invader:","category":"activity","emoji_order":"84","aliases":[],"aliases_ascii":[],"keywords":["monster","alien"]},"robot":{"unicode":"1f916","unicode_alt":"","code_decimal":"🤖","name":"robot face","shortname":":robot:","category":"people","emoji_order":"85","aliases":[":robot_face:"],"aliases_ascii":[],"keywords":["monster","robot"]},"poop":{"unicode":"1f4a9","unicode_alt":"","code_decimal":"💩","name":"pile of poo","shortname":":poop:","category":"people","emoji_order":"86","aliases":[":shit:",":hankey:",":poo:"],"aliases_ascii":[],"keywords":["bathroom","shit","sol","diarrhea"]},"smiley_cat":{"unicode":"1f63a","unicode_alt":"","code_decimal":"😺","name":"smiling cat face with open mouth","shortname":":smiley_cat:","category":"people","emoji_order":"87","aliases":[],"aliases_ascii":[],"keywords":["happy","cat","animal"]},"smile_cat":{"unicode":"1f638","unicode_alt":"","code_decimal":"😸","name":"grinning cat face with smiling eyes","shortname":":smile_cat:","category":"people","emoji_order":"88","aliases":[],"aliases_ascii":[],"keywords":["happy","cat","animal"]},"joy_cat":{"unicode":"1f639","unicode_alt":"","code_decimal":"😹","name":"cat face with tears of joy","shortname":":joy_cat:","category":"people","emoji_order":"89","aliases":[],"aliases_ascii":[],"keywords":["happy","silly","cry","laugh","cat","animal","sarcastic"]},"heart_eyes_cat":{"unicode":"1f63b","unicode_alt":"","code_decimal":"😻","name":"smiling cat face with heart-shaped eyes","shortname":":heart_eyes_cat:","category":"people","emoji_order":"90","aliases":[],"aliases_ascii":[],"keywords":["heart eyes","cat","animal","beautiful"]},"smirk_cat":{"unicode":"1f63c","unicode_alt":"","code_decimal":"😼","name":"cat face with wry smile","shortname":":smirk_cat:","category":"people","emoji_order":"91","aliases":[],"aliases_ascii":[],"keywords":["cat","animal"]},"kissing_cat":{"unicode":"1f63d","unicode_alt":"","code_decimal":"😽","name":"kissing cat face with closed eyes","shortname":":kissing_cat:","category":"people","emoji_order":"92","aliases":[],"aliases_ascii":[],"keywords":["cat","animal"]},"scream_cat":{"unicode":"1f640","unicode_alt":"","code_decimal":"🙀","name":"weary cat face","shortname":":scream_cat:","category":"people","emoji_order":"93","aliases":[],"aliases_ascii":[],"keywords":["cat","animal"]},"crying_cat_face":{"unicode":"1f63f","unicode_alt":"","code_decimal":"😿","name":"crying cat face","shortname":":crying_cat_face:","category":"people","emoji_order":"94","aliases":[],"aliases_ascii":[],"keywords":["cry","cat","animal"]},"pouting_cat":{"unicode":"1f63e","unicode_alt":"","code_decimal":"😾","name":"pouting cat face","shortname":":pouting_cat:","category":"people","emoji_order":"95","aliases":[],"aliases_ascii":[],"keywords":["cat","animal"]},"see_no_evil":{"unicode":"1f648","unicode_alt":"","code_decimal":"🙈","name":"see-no-evil monkey","shortname":":see_no_evil:","category":"nature","emoji_order":"96","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"hear_no_evil":{"unicode":"1f649","unicode_alt":"","code_decimal":"🙉","name":"hear-no-evil monkey","shortname":":hear_no_evil:","category":"nature","emoji_order":"97","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"speak_no_evil":{"unicode":"1f64a","unicode_alt":"","code_decimal":"🙊","name":"speak-no-evil monkey","shortname":":speak_no_evil:","category":"nature","emoji_order":"98","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"boy":{"unicode":"1f466","unicode_alt":"","code_decimal":"👦","name":"boy","shortname":":boy:","category":"people","emoji_order":"99","aliases":[],"aliases_ascii":[],"keywords":["people","baby","diversity"]},"boy_tone1":{"unicode":"1f466-1f3fb","unicode_alt":"","code_decimal":"👦🏻","name":"boy tone 1","shortname":":boy_tone1:","category":"people","emoji_order":"100","aliases":[],"aliases_ascii":[],"keywords":[]},"boy_tone2":{"unicode":"1f466-1f3fc","unicode_alt":"","code_decimal":"👦🏼","name":"boy tone 2","shortname":":boy_tone2:","category":"people","emoji_order":"101","aliases":[],"aliases_ascii":[],"keywords":[]},"boy_tone3":{"unicode":"1f466-1f3fd","unicode_alt":"","code_decimal":"👦🏽","name":"boy tone 3","shortname":":boy_tone3:","category":"people","emoji_order":"102","aliases":[],"aliases_ascii":[],"keywords":[]},"boy_tone4":{"unicode":"1f466-1f3fe","unicode_alt":"","code_decimal":"👦🏾","name":"boy tone 4","shortname":":boy_tone4:","category":"people","emoji_order":"103","aliases":[],"aliases_ascii":[],"keywords":[]},"boy_tone5":{"unicode":"1f466-1f3ff","unicode_alt":"","code_decimal":"👦🏿","name":"boy tone 5","shortname":":boy_tone5:","category":"people","emoji_order":"104","aliases":[],"aliases_ascii":[],"keywords":[]},"girl":{"unicode":"1f467","unicode_alt":"","code_decimal":"👧","name":"girl","shortname":":girl:","category":"people","emoji_order":"105","aliases":[],"aliases_ascii":[],"keywords":["people","women","baby","diversity"]},"girl_tone1":{"unicode":"1f467-1f3fb","unicode_alt":"","code_decimal":"👧🏻","name":"girl tone 1","shortname":":girl_tone1:","category":"people","emoji_order":"106","aliases":[],"aliases_ascii":[],"keywords":[]},"girl_tone2":{"unicode":"1f467-1f3fc","unicode_alt":"","code_decimal":"👧🏼","name":"girl tone 2","shortname":":girl_tone2:","category":"people","emoji_order":"107","aliases":[],"aliases_ascii":[],"keywords":[]},"girl_tone3":{"unicode":"1f467-1f3fd","unicode_alt":"","code_decimal":"👧🏽","name":"girl tone 3","shortname":":girl_tone3:","category":"people","emoji_order":"108","aliases":[],"aliases_ascii":[],"keywords":[]},"girl_tone4":{"unicode":"1f467-1f3fe","unicode_alt":"","code_decimal":"👧🏾","name":"girl tone 4","shortname":":girl_tone4:","category":"people","emoji_order":"109","aliases":[],"aliases_ascii":[],"keywords":[]},"girl_tone5":{"unicode":"1f467-1f3ff","unicode_alt":"","code_decimal":"👧🏿","name":"girl tone 5","shortname":":girl_tone5:","category":"people","emoji_order":"110","aliases":[],"aliases_ascii":[],"keywords":[]},"man":{"unicode":"1f468","unicode_alt":"","code_decimal":"👨","name":"man","shortname":":man:","category":"people","emoji_order":"111","aliases":[],"aliases_ascii":[],"keywords":["people","men","sex","diversity","selfie","boys night"]},"man_tone1":{"unicode":"1f468-1f3fb","unicode_alt":"","code_decimal":"👨🏻","name":"man tone 1","shortname":":man_tone1:","category":"people","emoji_order":"112","aliases":[],"aliases_ascii":[],"keywords":[]},"man_tone2":{"unicode":"1f468-1f3fc","unicode_alt":"","code_decimal":"👨🏼","name":"man tone 2","shortname":":man_tone2:","category":"people","emoji_order":"113","aliases":[],"aliases_ascii":[],"keywords":[]},"man_tone3":{"unicode":"1f468-1f3fd","unicode_alt":"","code_decimal":"👨🏽","name":"man tone 3","shortname":":man_tone3:","category":"people","emoji_order":"114","aliases":[],"aliases_ascii":[],"keywords":[]},"man_tone4":{"unicode":"1f468-1f3fe","unicode_alt":"","code_decimal":"👨🏾","name":"man tone 4","shortname":":man_tone4:","category":"people","emoji_order":"115","aliases":[],"aliases_ascii":[],"keywords":[]},"man_tone5":{"unicode":"1f468-1f3ff","unicode_alt":"","code_decimal":"👨🏿","name":"man tone 5","shortname":":man_tone5:","category":"people","emoji_order":"116","aliases":[],"aliases_ascii":[],"keywords":[]},"woman":{"unicode":"1f469","unicode_alt":"","code_decimal":"👩","name":"woman","shortname":":woman:","category":"people","emoji_order":"117","aliases":[],"aliases_ascii":[],"keywords":["people","women","sex","diversity","feminist","selfie","girls night"]},"woman_tone1":{"unicode":"1f469-1f3fb","unicode_alt":"","code_decimal":"👩🏻","name":"woman tone 1","shortname":":woman_tone1:","category":"people","emoji_order":"118","aliases":[],"aliases_ascii":[],"keywords":[]},"woman_tone2":{"unicode":"1f469-1f3fc","unicode_alt":"","code_decimal":"👩🏼","name":"woman tone 2","shortname":":woman_tone2:","category":"people","emoji_order":"119","aliases":[],"aliases_ascii":[],"keywords":[]},"woman_tone3":{"unicode":"1f469-1f3fd","unicode_alt":"","code_decimal":"👩🏽","name":"woman tone 3","shortname":":woman_tone3:","category":"people","emoji_order":"120","aliases":[],"aliases_ascii":[],"keywords":[]},"woman_tone4":{"unicode":"1f469-1f3fe","unicode_alt":"","code_decimal":"👩🏾","name":"woman tone 4","shortname":":woman_tone4:","category":"people","emoji_order":"121","aliases":[],"aliases_ascii":[],"keywords":[]},"woman_tone5":{"unicode":"1f469-1f3ff","unicode_alt":"","code_decimal":"👩🏿","name":"woman tone 5","shortname":":woman_tone5:","category":"people","emoji_order":"122","aliases":[],"aliases_ascii":[],"keywords":[]},"older_man":{"unicode":"1f474","unicode_alt":"","code_decimal":"👴","name":"older man","shortname":":older_man:","category":"people","emoji_order":"123","aliases":[],"aliases_ascii":[],"keywords":["people","men","old people","diversity"]},"older_man_tone1":{"unicode":"1f474-1f3fb","unicode_alt":"","code_decimal":"👴🏻","name":"older man tone 1","shortname":":older_man_tone1:","category":"people","emoji_order":"124","aliases":[],"aliases_ascii":[],"keywords":[]},"older_man_tone2":{"unicode":"1f474-1f3fc","unicode_alt":"","code_decimal":"👴🏼","name":"older man tone 2","shortname":":older_man_tone2:","category":"people","emoji_order":"125","aliases":[],"aliases_ascii":[],"keywords":[]},"older_man_tone3":{"unicode":"1f474-1f3fd","unicode_alt":"","code_decimal":"👴🏽","name":"older man tone 3","shortname":":older_man_tone3:","category":"people","emoji_order":"126","aliases":[],"aliases_ascii":[],"keywords":[]},"older_man_tone4":{"unicode":"1f474-1f3fe","unicode_alt":"","code_decimal":"👴🏾","name":"older man tone 4","shortname":":older_man_tone4:","category":"people","emoji_order":"127","aliases":[],"aliases_ascii":[],"keywords":[]},"older_man_tone5":{"unicode":"1f474-1f3ff","unicode_alt":"","code_decimal":"👴🏿","name":"older man tone 5","shortname":":older_man_tone5:","category":"people","emoji_order":"128","aliases":[],"aliases_ascii":[],"keywords":[]},"older_woman":{"unicode":"1f475","unicode_alt":"","code_decimal":"👵","name":"older woman","shortname":":older_woman:","category":"people","emoji_order":"129","aliases":[":grandma:"],"aliases_ascii":[],"keywords":["people","old people","diversity"]},"older_woman_tone1":{"unicode":"1f475-1f3fb","unicode_alt":"","code_decimal":"👵🏻","name":"older woman tone 1","shortname":":older_woman_tone1:","category":"people","emoji_order":"130","aliases":[":grandma_tone1:"],"aliases_ascii":[],"keywords":[]},"older_woman_tone2":{"unicode":"1f475-1f3fc","unicode_alt":"","code_decimal":"👵🏼","name":"older woman tone 2","shortname":":older_woman_tone2:","category":"people","emoji_order":"131","aliases":[":grandma_tone2:"],"aliases_ascii":[],"keywords":[]},"older_woman_tone3":{"unicode":"1f475-1f3fd","unicode_alt":"","code_decimal":"👵🏽","name":"older woman tone 3","shortname":":older_woman_tone3:","category":"people","emoji_order":"132","aliases":[":grandma_tone3:"],"aliases_ascii":[],"keywords":[]},"older_woman_tone4":{"unicode":"1f475-1f3fe","unicode_alt":"","code_decimal":"👵🏾","name":"older woman tone 4","shortname":":older_woman_tone4:","category":"people","emoji_order":"133","aliases":[":grandma_tone4:"],"aliases_ascii":[],"keywords":[]},"older_woman_tone5":{"unicode":"1f475-1f3ff","unicode_alt":"","code_decimal":"👵🏿","name":"older woman tone 5","shortname":":older_woman_tone5:","category":"people","emoji_order":"134","aliases":[":grandma_tone5:"],"aliases_ascii":[],"keywords":[]},"baby":{"unicode":"1f476","unicode_alt":"","code_decimal":"👶","name":"baby","shortname":":baby:","category":"people","emoji_order":"135","aliases":[],"aliases_ascii":[],"keywords":["people","baby","diversity"]},"baby_tone1":{"unicode":"1f476-1f3fb","unicode_alt":"","code_decimal":"👶🏻","name":"baby tone 1","shortname":":baby_tone1:","category":"people","emoji_order":"136","aliases":[],"aliases_ascii":[],"keywords":[]},"baby_tone2":{"unicode":"1f476-1f3fc","unicode_alt":"","code_decimal":"👶🏼","name":"baby tone 2","shortname":":baby_tone2:","category":"people","emoji_order":"137","aliases":[],"aliases_ascii":[],"keywords":[]},"baby_tone3":{"unicode":"1f476-1f3fd","unicode_alt":"","code_decimal":"👶🏽","name":"baby tone 3","shortname":":baby_tone3:","category":"people","emoji_order":"138","aliases":[],"aliases_ascii":[],"keywords":[]},"baby_tone4":{"unicode":"1f476-1f3fe","unicode_alt":"","code_decimal":"👶🏾","name":"baby tone 4","shortname":":baby_tone4:","category":"people","emoji_order":"139","aliases":[],"aliases_ascii":[],"keywords":[]},"baby_tone5":{"unicode":"1f476-1f3ff","unicode_alt":"","code_decimal":"👶🏿","name":"baby tone 5","shortname":":baby_tone5:","category":"people","emoji_order":"140","aliases":[],"aliases_ascii":[],"keywords":[]},"angel":{"unicode":"1f47c","unicode_alt":"","code_decimal":"👼","name":"baby angel","shortname":":angel:","category":"people","emoji_order":"141","aliases":[],"aliases_ascii":[],"keywords":["people","diversity","omg"]},"angel_tone1":{"unicode":"1f47c-1f3fb","unicode_alt":"","code_decimal":"👼🏻","name":"baby angel tone 1","shortname":":angel_tone1:","category":"people","emoji_order":"142","aliases":[],"aliases_ascii":[],"keywords":[]},"angel_tone2":{"unicode":"1f47c-1f3fc","unicode_alt":"","code_decimal":"👼🏼","name":"baby angel tone 2","shortname":":angel_tone2:","category":"people","emoji_order":"143","aliases":[],"aliases_ascii":[],"keywords":[]},"angel_tone3":{"unicode":"1f47c-1f3fd","unicode_alt":"","code_decimal":"👼🏽","name":"baby angel tone 3","shortname":":angel_tone3:","category":"people","emoji_order":"144","aliases":[],"aliases_ascii":[],"keywords":[]},"angel_tone4":{"unicode":"1f47c-1f3fe","unicode_alt":"","code_decimal":"👼🏾","name":"baby angel tone 4","shortname":":angel_tone4:","category":"people","emoji_order":"145","aliases":[],"aliases_ascii":[],"keywords":[]},"angel_tone5":{"unicode":"1f47c-1f3ff","unicode_alt":"","code_decimal":"👼🏿","name":"baby angel tone 5","shortname":":angel_tone5:","category":"people","emoji_order":"146","aliases":[],"aliases_ascii":[],"keywords":[]},"cop":{"unicode":"1f46e","unicode_alt":"","code_decimal":"👮","name":"police officer","shortname":":cop:","category":"people","emoji_order":"339","aliases":[],"aliases_ascii":[],"keywords":["people","hat","men","diversity","job","police","911"]},"cop_tone1":{"unicode":"1f46e-1f3fb","unicode_alt":"","code_decimal":"👮🏻","name":"police officer tone 1","shortname":":cop_tone1:","category":"people","emoji_order":"340","aliases":[],"aliases_ascii":[],"keywords":[]},"cop_tone2":{"unicode":"1f46e-1f3fc","unicode_alt":"","code_decimal":"👮🏼","name":"police officer tone 2","shortname":":cop_tone2:","category":"people","emoji_order":"341","aliases":[],"aliases_ascii":[],"keywords":[]},"cop_tone3":{"unicode":"1f46e-1f3fd","unicode_alt":"","code_decimal":"👮🏽","name":"police officer tone 3","shortname":":cop_tone3:","category":"people","emoji_order":"342","aliases":[],"aliases_ascii":[],"keywords":[]},"cop_tone4":{"unicode":"1f46e-1f3fe","unicode_alt":"","code_decimal":"👮🏾","name":"police officer tone 4","shortname":":cop_tone4:","category":"people","emoji_order":"343","aliases":[],"aliases_ascii":[],"keywords":[]},"cop_tone5":{"unicode":"1f46e-1f3ff","unicode_alt":"","code_decimal":"👮🏿","name":"police officer tone 5","shortname":":cop_tone5:","category":"people","emoji_order":"344","aliases":[],"aliases_ascii":[],"keywords":[]},"spy":{"unicode":"1f575","unicode_alt":"1f575-fe0f","code_decimal":"🕵","name":"sleuth or spy","shortname":":spy:","category":"people","emoji_order":"357","aliases":[":sleuth_or_spy:"],"aliases_ascii":[],"keywords":["people","hat","men","glasses","diversity","job"]},"spy_tone1":{"unicode":"1f575-1f3fb","unicode_alt":"","code_decimal":"🕵🏻","name":"sleuth or spy tone 1","shortname":":spy_tone1:","category":"people","emoji_order":"358","aliases":[":sleuth_or_spy_tone1:"],"aliases_ascii":[],"keywords":[]},"spy_tone2":{"unicode":"1f575-1f3fc","unicode_alt":"","code_decimal":"🕵🏼","name":"sleuth or spy tone 2","shortname":":spy_tone2:","category":"people","emoji_order":"359","aliases":[":sleuth_or_spy_tone2:"],"aliases_ascii":[],"keywords":[]},"spy_tone3":{"unicode":"1f575-1f3fd","unicode_alt":"","code_decimal":"🕵🏽","name":"sleuth or spy tone 3","shortname":":spy_tone3:","category":"people","emoji_order":"360","aliases":[":sleuth_or_spy_tone3:"],"aliases_ascii":[],"keywords":[]},"spy_tone4":{"unicode":"1f575-1f3fe","unicode_alt":"","code_decimal":"🕵🏾","name":"sleuth or spy tone 4","shortname":":spy_tone4:","category":"people","emoji_order":"361","aliases":[":sleuth_or_spy_tone4:"],"aliases_ascii":[],"keywords":[]},"spy_tone5":{"unicode":"1f575-1f3ff","unicode_alt":"","code_decimal":"🕵🏿","name":"sleuth or spy tone 5","shortname":":spy_tone5:","category":"people","emoji_order":"362","aliases":[":sleuth_or_spy_tone5:"],"aliases_ascii":[],"keywords":[]},"guardsman":{"unicode":"1f482","unicode_alt":"","code_decimal":"💂","name":"guardsman","shortname":":guardsman:","category":"people","emoji_order":"375","aliases":[],"aliases_ascii":[],"keywords":["people","hat","men","diversity","job"]},"guardsman_tone1":{"unicode":"1f482-1f3fb","unicode_alt":"","code_decimal":"💂🏻","name":"guardsman tone 1","shortname":":guardsman_tone1:","category":"people","emoji_order":"376","aliases":[],"aliases_ascii":[],"keywords":[]},"guardsman_tone2":{"unicode":"1f482-1f3fc","unicode_alt":"","code_decimal":"💂🏼","name":"guardsman tone 2","shortname":":guardsman_tone2:","category":"people","emoji_order":"377","aliases":[],"aliases_ascii":[],"keywords":[]},"guardsman_tone3":{"unicode":"1f482-1f3fd","unicode_alt":"","code_decimal":"💂🏽","name":"guardsman tone 3","shortname":":guardsman_tone3:","category":"people","emoji_order":"378","aliases":[],"aliases_ascii":[],"keywords":[]},"guardsman_tone4":{"unicode":"1f482-1f3fe","unicode_alt":"","code_decimal":"💂🏾","name":"guardsman tone 4","shortname":":guardsman_tone4:","category":"people","emoji_order":"379","aliases":[],"aliases_ascii":[],"keywords":[]},"guardsman_tone5":{"unicode":"1f482-1f3ff","unicode_alt":"","code_decimal":"💂🏿","name":"guardsman tone 5","shortname":":guardsman_tone5:","category":"people","emoji_order":"380","aliases":[],"aliases_ascii":[],"keywords":[]},"construction_worker":{"unicode":"1f477","unicode_alt":"","code_decimal":"👷","name":"construction worker","shortname":":construction_worker:","category":"people","emoji_order":"393","aliases":[],"aliases_ascii":[],"keywords":["people","hat","men","diversity","job"]},"construction_worker_tone1":{"unicode":"1f477-1f3fb","unicode_alt":"","code_decimal":"👷🏻","name":"construction worker tone 1","shortname":":construction_worker_tone1:","category":"people","emoji_order":"394","aliases":[],"aliases_ascii":[],"keywords":[]},"construction_worker_tone2":{"unicode":"1f477-1f3fc","unicode_alt":"","code_decimal":"👷🏼","name":"construction worker tone 2","shortname":":construction_worker_tone2:","category":"people","emoji_order":"395","aliases":[],"aliases_ascii":[],"keywords":[]},"construction_worker_tone3":{"unicode":"1f477-1f3fd","unicode_alt":"","code_decimal":"👷🏽","name":"construction worker tone 3","shortname":":construction_worker_tone3:","category":"people","emoji_order":"396","aliases":[],"aliases_ascii":[],"keywords":[]},"construction_worker_tone4":{"unicode":"1f477-1f3fe","unicode_alt":"","code_decimal":"👷🏾","name":"construction worker tone 4","shortname":":construction_worker_tone4:","category":"people","emoji_order":"397","aliases":[],"aliases_ascii":[],"keywords":[]},"construction_worker_tone5":{"unicode":"1f477-1f3ff","unicode_alt":"","code_decimal":"👷🏿","name":"construction worker tone 5","shortname":":construction_worker_tone5:","category":"people","emoji_order":"398","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_turban":{"unicode":"1f473","unicode_alt":"","code_decimal":"👳","name":"man with turban","shortname":":man_with_turban:","category":"people","emoji_order":"411","aliases":[],"aliases_ascii":[],"keywords":["people","hat","diversity"]},"man_with_turban_tone1":{"unicode":"1f473-1f3fb","unicode_alt":"","code_decimal":"👳🏻","name":"man with turban tone 1","shortname":":man_with_turban_tone1:","category":"people","emoji_order":"412","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_turban_tone2":{"unicode":"1f473-1f3fc","unicode_alt":"","code_decimal":"👳🏼","name":"man with turban tone 2","shortname":":man_with_turban_tone2:","category":"people","emoji_order":"413","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_turban_tone3":{"unicode":"1f473-1f3fd","unicode_alt":"","code_decimal":"👳🏽","name":"man with turban tone 3","shortname":":man_with_turban_tone3:","category":"people","emoji_order":"414","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_turban_tone4":{"unicode":"1f473-1f3fe","unicode_alt":"","code_decimal":"👳🏾","name":"man with turban tone 4","shortname":":man_with_turban_tone4:","category":"people","emoji_order":"415","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_turban_tone5":{"unicode":"1f473-1f3ff","unicode_alt":"","code_decimal":"👳🏿","name":"man with turban tone 5","shortname":":man_with_turban_tone5:","category":"people","emoji_order":"416","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_blond_hair":{"unicode":"1f471","unicode_alt":"","code_decimal":"👱","name":"person with blond hair","shortname":":person_with_blond_hair:","category":"people","emoji_order":"429","aliases":[],"aliases_ascii":[],"keywords":["people","men","diversity"]},"person_with_blond_hair_tone1":{"unicode":"1f471-1f3fb","unicode_alt":"","code_decimal":"👱🏻","name":"person with blond hair tone 1","shortname":":person_with_blond_hair_tone1:","category":"people","emoji_order":"430","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_blond_hair_tone2":{"unicode":"1f471-1f3fc","unicode_alt":"","code_decimal":"👱🏼","name":"person with blond hair tone 2","shortname":":person_with_blond_hair_tone2:","category":"people","emoji_order":"431","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_blond_hair_tone3":{"unicode":"1f471-1f3fd","unicode_alt":"","code_decimal":"👱🏽","name":"person with blond hair tone 3","shortname":":person_with_blond_hair_tone3:","category":"people","emoji_order":"432","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_blond_hair_tone4":{"unicode":"1f471-1f3fe","unicode_alt":"","code_decimal":"👱🏾","name":"person with blond hair tone 4","shortname":":person_with_blond_hair_tone4:","category":"people","emoji_order":"433","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_blond_hair_tone5":{"unicode":"1f471-1f3ff","unicode_alt":"","code_decimal":"👱🏿","name":"person with blond hair tone 5","shortname":":person_with_blond_hair_tone5:","category":"people","emoji_order":"434","aliases":[],"aliases_ascii":[],"keywords":[]},"santa":{"unicode":"1f385","unicode_alt":"","code_decimal":"🎅","name":"father christmas","shortname":":santa:","category":"people","emoji_order":"447","aliases":[],"aliases_ascii":[],"keywords":["people","hat","winter","holidays","christmas","diversity","santa"]},"santa_tone1":{"unicode":"1f385-1f3fb","unicode_alt":"","code_decimal":"🎅🏻","name":"father christmas tone 1","shortname":":santa_tone1:","category":"people","emoji_order":"448","aliases":[],"aliases_ascii":[],"keywords":[]},"santa_tone2":{"unicode":"1f385-1f3fc","unicode_alt":"","code_decimal":"🎅🏼","name":"father christmas tone 2","shortname":":santa_tone2:","category":"people","emoji_order":"449","aliases":[],"aliases_ascii":[],"keywords":[]},"santa_tone3":{"unicode":"1f385-1f3fd","unicode_alt":"","code_decimal":"🎅🏽","name":"father christmas tone 3","shortname":":santa_tone3:","category":"people","emoji_order":"450","aliases":[],"aliases_ascii":[],"keywords":[]},"santa_tone4":{"unicode":"1f385-1f3fe","unicode_alt":"","code_decimal":"🎅🏾","name":"father christmas tone 4","shortname":":santa_tone4:","category":"people","emoji_order":"451","aliases":[],"aliases_ascii":[],"keywords":[]},"santa_tone5":{"unicode":"1f385-1f3ff","unicode_alt":"","code_decimal":"🎅🏿","name":"father christmas tone 5","shortname":":santa_tone5:","category":"people","emoji_order":"452","aliases":[],"aliases_ascii":[],"keywords":[]},"mrs_claus":{"unicode":"1f936","unicode_alt":"","code_decimal":"🤶","name":"mother christmas","shortname":":mrs_claus:","category":"people","emoji_order":"453","aliases":[":mother_christmas:"],"aliases_ascii":[],"keywords":[]},"mrs_claus_tone1":{"unicode":"1f936-1f3fb","unicode_alt":"","code_decimal":"🤶🏻","name":"mother christmas tone 1","shortname":":mrs_claus_tone1:","category":"people","emoji_order":"454","aliases":[":mother_christmas_tone1:"],"aliases_ascii":[],"keywords":[]},"mrs_claus_tone2":{"unicode":"1f936-1f3fc","unicode_alt":"","code_decimal":"🤶🏼","name":"mother christmas tone 2","shortname":":mrs_claus_tone2:","category":"people","emoji_order":"455","aliases":[":mother_christmas_tone2:"],"aliases_ascii":[],"keywords":[]},"mrs_claus_tone3":{"unicode":"1f936-1f3fd","unicode_alt":"","code_decimal":"🤶🏽","name":"mother christmas tone 3","shortname":":mrs_claus_tone3:","category":"people","emoji_order":"456","aliases":[":mother_christmas_tone3:"],"aliases_ascii":[],"keywords":[]},"mrs_claus_tone4":{"unicode":"1f936-1f3fe","unicode_alt":"","code_decimal":"🤶🏾","name":"mother christmas tone 4","shortname":":mrs_claus_tone4:","category":"people","emoji_order":"457","aliases":[":mother_christmas_tone4:"],"aliases_ascii":[],"keywords":[]},"mrs_claus_tone5":{"unicode":"1f936-1f3ff","unicode_alt":"","code_decimal":"🤶🏿","name":"mother christmas tone 5","shortname":":mrs_claus_tone5:","category":"people","emoji_order":"458","aliases":[":mother_christmas_tone5:"],"aliases_ascii":[],"keywords":[]},"princess":{"unicode":"1f478","unicode_alt":"","code_decimal":"👸","name":"princess","shortname":":princess:","category":"people","emoji_order":"459","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity","beautiful","girls night"]},"princess_tone1":{"unicode":"1f478-1f3fb","unicode_alt":"","code_decimal":"👸🏻","name":"princess tone 1","shortname":":princess_tone1:","category":"people","emoji_order":"460","aliases":[],"aliases_ascii":[],"keywords":[]},"princess_tone2":{"unicode":"1f478-1f3fc","unicode_alt":"","code_decimal":"👸🏼","name":"princess tone 2","shortname":":princess_tone2:","category":"people","emoji_order":"461","aliases":[],"aliases_ascii":[],"keywords":[]},"princess_tone3":{"unicode":"1f478-1f3fd","unicode_alt":"","code_decimal":"👸🏽","name":"princess tone 3","shortname":":princess_tone3:","category":"people","emoji_order":"462","aliases":[],"aliases_ascii":[],"keywords":[]},"princess_tone4":{"unicode":"1f478-1f3fe","unicode_alt":"","code_decimal":"👸🏾","name":"princess tone 4","shortname":":princess_tone4:","category":"people","emoji_order":"463","aliases":[],"aliases_ascii":[],"keywords":[]},"princess_tone5":{"unicode":"1f478-1f3ff","unicode_alt":"","code_decimal":"👸🏿","name":"princess tone 5","shortname":":princess_tone5:","category":"people","emoji_order":"464","aliases":[],"aliases_ascii":[],"keywords":[]},"prince":{"unicode":"1f934","unicode_alt":"","code_decimal":"🤴","name":"prince","shortname":":prince:","category":"people","emoji_order":"465","aliases":[],"aliases_ascii":[],"keywords":[]},"prince_tone1":{"unicode":"1f934-1f3fb","unicode_alt":"","code_decimal":"🤴🏻","name":"prince tone 1","shortname":":prince_tone1:","category":"people","emoji_order":"466","aliases":[],"aliases_ascii":[],"keywords":[]},"prince_tone2":{"unicode":"1f934-1f3fc","unicode_alt":"","code_decimal":"🤴🏼","name":"prince tone 2","shortname":":prince_tone2:","category":"people","emoji_order":"467","aliases":[],"aliases_ascii":[],"keywords":[]},"prince_tone3":{"unicode":"1f934-1f3fd","unicode_alt":"","code_decimal":"🤴🏽","name":"prince tone 3","shortname":":prince_tone3:","category":"people","emoji_order":"468","aliases":[],"aliases_ascii":[],"keywords":[]},"prince_tone4":{"unicode":"1f934-1f3fe","unicode_alt":"","code_decimal":"🤴🏾","name":"prince tone 4","shortname":":prince_tone4:","category":"people","emoji_order":"469","aliases":[],"aliases_ascii":[],"keywords":[]},"prince_tone5":{"unicode":"1f934-1f3ff","unicode_alt":"","code_decimal":"🤴🏿","name":"prince tone 5","shortname":":prince_tone5:","category":"people","emoji_order":"470","aliases":[],"aliases_ascii":[],"keywords":[]},"bride_with_veil":{"unicode":"1f470","unicode_alt":"","code_decimal":"👰","name":"bride with veil","shortname":":bride_with_veil:","category":"people","emoji_order":"471","aliases":[],"aliases_ascii":[],"keywords":["people","wedding","women","diversity"]},"bride_with_veil_tone1":{"unicode":"1f470-1f3fb","unicode_alt":"","code_decimal":"👰🏻","name":"bride with veil tone 1","shortname":":bride_with_veil_tone1:","category":"people","emoji_order":"472","aliases":[],"aliases_ascii":[],"keywords":[]},"bride_with_veil_tone2":{"unicode":"1f470-1f3fc","unicode_alt":"","code_decimal":"👰🏼","name":"bride with veil tone 2","shortname":":bride_with_veil_tone2:","category":"people","emoji_order":"473","aliases":[],"aliases_ascii":[],"keywords":[]},"bride_with_veil_tone3":{"unicode":"1f470-1f3fd","unicode_alt":"","code_decimal":"👰🏽","name":"bride with veil tone 3","shortname":":bride_with_veil_tone3:","category":"people","emoji_order":"474","aliases":[],"aliases_ascii":[],"keywords":[]},"bride_with_veil_tone4":{"unicode":"1f470-1f3fe","unicode_alt":"","code_decimal":"👰🏾","name":"bride with veil tone 4","shortname":":bride_with_veil_tone4:","category":"people","emoji_order":"475","aliases":[],"aliases_ascii":[],"keywords":[]},"bride_with_veil_tone5":{"unicode":"1f470-1f3ff","unicode_alt":"","code_decimal":"👰🏿","name":"bride with veil tone 5","shortname":":bride_with_veil_tone5:","category":"people","emoji_order":"476","aliases":[],"aliases_ascii":[],"keywords":[]},"man_in_tuxedo":{"unicode":"1f935","unicode_alt":"","code_decimal":"🤵","name":"man in tuxedo","shortname":":man_in_tuxedo:","category":"people","emoji_order":"477","aliases":[],"aliases_ascii":[],"keywords":[]},"man_in_tuxedo_tone1":{"unicode":"1f935-1f3fb","unicode_alt":"","code_decimal":"🤵🏻","name":"man in tuxedo tone 1","shortname":":man_in_tuxedo_tone1:","category":"people","emoji_order":"478","aliases":[":tuxedo_tone1:"],"aliases_ascii":[],"keywords":[]},"man_in_tuxedo_tone2":{"unicode":"1f935-1f3fc","unicode_alt":"","code_decimal":"🤵🏼","name":"man in tuxedo tone 2","shortname":":man_in_tuxedo_tone2:","category":"people","emoji_order":"479","aliases":[":tuxedo_tone2:"],"aliases_ascii":[],"keywords":[]},"man_in_tuxedo_tone3":{"unicode":"1f935-1f3fd","unicode_alt":"","code_decimal":"🤵🏽","name":"man in tuxedo tone 3","shortname":":man_in_tuxedo_tone3:","category":"people","emoji_order":"480","aliases":[":tuxedo_tone3:"],"aliases_ascii":[],"keywords":[]},"man_in_tuxedo_tone4":{"unicode":"1f935-1f3fe","unicode_alt":"","code_decimal":"🤵🏾","name":"man in tuxedo tone 4","shortname":":man_in_tuxedo_tone4:","category":"people","emoji_order":"481","aliases":[":tuxedo_tone4:"],"aliases_ascii":[],"keywords":[]},"man_in_tuxedo_tone5":{"unicode":"1f935-1f3ff","unicode_alt":"","code_decimal":"🤵🏿","name":"man in tuxedo tone 5","shortname":":man_in_tuxedo_tone5:","category":"people","emoji_order":"482","aliases":[":tuxedo_tone5:"],"aliases_ascii":[],"keywords":[]},"pregnant_woman":{"unicode":"1f930","unicode_alt":"","code_decimal":"🤰","name":"pregnant woman","shortname":":pregnant_woman:","category":"people","emoji_order":"483","aliases":[":expecting_woman:"],"aliases_ascii":[],"keywords":[]},"pregnant_woman_tone1":{"unicode":"1f930-1f3fb","unicode_alt":"","code_decimal":"🤰🏻","name":"pregnant woman tone 1","shortname":":pregnant_woman_tone1:","category":"people","emoji_order":"484","aliases":[":expecting_woman_tone1:"],"aliases_ascii":[],"keywords":[]},"pregnant_woman_tone2":{"unicode":"1f930-1f3fc","unicode_alt":"","code_decimal":"🤰🏼","name":"pregnant woman tone 2","shortname":":pregnant_woman_tone2:","category":"people","emoji_order":"485","aliases":[":expecting_woman_tone2:"],"aliases_ascii":[],"keywords":[]},"pregnant_woman_tone3":{"unicode":"1f930-1f3fd","unicode_alt":"","code_decimal":"🤰🏽","name":"pregnant woman tone 3","shortname":":pregnant_woman_tone3:","category":"people","emoji_order":"486","aliases":[":expecting_woman_tone3:"],"aliases_ascii":[],"keywords":[]},"pregnant_woman_tone4":{"unicode":"1f930-1f3fe","unicode_alt":"","code_decimal":"🤰🏾","name":"pregnant woman tone 4","shortname":":pregnant_woman_tone4:","category":"people","emoji_order":"487","aliases":[":expecting_woman_tone4:"],"aliases_ascii":[],"keywords":[]},"pregnant_woman_tone5":{"unicode":"1f930-1f3ff","unicode_alt":"","code_decimal":"🤰🏿","name":"pregnant woman tone 5","shortname":":pregnant_woman_tone5:","category":"people","emoji_order":"488","aliases":[":expecting_woman_tone5:"],"aliases_ascii":[],"keywords":[]},"man_with_gua_pi_mao":{"unicode":"1f472","unicode_alt":"","code_decimal":"👲","name":"man with gua pi mao","shortname":":man_with_gua_pi_mao:","category":"people","emoji_order":"489","aliases":[],"aliases_ascii":[],"keywords":["people","hat","men","diversity"]},"man_with_gua_pi_mao_tone1":{"unicode":"1f472-1f3fb","unicode_alt":"","code_decimal":"👲🏻","name":"man with gua pi mao tone 1","shortname":":man_with_gua_pi_mao_tone1:","category":"people","emoji_order":"490","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_gua_pi_mao_tone2":{"unicode":"1f472-1f3fc","unicode_alt":"","code_decimal":"👲🏼","name":"man with gua pi mao tone 2","shortname":":man_with_gua_pi_mao_tone2:","category":"people","emoji_order":"491","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_gua_pi_mao_tone3":{"unicode":"1f472-1f3fd","unicode_alt":"","code_decimal":"👲🏽","name":"man with gua pi mao tone 3","shortname":":man_with_gua_pi_mao_tone3:","category":"people","emoji_order":"492","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_gua_pi_mao_tone4":{"unicode":"1f472-1f3fe","unicode_alt":"","code_decimal":"👲🏾","name":"man with gua pi mao tone 4","shortname":":man_with_gua_pi_mao_tone4:","category":"people","emoji_order":"493","aliases":[],"aliases_ascii":[],"keywords":[]},"man_with_gua_pi_mao_tone5":{"unicode":"1f472-1f3ff","unicode_alt":"","code_decimal":"👲🏿","name":"man with gua pi mao tone 5","shortname":":man_with_gua_pi_mao_tone5:","category":"people","emoji_order":"494","aliases":[],"aliases_ascii":[],"keywords":[]},"person_frowning":{"unicode":"1f64d","unicode_alt":"","code_decimal":"🙍","name":"person frowning","shortname":":person_frowning:","category":"people","emoji_order":"495","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity"]},"person_frowning_tone1":{"unicode":"1f64d-1f3fb","unicode_alt":"","code_decimal":"🙍🏻","name":"person frowning tone 1","shortname":":person_frowning_tone1:","category":"people","emoji_order":"496","aliases":[],"aliases_ascii":[],"keywords":[]},"person_frowning_tone2":{"unicode":"1f64d-1f3fc","unicode_alt":"","code_decimal":"🙍🏼","name":"person frowning tone 2","shortname":":person_frowning_tone2:","category":"people","emoji_order":"497","aliases":[],"aliases_ascii":[],"keywords":[]},"person_frowning_tone3":{"unicode":"1f64d-1f3fd","unicode_alt":"","code_decimal":"🙍🏽","name":"person frowning tone 3","shortname":":person_frowning_tone3:","category":"people","emoji_order":"498","aliases":[],"aliases_ascii":[],"keywords":[]},"person_frowning_tone4":{"unicode":"1f64d-1f3fe","unicode_alt":"","code_decimal":"🙍🏾","name":"person frowning tone 4","shortname":":person_frowning_tone4:","category":"people","emoji_order":"499","aliases":[],"aliases_ascii":[],"keywords":[]},"person_frowning_tone5":{"unicode":"1f64d-1f3ff","unicode_alt":"","code_decimal":"🙍🏿","name":"person frowning tone 5","shortname":":person_frowning_tone5:","category":"people","emoji_order":"500","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_pouting_face":{"unicode":"1f64e","unicode_alt":"","code_decimal":"🙎","name":"person with pouting face","shortname":":person_with_pouting_face:","category":"people","emoji_order":"513","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity"]},"person_with_pouting_face_tone1":{"unicode":"1f64e-1f3fb","unicode_alt":"","code_decimal":"🙎🏻","name":"person with pouting face tone1","shortname":":person_with_pouting_face_tone1:","category":"people","emoji_order":"514","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_pouting_face_tone2":{"unicode":"1f64e-1f3fc","unicode_alt":"","code_decimal":"🙎🏼","name":"person with pouting face tone2","shortname":":person_with_pouting_face_tone2:","category":"people","emoji_order":"515","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_pouting_face_tone3":{"unicode":"1f64e-1f3fd","unicode_alt":"","code_decimal":"🙎🏽","name":"person with pouting face tone3","shortname":":person_with_pouting_face_tone3:","category":"people","emoji_order":"516","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_pouting_face_tone4":{"unicode":"1f64e-1f3fe","unicode_alt":"","code_decimal":"🙎🏾","name":"person with pouting face tone4","shortname":":person_with_pouting_face_tone4:","category":"people","emoji_order":"517","aliases":[],"aliases_ascii":[],"keywords":[]},"person_with_pouting_face_tone5":{"unicode":"1f64e-1f3ff","unicode_alt":"","code_decimal":"🙎🏿","name":"person with pouting face tone5","shortname":":person_with_pouting_face_tone5:","category":"people","emoji_order":"518","aliases":[],"aliases_ascii":[],"keywords":[]},"no_good":{"unicode":"1f645","unicode_alt":"","code_decimal":"🙅","name":"face with no good gesture","shortname":":no_good:","category":"people","emoji_order":"531","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity","girls night"]},"no_good_tone1":{"unicode":"1f645-1f3fb","unicode_alt":"","code_decimal":"🙅🏻","name":"face with no good gesture tone 1","shortname":":no_good_tone1:","category":"people","emoji_order":"532","aliases":[],"aliases_ascii":[],"keywords":[]},"no_good_tone2":{"unicode":"1f645-1f3fc","unicode_alt":"","code_decimal":"🙅🏼","name":"face with no good gesture tone 2","shortname":":no_good_tone2:","category":"people","emoji_order":"533","aliases":[],"aliases_ascii":[],"keywords":[]},"no_good_tone3":{"unicode":"1f645-1f3fd","unicode_alt":"","code_decimal":"🙅🏽","name":"face with no good gesture tone 3","shortname":":no_good_tone3:","category":"people","emoji_order":"534","aliases":[],"aliases_ascii":[],"keywords":[]},"no_good_tone4":{"unicode":"1f645-1f3fe","unicode_alt":"","code_decimal":"🙅🏾","name":"face with no good gesture tone 4","shortname":":no_good_tone4:","category":"people","emoji_order":"535","aliases":[],"aliases_ascii":[],"keywords":[]},"no_good_tone5":{"unicode":"1f645-1f3ff","unicode_alt":"","code_decimal":"🙅🏿","name":"face with no good gesture tone 5","shortname":":no_good_tone5:","category":"people","emoji_order":"536","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_woman":{"unicode":"1f646","unicode_alt":"","code_decimal":"🙆","name":"face with ok gesture","shortname":":ok_woman:","category":"people","emoji_order":"549","aliases":[],"aliases_ascii":["*\\0\/*","\\0\/","*\\O\/*","\\O\/"],"keywords":["people","women","diversity"]},"ok_woman_tone1":{"unicode":"1f646-1f3fb","unicode_alt":"","code_decimal":"🙆🏻","name":"face with ok gesture tone1","shortname":":ok_woman_tone1:","category":"people","emoji_order":"550","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_woman_tone2":{"unicode":"1f646-1f3fc","unicode_alt":"","code_decimal":"🙆🏼","name":"face with ok gesture tone2","shortname":":ok_woman_tone2:","category":"people","emoji_order":"551","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_woman_tone3":{"unicode":"1f646-1f3fd","unicode_alt":"","code_decimal":"🙆🏽","name":"face with ok gesture tone3","shortname":":ok_woman_tone3:","category":"people","emoji_order":"552","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_woman_tone4":{"unicode":"1f646-1f3fe","unicode_alt":"","code_decimal":"🙆🏾","name":"face with ok gesture tone4","shortname":":ok_woman_tone4:","category":"people","emoji_order":"553","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_woman_tone5":{"unicode":"1f646-1f3ff","unicode_alt":"","code_decimal":"🙆🏿","name":"face with ok gesture tone5","shortname":":ok_woman_tone5:","category":"people","emoji_order":"554","aliases":[],"aliases_ascii":[],"keywords":[]},"information_desk_person":{"unicode":"1f481","unicode_alt":"","code_decimal":"💁","name":"information desk person","shortname":":information_desk_person:","category":"people","emoji_order":"567","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity"]},"information_desk_person_tone1":{"unicode":"1f481-1f3fb","unicode_alt":"","code_decimal":"💁🏻","name":"information desk person tone 1","shortname":":information_desk_person_tone1:","category":"people","emoji_order":"568","aliases":[],"aliases_ascii":[],"keywords":[]},"information_desk_person_tone2":{"unicode":"1f481-1f3fc","unicode_alt":"","code_decimal":"💁🏼","name":"information desk person tone 2","shortname":":information_desk_person_tone2:","category":"people","emoji_order":"569","aliases":[],"aliases_ascii":[],"keywords":[]},"information_desk_person_tone3":{"unicode":"1f481-1f3fd","unicode_alt":"","code_decimal":"💁🏽","name":"information desk person tone 3","shortname":":information_desk_person_tone3:","category":"people","emoji_order":"570","aliases":[],"aliases_ascii":[],"keywords":[]},"information_desk_person_tone4":{"unicode":"1f481-1f3fe","unicode_alt":"","code_decimal":"💁🏾","name":"information desk person tone 4","shortname":":information_desk_person_tone4:","category":"people","emoji_order":"571","aliases":[],"aliases_ascii":[],"keywords":[]},"information_desk_person_tone5":{"unicode":"1f481-1f3ff","unicode_alt":"","code_decimal":"💁🏿","name":"information desk person tone 5","shortname":":information_desk_person_tone5:","category":"people","emoji_order":"572","aliases":[],"aliases_ascii":[],"keywords":[]},"raising_hand":{"unicode":"1f64b","unicode_alt":"","code_decimal":"🙋","name":"happy person raising one hand","shortname":":raising_hand:","category":"people","emoji_order":"585","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity"]},"raising_hand_tone1":{"unicode":"1f64b-1f3fb","unicode_alt":"","code_decimal":"🙋🏻","name":"happy person raising one hand tone1","shortname":":raising_hand_tone1:","category":"people","emoji_order":"586","aliases":[],"aliases_ascii":[],"keywords":[]},"raising_hand_tone2":{"unicode":"1f64b-1f3fc","unicode_alt":"","code_decimal":"🙋🏼","name":"happy person raising one hand tone2","shortname":":raising_hand_tone2:","category":"people","emoji_order":"587","aliases":[],"aliases_ascii":[],"keywords":[]},"raising_hand_tone3":{"unicode":"1f64b-1f3fd","unicode_alt":"","code_decimal":"🙋🏽","name":"happy person raising one hand tone3","shortname":":raising_hand_tone3:","category":"people","emoji_order":"588","aliases":[],"aliases_ascii":[],"keywords":[]},"raising_hand_tone4":{"unicode":"1f64b-1f3fe","unicode_alt":"","code_decimal":"🙋🏾","name":"happy person raising one hand tone4","shortname":":raising_hand_tone4:","category":"people","emoji_order":"589","aliases":[],"aliases_ascii":[],"keywords":[]},"raising_hand_tone5":{"unicode":"1f64b-1f3ff","unicode_alt":"","code_decimal":"🙋🏿","name":"happy person raising one hand tone5","shortname":":raising_hand_tone5:","category":"people","emoji_order":"590","aliases":[],"aliases_ascii":[],"keywords":[]},"bow":{"unicode":"1f647","unicode_alt":"","code_decimal":"🙇","name":"person bowing deeply","shortname":":bow:","category":"people","emoji_order":"603","aliases":[],"aliases_ascii":[],"keywords":["people","pray","diversity"]},"bow_tone1":{"unicode":"1f647-1f3fb","unicode_alt":"","code_decimal":"🙇🏻","name":"person bowing deeply tone 1","shortname":":bow_tone1:","category":"people","emoji_order":"604","aliases":[],"aliases_ascii":[],"keywords":[]},"bow_tone2":{"unicode":"1f647-1f3fc","unicode_alt":"","code_decimal":"🙇🏼","name":"person bowing deeply tone 2","shortname":":bow_tone2:","category":"people","emoji_order":"605","aliases":[],"aliases_ascii":[],"keywords":[]},"bow_tone3":{"unicode":"1f647-1f3fd","unicode_alt":"","code_decimal":"🙇🏽","name":"person bowing deeply tone 3","shortname":":bow_tone3:","category":"people","emoji_order":"606","aliases":[],"aliases_ascii":[],"keywords":[]},"bow_tone4":{"unicode":"1f647-1f3fe","unicode_alt":"","code_decimal":"🙇🏾","name":"person bowing deeply tone 4","shortname":":bow_tone4:","category":"people","emoji_order":"607","aliases":[],"aliases_ascii":[],"keywords":[]},"bow_tone5":{"unicode":"1f647-1f3ff","unicode_alt":"","code_decimal":"🙇🏿","name":"person bowing deeply tone 5","shortname":":bow_tone5:","category":"people","emoji_order":"608","aliases":[],"aliases_ascii":[],"keywords":[]},"face_palm":{"unicode":"1f926","unicode_alt":"","code_decimal":"🤦","name":"face palm","shortname":":face_palm:","category":"people","emoji_order":"621","aliases":[":facepalm:"],"aliases_ascii":[],"keywords":[]},"face_palm_tone1":{"unicode":"1f926-1f3fb","unicode_alt":"","code_decimal":"🤦🏻","name":"face palm tone 1","shortname":":face_palm_tone1:","category":"people","emoji_order":"622","aliases":[":facepalm_tone1:"],"aliases_ascii":[],"keywords":[]},"face_palm_tone2":{"unicode":"1f926-1f3fc","unicode_alt":"","code_decimal":"🤦🏼","name":"face palm tone 2","shortname":":face_palm_tone2:","category":"people","emoji_order":"623","aliases":[":facepalm_tone2:"],"aliases_ascii":[],"keywords":[]},"face_palm_tone3":{"unicode":"1f926-1f3fd","unicode_alt":"","code_decimal":"🤦🏽","name":"face palm tone 3","shortname":":face_palm_tone3:","category":"people","emoji_order":"624","aliases":[":facepalm_tone3:"],"aliases_ascii":[],"keywords":[]},"face_palm_tone4":{"unicode":"1f926-1f3fe","unicode_alt":"","code_decimal":"🤦🏾","name":"face palm tone 4","shortname":":face_palm_tone4:","category":"people","emoji_order":"625","aliases":[":facepalm_tone4:"],"aliases_ascii":[],"keywords":[]},"face_palm_tone5":{"unicode":"1f926-1f3ff","unicode_alt":"","code_decimal":"🤦🏿","name":"face palm tone 5","shortname":":face_palm_tone5:","category":"people","emoji_order":"626","aliases":[":facepalm_tone5:"],"aliases_ascii":[],"keywords":[]},"shrug":{"unicode":"1f937","unicode_alt":"","code_decimal":"🤷","name":"shrug","shortname":":shrug:","category":"people","emoji_order":"639","aliases":[],"aliases_ascii":[],"keywords":[]},"shrug_tone1":{"unicode":"1f937-1f3fb","unicode_alt":"","code_decimal":"🤷🏻","name":"shrug tone 1","shortname":":shrug_tone1:","category":"people","emoji_order":"640","aliases":[],"aliases_ascii":[],"keywords":[]},"shrug_tone2":{"unicode":"1f937-1f3fc","unicode_alt":"","code_decimal":"🤷🏼","name":"shrug tone 2","shortname":":shrug_tone2:","category":"people","emoji_order":"641","aliases":[],"aliases_ascii":[],"keywords":[]},"shrug_tone3":{"unicode":"1f937-1f3fd","unicode_alt":"","code_decimal":"🤷🏽","name":"shrug tone 3","shortname":":shrug_tone3:","category":"people","emoji_order":"642","aliases":[],"aliases_ascii":[],"keywords":[]},"shrug_tone4":{"unicode":"1f937-1f3fe","unicode_alt":"","code_decimal":"🤷🏾","name":"shrug tone 4","shortname":":shrug_tone4:","category":"people","emoji_order":"643","aliases":[],"aliases_ascii":[],"keywords":[]},"shrug_tone5":{"unicode":"1f937-1f3ff","unicode_alt":"","code_decimal":"🤷🏿","name":"shrug tone 5","shortname":":shrug_tone5:","category":"people","emoji_order":"644","aliases":[],"aliases_ascii":[],"keywords":[]},"massage":{"unicode":"1f486","unicode_alt":"","code_decimal":"💆","name":"face massage","shortname":":massage:","category":"people","emoji_order":"657","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity"]},"massage_tone1":{"unicode":"1f486-1f3fb","unicode_alt":"","code_decimal":"💆🏻","name":"face massage tone 1","shortname":":massage_tone1:","category":"people","emoji_order":"658","aliases":[],"aliases_ascii":[],"keywords":[]},"massage_tone2":{"unicode":"1f486-1f3fc","unicode_alt":"","code_decimal":"💆🏼","name":"face massage tone 2","shortname":":massage_tone2:","category":"people","emoji_order":"659","aliases":[],"aliases_ascii":[],"keywords":[]},"massage_tone3":{"unicode":"1f486-1f3fd","unicode_alt":"","code_decimal":"💆🏽","name":"face massage tone 3","shortname":":massage_tone3:","category":"people","emoji_order":"660","aliases":[],"aliases_ascii":[],"keywords":[]},"massage_tone4":{"unicode":"1f486-1f3fe","unicode_alt":"","code_decimal":"💆🏾","name":"face massage tone 4","shortname":":massage_tone4:","category":"people","emoji_order":"661","aliases":[],"aliases_ascii":[],"keywords":[]},"massage_tone5":{"unicode":"1f486-1f3ff","unicode_alt":"","code_decimal":"💆🏿","name":"face massage tone 5","shortname":":massage_tone5:","category":"people","emoji_order":"662","aliases":[],"aliases_ascii":[],"keywords":[]},"haircut":{"unicode":"1f487","unicode_alt":"","code_decimal":"💇","name":"haircut","shortname":":haircut:","category":"people","emoji_order":"675","aliases":[],"aliases_ascii":[],"keywords":["people","women","diversity"]},"haircut_tone1":{"unicode":"1f487-1f3fb","unicode_alt":"","code_decimal":"💇🏻","name":"haircut tone 1","shortname":":haircut_tone1:","category":"people","emoji_order":"676","aliases":[],"aliases_ascii":[],"keywords":[]},"haircut_tone2":{"unicode":"1f487-1f3fc","unicode_alt":"","code_decimal":"💇🏼","name":"haircut tone 2","shortname":":haircut_tone2:","category":"people","emoji_order":"677","aliases":[],"aliases_ascii":[],"keywords":[]},"haircut_tone3":{"unicode":"1f487-1f3fd","unicode_alt":"","code_decimal":"💇🏽","name":"haircut tone 3","shortname":":haircut_tone3:","category":"people","emoji_order":"678","aliases":[],"aliases_ascii":[],"keywords":[]},"haircut_tone4":{"unicode":"1f487-1f3fe","unicode_alt":"","code_decimal":"💇🏾","name":"haircut tone 4","shortname":":haircut_tone4:","category":"people","emoji_order":"679","aliases":[],"aliases_ascii":[],"keywords":[]},"haircut_tone5":{"unicode":"1f487-1f3ff","unicode_alt":"","code_decimal":"💇🏿","name":"haircut tone 5","shortname":":haircut_tone5:","category":"people","emoji_order":"680","aliases":[],"aliases_ascii":[],"keywords":[]},"walking":{"unicode":"1f6b6","unicode_alt":"","code_decimal":"🚶","name":"pedestrian","shortname":":walking:","category":"people","emoji_order":"693","aliases":[],"aliases_ascii":[],"keywords":["people","men","diversity"]},"walking_tone1":{"unicode":"1f6b6-1f3fb","unicode_alt":"","code_decimal":"🚶🏻","name":"pedestrian tone 1","shortname":":walking_tone1:","category":"people","emoji_order":"694","aliases":[],"aliases_ascii":[],"keywords":[]},"walking_tone2":{"unicode":"1f6b6-1f3fc","unicode_alt":"","code_decimal":"🚶🏼","name":"pedestrian tone 2","shortname":":walking_tone2:","category":"people","emoji_order":"695","aliases":[],"aliases_ascii":[],"keywords":[]},"walking_tone3":{"unicode":"1f6b6-1f3fd","unicode_alt":"","code_decimal":"🚶🏽","name":"pedestrian tone 3","shortname":":walking_tone3:","category":"people","emoji_order":"696","aliases":[],"aliases_ascii":[],"keywords":[]},"walking_tone4":{"unicode":"1f6b6-1f3fe","unicode_alt":"","code_decimal":"🚶🏾","name":"pedestrian tone 4","shortname":":walking_tone4:","category":"people","emoji_order":"697","aliases":[],"aliases_ascii":[],"keywords":[]},"walking_tone5":{"unicode":"1f6b6-1f3ff","unicode_alt":"","code_decimal":"🚶🏿","name":"pedestrian tone 5","shortname":":walking_tone5:","category":"people","emoji_order":"698","aliases":[],"aliases_ascii":[],"keywords":[]},"runner":{"unicode":"1f3c3","unicode_alt":"","code_decimal":"🏃","name":"runner","shortname":":runner:","category":"people","emoji_order":"711","aliases":[],"aliases_ascii":[],"keywords":["people","men","diversity","boys night","run"]},"runner_tone1":{"unicode":"1f3c3-1f3fb","unicode_alt":"","code_decimal":"🏃🏻","name":"runner tone 1","shortname":":runner_tone1:","category":"people","emoji_order":"712","aliases":[],"aliases_ascii":[],"keywords":[]},"runner_tone2":{"unicode":"1f3c3-1f3fc","unicode_alt":"","code_decimal":"🏃🏼","name":"runner tone 2","shortname":":runner_tone2:","category":"people","emoji_order":"713","aliases":[],"aliases_ascii":[],"keywords":[]},"runner_tone3":{"unicode":"1f3c3-1f3fd","unicode_alt":"","code_decimal":"🏃🏽","name":"runner tone 3","shortname":":runner_tone3:","category":"people","emoji_order":"714","aliases":[],"aliases_ascii":[],"keywords":[]},"runner_tone4":{"unicode":"1f3c3-1f3fe","unicode_alt":"","code_decimal":"🏃🏾","name":"runner tone 4","shortname":":runner_tone4:","category":"people","emoji_order":"715","aliases":[],"aliases_ascii":[],"keywords":[]},"runner_tone5":{"unicode":"1f3c3-1f3ff","unicode_alt":"","code_decimal":"🏃🏿","name":"runner tone 5","shortname":":runner_tone5:","category":"people","emoji_order":"716","aliases":[],"aliases_ascii":[],"keywords":[]},"dancer":{"unicode":"1f483","unicode_alt":"","code_decimal":"💃","name":"dancer","shortname":":dancer:","category":"people","emoji_order":"729","aliases":[],"aliases_ascii":[],"keywords":["people","women","sexy","diversity","girls night","dance"]},"dancer_tone1":{"unicode":"1f483-1f3fb","unicode_alt":"","code_decimal":"💃🏻","name":"dancer tone 1","shortname":":dancer_tone1:","category":"people","emoji_order":"730","aliases":[],"aliases_ascii":[],"keywords":[]},"dancer_tone2":{"unicode":"1f483-1f3fc","unicode_alt":"","code_decimal":"💃🏼","name":"dancer tone 2","shortname":":dancer_tone2:","category":"people","emoji_order":"731","aliases":[],"aliases_ascii":[],"keywords":[]},"dancer_tone3":{"unicode":"1f483-1f3fd","unicode_alt":"","code_decimal":"💃🏽","name":"dancer tone 3","shortname":":dancer_tone3:","category":"people","emoji_order":"732","aliases":[],"aliases_ascii":[],"keywords":[]},"dancer_tone4":{"unicode":"1f483-1f3fe","unicode_alt":"","code_decimal":"💃🏾","name":"dancer tone 4","shortname":":dancer_tone4:","category":"people","emoji_order":"733","aliases":[],"aliases_ascii":[],"keywords":[]},"dancer_tone5":{"unicode":"1f483-1f3ff","unicode_alt":"","code_decimal":"💃🏿","name":"dancer tone 5","shortname":":dancer_tone5:","category":"people","emoji_order":"734","aliases":[],"aliases_ascii":[],"keywords":[]},"man_dancing":{"unicode":"1f57a","unicode_alt":"","code_decimal":"🕺","name":"man dancing","shortname":":man_dancing:","category":"people","emoji_order":"735","aliases":[":male_dancer:"],"aliases_ascii":[],"keywords":[]},"man_dancing_tone1":{"unicode":"1f57a-1f3fb","unicode_alt":"","code_decimal":"🕺🏻","name":"man dancing tone 1","shortname":":man_dancing_tone1:","category":"people","emoji_order":"736","aliases":[":male_dancer_tone1:"],"aliases_ascii":[],"keywords":[]},"man_dancing_tone2":{"unicode":"1f57a-1f3fc","unicode_alt":"","code_decimal":"🕺🏼","name":"man dancing tone 2","shortname":":man_dancing_tone2:","category":"people","emoji_order":"737","aliases":[":male_dancer_tone2:"],"aliases_ascii":[],"keywords":[]},"man_dancing_tone3":{"unicode":"1f57a-1f3fd","unicode_alt":"","code_decimal":"🕺🏽","name":"man dancing tone 3","shortname":":man_dancing_tone3:","category":"people","emoji_order":"738","aliases":[":male_dancer_tone3:"],"aliases_ascii":[],"keywords":[]},"man_dancing_tone4":{"unicode":"1f57a-1f3fe","unicode_alt":"","code_decimal":"🕺🏾","name":"man dancing tone 4","shortname":":man_dancing_tone4:","category":"people","emoji_order":"739","aliases":[":male_dancer_tone4:"],"aliases_ascii":[],"keywords":[]},"man_dancing_tone5":{"unicode":"1f57a-1f3ff","unicode_alt":"","code_decimal":"🕺🏿","name":"man dancing tone 5","shortname":":man_dancing_tone5:","category":"people","emoji_order":"740","aliases":[":male_dancer_tone5:"],"aliases_ascii":[],"keywords":[]},"dancers":{"unicode":"1f46f","unicode_alt":"","code_decimal":"👯","name":"woman with bunny ears","shortname":":dancers:","category":"people","emoji_order":"741","aliases":[],"aliases_ascii":[],"keywords":["people","women","sexy","girls night","boys night","parties","dance"]},"levitate":{"unicode":"1f574","unicode_alt":"1f574-fe0f","code_decimal":"🕴","name":"man in business suit levitating","shortname":":levitate:","category":"activity","emoji_order":"759","aliases":[":man_in_business_suit_levitating:"],"aliases_ascii":[],"keywords":["men","job"]},"speaking_head":{"unicode":"1f5e3","unicode_alt":"1f5e3-fe0f","code_decimal":"🗣","name":"speaking head in silhouette","shortname":":speaking_head:","category":"people","emoji_order":"765","aliases":[":speaking_head_in_silhouette:"],"aliases_ascii":[],"keywords":["people","talk"]},"bust_in_silhouette":{"unicode":"1f464","unicode_alt":"","code_decimal":"👤","name":"bust in silhouette","shortname":":bust_in_silhouette:","category":"people","emoji_order":"766","aliases":[],"aliases_ascii":[],"keywords":["people"]},"busts_in_silhouette":{"unicode":"1f465","unicode_alt":"","code_decimal":"👥","name":"busts in silhouette","shortname":":busts_in_silhouette:","category":"people","emoji_order":"767","aliases":[],"aliases_ascii":[],"keywords":["people"]},"fencer":{"unicode":"1f93a","unicode_alt":"","code_decimal":"🤺","name":"fencer","shortname":":fencer:","category":"activity","emoji_order":"768","aliases":[":fencing:"],"aliases_ascii":[],"keywords":[]},"horse_racing":{"unicode":"1f3c7","unicode_alt":"","code_decimal":"🏇","name":"horse racing","shortname":":horse_racing:","category":"activity","emoji_order":"769","aliases":[],"aliases_ascii":[],"keywords":["men","sport","horse racing"]},"horse_racing_tone1":{"unicode":"1f3c7-1f3fb","unicode_alt":"","code_decimal":"🏇🏻","name":"horse racing tone 1","shortname":":horse_racing_tone1:","category":"activity","emoji_order":"770","aliases":[],"aliases_ascii":[],"keywords":[]},"horse_racing_tone2":{"unicode":"1f3c7-1f3fc","unicode_alt":"","code_decimal":"🏇🏼","name":"horse racing tone 2","shortname":":horse_racing_tone2:","category":"activity","emoji_order":"771","aliases":[],"aliases_ascii":[],"keywords":[]},"horse_racing_tone3":{"unicode":"1f3c7-1f3fd","unicode_alt":"","code_decimal":"🏇🏽","name":"horse racing tone 3","shortname":":horse_racing_tone3:","category":"activity","emoji_order":"772","aliases":[],"aliases_ascii":[],"keywords":[]},"horse_racing_tone4":{"unicode":"1f3c7-1f3fe","unicode_alt":"","code_decimal":"🏇🏾","name":"horse racing tone 4","shortname":":horse_racing_tone4:","category":"activity","emoji_order":"773","aliases":[],"aliases_ascii":[],"keywords":[]},"horse_racing_tone5":{"unicode":"1f3c7-1f3ff","unicode_alt":"","code_decimal":"🏇🏿","name":"horse racing tone 5","shortname":":horse_racing_tone5:","category":"activity","emoji_order":"774","aliases":[],"aliases_ascii":[],"keywords":[]},"skier":{"unicode":"26f7","unicode_alt":"26f7-fe0f","code_decimal":"⛷","name":"skier","shortname":":skier:","category":"activity","emoji_order":"775","aliases":[],"aliases_ascii":[],"keywords":["hat","vacation","cold","sport","skiing"]},"snowboarder":{"unicode":"1f3c2","unicode_alt":"","code_decimal":"🏂","name":"snowboarder","shortname":":snowboarder:","category":"activity","emoji_order":"776","aliases":[],"aliases_ascii":[],"keywords":["hat","vacation","cold","sport","snowboarding"]},"golfer":{"unicode":"1f3cc","unicode_alt":"1f3cc-fe0f","code_decimal":"🏌","name":"golfer","shortname":":golfer:","category":"activity","emoji_order":"782","aliases":[],"aliases_ascii":[],"keywords":["men","game","ball","vacation","sport","golf"]},"surfer":{"unicode":"1f3c4","unicode_alt":"","code_decimal":"🏄","name":"surfer","shortname":":surfer:","category":"activity","emoji_order":"800","aliases":[],"aliases_ascii":[],"keywords":["men","vacation","tropical","sport","diversity"]},"surfer_tone1":{"unicode":"1f3c4-1f3fb","unicode_alt":"","code_decimal":"🏄🏻","name":"surfer tone 1","shortname":":surfer_tone1:","category":"activity","emoji_order":"801","aliases":[],"aliases_ascii":[],"keywords":[]},"surfer_tone2":{"unicode":"1f3c4-1f3fc","unicode_alt":"","code_decimal":"🏄🏼","name":"surfer tone 2","shortname":":surfer_tone2:","category":"activity","emoji_order":"802","aliases":[],"aliases_ascii":[],"keywords":[]},"surfer_tone3":{"unicode":"1f3c4-1f3fd","unicode_alt":"","code_decimal":"🏄🏽","name":"surfer tone 3","shortname":":surfer_tone3:","category":"activity","emoji_order":"803","aliases":[],"aliases_ascii":[],"keywords":[]},"surfer_tone4":{"unicode":"1f3c4-1f3fe","unicode_alt":"","code_decimal":"🏄🏾","name":"surfer tone 4","shortname":":surfer_tone4:","category":"activity","emoji_order":"804","aliases":[],"aliases_ascii":[],"keywords":[]},"surfer_tone5":{"unicode":"1f3c4-1f3ff","unicode_alt":"","code_decimal":"🏄🏿","name":"surfer tone 5","shortname":":surfer_tone5:","category":"activity","emoji_order":"805","aliases":[],"aliases_ascii":[],"keywords":[]},"rowboat":{"unicode":"1f6a3","unicode_alt":"","code_decimal":"🚣","name":"rowboat","shortname":":rowboat:","category":"activity","emoji_order":"818","aliases":[],"aliases_ascii":[],"keywords":["men","workout","sport","rowing","diversity"]},"rowboat_tone1":{"unicode":"1f6a3-1f3fb","unicode_alt":"","code_decimal":"🚣🏻","name":"rowboat tone 1","shortname":":rowboat_tone1:","category":"activity","emoji_order":"819","aliases":[],"aliases_ascii":[],"keywords":[]},"rowboat_tone2":{"unicode":"1f6a3-1f3fc","unicode_alt":"","code_decimal":"🚣🏼","name":"rowboat tone 2","shortname":":rowboat_tone2:","category":"activity","emoji_order":"820","aliases":[],"aliases_ascii":[],"keywords":[]},"rowboat_tone3":{"unicode":"1f6a3-1f3fd","unicode_alt":"","code_decimal":"🚣🏽","name":"rowboat tone 3","shortname":":rowboat_tone3:","category":"activity","emoji_order":"821","aliases":[],"aliases_ascii":[],"keywords":[]},"rowboat_tone4":{"unicode":"1f6a3-1f3fe","unicode_alt":"","code_decimal":"🚣🏾","name":"rowboat tone 4","shortname":":rowboat_tone4:","category":"activity","emoji_order":"822","aliases":[],"aliases_ascii":[],"keywords":[]},"rowboat_tone5":{"unicode":"1f6a3-1f3ff","unicode_alt":"","code_decimal":"🚣🏿","name":"rowboat tone 5","shortname":":rowboat_tone5:","category":"activity","emoji_order":"823","aliases":[],"aliases_ascii":[],"keywords":[]},"swimmer":{"unicode":"1f3ca","unicode_alt":"","code_decimal":"🏊","name":"swimmer","shortname":":swimmer:","category":"activity","emoji_order":"836","aliases":[],"aliases_ascii":[],"keywords":["workout","sport","swim","diversity"]},"swimmer_tone1":{"unicode":"1f3ca-1f3fb","unicode_alt":"","code_decimal":"🏊🏻","name":"swimmer tone 1","shortname":":swimmer_tone1:","category":"activity","emoji_order":"837","aliases":[],"aliases_ascii":[],"keywords":[]},"swimmer_tone2":{"unicode":"1f3ca-1f3fc","unicode_alt":"","code_decimal":"🏊🏼","name":"swimmer tone 2","shortname":":swimmer_tone2:","category":"activity","emoji_order":"838","aliases":[],"aliases_ascii":[],"keywords":[]},"swimmer_tone3":{"unicode":"1f3ca-1f3fd","unicode_alt":"","code_decimal":"🏊🏽","name":"swimmer tone 3","shortname":":swimmer_tone3:","category":"activity","emoji_order":"839","aliases":[],"aliases_ascii":[],"keywords":[]},"swimmer_tone4":{"unicode":"1f3ca-1f3fe","unicode_alt":"","code_decimal":"🏊🏾","name":"swimmer tone 4","shortname":":swimmer_tone4:","category":"activity","emoji_order":"840","aliases":[],"aliases_ascii":[],"keywords":[]},"swimmer_tone5":{"unicode":"1f3ca-1f3ff","unicode_alt":"","code_decimal":"🏊🏿","name":"swimmer tone 5","shortname":":swimmer_tone5:","category":"activity","emoji_order":"841","aliases":[],"aliases_ascii":[],"keywords":[]},"basketball_player":{"unicode":"26f9","unicode_alt":"26f9-fe0f","code_decimal":"⛹","name":"person with ball","shortname":":basketball_player:","category":"activity","emoji_order":"854","aliases":[":person_with_ball:"],"aliases_ascii":[],"keywords":["men","game","ball","sport","basketball","diversity"]},"basketball_player_tone1":{"unicode":"26f9-1f3fb","unicode_alt":"","code_decimal":"⛹🏻","name":"person with ball tone 1","shortname":":basketball_player_tone1:","category":"activity","emoji_order":"855","aliases":[":person_with_ball_tone1:"],"aliases_ascii":[],"keywords":[]},"basketball_player_tone2":{"unicode":"26f9-1f3fc","unicode_alt":"","code_decimal":"⛹🏼","name":"person with ball tone 2","shortname":":basketball_player_tone2:","category":"activity","emoji_order":"856","aliases":[":person_with_ball_tone2:"],"aliases_ascii":[],"keywords":[]},"basketball_player_tone3":{"unicode":"26f9-1f3fd","unicode_alt":"","code_decimal":"⛹🏽","name":"person with ball tone 3","shortname":":basketball_player_tone3:","category":"activity","emoji_order":"857","aliases":[":person_with_ball_tone3:"],"aliases_ascii":[],"keywords":[]},"basketball_player_tone4":{"unicode":"26f9-1f3fe","unicode_alt":"","code_decimal":"⛹🏾","name":"person with ball tone 4","shortname":":basketball_player_tone4:","category":"activity","emoji_order":"858","aliases":[":person_with_ball_tone4:"],"aliases_ascii":[],"keywords":[]},"basketball_player_tone5":{"unicode":"26f9-1f3ff","unicode_alt":"","code_decimal":"⛹🏿","name":"person with ball tone 5","shortname":":basketball_player_tone5:","category":"activity","emoji_order":"859","aliases":[":person_with_ball_tone5:"],"aliases_ascii":[],"keywords":[]},"lifter":{"unicode":"1f3cb","unicode_alt":"1f3cb-fe0f","code_decimal":"🏋","name":"weight lifter","shortname":":lifter:","category":"activity","emoji_order":"872","aliases":[":weight_lifter:"],"aliases_ascii":[],"keywords":["men","workout","flex","sport","weight lifting","win","diversity"]},"lifter_tone1":{"unicode":"1f3cb-1f3fb","unicode_alt":"","code_decimal":"🏋🏻","name":"weight lifter tone 1","shortname":":lifter_tone1:","category":"activity","emoji_order":"873","aliases":[":weight_lifter_tone1:"],"aliases_ascii":[],"keywords":[]},"lifter_tone2":{"unicode":"1f3cb-1f3fc","unicode_alt":"","code_decimal":"🏋🏼","name":"weight lifter tone 2","shortname":":lifter_tone2:","category":"activity","emoji_order":"874","aliases":[":weight_lifter_tone2:"],"aliases_ascii":[],"keywords":[]},"lifter_tone3":{"unicode":"1f3cb-1f3fd","unicode_alt":"","code_decimal":"🏋🏽","name":"weight lifter tone 3","shortname":":lifter_tone3:","category":"activity","emoji_order":"875","aliases":[":weight_lifter_tone3:"],"aliases_ascii":[],"keywords":[]},"lifter_tone4":{"unicode":"1f3cb-1f3fe","unicode_alt":"","code_decimal":"🏋🏾","name":"weight lifter tone 4","shortname":":lifter_tone4:","category":"activity","emoji_order":"876","aliases":[":weight_lifter_tone4:"],"aliases_ascii":[],"keywords":[]},"lifter_tone5":{"unicode":"1f3cb-1f3ff","unicode_alt":"","code_decimal":"🏋🏿","name":"weight lifter tone 5","shortname":":lifter_tone5:","category":"activity","emoji_order":"877","aliases":[":weight_lifter_tone5:"],"aliases_ascii":[],"keywords":[]},"bicyclist":{"unicode":"1f6b4","unicode_alt":"","code_decimal":"🚴","name":"bicyclist","shortname":":bicyclist:","category":"activity","emoji_order":"890","aliases":[],"aliases_ascii":[],"keywords":["men","workout","sport","bike","diversity"]},"bicyclist_tone1":{"unicode":"1f6b4-1f3fb","unicode_alt":"","code_decimal":"🚴🏻","name":"bicyclist tone 1","shortname":":bicyclist_tone1:","category":"activity","emoji_order":"891","aliases":[],"aliases_ascii":[],"keywords":[]},"bicyclist_tone2":{"unicode":"1f6b4-1f3fc","unicode_alt":"","code_decimal":"🚴🏼","name":"bicyclist tone 2","shortname":":bicyclist_tone2:","category":"activity","emoji_order":"892","aliases":[],"aliases_ascii":[],"keywords":[]},"bicyclist_tone3":{"unicode":"1f6b4-1f3fd","unicode_alt":"","code_decimal":"🚴🏽","name":"bicyclist tone 3","shortname":":bicyclist_tone3:","category":"activity","emoji_order":"893","aliases":[],"aliases_ascii":[],"keywords":[]},"bicyclist_tone4":{"unicode":"1f6b4-1f3fe","unicode_alt":"","code_decimal":"🚴🏾","name":"bicyclist tone 4","shortname":":bicyclist_tone4:","category":"activity","emoji_order":"894","aliases":[],"aliases_ascii":[],"keywords":[]},"bicyclist_tone5":{"unicode":"1f6b4-1f3ff","unicode_alt":"","code_decimal":"🚴🏿","name":"bicyclist tone 5","shortname":":bicyclist_tone5:","category":"activity","emoji_order":"895","aliases":[],"aliases_ascii":[],"keywords":[]},"mountain_bicyclist":{"unicode":"1f6b5","unicode_alt":"","code_decimal":"🚵","name":"mountain bicyclist","shortname":":mountain_bicyclist:","category":"activity","emoji_order":"908","aliases":[],"aliases_ascii":[],"keywords":["men","sport","bike","diversity"]},"mountain_bicyclist_tone1":{"unicode":"1f6b5-1f3fb","unicode_alt":"","code_decimal":"🚵🏻","name":"mountain bicyclist tone 1","shortname":":mountain_bicyclist_tone1:","category":"activity","emoji_order":"909","aliases":[],"aliases_ascii":[],"keywords":[]},"mountain_bicyclist_tone2":{"unicode":"1f6b5-1f3fc","unicode_alt":"","code_decimal":"🚵🏼","name":"mountain bicyclist tone 2","shortname":":mountain_bicyclist_tone2:","category":"activity","emoji_order":"910","aliases":[],"aliases_ascii":[],"keywords":[]},"mountain_bicyclist_tone3":{"unicode":"1f6b5-1f3fd","unicode_alt":"","code_decimal":"🚵🏽","name":"mountain bicyclist tone 3","shortname":":mountain_bicyclist_tone3:","category":"activity","emoji_order":"911","aliases":[],"aliases_ascii":[],"keywords":[]},"mountain_bicyclist_tone4":{"unicode":"1f6b5-1f3fe","unicode_alt":"","code_decimal":"🚵🏾","name":"mountain bicyclist tone 4","shortname":":mountain_bicyclist_tone4:","category":"activity","emoji_order":"912","aliases":[],"aliases_ascii":[],"keywords":[]},"mountain_bicyclist_tone5":{"unicode":"1f6b5-1f3ff","unicode_alt":"","code_decimal":"🚵🏿","name":"mountain bicyclist tone 5","shortname":":mountain_bicyclist_tone5:","category":"activity","emoji_order":"913","aliases":[],"aliases_ascii":[],"keywords":[]},"race_car":{"unicode":"1f3ce","unicode_alt":"1f3ce-fe0f","code_decimal":"🏎","name":"racing car","shortname":":race_car:","category":"travel","emoji_order":"926","aliases":[":racing_car:"],"aliases_ascii":[],"keywords":["transportation","car"]},"motorcycle":{"unicode":"1f3cd","unicode_alt":"1f3cd-fe0f","code_decimal":"🏍","name":"racing motorcycle","shortname":":motorcycle:","category":"travel","emoji_order":"927","aliases":[":racing_motorcycle:"],"aliases_ascii":[],"keywords":["transportation","travel","bike"]},"cartwheel":{"unicode":"1f938","unicode_alt":"","code_decimal":"🤸","name":"person doing cartwheel","shortname":":cartwheel:","category":"activity","emoji_order":"928","aliases":[":person_doing_cartwheel:"],"aliases_ascii":[],"keywords":[]},"cartwheel_tone1":{"unicode":"1f938-1f3fb","unicode_alt":"","code_decimal":"🤸🏻","name":"person doing cartwheel tone 1","shortname":":cartwheel_tone1:","category":"activity","emoji_order":"929","aliases":[":person_doing_cartwheel_tone1:"],"aliases_ascii":[],"keywords":[]},"cartwheel_tone2":{"unicode":"1f938-1f3fc","unicode_alt":"","code_decimal":"🤸🏼","name":"person doing cartwheel tone 2","shortname":":cartwheel_tone2:","category":"activity","emoji_order":"930","aliases":[":person_doing_cartwheel_tone2:"],"aliases_ascii":[],"keywords":[]},"cartwheel_tone3":{"unicode":"1f938-1f3fd","unicode_alt":"","code_decimal":"🤸🏽","name":"person doing cartwheel tone 3","shortname":":cartwheel_tone3:","category":"activity","emoji_order":"931","aliases":[":person_doing_cartwheel_tone3:"],"aliases_ascii":[],"keywords":[]},"cartwheel_tone4":{"unicode":"1f938-1f3fe","unicode_alt":"","code_decimal":"🤸🏾","name":"person doing cartwheel tone 4","shortname":":cartwheel_tone4:","category":"activity","emoji_order":"932","aliases":[":person_doing_cartwheel_tone4:"],"aliases_ascii":[],"keywords":[]},"cartwheel_tone5":{"unicode":"1f938-1f3ff","unicode_alt":"","code_decimal":"🤸🏿","name":"person doing cartwheel tone 5","shortname":":cartwheel_tone5:","category":"activity","emoji_order":"933","aliases":[":person_doing_cartwheel_tone5:"],"aliases_ascii":[],"keywords":[]},"wrestlers":{"unicode":"1f93c","unicode_alt":"","code_decimal":"🤼","name":"wrestlers","shortname":":wrestlers:","category":"activity","emoji_order":"946","aliases":[":wrestling:"],"aliases_ascii":[],"keywords":[]},"wrestlers_tone1":{"unicode":"1f93c-1f3fb","unicode_alt":"","code_decimal":"🤼🏻","name":"wrestlers tone 1","shortname":":wrestlers_tone1:","category":"activity","emoji_order":"947","aliases":[":wrestling_tone1:"],"aliases_ascii":[],"keywords":[]},"wrestlers_tone2":{"unicode":"1f93c-1f3fc","unicode_alt":"","code_decimal":"🤼🏼","name":"wrestlers tone 2","shortname":":wrestlers_tone2:","category":"activity","emoji_order":"948","aliases":[":wrestling_tone2:"],"aliases_ascii":[],"keywords":[]},"wrestlers_tone3":{"unicode":"1f93c-1f3fd","unicode_alt":"","code_decimal":"🤼🏽","name":"wrestlers tone 3","shortname":":wrestlers_tone3:","category":"activity","emoji_order":"949","aliases":[":wrestling_tone3:"],"aliases_ascii":[],"keywords":[]},"wrestlers_tone4":{"unicode":"1f93c-1f3fe","unicode_alt":"","code_decimal":"🤼🏾","name":"wrestlers tone 4","shortname":":wrestlers_tone4:","category":"activity","emoji_order":"950","aliases":[":wrestling_tone4:"],"aliases_ascii":[],"keywords":[]},"wrestlers_tone5":{"unicode":"1f93c-1f3ff","unicode_alt":"","code_decimal":"🤼🏿","name":"wrestlers tone 5","shortname":":wrestlers_tone5:","category":"activity","emoji_order":"951","aliases":[":wrestling_tone5:"],"aliases_ascii":[],"keywords":[]},"water_polo":{"unicode":"1f93d","unicode_alt":"","code_decimal":"🤽","name":"water polo","shortname":":water_polo:","category":"activity","emoji_order":"964","aliases":[],"aliases_ascii":[],"keywords":[]},"water_polo_tone1":{"unicode":"1f93d-1f3fb","unicode_alt":"","code_decimal":"🤽🏻","name":"water polo tone 1","shortname":":water_polo_tone1:","category":"activity","emoji_order":"965","aliases":[],"aliases_ascii":[],"keywords":[]},"water_polo_tone2":{"unicode":"1f93d-1f3fc","unicode_alt":"","code_decimal":"🤽🏼","name":"water polo tone 2","shortname":":water_polo_tone2:","category":"activity","emoji_order":"966","aliases":[],"aliases_ascii":[],"keywords":[]},"water_polo_tone3":{"unicode":"1f93d-1f3fd","unicode_alt":"","code_decimal":"🤽🏽","name":"water polo tone 3","shortname":":water_polo_tone3:","category":"activity","emoji_order":"967","aliases":[],"aliases_ascii":[],"keywords":[]},"water_polo_tone4":{"unicode":"1f93d-1f3fe","unicode_alt":"","code_decimal":"🤽🏾","name":"water polo tone 4","shortname":":water_polo_tone4:","category":"activity","emoji_order":"968","aliases":[],"aliases_ascii":[],"keywords":[]},"water_polo_tone5":{"unicode":"1f93d-1f3ff","unicode_alt":"","code_decimal":"🤽🏿","name":"water polo tone 5","shortname":":water_polo_tone5:","category":"activity","emoji_order":"969","aliases":[],"aliases_ascii":[],"keywords":[]},"handball":{"unicode":"1f93e","unicode_alt":"","code_decimal":"🤾","name":"handball","shortname":":handball:","category":"activity","emoji_order":"982","aliases":[],"aliases_ascii":[],"keywords":[]},"handball_tone1":{"unicode":"1f93e-1f3fb","unicode_alt":"","code_decimal":"🤾🏻","name":"handball tone 1","shortname":":handball_tone1:","category":"activity","emoji_order":"983","aliases":[],"aliases_ascii":[],"keywords":[]},"handball_tone2":{"unicode":"1f93e-1f3fc","unicode_alt":"","code_decimal":"🤾🏼","name":"handball tone 2","shortname":":handball_tone2:","category":"activity","emoji_order":"984","aliases":[],"aliases_ascii":[],"keywords":[]},"handball_tone3":{"unicode":"1f93e-1f3fd","unicode_alt":"","code_decimal":"🤾🏽","name":"handball tone 3","shortname":":handball_tone3:","category":"activity","emoji_order":"985","aliases":[],"aliases_ascii":[],"keywords":[]},"handball_tone4":{"unicode":"1f93e-1f3fe","unicode_alt":"","code_decimal":"🤾🏾","name":"handball tone 4","shortname":":handball_tone4:","category":"activity","emoji_order":"986","aliases":[],"aliases_ascii":[],"keywords":[]},"handball_tone5":{"unicode":"1f93e-1f3ff","unicode_alt":"","code_decimal":"🤾🏿","name":"handball tone 5","shortname":":handball_tone5:","category":"activity","emoji_order":"987","aliases":[],"aliases_ascii":[],"keywords":[]},"juggling":{"unicode":"1f939","unicode_alt":"","code_decimal":"🤹","name":"juggling","shortname":":juggling:","category":"activity","emoji_order":"1000","aliases":[":juggler:"],"aliases_ascii":[],"keywords":[]},"juggling_tone1":{"unicode":"1f939-1f3fb","unicode_alt":"","code_decimal":"🤹🏻","name":"juggling tone 1","shortname":":juggling_tone1:","category":"activity","emoji_order":"1001","aliases":[":juggler_tone1:"],"aliases_ascii":[],"keywords":[]},"juggling_tone2":{"unicode":"1f939-1f3fc","unicode_alt":"","code_decimal":"🤹🏼","name":"juggling tone 2","shortname":":juggling_tone2:","category":"activity","emoji_order":"1002","aliases":[":juggler_tone2:"],"aliases_ascii":[],"keywords":[]},"juggling_tone3":{"unicode":"1f939-1f3fd","unicode_alt":"","code_decimal":"🤹🏽","name":"juggling tone 3","shortname":":juggling_tone3:","category":"activity","emoji_order":"1003","aliases":[":juggler_tone3:"],"aliases_ascii":[],"keywords":[]},"juggling_tone4":{"unicode":"1f939-1f3fe","unicode_alt":"","code_decimal":"🤹🏾","name":"juggling tone 4","shortname":":juggling_tone4:","category":"activity","emoji_order":"1004","aliases":[":juggler_tone4:"],"aliases_ascii":[],"keywords":[]},"juggling_tone5":{"unicode":"1f939-1f3ff","unicode_alt":"","code_decimal":"🤹🏿","name":"juggling tone 5","shortname":":juggling_tone5:","category":"activity","emoji_order":"1005","aliases":[":juggler_tone5:"],"aliases_ascii":[],"keywords":[]},"couple":{"unicode":"1f46b","unicode_alt":"","code_decimal":"👫","name":"man and woman holding hands","shortname":":couple:","category":"people","emoji_order":"1018","aliases":[],"aliases_ascii":[],"keywords":["people","sex","creationism"]},"two_men_holding_hands":{"unicode":"1f46c","unicode_alt":"","code_decimal":"👬","name":"two men holding hands","shortname":":two_men_holding_hands:","category":"people","emoji_order":"1024","aliases":[],"aliases_ascii":[],"keywords":["people","gay","men","sex","lgbt"]},"two_women_holding_hands":{"unicode":"1f46d","unicode_alt":"","code_decimal":"👭","name":"two women holding hands","shortname":":two_women_holding_hands:","category":"people","emoji_order":"1030","aliases":[],"aliases_ascii":[],"keywords":["people","women","sex","lgbt","lesbian","girls night"]},"couplekiss":{"unicode":"1f48f","unicode_alt":"","code_decimal":"💏","name":"kiss","shortname":":couplekiss:","category":"people","emoji_order":"1036","aliases":[],"aliases_ascii":[],"keywords":["people","love","sex"]},"kiss_mm":{"unicode":"1f468-2764-1f48b-1f468","unicode_alt":"1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","code_decimal":"👨❤💋👨","name":"kiss (man,man)","shortname":":kiss_mm:","category":"people","emoji_order":"1038","aliases":[":couplekiss_mm:"],"aliases_ascii":[],"keywords":["people","gay","men","love","sex","lgbt"]},"kiss_ww":{"unicode":"1f469-2764-1f48b-1f469","unicode_alt":"1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","code_decimal":"👩❤💋👩","name":"kiss (woman,woman)","shortname":":kiss_ww:","category":"people","emoji_order":"1039","aliases":[":couplekiss_ww:"],"aliases_ascii":[],"keywords":["people","women","love","sex","lgbt","lesbian"]},"couple_with_heart":{"unicode":"1f491","unicode_alt":"","code_decimal":"💑","name":"couple with heart","shortname":":couple_with_heart:","category":"people","emoji_order":"1040","aliases":[],"aliases_ascii":[],"keywords":["people","love","sex"]},"couple_mm":{"unicode":"1f468-2764-1f468","unicode_alt":"1f468-200d-2764-fe0f-200d-1f468","code_decimal":"👨❤👨","name":"couple (man,man)","shortname":":couple_mm:","category":"people","emoji_order":"1042","aliases":[":couple_with_heart_mm:"],"aliases_ascii":[],"keywords":["people","gay","men","love","sex","lgbt"]},"couple_ww":{"unicode":"1f469-2764-1f469","unicode_alt":"1f469-200d-2764-fe0f-200d-1f469","code_decimal":"👩❤👩","name":"couple (woman,woman)","shortname":":couple_ww:","category":"people","emoji_order":"1043","aliases":[":couple_with_heart_ww:"],"aliases_ascii":[],"keywords":["people","women","love","sex","lgbt"]},"family":{"unicode":"1f46a","unicode_alt":"","code_decimal":"👪","name":"family","shortname":":family:","category":"people","emoji_order":"1044","aliases":[],"aliases_ascii":[],"keywords":["people","family","baby"]},"family_mwg":{"unicode":"1f468-1f469-1f467","unicode_alt":"1f468-200d-1f469-200d-1f467","code_decimal":"👨👩👧","name":"family (man,woman,girl)","shortname":":family_mwg:","category":"people","emoji_order":"1051","aliases":[],"aliases_ascii":[],"keywords":["people","family","baby"]},"family_mwgb":{"unicode":"1f468-1f469-1f467-1f466","unicode_alt":"1f468-200d-1f469-200d-1f467-200d-1f466","code_decimal":"👨👩👧👦","name":"family (man,woman,girl,boy)","shortname":":family_mwgb:","category":"people","emoji_order":"1052","aliases":[],"aliases_ascii":[],"keywords":["people","family","baby"]},"family_mwbb":{"unicode":"1f468-1f469-1f466-1f466","unicode_alt":"1f468-200d-1f469-200d-1f466-200d-1f466","code_decimal":"👨👩👦👦","name":"family (man,woman,boy,boy)","shortname":":family_mwbb:","category":"people","emoji_order":"1053","aliases":[],"aliases_ascii":[],"keywords":["people","family","baby"]},"family_mwgg":{"unicode":"1f468-1f469-1f467-1f467","unicode_alt":"1f468-200d-1f469-200d-1f467-200d-1f467","code_decimal":"👨👩👧👧","name":"family (man,woman,girl,girl)","shortname":":family_mwgg:","category":"people","emoji_order":"1054","aliases":[],"aliases_ascii":[],"keywords":["people","family","baby"]},"family_mmb":{"unicode":"1f468-1f468-1f466","unicode_alt":"1f468-200d-1f468-200d-1f466","code_decimal":"👨👨👦","name":"family (man,man,boy)","shortname":":family_mmb:","category":"people","emoji_order":"1055","aliases":[],"aliases_ascii":[],"keywords":["people","gay","family","men","baby","lgbt"]},"family_mmg":{"unicode":"1f468-1f468-1f467","unicode_alt":"1f468-200d-1f468-200d-1f467","code_decimal":"👨👨👧","name":"family (man,man,girl)","shortname":":family_mmg:","category":"people","emoji_order":"1056","aliases":[],"aliases_ascii":[],"keywords":["people","gay","family","men","baby","lgbt"]},"family_mmgb":{"unicode":"1f468-1f468-1f467-1f466","unicode_alt":"1f468-200d-1f468-200d-1f467-200d-1f466","code_decimal":"👨👨👧👦","name":"family (man,man,girl,boy)","shortname":":family_mmgb:","category":"people","emoji_order":"1057","aliases":[],"aliases_ascii":[],"keywords":["people","gay","family","men","baby","lgbt"]},"family_mmbb":{"unicode":"1f468-1f468-1f466-1f466","unicode_alt":"1f468-200d-1f468-200d-1f466-200d-1f466","code_decimal":"👨👨👦👦","name":"family (man,man,boy,boy)","shortname":":family_mmbb:","category":"people","emoji_order":"1058","aliases":[],"aliases_ascii":[],"keywords":["people","gay","family","men","baby","lgbt"]},"family_mmgg":{"unicode":"1f468-1f468-1f467-1f467","unicode_alt":"1f468-200d-1f468-200d-1f467-200d-1f467","code_decimal":"👨👨👧👧","name":"family (man,man,girl,girl)","shortname":":family_mmgg:","category":"people","emoji_order":"1059","aliases":[],"aliases_ascii":[],"keywords":["people","gay","family","men","baby","lgbt"]},"family_wwb":{"unicode":"1f469-1f469-1f466","unicode_alt":"1f469-200d-1f469-200d-1f466","code_decimal":"👩👩👦","name":"family (woman,woman,boy)","shortname":":family_wwb:","category":"people","emoji_order":"1060","aliases":[],"aliases_ascii":[],"keywords":["people","family","women","baby","lgbt","lesbian"]},"family_wwg":{"unicode":"1f469-1f469-1f467","unicode_alt":"1f469-200d-1f469-200d-1f467","code_decimal":"👩👩👧","name":"family (woman,woman,girl)","shortname":":family_wwg:","category":"people","emoji_order":"1061","aliases":[],"aliases_ascii":[],"keywords":["people","family","women","baby","lgbt","lesbian"]},"family_wwgb":{"unicode":"1f469-1f469-1f467-1f466","unicode_alt":"1f469-200d-1f469-200d-1f467-200d-1f466","code_decimal":"👩👩👧👦","name":"family (woman,woman,girl,boy)","shortname":":family_wwgb:","category":"people","emoji_order":"1062","aliases":[],"aliases_ascii":[],"keywords":["people","family","women","baby","lgbt","lesbian"]},"family_wwbb":{"unicode":"1f469-1f469-1f466-1f466","unicode_alt":"1f469-200d-1f469-200d-1f466-200d-1f466","code_decimal":"👩👩👦👦","name":"family (woman,woman,boy,boy)","shortname":":family_wwbb:","category":"people","emoji_order":"1063","aliases":[],"aliases_ascii":[],"keywords":["people","family","women","baby","lgbt","lesbian"]},"family_wwgg":{"unicode":"1f469-1f469-1f467-1f467","unicode_alt":"1f469-200d-1f469-200d-1f467-200d-1f467","code_decimal":"👩👩👧👧","name":"family (woman,woman,girl,girl)","shortname":":family_wwgg:","category":"people","emoji_order":"1064","aliases":[],"aliases_ascii":[],"keywords":["people","family","women","baby","lgbt","lesbian"]},"tone1":{"unicode":"1f3fb","unicode_alt":"","code_decimal":"🏻","name":"emoji modifier Fitzpatrick type-1-2","shortname":":tone1:","category":"modifier","emoji_order":"1075","aliases":[],"aliases_ascii":[],"keywords":[]},"tone2":{"unicode":"1f3fc","unicode_alt":"","code_decimal":"🏼","name":"emoji modifier Fitzpatrick type-3","shortname":":tone2:","category":"modifier","emoji_order":"1076","aliases":[],"aliases_ascii":[],"keywords":[]},"tone3":{"unicode":"1f3fd","unicode_alt":"","code_decimal":"🏽","name":"emoji modifier Fitzpatrick type-4","shortname":":tone3:","category":"modifier","emoji_order":"1077","aliases":[],"aliases_ascii":[],"keywords":[]},"tone4":{"unicode":"1f3fe","unicode_alt":"","code_decimal":"🏾","name":"emoji modifier Fitzpatrick type-5","shortname":":tone4:","category":"modifier","emoji_order":"1078","aliases":[],"aliases_ascii":[],"keywords":[]},"tone5":{"unicode":"1f3ff","unicode_alt":"","code_decimal":"🏿","name":"emoji modifier Fitzpatrick type-6","shortname":":tone5:","category":"modifier","emoji_order":"1079","aliases":[],"aliases_ascii":[],"keywords":[]},"muscle":{"unicode":"1f4aa","unicode_alt":"","code_decimal":"💪","name":"flexed biceps","shortname":":muscle:","category":"people","emoji_order":"1080","aliases":[],"aliases_ascii":[],"keywords":["body","hands","workout","flex","win","diversity","feminist","boys night"]},"muscle_tone1":{"unicode":"1f4aa-1f3fb","unicode_alt":"","code_decimal":"💪🏻","name":"flexed biceps tone 1","shortname":":muscle_tone1:","category":"people","emoji_order":"1081","aliases":[],"aliases_ascii":[],"keywords":[]},"muscle_tone2":{"unicode":"1f4aa-1f3fc","unicode_alt":"","code_decimal":"💪🏼","name":"flexed biceps tone 2","shortname":":muscle_tone2:","category":"people","emoji_order":"1082","aliases":[],"aliases_ascii":[],"keywords":[]},"muscle_tone3":{"unicode":"1f4aa-1f3fd","unicode_alt":"","code_decimal":"💪🏽","name":"flexed biceps tone 3","shortname":":muscle_tone3:","category":"people","emoji_order":"1083","aliases":[],"aliases_ascii":[],"keywords":[]},"muscle_tone4":{"unicode":"1f4aa-1f3fe","unicode_alt":"","code_decimal":"💪🏾","name":"flexed biceps tone 4","shortname":":muscle_tone4:","category":"people","emoji_order":"1084","aliases":[],"aliases_ascii":[],"keywords":[]},"muscle_tone5":{"unicode":"1f4aa-1f3ff","unicode_alt":"","code_decimal":"💪🏿","name":"flexed biceps tone 5","shortname":":muscle_tone5:","category":"people","emoji_order":"1085","aliases":[],"aliases_ascii":[],"keywords":[]},"selfie":{"unicode":"1f933","unicode_alt":"","code_decimal":"🤳","name":"selfie","shortname":":selfie:","category":"people","emoji_order":"1086","aliases":[],"aliases_ascii":[],"keywords":[]},"selfie_tone1":{"unicode":"1f933-1f3fb","unicode_alt":"","code_decimal":"🤳🏻","name":"selfie tone 1","shortname":":selfie_tone1:","category":"people","emoji_order":"1087","aliases":[],"aliases_ascii":[],"keywords":[]},"selfie_tone2":{"unicode":"1f933-1f3fc","unicode_alt":"","code_decimal":"🤳🏼","name":"selfie tone 2","shortname":":selfie_tone2:","category":"people","emoji_order":"1088","aliases":[],"aliases_ascii":[],"keywords":[]},"selfie_tone3":{"unicode":"1f933-1f3fd","unicode_alt":"","code_decimal":"🤳🏽","name":"selfie tone 3","shortname":":selfie_tone3:","category":"people","emoji_order":"1089","aliases":[],"aliases_ascii":[],"keywords":[]},"selfie_tone4":{"unicode":"1f933-1f3fe","unicode_alt":"","code_decimal":"🤳🏾","name":"selfie tone 4","shortname":":selfie_tone4:","category":"people","emoji_order":"1090","aliases":[],"aliases_ascii":[],"keywords":[]},"selfie_tone5":{"unicode":"1f933-1f3ff","unicode_alt":"","code_decimal":"🤳🏿","name":"selfie tone 5","shortname":":selfie_tone5:","category":"people","emoji_order":"1091","aliases":[],"aliases_ascii":[],"keywords":[]},"point_left":{"unicode":"1f448","unicode_alt":"","code_decimal":"👈","name":"white left pointing backhand index","shortname":":point_left:","category":"people","emoji_order":"1092","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","diversity"]},"point_left_tone1":{"unicode":"1f448-1f3fb","unicode_alt":"","code_decimal":"👈🏻","name":"white left pointing backhand index tone 1","shortname":":point_left_tone1:","category":"people","emoji_order":"1093","aliases":[],"aliases_ascii":[],"keywords":[]},"point_left_tone2":{"unicode":"1f448-1f3fc","unicode_alt":"","code_decimal":"👈🏼","name":"white left pointing backhand index tone 2","shortname":":point_left_tone2:","category":"people","emoji_order":"1094","aliases":[],"aliases_ascii":[],"keywords":[]},"point_left_tone3":{"unicode":"1f448-1f3fd","unicode_alt":"","code_decimal":"👈🏽","name":"white left pointing backhand index tone 3","shortname":":point_left_tone3:","category":"people","emoji_order":"1095","aliases":[],"aliases_ascii":[],"keywords":[]},"point_left_tone4":{"unicode":"1f448-1f3fe","unicode_alt":"","code_decimal":"👈🏾","name":"white left pointing backhand index tone 4","shortname":":point_left_tone4:","category":"people","emoji_order":"1096","aliases":[],"aliases_ascii":[],"keywords":[]},"point_left_tone5":{"unicode":"1f448-1f3ff","unicode_alt":"","code_decimal":"👈🏿","name":"white left pointing backhand index tone 5","shortname":":point_left_tone5:","category":"people","emoji_order":"1097","aliases":[],"aliases_ascii":[],"keywords":[]},"point_right":{"unicode":"1f449","unicode_alt":"","code_decimal":"👉","name":"white right pointing backhand index","shortname":":point_right:","category":"people","emoji_order":"1098","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","diversity"]},"point_right_tone1":{"unicode":"1f449-1f3fb","unicode_alt":"","code_decimal":"👉🏻","name":"white right pointing backhand index tone 1","shortname":":point_right_tone1:","category":"people","emoji_order":"1099","aliases":[],"aliases_ascii":[],"keywords":[]},"point_right_tone2":{"unicode":"1f449-1f3fc","unicode_alt":"","code_decimal":"👉🏼","name":"white right pointing backhand index tone 2","shortname":":point_right_tone2:","category":"people","emoji_order":"1100","aliases":[],"aliases_ascii":[],"keywords":[]},"point_right_tone3":{"unicode":"1f449-1f3fd","unicode_alt":"","code_decimal":"👉🏽","name":"white right pointing backhand index tone 3","shortname":":point_right_tone3:","category":"people","emoji_order":"1101","aliases":[],"aliases_ascii":[],"keywords":[]},"point_right_tone4":{"unicode":"1f449-1f3fe","unicode_alt":"","code_decimal":"👉🏾","name":"white right pointing backhand index tone 4","shortname":":point_right_tone4:","category":"people","emoji_order":"1102","aliases":[],"aliases_ascii":[],"keywords":[]},"point_right_tone5":{"unicode":"1f449-1f3ff","unicode_alt":"","code_decimal":"👉🏿","name":"white right pointing backhand index tone 5","shortname":":point_right_tone5:","category":"people","emoji_order":"1103","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up":{"unicode":"261d","unicode_alt":"261d-fe0f","code_decimal":"☝","name":"white up pointing index","shortname":":point_up:","category":"people","emoji_order":"1104","aliases":[],"aliases_ascii":[],"keywords":["body","hands","emojione","diversity"]},"point_up_tone1":{"unicode":"261d-1f3fb","unicode_alt":"","code_decimal":"☝🏻","name":"white up pointing index tone 1","shortname":":point_up_tone1:","category":"people","emoji_order":"1105","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_tone2":{"unicode":"261d-1f3fc","unicode_alt":"","code_decimal":"☝🏼","name":"white up pointing index tone 2","shortname":":point_up_tone2:","category":"people","emoji_order":"1106","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_tone3":{"unicode":"261d-1f3fd","unicode_alt":"","code_decimal":"☝🏽","name":"white up pointing index tone 3","shortname":":point_up_tone3:","category":"people","emoji_order":"1107","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_tone4":{"unicode":"261d-1f3fe","unicode_alt":"","code_decimal":"☝🏾","name":"white up pointing index tone 4","shortname":":point_up_tone4:","category":"people","emoji_order":"1108","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_tone5":{"unicode":"261d-1f3ff","unicode_alt":"","code_decimal":"☝🏿","name":"white up pointing index tone 5","shortname":":point_up_tone5:","category":"people","emoji_order":"1109","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_2":{"unicode":"1f446","unicode_alt":"","code_decimal":"👆","name":"white up pointing backhand index","shortname":":point_up_2:","category":"people","emoji_order":"1110","aliases":[],"aliases_ascii":[],"keywords":["body","hands","diversity"]},"point_up_2_tone1":{"unicode":"1f446-1f3fb","unicode_alt":"","code_decimal":"👆🏻","name":"white up pointing backhand index tone 1","shortname":":point_up_2_tone1:","category":"people","emoji_order":"1111","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_2_tone2":{"unicode":"1f446-1f3fc","unicode_alt":"","code_decimal":"👆🏼","name":"white up pointing backhand index tone 2","shortname":":point_up_2_tone2:","category":"people","emoji_order":"1112","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_2_tone3":{"unicode":"1f446-1f3fd","unicode_alt":"","code_decimal":"👆🏽","name":"white up pointing backhand index tone 3","shortname":":point_up_2_tone3:","category":"people","emoji_order":"1113","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_2_tone4":{"unicode":"1f446-1f3fe","unicode_alt":"","code_decimal":"👆🏾","name":"white up pointing backhand index tone 4","shortname":":point_up_2_tone4:","category":"people","emoji_order":"1114","aliases":[],"aliases_ascii":[],"keywords":[]},"point_up_2_tone5":{"unicode":"1f446-1f3ff","unicode_alt":"","code_decimal":"👆🏿","name":"white up pointing backhand index tone 5","shortname":":point_up_2_tone5:","category":"people","emoji_order":"1115","aliases":[],"aliases_ascii":[],"keywords":[]},"middle_finger":{"unicode":"1f595","unicode_alt":"","code_decimal":"🖕","name":"reversed hand with middle finger extended","shortname":":middle_finger:","category":"people","emoji_order":"1116","aliases":[":reversed_hand_with_middle_finger_extended:"],"aliases_ascii":[],"keywords":["body","hands","middle finger","diversity"]},"middle_finger_tone1":{"unicode":"1f595-1f3fb","unicode_alt":"","code_decimal":"🖕🏻","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:"],"aliases_ascii":[],"keywords":[]},"middle_finger_tone2":{"unicode":"1f595-1f3fc","unicode_alt":"","code_decimal":"🖕🏼","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:"],"aliases_ascii":[],"keywords":[]},"middle_finger_tone3":{"unicode":"1f595-1f3fd","unicode_alt":"","code_decimal":"🖕🏽","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:"],"aliases_ascii":[],"keywords":[]},"middle_finger_tone4":{"unicode":"1f595-1f3fe","unicode_alt":"","code_decimal":"🖕🏾","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:"],"aliases_ascii":[],"keywords":[]},"middle_finger_tone5":{"unicode":"1f595-1f3ff","unicode_alt":"","code_decimal":"🖕🏿","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:"],"aliases_ascii":[],"keywords":[]},"point_down":{"unicode":"1f447","unicode_alt":"","code_decimal":"👇","name":"white down pointing backhand index","shortname":":point_down:","category":"people","emoji_order":"1122","aliases":[],"aliases_ascii":[],"keywords":["body","hands","diversity"]},"point_down_tone1":{"unicode":"1f447-1f3fb","unicode_alt":"","code_decimal":"👇🏻","name":"white down pointing backhand index tone 1","shortname":":point_down_tone1:","category":"people","emoji_order":"1123","aliases":[],"aliases_ascii":[],"keywords":[]},"point_down_tone2":{"unicode":"1f447-1f3fc","unicode_alt":"","code_decimal":"👇🏼","name":"white down pointing backhand index tone 2","shortname":":point_down_tone2:","category":"people","emoji_order":"1124","aliases":[],"aliases_ascii":[],"keywords":[]},"point_down_tone3":{"unicode":"1f447-1f3fd","unicode_alt":"","code_decimal":"👇🏽","name":"white down pointing backhand index tone 3","shortname":":point_down_tone3:","category":"people","emoji_order":"1125","aliases":[],"aliases_ascii":[],"keywords":[]},"point_down_tone4":{"unicode":"1f447-1f3fe","unicode_alt":"","code_decimal":"👇🏾","name":"white down pointing backhand index tone 4","shortname":":point_down_tone4:","category":"people","emoji_order":"1126","aliases":[],"aliases_ascii":[],"keywords":[]},"point_down_tone5":{"unicode":"1f447-1f3ff","unicode_alt":"","code_decimal":"👇🏿","name":"white down pointing backhand index tone 5","shortname":":point_down_tone5:","category":"people","emoji_order":"1127","aliases":[],"aliases_ascii":[],"keywords":[]},"v":{"unicode":"270c","unicode_alt":"270c-fe0f","code_decimal":"✌","name":"victory hand","shortname":":v:","category":"people","emoji_order":"1128","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","thank you","peace","diversity","girls night"]},"v_tone1":{"unicode":"270c-1f3fb","unicode_alt":"","code_decimal":"✌🏻","name":"victory hand tone 1","shortname":":v_tone1:","category":"people","emoji_order":"1129","aliases":[],"aliases_ascii":[],"keywords":[]},"v_tone2":{"unicode":"270c-1f3fc","unicode_alt":"","code_decimal":"✌🏼","name":"victory hand tone 2","shortname":":v_tone2:","category":"people","emoji_order":"1130","aliases":[],"aliases_ascii":[],"keywords":[]},"v_tone3":{"unicode":"270c-1f3fd","unicode_alt":"","code_decimal":"✌🏽","name":"victory hand tone 3","shortname":":v_tone3:","category":"people","emoji_order":"1131","aliases":[],"aliases_ascii":[],"keywords":[]},"v_tone4":{"unicode":"270c-1f3fe","unicode_alt":"","code_decimal":"✌🏾","name":"victory hand tone 4","shortname":":v_tone4:","category":"people","emoji_order":"1132","aliases":[],"aliases_ascii":[],"keywords":[]},"v_tone5":{"unicode":"270c-1f3ff","unicode_alt":"","code_decimal":"✌🏿","name":"victory hand tone 5","shortname":":v_tone5:","category":"people","emoji_order":"1133","aliases":[],"aliases_ascii":[],"keywords":[]},"fingers_crossed":{"unicode":"1f91e","unicode_alt":"","code_decimal":"🤞","name":"hand with first and index finger crossed","shortname":":fingers_crossed:","category":"people","emoji_order":"1134","aliases":[":hand_with_index_and_middle_finger_crossed:"],"aliases_ascii":[],"keywords":[]},"fingers_crossed_tone1":{"unicode":"1f91e-1f3fb","unicode_alt":"","code_decimal":"🤞🏻","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:"],"aliases_ascii":[],"keywords":[]},"fingers_crossed_tone2":{"unicode":"1f91e-1f3fc","unicode_alt":"","code_decimal":"🤞🏼","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:"],"aliases_ascii":[],"keywords":[]},"fingers_crossed_tone3":{"unicode":"1f91e-1f3fd","unicode_alt":"","code_decimal":"🤞🏽","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:"],"aliases_ascii":[],"keywords":[]},"fingers_crossed_tone4":{"unicode":"1f91e-1f3fe","unicode_alt":"","code_decimal":"🤞🏾","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:"],"aliases_ascii":[],"keywords":[]},"fingers_crossed_tone5":{"unicode":"1f91e-1f3ff","unicode_alt":"","code_decimal":"🤞🏿","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:"],"aliases_ascii":[],"keywords":[]},"vulcan":{"unicode":"1f596","unicode_alt":"","code_decimal":"🖖","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:"],"aliases_ascii":[],"keywords":["body","hands","hi","diversity"]},"vulcan_tone1":{"unicode":"1f596-1f3fb","unicode_alt":"","code_decimal":"🖖🏻","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:"],"aliases_ascii":[],"keywords":[]},"vulcan_tone2":{"unicode":"1f596-1f3fc","unicode_alt":"","code_decimal":"🖖🏼","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:"],"aliases_ascii":[],"keywords":[]},"vulcan_tone3":{"unicode":"1f596-1f3fd","unicode_alt":"","code_decimal":"🖖🏽","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:"],"aliases_ascii":[],"keywords":[]},"vulcan_tone4":{"unicode":"1f596-1f3fe","unicode_alt":"","code_decimal":"🖖🏾","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:"],"aliases_ascii":[],"keywords":[]},"vulcan_tone5":{"unicode":"1f596-1f3ff","unicode_alt":"","code_decimal":"🖖🏿","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:"],"aliases_ascii":[],"keywords":[]},"metal":{"unicode":"1f918","unicode_alt":"","code_decimal":"🤘","name":"sign of the horns","shortname":":metal:","category":"people","emoji_order":"1146","aliases":[":sign_of_the_horns:"],"aliases_ascii":[],"keywords":["body","hands","hi","diversity","boys night","parties"]},"metal_tone1":{"unicode":"1f918-1f3fb","unicode_alt":"","code_decimal":"🤘🏻","name":"sign of the horns tone 1","shortname":":metal_tone1:","category":"people","emoji_order":"1147","aliases":[":sign_of_the_horns_tone1:"],"aliases_ascii":[],"keywords":[]},"metal_tone2":{"unicode":"1f918-1f3fc","unicode_alt":"","code_decimal":"🤘🏼","name":"sign of the horns tone 2","shortname":":metal_tone2:","category":"people","emoji_order":"1148","aliases":[":sign_of_the_horns_tone2:"],"aliases_ascii":[],"keywords":[]},"metal_tone3":{"unicode":"1f918-1f3fd","unicode_alt":"","code_decimal":"🤘🏽","name":"sign of the horns tone 3","shortname":":metal_tone3:","category":"people","emoji_order":"1149","aliases":[":sign_of_the_horns_tone3:"],"aliases_ascii":[],"keywords":[]},"metal_tone4":{"unicode":"1f918-1f3fe","unicode_alt":"","code_decimal":"🤘🏾","name":"sign of the horns tone 4","shortname":":metal_tone4:","category":"people","emoji_order":"1150","aliases":[":sign_of_the_horns_tone4:"],"aliases_ascii":[],"keywords":[]},"metal_tone5":{"unicode":"1f918-1f3ff","unicode_alt":"","code_decimal":"🤘🏿","name":"sign of the horns tone 5","shortname":":metal_tone5:","category":"people","emoji_order":"1151","aliases":[":sign_of_the_horns_tone5:"],"aliases_ascii":[],"keywords":[]},"call_me":{"unicode":"1f919","unicode_alt":"","code_decimal":"🤙","name":"call me hand","shortname":":call_me:","category":"people","emoji_order":"1152","aliases":[":call_me_hand:"],"aliases_ascii":[],"keywords":[]},"call_me_tone1":{"unicode":"1f919-1f3fb","unicode_alt":"","code_decimal":"🤙🏻","name":"call me hand tone 1","shortname":":call_me_tone1:","category":"people","emoji_order":"1153","aliases":[":call_me_hand_tone1:"],"aliases_ascii":[],"keywords":[]},"call_me_tone2":{"unicode":"1f919-1f3fc","unicode_alt":"","code_decimal":"🤙🏼","name":"call me hand tone 2","shortname":":call_me_tone2:","category":"people","emoji_order":"1154","aliases":[":call_me_hand_tone2:"],"aliases_ascii":[],"keywords":[]},"call_me_tone3":{"unicode":"1f919-1f3fd","unicode_alt":"","code_decimal":"🤙🏽","name":"call me hand tone 3","shortname":":call_me_tone3:","category":"people","emoji_order":"1155","aliases":[":call_me_hand_tone3:"],"aliases_ascii":[],"keywords":[]},"call_me_tone4":{"unicode":"1f919-1f3fe","unicode_alt":"","code_decimal":"🤙🏾","name":"call me hand tone 4","shortname":":call_me_tone4:","category":"people","emoji_order":"1156","aliases":[":call_me_hand_tone4:"],"aliases_ascii":[],"keywords":[]},"call_me_tone5":{"unicode":"1f919-1f3ff","unicode_alt":"","code_decimal":"🤙🏿","name":"call me hand tone 5","shortname":":call_me_tone5:","category":"people","emoji_order":"1157","aliases":[":call_me_hand_tone5:"],"aliases_ascii":[],"keywords":[]},"hand_splayed":{"unicode":"1f590","unicode_alt":"1f590-fe0f","code_decimal":"🖐","name":"raised hand with fingers splayed","shortname":":hand_splayed:","category":"people","emoji_order":"1158","aliases":[":raised_hand_with_fingers_splayed:"],"aliases_ascii":[],"keywords":["body","hands","hi","diversity"]},"hand_splayed_tone1":{"unicode":"1f590-1f3fb","unicode_alt":"","code_decimal":"🖐🏻","name":"raised hand with fingers splayed tone 1","shortname":":hand_splayed_tone1:","category":"people","emoji_order":"1159","aliases":[":raised_hand_with_fingers_splayed_tone1:"],"aliases_ascii":[],"keywords":[]},"hand_splayed_tone2":{"unicode":"1f590-1f3fc","unicode_alt":"","code_decimal":"🖐🏼","name":"raised hand with fingers splayed tone 2","shortname":":hand_splayed_tone2:","category":"people","emoji_order":"1160","aliases":[":raised_hand_with_fingers_splayed_tone2:"],"aliases_ascii":[],"keywords":[]},"hand_splayed_tone3":{"unicode":"1f590-1f3fd","unicode_alt":"","code_decimal":"🖐🏽","name":"raised hand with fingers splayed tone 3","shortname":":hand_splayed_tone3:","category":"people","emoji_order":"1161","aliases":[":raised_hand_with_fingers_splayed_tone3:"],"aliases_ascii":[],"keywords":[]},"hand_splayed_tone4":{"unicode":"1f590-1f3fe","unicode_alt":"","code_decimal":"🖐🏾","name":"raised hand with fingers splayed tone 4","shortname":":hand_splayed_tone4:","category":"people","emoji_order":"1162","aliases":[":raised_hand_with_fingers_splayed_tone4:"],"aliases_ascii":[],"keywords":[]},"hand_splayed_tone5":{"unicode":"1f590-1f3ff","unicode_alt":"","code_decimal":"🖐🏿","name":"raised hand with fingers splayed tone 5","shortname":":hand_splayed_tone5:","category":"people","emoji_order":"1163","aliases":[":raised_hand_with_fingers_splayed_tone5:"],"aliases_ascii":[],"keywords":[]},"raised_hand":{"unicode":"270b","unicode_alt":"","code_decimal":"✋","name":"raised hand","shortname":":raised_hand:","category":"people","emoji_order":"1164","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","diversity","girls night"]},"raised_hand_tone1":{"unicode":"270b-1f3fb","unicode_alt":"","code_decimal":"✋🏻","name":"raised hand tone 1","shortname":":raised_hand_tone1:","category":"people","emoji_order":"1165","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hand_tone2":{"unicode":"270b-1f3fc","unicode_alt":"","code_decimal":"✋🏼","name":"raised hand tone 2","shortname":":raised_hand_tone2:","category":"people","emoji_order":"1166","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hand_tone3":{"unicode":"270b-1f3fd","unicode_alt":"","code_decimal":"✋🏽","name":"raised hand tone 3","shortname":":raised_hand_tone3:","category":"people","emoji_order":"1167","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hand_tone4":{"unicode":"270b-1f3fe","unicode_alt":"","code_decimal":"✋🏾","name":"raised hand tone 4","shortname":":raised_hand_tone4:","category":"people","emoji_order":"1168","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hand_tone5":{"unicode":"270b-1f3ff","unicode_alt":"","code_decimal":"✋🏿","name":"raised hand tone 5","shortname":":raised_hand_tone5:","category":"people","emoji_order":"1169","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_hand":{"unicode":"1f44c","unicode_alt":"","code_decimal":"👌","name":"ok hand sign","shortname":":ok_hand:","category":"people","emoji_order":"1170","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","diversity","perfect","good","beautiful"]},"ok_hand_tone1":{"unicode":"1f44c-1f3fb","unicode_alt":"","code_decimal":"👌🏻","name":"ok hand sign tone 1","shortname":":ok_hand_tone1:","category":"people","emoji_order":"1171","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_hand_tone2":{"unicode":"1f44c-1f3fc","unicode_alt":"","code_decimal":"👌🏼","name":"ok hand sign tone 2","shortname":":ok_hand_tone2:","category":"people","emoji_order":"1172","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_hand_tone3":{"unicode":"1f44c-1f3fd","unicode_alt":"","code_decimal":"👌🏽","name":"ok hand sign tone 3","shortname":":ok_hand_tone3:","category":"people","emoji_order":"1173","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_hand_tone4":{"unicode":"1f44c-1f3fe","unicode_alt":"","code_decimal":"👌🏾","name":"ok hand sign tone 4","shortname":":ok_hand_tone4:","category":"people","emoji_order":"1174","aliases":[],"aliases_ascii":[],"keywords":[]},"ok_hand_tone5":{"unicode":"1f44c-1f3ff","unicode_alt":"","code_decimal":"👌🏿","name":"ok hand sign tone 5","shortname":":ok_hand_tone5:","category":"people","emoji_order":"1175","aliases":[],"aliases_ascii":[],"keywords":[]},"thumbsup":{"unicode":"1f44d","unicode_alt":"","code_decimal":"👍","name":"thumbs up sign","shortname":":thumbsup:","category":"people","emoji_order":"1176","aliases":[":+1:",":thumbup:"],"aliases_ascii":[],"keywords":["body","hands","hi","luck","thank you","diversity","perfect","good","beautiful"]},"thumbsup_tone1":{"unicode":"1f44d-1f3fb","unicode_alt":"","code_decimal":"👍🏻","name":"thumbs up sign tone 1","shortname":":thumbsup_tone1:","category":"people","emoji_order":"1177","aliases":[":+1_tone1:",":thumbup_tone1:"],"aliases_ascii":[],"keywords":[]},"thumbsup_tone2":{"unicode":"1f44d-1f3fc","unicode_alt":"","code_decimal":"👍🏼","name":"thumbs up sign tone 2","shortname":":thumbsup_tone2:","category":"people","emoji_order":"1178","aliases":[":+1_tone2:",":thumbup_tone2:"],"aliases_ascii":[],"keywords":[]},"thumbsup_tone3":{"unicode":"1f44d-1f3fd","unicode_alt":"","code_decimal":"👍🏽","name":"thumbs up sign tone 3","shortname":":thumbsup_tone3:","category":"people","emoji_order":"1179","aliases":[":+1_tone3:",":thumbup_tone3:"],"aliases_ascii":[],"keywords":[]},"thumbsup_tone4":{"unicode":"1f44d-1f3fe","unicode_alt":"","code_decimal":"👍🏾","name":"thumbs up sign tone 4","shortname":":thumbsup_tone4:","category":"people","emoji_order":"1180","aliases":[":+1_tone4:",":thumbup_tone4:"],"aliases_ascii":[],"keywords":[]},"thumbsup_tone5":{"unicode":"1f44d-1f3ff","unicode_alt":"","code_decimal":"👍🏿","name":"thumbs up sign tone 5","shortname":":thumbsup_tone5:","category":"people","emoji_order":"1181","aliases":[":+1_tone5:",":thumbup_tone5:"],"aliases_ascii":[],"keywords":[]},"thumbsdown":{"unicode":"1f44e","unicode_alt":"","code_decimal":"👎","name":"thumbs down sign","shortname":":thumbsdown:","category":"people","emoji_order":"1182","aliases":[":-1:",":thumbdown:"],"aliases_ascii":[],"keywords":["body","hands","diversity"]},"thumbsdown_tone1":{"unicode":"1f44e-1f3fb","unicode_alt":"","code_decimal":"👎🏻","name":"thumbs down sign tone 1","shortname":":thumbsdown_tone1:","category":"people","emoji_order":"1183","aliases":[":-1_tone1:",":thumbdown_tone1:"],"aliases_ascii":[],"keywords":[]},"thumbsdown_tone2":{"unicode":"1f44e-1f3fc","unicode_alt":"","code_decimal":"👎🏼","name":"thumbs down sign tone 2","shortname":":thumbsdown_tone2:","category":"people","emoji_order":"1184","aliases":[":-1_tone2:",":thumbdown_tone2:"],"aliases_ascii":[],"keywords":[]},"thumbsdown_tone3":{"unicode":"1f44e-1f3fd","unicode_alt":"","code_decimal":"👎🏽","name":"thumbs down sign tone 3","shortname":":thumbsdown_tone3:","category":"people","emoji_order":"1185","aliases":[":-1_tone3:",":thumbdown_tone3:"],"aliases_ascii":[],"keywords":[]},"thumbsdown_tone4":{"unicode":"1f44e-1f3fe","unicode_alt":"","code_decimal":"👎🏾","name":"thumbs down sign tone 4","shortname":":thumbsdown_tone4:","category":"people","emoji_order":"1186","aliases":[":-1_tone4:",":thumbdown_tone4:"],"aliases_ascii":[],"keywords":[]},"thumbsdown_tone5":{"unicode":"1f44e-1f3ff","unicode_alt":"","code_decimal":"👎🏿","name":"thumbs down sign tone 5","shortname":":thumbsdown_tone5:","category":"people","emoji_order":"1187","aliases":[":-1_tone5:",":thumbdown_tone5:"],"aliases_ascii":[],"keywords":[]},"fist":{"unicode":"270a","unicode_alt":"","code_decimal":"✊","name":"raised fist","shortname":":fist:","category":"people","emoji_order":"1188","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","fist bump","diversity","condolence"]},"fist_tone1":{"unicode":"270a-1f3fb","unicode_alt":"","code_decimal":"✊🏻","name":"raised fist tone 1","shortname":":fist_tone1:","category":"people","emoji_order":"1189","aliases":[],"aliases_ascii":[],"keywords":[]},"fist_tone2":{"unicode":"270a-1f3fc","unicode_alt":"","code_decimal":"✊🏼","name":"raised fist tone 2","shortname":":fist_tone2:","category":"people","emoji_order":"1190","aliases":[],"aliases_ascii":[],"keywords":[]},"fist_tone3":{"unicode":"270a-1f3fd","unicode_alt":"","code_decimal":"✊🏽","name":"raised fist tone 3","shortname":":fist_tone3:","category":"people","emoji_order":"1191","aliases":[],"aliases_ascii":[],"keywords":[]},"fist_tone4":{"unicode":"270a-1f3fe","unicode_alt":"","code_decimal":"✊🏾","name":"raised fist tone 4","shortname":":fist_tone4:","category":"people","emoji_order":"1192","aliases":[],"aliases_ascii":[],"keywords":[]},"fist_tone5":{"unicode":"270a-1f3ff","unicode_alt":"","code_decimal":"✊🏿","name":"raised fist tone 5","shortname":":fist_tone5:","category":"people","emoji_order":"1193","aliases":[],"aliases_ascii":[],"keywords":[]},"punch":{"unicode":"1f44a","unicode_alt":"","code_decimal":"👊","name":"fisted hand sign","shortname":":punch:","category":"people","emoji_order":"1194","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","fist bump","diversity","boys night"]},"punch_tone1":{"unicode":"1f44a-1f3fb","unicode_alt":"","code_decimal":"👊🏻","name":"fisted hand sign tone 1","shortname":":punch_tone1:","category":"people","emoji_order":"1195","aliases":[],"aliases_ascii":[],"keywords":[]},"punch_tone2":{"unicode":"1f44a-1f3fc","unicode_alt":"","code_decimal":"👊🏼","name":"fisted hand sign tone 2","shortname":":punch_tone2:","category":"people","emoji_order":"1196","aliases":[],"aliases_ascii":[],"keywords":[]},"punch_tone3":{"unicode":"1f44a-1f3fd","unicode_alt":"","code_decimal":"👊🏽","name":"fisted hand sign tone 3","shortname":":punch_tone3:","category":"people","emoji_order":"1197","aliases":[],"aliases_ascii":[],"keywords":[]},"punch_tone4":{"unicode":"1f44a-1f3fe","unicode_alt":"","code_decimal":"👊🏾","name":"fisted hand sign tone 4","shortname":":punch_tone4:","category":"people","emoji_order":"1198","aliases":[],"aliases_ascii":[],"keywords":[]},"punch_tone5":{"unicode":"1f44a-1f3ff","unicode_alt":"","code_decimal":"👊🏿","name":"fisted hand sign tone 5","shortname":":punch_tone5:","category":"people","emoji_order":"1199","aliases":[],"aliases_ascii":[],"keywords":[]},"left_facing_fist":{"unicode":"1f91b","unicode_alt":"","code_decimal":"🤛","name":"left-facing fist","shortname":":left_facing_fist:","category":"people","emoji_order":"1200","aliases":[":left_fist:"],"aliases_ascii":[],"keywords":[]},"left_facing_fist_tone1":{"unicode":"1f91b-1f3fb","unicode_alt":"","code_decimal":"🤛🏻","name":"left facing fist tone 1","shortname":":left_facing_fist_tone1:","category":"people","emoji_order":"1201","aliases":[":left_fist_tone1:"],"aliases_ascii":[],"keywords":[]},"left_facing_fist_tone2":{"unicode":"1f91b-1f3fc","unicode_alt":"","code_decimal":"🤛🏼","name":"left facing fist tone 2","shortname":":left_facing_fist_tone2:","category":"people","emoji_order":"1202","aliases":[":left_fist_tone2:"],"aliases_ascii":[],"keywords":[]},"left_facing_fist_tone3":{"unicode":"1f91b-1f3fd","unicode_alt":"","code_decimal":"🤛🏽","name":"left facing fist tone 3","shortname":":left_facing_fist_tone3:","category":"people","emoji_order":"1203","aliases":[":left_fist_tone3:"],"aliases_ascii":[],"keywords":[]},"left_facing_fist_tone4":{"unicode":"1f91b-1f3fe","unicode_alt":"","code_decimal":"🤛🏾","name":"left facing fist tone 4","shortname":":left_facing_fist_tone4:","category":"people","emoji_order":"1204","aliases":[":left_fist_tone4:"],"aliases_ascii":[],"keywords":[]},"left_facing_fist_tone5":{"unicode":"1f91b-1f3ff","unicode_alt":"","code_decimal":"🤛🏿","name":"left facing fist tone 5","shortname":":left_facing_fist_tone5:","category":"people","emoji_order":"1205","aliases":[":left_fist_tone5:"],"aliases_ascii":[],"keywords":[]},"right_facing_fist":{"unicode":"1f91c","unicode_alt":"","code_decimal":"🤜","name":"right-facing fist","shortname":":right_facing_fist:","category":"people","emoji_order":"1206","aliases":[":right_fist:"],"aliases_ascii":[],"keywords":[]},"right_facing_fist_tone1":{"unicode":"1f91c-1f3fb","unicode_alt":"","code_decimal":"🤜🏻","name":"right facing fist tone 1","shortname":":right_facing_fist_tone1:","category":"people","emoji_order":"1207","aliases":[":right_fist_tone1:"],"aliases_ascii":[],"keywords":[]},"right_facing_fist_tone2":{"unicode":"1f91c-1f3fc","unicode_alt":"","code_decimal":"🤜🏼","name":"right facing fist tone 2","shortname":":right_facing_fist_tone2:","category":"people","emoji_order":"1208","aliases":[":right_fist_tone2:"],"aliases_ascii":[],"keywords":[]},"right_facing_fist_tone3":{"unicode":"1f91c-1f3fd","unicode_alt":"","code_decimal":"🤜🏽","name":"right facing fist tone 3","shortname":":right_facing_fist_tone3:","category":"people","emoji_order":"1209","aliases":[":right_fist_tone3:"],"aliases_ascii":[],"keywords":[]},"right_facing_fist_tone4":{"unicode":"1f91c-1f3fe","unicode_alt":"","code_decimal":"🤜🏾","name":"right facing fist tone 4","shortname":":right_facing_fist_tone4:","category":"people","emoji_order":"1210","aliases":[":right_fist_tone4:"],"aliases_ascii":[],"keywords":[]},"right_facing_fist_tone5":{"unicode":"1f91c-1f3ff","unicode_alt":"","code_decimal":"🤜🏿","name":"right facing fist tone 5","shortname":":right_facing_fist_tone5:","category":"people","emoji_order":"1211","aliases":[":right_fist_tone5:"],"aliases_ascii":[],"keywords":[]},"raised_back_of_hand":{"unicode":"1f91a","unicode_alt":"","code_decimal":"🤚","name":"raised back of hand","shortname":":raised_back_of_hand:","category":"people","emoji_order":"1212","aliases":[":back_of_hand:"],"aliases_ascii":[],"keywords":[]},"raised_back_of_hand_tone1":{"unicode":"1f91a-1f3fb","unicode_alt":"","code_decimal":"🤚🏻","name":"raised back of hand tone 1","shortname":":raised_back_of_hand_tone1:","category":"people","emoji_order":"1213","aliases":[":back_of_hand_tone1:"],"aliases_ascii":[],"keywords":[]},"raised_back_of_hand_tone2":{"unicode":"1f91a-1f3fc","unicode_alt":"","code_decimal":"🤚🏼","name":"raised back of hand tone 2","shortname":":raised_back_of_hand_tone2:","category":"people","emoji_order":"1214","aliases":[":back_of_hand_tone2:"],"aliases_ascii":[],"keywords":[]},"raised_back_of_hand_tone3":{"unicode":"1f91a-1f3fd","unicode_alt":"","code_decimal":"🤚🏽","name":"raised back of hand tone 3","shortname":":raised_back_of_hand_tone3:","category":"people","emoji_order":"1215","aliases":[":back_of_hand_tone3:"],"aliases_ascii":[],"keywords":[]},"raised_back_of_hand_tone4":{"unicode":"1f91a-1f3fe","unicode_alt":"","code_decimal":"🤚🏾","name":"raised back of hand tone 4","shortname":":raised_back_of_hand_tone4:","category":"people","emoji_order":"1216","aliases":[":back_of_hand_tone4:"],"aliases_ascii":[],"keywords":[]},"raised_back_of_hand_tone5":{"unicode":"1f91a-1f3ff","unicode_alt":"","code_decimal":"🤚🏿","name":"raised back of hand tone 5","shortname":":raised_back_of_hand_tone5:","category":"people","emoji_order":"1217","aliases":[":back_of_hand_tone5:"],"aliases_ascii":[],"keywords":[]},"wave":{"unicode":"1f44b","unicode_alt":"","code_decimal":"👋","name":"waving hand sign","shortname":":wave:","category":"people","emoji_order":"1218","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","diversity"]},"wave_tone1":{"unicode":"1f44b-1f3fb","unicode_alt":"","code_decimal":"👋🏻","name":"waving hand sign tone 1","shortname":":wave_tone1:","category":"people","emoji_order":"1219","aliases":[],"aliases_ascii":[],"keywords":[]},"wave_tone2":{"unicode":"1f44b-1f3fc","unicode_alt":"","code_decimal":"👋🏼","name":"waving hand sign tone 2","shortname":":wave_tone2:","category":"people","emoji_order":"1220","aliases":[],"aliases_ascii":[],"keywords":[]},"wave_tone3":{"unicode":"1f44b-1f3fd","unicode_alt":"","code_decimal":"👋🏽","name":"waving hand sign tone 3","shortname":":wave_tone3:","category":"people","emoji_order":"1221","aliases":[],"aliases_ascii":[],"keywords":[]},"wave_tone4":{"unicode":"1f44b-1f3fe","unicode_alt":"","code_decimal":"👋🏾","name":"waving hand sign tone 4","shortname":":wave_tone4:","category":"people","emoji_order":"1222","aliases":[],"aliases_ascii":[],"keywords":[]},"wave_tone5":{"unicode":"1f44b-1f3ff","unicode_alt":"","code_decimal":"👋🏿","name":"waving hand sign tone 5","shortname":":wave_tone5:","category":"people","emoji_order":"1223","aliases":[],"aliases_ascii":[],"keywords":[]},"clap":{"unicode":"1f44f","unicode_alt":"","code_decimal":"👏","name":"clapping hands sign","shortname":":clap:","category":"people","emoji_order":"1224","aliases":[],"aliases_ascii":[],"keywords":["body","hands","win","diversity","good","beautiful"]},"clap_tone1":{"unicode":"1f44f-1f3fb","unicode_alt":"","code_decimal":"👏🏻","name":"clapping hands sign tone 1","shortname":":clap_tone1:","category":"people","emoji_order":"1225","aliases":[],"aliases_ascii":[],"keywords":[]},"clap_tone2":{"unicode":"1f44f-1f3fc","unicode_alt":"","code_decimal":"👏🏼","name":"clapping hands sign tone 2","shortname":":clap_tone2:","category":"people","emoji_order":"1226","aliases":[],"aliases_ascii":[],"keywords":[]},"clap_tone3":{"unicode":"1f44f-1f3fd","unicode_alt":"","code_decimal":"👏🏽","name":"clapping hands sign tone 3","shortname":":clap_tone3:","category":"people","emoji_order":"1227","aliases":[],"aliases_ascii":[],"keywords":[]},"clap_tone4":{"unicode":"1f44f-1f3fe","unicode_alt":"","code_decimal":"👏🏾","name":"clapping hands sign tone 4","shortname":":clap_tone4:","category":"people","emoji_order":"1228","aliases":[],"aliases_ascii":[],"keywords":[]},"clap_tone5":{"unicode":"1f44f-1f3ff","unicode_alt":"","code_decimal":"👏🏿","name":"clapping hands sign tone 5","shortname":":clap_tone5:","category":"people","emoji_order":"1229","aliases":[],"aliases_ascii":[],"keywords":[]},"writing_hand":{"unicode":"270d","unicode_alt":"270d-fe0f","code_decimal":"✍","name":"writing hand","shortname":":writing_hand:","category":"people","emoji_order":"1230","aliases":[],"aliases_ascii":[],"keywords":["body","hands","write","diversity"]},"writing_hand_tone1":{"unicode":"270d-1f3fb","unicode_alt":"","code_decimal":"✍🏻","name":"writing hand tone 1","shortname":":writing_hand_tone1:","category":"people","emoji_order":"1231","aliases":[],"aliases_ascii":[],"keywords":[]},"writing_hand_tone2":{"unicode":"270d-1f3fc","unicode_alt":"","code_decimal":"✍🏼","name":"writing hand tone 2","shortname":":writing_hand_tone2:","category":"people","emoji_order":"1232","aliases":[],"aliases_ascii":[],"keywords":[]},"writing_hand_tone3":{"unicode":"270d-1f3fd","unicode_alt":"","code_decimal":"✍🏽","name":"writing hand tone 3","shortname":":writing_hand_tone3:","category":"people","emoji_order":"1233","aliases":[],"aliases_ascii":[],"keywords":[]},"writing_hand_tone4":{"unicode":"270d-1f3fe","unicode_alt":"","code_decimal":"✍🏾","name":"writing hand tone 4","shortname":":writing_hand_tone4:","category":"people","emoji_order":"1234","aliases":[],"aliases_ascii":[],"keywords":[]},"writing_hand_tone5":{"unicode":"270d-1f3ff","unicode_alt":"","code_decimal":"✍🏿","name":"writing hand tone 5","shortname":":writing_hand_tone5:","category":"people","emoji_order":"1235","aliases":[],"aliases_ascii":[],"keywords":[]},"open_hands":{"unicode":"1f450","unicode_alt":"","code_decimal":"👐","name":"open hands sign","shortname":":open_hands:","category":"people","emoji_order":"1236","aliases":[],"aliases_ascii":[],"keywords":["body","hands","diversity","condolence"]},"open_hands_tone1":{"unicode":"1f450-1f3fb","unicode_alt":"","code_decimal":"👐🏻","name":"open hands sign tone 1","shortname":":open_hands_tone1:","category":"people","emoji_order":"1237","aliases":[],"aliases_ascii":[],"keywords":[]},"open_hands_tone2":{"unicode":"1f450-1f3fc","unicode_alt":"","code_decimal":"👐🏼","name":"open hands sign tone 2","shortname":":open_hands_tone2:","category":"people","emoji_order":"1238","aliases":[],"aliases_ascii":[],"keywords":[]},"open_hands_tone3":{"unicode":"1f450-1f3fd","unicode_alt":"","code_decimal":"👐🏽","name":"open hands sign tone 3","shortname":":open_hands_tone3:","category":"people","emoji_order":"1239","aliases":[],"aliases_ascii":[],"keywords":[]},"open_hands_tone4":{"unicode":"1f450-1f3fe","unicode_alt":"","code_decimal":"👐🏾","name":"open hands sign tone 4","shortname":":open_hands_tone4:","category":"people","emoji_order":"1240","aliases":[],"aliases_ascii":[],"keywords":[]},"open_hands_tone5":{"unicode":"1f450-1f3ff","unicode_alt":"","code_decimal":"👐🏿","name":"open hands sign tone 5","shortname":":open_hands_tone5:","category":"people","emoji_order":"1241","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hands":{"unicode":"1f64c","unicode_alt":"","code_decimal":"🙌","name":"person raising both hands in celebration","shortname":":raised_hands:","category":"people","emoji_order":"1242","aliases":[],"aliases_ascii":[],"keywords":["body","hands","diversity","perfect","good","parties"]},"raised_hands_tone1":{"unicode":"1f64c-1f3fb","unicode_alt":"","code_decimal":"🙌🏻","name":"person raising both hands in celebration tone 1","shortname":":raised_hands_tone1:","category":"people","emoji_order":"1243","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hands_tone2":{"unicode":"1f64c-1f3fc","unicode_alt":"","code_decimal":"🙌🏼","name":"person raising both hands in celebration tone 2","shortname":":raised_hands_tone2:","category":"people","emoji_order":"1244","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hands_tone3":{"unicode":"1f64c-1f3fd","unicode_alt":"","code_decimal":"🙌🏽","name":"person raising both hands in celebration tone 3","shortname":":raised_hands_tone3:","category":"people","emoji_order":"1245","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hands_tone4":{"unicode":"1f64c-1f3fe","unicode_alt":"","code_decimal":"🙌🏾","name":"person raising both hands in celebration tone 4","shortname":":raised_hands_tone4:","category":"people","emoji_order":"1246","aliases":[],"aliases_ascii":[],"keywords":[]},"raised_hands_tone5":{"unicode":"1f64c-1f3ff","unicode_alt":"","code_decimal":"🙌🏿","name":"person raising both hands in celebration tone 5","shortname":":raised_hands_tone5:","category":"people","emoji_order":"1247","aliases":[],"aliases_ascii":[],"keywords":[]},"pray":{"unicode":"1f64f","unicode_alt":"","code_decimal":"🙏","name":"person with folded hands","shortname":":pray:","category":"people","emoji_order":"1248","aliases":[],"aliases_ascii":[],"keywords":["body","hands","hi","luck","thank you","pray","diversity","scientology"]},"pray_tone1":{"unicode":"1f64f-1f3fb","unicode_alt":"","code_decimal":"🙏🏻","name":"person with folded hands tone 1","shortname":":pray_tone1:","category":"people","emoji_order":"1249","aliases":[],"aliases_ascii":[],"keywords":[]},"pray_tone2":{"unicode":"1f64f-1f3fc","unicode_alt":"","code_decimal":"🙏🏼","name":"person with folded hands tone 2","shortname":":pray_tone2:","category":"people","emoji_order":"1250","aliases":[],"aliases_ascii":[],"keywords":[]},"pray_tone3":{"unicode":"1f64f-1f3fd","unicode_alt":"","code_decimal":"🙏🏽","name":"person with folded hands tone 3","shortname":":pray_tone3:","category":"people","emoji_order":"1251","aliases":[],"aliases_ascii":[],"keywords":[]},"pray_tone4":{"unicode":"1f64f-1f3fe","unicode_alt":"","code_decimal":"🙏🏾","name":"person with folded hands tone 4","shortname":":pray_tone4:","category":"people","emoji_order":"1252","aliases":[],"aliases_ascii":[],"keywords":[]},"pray_tone5":{"unicode":"1f64f-1f3ff","unicode_alt":"","code_decimal":"🙏🏿","name":"person with folded hands tone 5","shortname":":pray_tone5:","category":"people","emoji_order":"1253","aliases":[],"aliases_ascii":[],"keywords":[]},"handshake":{"unicode":"1f91d","unicode_alt":"","code_decimal":"🤝","name":"handshake","shortname":":handshake:","category":"people","emoji_order":"1254","aliases":[":shaking_hands:"],"aliases_ascii":[],"keywords":[]},"handshake_tone1":{"unicode":"1f91d-1f3fb","unicode_alt":"","code_decimal":"🤝🏻","name":"handshake tone 1","shortname":":handshake_tone1:","category":"people","emoji_order":"1255","aliases":[":shaking_hands_tone1:"],"aliases_ascii":[],"keywords":[]},"handshake_tone2":{"unicode":"1f91d-1f3fc","unicode_alt":"","code_decimal":"🤝🏼","name":"handshake tone 2","shortname":":handshake_tone2:","category":"people","emoji_order":"1256","aliases":[":shaking_hands_tone2:"],"aliases_ascii":[],"keywords":[]},"handshake_tone3":{"unicode":"1f91d-1f3fd","unicode_alt":"","code_decimal":"🤝🏽","name":"handshake tone 3","shortname":":handshake_tone3:","category":"people","emoji_order":"1257","aliases":[":shaking_hands_tone3:"],"aliases_ascii":[],"keywords":[]},"handshake_tone4":{"unicode":"1f91d-1f3fe","unicode_alt":"","code_decimal":"🤝🏾","name":"handshake tone 4","shortname":":handshake_tone4:","category":"people","emoji_order":"1258","aliases":[":shaking_hands_tone4:"],"aliases_ascii":[],"keywords":[]},"handshake_tone5":{"unicode":"1f91d-1f3ff","unicode_alt":"","code_decimal":"🤝🏿","name":"handshake tone 5","shortname":":handshake_tone5:","category":"people","emoji_order":"1259","aliases":[":shaking_hands_tone5:"],"aliases_ascii":[],"keywords":[]},"nail_care":{"unicode":"1f485","unicode_alt":"","code_decimal":"💅","name":"nail polish","shortname":":nail_care:","category":"people","emoji_order":"1260","aliases":[],"aliases_ascii":[],"keywords":["women","body","hands","nailpolish","diversity","girls night"]},"nail_care_tone1":{"unicode":"1f485-1f3fb","unicode_alt":"","code_decimal":"💅🏻","name":"nail polish tone 1","shortname":":nail_care_tone1:","category":"people","emoji_order":"1261","aliases":[],"aliases_ascii":[],"keywords":[]},"nail_care_tone2":{"unicode":"1f485-1f3fc","unicode_alt":"","code_decimal":"💅🏼","name":"nail polish tone 2","shortname":":nail_care_tone2:","category":"people","emoji_order":"1262","aliases":[],"aliases_ascii":[],"keywords":[]},"nail_care_tone3":{"unicode":"1f485-1f3fd","unicode_alt":"","code_decimal":"💅🏽","name":"nail polish tone 3","shortname":":nail_care_tone3:","category":"people","emoji_order":"1263","aliases":[],"aliases_ascii":[],"keywords":[]},"nail_care_tone4":{"unicode":"1f485-1f3fe","unicode_alt":"","code_decimal":"💅🏾","name":"nail polish tone 4","shortname":":nail_care_tone4:","category":"people","emoji_order":"1264","aliases":[],"aliases_ascii":[],"keywords":[]},"nail_care_tone5":{"unicode":"1f485-1f3ff","unicode_alt":"","code_decimal":"💅🏿","name":"nail polish tone 5","shortname":":nail_care_tone5:","category":"people","emoji_order":"1265","aliases":[],"aliases_ascii":[],"keywords":[]},"ear":{"unicode":"1f442","unicode_alt":"","code_decimal":"👂","name":"ear","shortname":":ear:","category":"people","emoji_order":"1266","aliases":[],"aliases_ascii":[],"keywords":["body","diversity"]},"ear_tone1":{"unicode":"1f442-1f3fb","unicode_alt":"","code_decimal":"👂🏻","name":"ear tone 1","shortname":":ear_tone1:","category":"people","emoji_order":"1267","aliases":[],"aliases_ascii":[],"keywords":[]},"ear_tone2":{"unicode":"1f442-1f3fc","unicode_alt":"","code_decimal":"👂🏼","name":"ear tone 2","shortname":":ear_tone2:","category":"people","emoji_order":"1268","aliases":[],"aliases_ascii":[],"keywords":[]},"ear_tone3":{"unicode":"1f442-1f3fd","unicode_alt":"","code_decimal":"👂🏽","name":"ear tone 3","shortname":":ear_tone3:","category":"people","emoji_order":"1269","aliases":[],"aliases_ascii":[],"keywords":[]},"ear_tone4":{"unicode":"1f442-1f3fe","unicode_alt":"","code_decimal":"👂🏾","name":"ear tone 4","shortname":":ear_tone4:","category":"people","emoji_order":"1270","aliases":[],"aliases_ascii":[],"keywords":[]},"ear_tone5":{"unicode":"1f442-1f3ff","unicode_alt":"","code_decimal":"👂🏿","name":"ear tone 5","shortname":":ear_tone5:","category":"people","emoji_order":"1271","aliases":[],"aliases_ascii":[],"keywords":[]},"nose":{"unicode":"1f443","unicode_alt":"","code_decimal":"👃","name":"nose","shortname":":nose:","category":"people","emoji_order":"1272","aliases":[],"aliases_ascii":[],"keywords":["body","diversity"]},"nose_tone1":{"unicode":"1f443-1f3fb","unicode_alt":"","code_decimal":"👃🏻","name":"nose tone 1","shortname":":nose_tone1:","category":"people","emoji_order":"1273","aliases":[],"aliases_ascii":[],"keywords":[]},"nose_tone2":{"unicode":"1f443-1f3fc","unicode_alt":"","code_decimal":"👃🏼","name":"nose tone 2","shortname":":nose_tone2:","category":"people","emoji_order":"1274","aliases":[],"aliases_ascii":[],"keywords":[]},"nose_tone3":{"unicode":"1f443-1f3fd","unicode_alt":"","code_decimal":"👃🏽","name":"nose tone 3","shortname":":nose_tone3:","category":"people","emoji_order":"1275","aliases":[],"aliases_ascii":[],"keywords":[]},"nose_tone4":{"unicode":"1f443-1f3fe","unicode_alt":"","code_decimal":"👃🏾","name":"nose tone 4","shortname":":nose_tone4:","category":"people","emoji_order":"1276","aliases":[],"aliases_ascii":[],"keywords":[]},"nose_tone5":{"unicode":"1f443-1f3ff","unicode_alt":"","code_decimal":"👃🏿","name":"nose tone 5","shortname":":nose_tone5:","category":"people","emoji_order":"1277","aliases":[],"aliases_ascii":[],"keywords":[]},"footprints":{"unicode":"1f463","unicode_alt":"","code_decimal":"👣","name":"footprints","shortname":":footprints:","category":"people","emoji_order":"1278","aliases":[],"aliases_ascii":[],"keywords":[]},"eyes":{"unicode":"1f440","unicode_alt":"","code_decimal":"👀","name":"eyes","shortname":":eyes:","category":"people","emoji_order":"1279","aliases":[],"aliases_ascii":[],"keywords":["body","eyes"]},"eye":{"unicode":"1f441","unicode_alt":"1f441-fe0f","code_decimal":"👁","name":"eye","shortname":":eye:","category":"people","emoji_order":"1280","aliases":[],"aliases_ascii":[],"keywords":["body","eyes"]},"eye_in_speech_bubble":{"unicode":"1f441-1f5e8","unicode_alt":"1f441-200d-1f5e8","code_decimal":"👁🗨","name":"eye in speech bubble","shortname":":eye_in_speech_bubble:","category":"symbols","emoji_order":"1281","aliases":[],"aliases_ascii":[],"keywords":["object","symbol","eyes","talk"]},"tongue":{"unicode":"1f445","unicode_alt":"","code_decimal":"👅","name":"tongue","shortname":":tongue:","category":"people","emoji_order":"1282","aliases":[],"aliases_ascii":[],"keywords":["body","sexy","lip"]},"lips":{"unicode":"1f444","unicode_alt":"","code_decimal":"👄","name":"mouth","shortname":":lips:","category":"people","emoji_order":"1283","aliases":[],"aliases_ascii":[],"keywords":["women","body","sexy","lip"]},"kiss":{"unicode":"1f48b","unicode_alt":"","code_decimal":"💋","name":"kiss mark","shortname":":kiss:","category":"people","emoji_order":"1284","aliases":[],"aliases_ascii":[],"keywords":["women","love","sexy","lip","beautiful","girls night"]},"cupid":{"unicode":"1f498","unicode_alt":"","code_decimal":"💘","name":"heart with arrow","shortname":":cupid:","category":"symbols","emoji_order":"1285","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"heart":{"unicode":"2764","unicode_alt":"2764-fe0f","code_decimal":"❤","name":"heavy black heart","shortname":":heart:","category":"symbols","emoji_order":"1286","aliases":[],"aliases_ascii":["<3"],"keywords":["love","symbol","parties"]},"heartbeat":{"unicode":"1f493","unicode_alt":"","code_decimal":"💓","name":"beating heart","shortname":":heartbeat:","category":"symbols","emoji_order":"1287","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"broken_heart":{"unicode":"1f494","unicode_alt":"","code_decimal":"💔","name":"broken heart","shortname":":broken_heart:","category":"symbols","emoji_order":"1288","aliases":[],"aliases_ascii":["<\/3"],"keywords":["love","symbol","heartbreak"]},"two_hearts":{"unicode":"1f495","unicode_alt":"","code_decimal":"💕","name":"two hearts","shortname":":two_hearts:","category":"symbols","emoji_order":"1289","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"sparkling_heart":{"unicode":"1f496","unicode_alt":"","code_decimal":"💖","name":"sparkling heart","shortname":":sparkling_heart:","category":"symbols","emoji_order":"1290","aliases":[],"aliases_ascii":[],"keywords":["love","symbol","girls night"]},"heartpulse":{"unicode":"1f497","unicode_alt":"","code_decimal":"💗","name":"growing heart","shortname":":heartpulse:","category":"symbols","emoji_order":"1291","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"blue_heart":{"unicode":"1f499","unicode_alt":"","code_decimal":"💙","name":"blue heart","shortname":":blue_heart:","category":"symbols","emoji_order":"1292","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"green_heart":{"unicode":"1f49a","unicode_alt":"","code_decimal":"💚","name":"green heart","shortname":":green_heart:","category":"symbols","emoji_order":"1293","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"yellow_heart":{"unicode":"1f49b","unicode_alt":"","code_decimal":"💛","name":"yellow heart","shortname":":yellow_heart:","category":"symbols","emoji_order":"1294","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"purple_heart":{"unicode":"1f49c","unicode_alt":"","code_decimal":"💜","name":"purple heart","shortname":":purple_heart:","category":"symbols","emoji_order":"1295","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"black_heart":{"unicode":"1f5a4","unicode_alt":"","code_decimal":"🖤","name":"black heart","shortname":":black_heart:","category":"symbols","emoji_order":"1296","aliases":[],"aliases_ascii":[],"keywords":[]},"gift_heart":{"unicode":"1f49d","unicode_alt":"","code_decimal":"💝","name":"heart with ribbon","shortname":":gift_heart:","category":"symbols","emoji_order":"1297","aliases":[],"aliases_ascii":[],"keywords":["love","symbol","condolence"]},"revolving_hearts":{"unicode":"1f49e","unicode_alt":"","code_decimal":"💞","name":"revolving hearts","shortname":":revolving_hearts:","category":"symbols","emoji_order":"1298","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"heart_decoration":{"unicode":"1f49f","unicode_alt":"","code_decimal":"💟","name":"heart decoration","shortname":":heart_decoration:","category":"symbols","emoji_order":"1299","aliases":[],"aliases_ascii":[],"keywords":["love","symbol"]},"heart_exclamation":{"unicode":"2763","unicode_alt":"2763-fe0f","code_decimal":"❣","name":"heavy heart exclamation mark ornament","shortname":":heart_exclamation:","category":"symbols","emoji_order":"1300","aliases":[":heavy_heart_exclamation_mark_ornament:"],"aliases_ascii":[],"keywords":["love","symbol"]},"love_letter":{"unicode":"1f48c","unicode_alt":"","code_decimal":"💌","name":"love letter","shortname":":love_letter:","category":"objects","emoji_order":"1301","aliases":[],"aliases_ascii":[],"keywords":["object"]},"zzz":{"unicode":"1f4a4","unicode_alt":"","code_decimal":"💤","name":"sleeping symbol","shortname":":zzz:","category":"people","emoji_order":"1302","aliases":[],"aliases_ascii":[],"keywords":["tired","goodnight"]},"anger":{"unicode":"1f4a2","unicode_alt":"","code_decimal":"💢","name":"anger symbol","shortname":":anger:","category":"symbols","emoji_order":"1303","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"bomb":{"unicode":"1f4a3","unicode_alt":"","code_decimal":"💣","name":"bomb","shortname":":bomb:","category":"objects","emoji_order":"1304","aliases":[],"aliases_ascii":[],"keywords":["object","weapon","dead","blast"]},"boom":{"unicode":"1f4a5","unicode_alt":"","code_decimal":"💥","name":"collision symbol","shortname":":boom:","category":"symbols","emoji_order":"1305","aliases":[],"aliases_ascii":[],"keywords":["symbol","blast"]},"sweat_drops":{"unicode":"1f4a6","unicode_alt":"","code_decimal":"💦","name":"splashing sweat symbol","shortname":":sweat_drops:","category":"nature","emoji_order":"1306","aliases":[],"aliases_ascii":[],"keywords":["rain","stressed","sweat"]},"dash":{"unicode":"1f4a8","unicode_alt":"","code_decimal":"💨","name":"dash symbol","shortname":":dash:","category":"nature","emoji_order":"1307","aliases":[],"aliases_ascii":[],"keywords":["cloud","cold","smoking"]},"dizzy":{"unicode":"1f4ab","unicode_alt":"","code_decimal":"💫","name":"dizzy symbol","shortname":":dizzy:","category":"symbols","emoji_order":"1308","aliases":[],"aliases_ascii":[],"keywords":["star","symbol"]},"speech_balloon":{"unicode":"1f4ac","unicode_alt":"","code_decimal":"💬","name":"speech balloon","shortname":":speech_balloon:","category":"symbols","emoji_order":"1309","aliases":[],"aliases_ascii":[],"keywords":["symbol","free speech"]},"speech_left":{"unicode":"1f5e8","unicode_alt":"1f5e8-fe0f","code_decimal":"🗨","name":"left speech bubble","shortname":":speech_left:","category":"symbols","emoji_order":"1310","aliases":[":left_speech_bubble:"],"aliases_ascii":[],"keywords":[]},"anger_right":{"unicode":"1f5ef","unicode_alt":"1f5ef-fe0f","code_decimal":"🗯","name":"right anger bubble","shortname":":anger_right:","category":"symbols","emoji_order":"1311","aliases":[":right_anger_bubble:"],"aliases_ascii":[],"keywords":["symbol"]},"thought_balloon":{"unicode":"1f4ad","unicode_alt":"","code_decimal":"💭","name":"thought balloon","shortname":":thought_balloon:","category":"symbols","emoji_order":"1312","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"hole":{"unicode":"1f573","unicode_alt":"1f573-fe0f","code_decimal":"🕳","name":"hole","shortname":":hole:","category":"objects","emoji_order":"1313","aliases":[],"aliases_ascii":[],"keywords":["object"]},"eyeglasses":{"unicode":"1f453","unicode_alt":"","code_decimal":"👓","name":"eyeglasses","shortname":":eyeglasses:","category":"people","emoji_order":"1314","aliases":[],"aliases_ascii":[],"keywords":["fashion","glasses","accessories"]},"dark_sunglasses":{"unicode":"1f576","unicode_alt":"1f576-fe0f","code_decimal":"🕶","name":"dark sunglasses","shortname":":dark_sunglasses:","category":"people","emoji_order":"1315","aliases":[],"aliases_ascii":[],"keywords":["fashion","glasses","accessories"]},"necktie":{"unicode":"1f454","unicode_alt":"","code_decimal":"👔","name":"necktie","shortname":":necktie:","category":"people","emoji_order":"1316","aliases":[],"aliases_ascii":[],"keywords":["fashion"]},"shirt":{"unicode":"1f455","unicode_alt":"","code_decimal":"👕","name":"t-shirt","shortname":":shirt:","category":"people","emoji_order":"1317","aliases":[],"aliases_ascii":[],"keywords":["fashion"]},"jeans":{"unicode":"1f456","unicode_alt":"","code_decimal":"👖","name":"jeans","shortname":":jeans:","category":"people","emoji_order":"1318","aliases":[],"aliases_ascii":[],"keywords":["fashion"]},"dress":{"unicode":"1f457","unicode_alt":"","code_decimal":"👗","name":"dress","shortname":":dress:","category":"people","emoji_order":"1319","aliases":[],"aliases_ascii":[],"keywords":["women","fashion","sexy","girls night"]},"kimono":{"unicode":"1f458","unicode_alt":"","code_decimal":"👘","name":"kimono","shortname":":kimono:","category":"people","emoji_order":"1320","aliases":[],"aliases_ascii":[],"keywords":["fashion"]},"bikini":{"unicode":"1f459","unicode_alt":"","code_decimal":"👙","name":"bikini","shortname":":bikini:","category":"people","emoji_order":"1321","aliases":[],"aliases_ascii":[],"keywords":["women","fashion","sexy","vacation","tropical","swim"]},"womans_clothes":{"unicode":"1f45a","unicode_alt":"","code_decimal":"👚","name":"womans clothes","shortname":":womans_clothes:","category":"people","emoji_order":"1322","aliases":[],"aliases_ascii":[],"keywords":["women","fashion"]},"purse":{"unicode":"1f45b","unicode_alt":"","code_decimal":"👛","name":"purse","shortname":":purse:","category":"people","emoji_order":"1323","aliases":[],"aliases_ascii":[],"keywords":["bag","women","fashion","accessories","money"]},"handbag":{"unicode":"1f45c","unicode_alt":"","code_decimal":"👜","name":"handbag","shortname":":handbag:","category":"people","emoji_order":"1324","aliases":[],"aliases_ascii":[],"keywords":["bag","women","fashion","vacation","accessories"]},"pouch":{"unicode":"1f45d","unicode_alt":"","code_decimal":"👝","name":"pouch","shortname":":pouch:","category":"people","emoji_order":"1325","aliases":[],"aliases_ascii":[],"keywords":["bag","women","fashion","accessories"]},"shopping_bags":{"unicode":"1f6cd","unicode_alt":"1f6cd-fe0f","code_decimal":"🛍","name":"shopping bags","shortname":":shopping_bags:","category":"objects","emoji_order":"1326","aliases":[],"aliases_ascii":[],"keywords":["object","birthday","parties"]},"school_satchel":{"unicode":"1f392","unicode_alt":"","code_decimal":"🎒","name":"school satchel","shortname":":school_satchel:","category":"people","emoji_order":"1327","aliases":[],"aliases_ascii":[],"keywords":["bag","fashion","office","vacation","accessories"]},"mans_shoe":{"unicode":"1f45e","unicode_alt":"","code_decimal":"👞","name":"mans shoe","shortname":":mans_shoe:","category":"people","emoji_order":"1328","aliases":[],"aliases_ascii":[],"keywords":["fashion","shoe","accessories"]},"athletic_shoe":{"unicode":"1f45f","unicode_alt":"","code_decimal":"👟","name":"athletic shoe","shortname":":athletic_shoe:","category":"people","emoji_order":"1329","aliases":[],"aliases_ascii":[],"keywords":["fashion","shoe","accessories","boys night"]},"high_heel":{"unicode":"1f460","unicode_alt":"","code_decimal":"👠","name":"high-heeled shoe","shortname":":high_heel:","category":"people","emoji_order":"1330","aliases":[],"aliases_ascii":[],"keywords":["women","fashion","shoe","sexy","accessories","girls night"]},"sandal":{"unicode":"1f461","unicode_alt":"","code_decimal":"👡","name":"womans sandal","shortname":":sandal:","category":"people","emoji_order":"1331","aliases":[],"aliases_ascii":[],"keywords":["fashion","shoe","accessories"]},"boot":{"unicode":"1f462","unicode_alt":"","code_decimal":"👢","name":"womans boots","shortname":":boot:","category":"people","emoji_order":"1332","aliases":[],"aliases_ascii":[],"keywords":["women","fashion","shoe","sexy","accessories"]},"crown":{"unicode":"1f451","unicode_alt":"","code_decimal":"👑","name":"crown","shortname":":crown:","category":"people","emoji_order":"1333","aliases":[],"aliases_ascii":[],"keywords":["object","gem","accessories"]},"womans_hat":{"unicode":"1f452","unicode_alt":"","code_decimal":"👒","name":"womans hat","shortname":":womans_hat:","category":"people","emoji_order":"1334","aliases":[],"aliases_ascii":[],"keywords":["women","fashion","accessories"]},"tophat":{"unicode":"1f3a9","unicode_alt":"","code_decimal":"🎩","name":"top hat","shortname":":tophat:","category":"people","emoji_order":"1335","aliases":[],"aliases_ascii":[],"keywords":["hat","fashion","accessories"]},"mortar_board":{"unicode":"1f393","unicode_alt":"","code_decimal":"🎓","name":"graduation cap","shortname":":mortar_board:","category":"people","emoji_order":"1336","aliases":[],"aliases_ascii":[],"keywords":["hat","office","accessories"]},"helmet_with_cross":{"unicode":"26d1","unicode_alt":"26d1-fe0f","code_decimal":"⛑","name":"helmet with white cross","shortname":":helmet_with_cross:","category":"people","emoji_order":"1337","aliases":[":helmet_with_white_cross:"],"aliases_ascii":[],"keywords":["object","hat","accessories","job"]},"prayer_beads":{"unicode":"1f4ff","unicode_alt":"","code_decimal":"📿","name":"prayer beads","shortname":":prayer_beads:","category":"objects","emoji_order":"1338","aliases":[],"aliases_ascii":[],"keywords":["object","rosary"]},"lipstick":{"unicode":"1f484","unicode_alt":"","code_decimal":"💄","name":"lipstick","shortname":":lipstick:","category":"people","emoji_order":"1339","aliases":[],"aliases_ascii":[],"keywords":["object","women","fashion","sexy","lip"]},"ring":{"unicode":"1f48d","unicode_alt":"","code_decimal":"💍","name":"ring","shortname":":ring:","category":"people","emoji_order":"1340","aliases":[],"aliases_ascii":[],"keywords":["wedding","object","fashion","gem","accessories"]},"gem":{"unicode":"1f48e","unicode_alt":"","code_decimal":"💎","name":"gem stone","shortname":":gem:","category":"objects","emoji_order":"1341","aliases":[],"aliases_ascii":[],"keywords":["object","gem"]},"monkey_face":{"unicode":"1f435","unicode_alt":"","code_decimal":"🐵","name":"monkey face","shortname":":monkey_face:","category":"nature","emoji_order":"1342","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"monkey":{"unicode":"1f412","unicode_alt":"","code_decimal":"🐒","name":"monkey","shortname":":monkey:","category":"nature","emoji_order":"1343","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"gorilla":{"unicode":"1f98d","unicode_alt":"","code_decimal":"🦍","name":"gorilla","shortname":":gorilla:","category":"nature","emoji_order":"1344","aliases":[],"aliases_ascii":[],"keywords":[]},"dog":{"unicode":"1f436","unicode_alt":"","code_decimal":"🐶","name":"dog face","shortname":":dog:","category":"nature","emoji_order":"1345","aliases":[],"aliases_ascii":[],"keywords":["dog","pug","animal"]},"dog2":{"unicode":"1f415","unicode_alt":"","code_decimal":"🐕","name":"dog","shortname":":dog2:","category":"nature","emoji_order":"1346","aliases":[],"aliases_ascii":[],"keywords":["dog","pug","animal"]},"poodle":{"unicode":"1f429","unicode_alt":"","code_decimal":"🐩","name":"poodle","shortname":":poodle:","category":"nature","emoji_order":"1347","aliases":[],"aliases_ascii":[],"keywords":["dog","animal"]},"wolf":{"unicode":"1f43a","unicode_alt":"","code_decimal":"🐺","name":"wolf face","shortname":":wolf:","category":"nature","emoji_order":"1348","aliases":[],"aliases_ascii":[],"keywords":["wildlife","roar","animal"]},"fox":{"unicode":"1f98a","unicode_alt":"","code_decimal":"🦊","name":"fox face","shortname":":fox:","category":"nature","emoji_order":"1349","aliases":[":fox_face:"],"aliases_ascii":[],"keywords":[]},"cat":{"unicode":"1f431","unicode_alt":"","code_decimal":"🐱","name":"cat face","shortname":":cat:","category":"nature","emoji_order":"1350","aliases":[],"aliases_ascii":[],"keywords":["halloween","vagina","cat","animal"]},"cat2":{"unicode":"1f408","unicode_alt":"","code_decimal":"🐈","name":"cat","shortname":":cat2:","category":"nature","emoji_order":"1351","aliases":[],"aliases_ascii":[],"keywords":["halloween","cat","animal"]},"lion_face":{"unicode":"1f981","unicode_alt":"","code_decimal":"🦁","name":"lion face","shortname":":lion_face:","category":"nature","emoji_order":"1352","aliases":[":lion:"],"aliases_ascii":[],"keywords":["wildlife","roar","cat","animal"]},"tiger":{"unicode":"1f42f","unicode_alt":"","code_decimal":"🐯","name":"tiger face","shortname":":tiger:","category":"nature","emoji_order":"1353","aliases":[],"aliases_ascii":[],"keywords":["wildlife","roar","cat","animal"]},"tiger2":{"unicode":"1f405","unicode_alt":"","code_decimal":"🐅","name":"tiger","shortname":":tiger2:","category":"nature","emoji_order":"1354","aliases":[],"aliases_ascii":[],"keywords":["wildlife","roar","animal"]},"leopard":{"unicode":"1f406","unicode_alt":"","code_decimal":"🐆","name":"leopard","shortname":":leopard:","category":"nature","emoji_order":"1355","aliases":[],"aliases_ascii":[],"keywords":["wildlife","roar","animal"]},"horse":{"unicode":"1f434","unicode_alt":"","code_decimal":"🐴","name":"horse face","shortname":":horse:","category":"nature","emoji_order":"1356","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"racehorse":{"unicode":"1f40e","unicode_alt":"","code_decimal":"🐎","name":"horse","shortname":":racehorse:","category":"nature","emoji_order":"1357","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"deer":{"unicode":"1f98c","unicode_alt":"","code_decimal":"🦌","name":"deer","shortname":":deer:","category":"nature","emoji_order":"1358","aliases":[],"aliases_ascii":[],"keywords":[]},"unicorn":{"unicode":"1f984","unicode_alt":"","code_decimal":"🦄","name":"unicorn face","shortname":":unicorn:","category":"nature","emoji_order":"1359","aliases":[":unicorn_face:"],"aliases_ascii":[],"keywords":["animal"]},"cow":{"unicode":"1f42e","unicode_alt":"","code_decimal":"🐮","name":"cow face","shortname":":cow:","category":"nature","emoji_order":"1360","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"ox":{"unicode":"1f402","unicode_alt":"","code_decimal":"🐂","name":"ox","shortname":":ox:","category":"nature","emoji_order":"1361","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"water_buffalo":{"unicode":"1f403","unicode_alt":"","code_decimal":"🐃","name":"water buffalo","shortname":":water_buffalo:","category":"nature","emoji_order":"1362","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"cow2":{"unicode":"1f404","unicode_alt":"","code_decimal":"🐄","name":"cow","shortname":":cow2:","category":"nature","emoji_order":"1363","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"pig":{"unicode":"1f437","unicode_alt":"","code_decimal":"🐷","name":"pig face","shortname":":pig:","category":"nature","emoji_order":"1364","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"pig2":{"unicode":"1f416","unicode_alt":"","code_decimal":"🐖","name":"pig","shortname":":pig2:","category":"nature","emoji_order":"1365","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"boar":{"unicode":"1f417","unicode_alt":"","code_decimal":"🐗","name":"boar","shortname":":boar:","category":"nature","emoji_order":"1366","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"pig_nose":{"unicode":"1f43d","unicode_alt":"","code_decimal":"🐽","name":"pig nose","shortname":":pig_nose:","category":"nature","emoji_order":"1367","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"ram":{"unicode":"1f40f","unicode_alt":"","code_decimal":"🐏","name":"ram","shortname":":ram:","category":"nature","emoji_order":"1368","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"sheep":{"unicode":"1f411","unicode_alt":"","code_decimal":"🐑","name":"sheep","shortname":":sheep:","category":"nature","emoji_order":"1369","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"goat":{"unicode":"1f410","unicode_alt":"","code_decimal":"🐐","name":"goat","shortname":":goat:","category":"nature","emoji_order":"1370","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"dromedary_camel":{"unicode":"1f42a","unicode_alt":"","code_decimal":"🐪","name":"dromedary camel","shortname":":dromedary_camel:","category":"nature","emoji_order":"1371","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"camel":{"unicode":"1f42b","unicode_alt":"","code_decimal":"🐫","name":"bactrian camel","shortname":":camel:","category":"nature","emoji_order":"1372","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal","hump day"]},"elephant":{"unicode":"1f418","unicode_alt":"","code_decimal":"🐘","name":"elephant","shortname":":elephant:","category":"nature","emoji_order":"1373","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"rhino":{"unicode":"1f98f","unicode_alt":"","code_decimal":"🦏","name":"rhinoceros","shortname":":rhino:","category":"nature","emoji_order":"1374","aliases":[":rhinoceros:"],"aliases_ascii":[],"keywords":[]},"mouse":{"unicode":"1f42d","unicode_alt":"","code_decimal":"🐭","name":"mouse face","shortname":":mouse:","category":"nature","emoji_order":"1375","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"mouse2":{"unicode":"1f401","unicode_alt":"","code_decimal":"🐁","name":"mouse","shortname":":mouse2:","category":"nature","emoji_order":"1376","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"rat":{"unicode":"1f400","unicode_alt":"","code_decimal":"🐀","name":"rat","shortname":":rat:","category":"nature","emoji_order":"1377","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"hamster":{"unicode":"1f439","unicode_alt":"","code_decimal":"🐹","name":"hamster face","shortname":":hamster:","category":"nature","emoji_order":"1378","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"rabbit":{"unicode":"1f430","unicode_alt":"","code_decimal":"🐰","name":"rabbit face","shortname":":rabbit:","category":"nature","emoji_order":"1379","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"rabbit2":{"unicode":"1f407","unicode_alt":"","code_decimal":"🐇","name":"rabbit","shortname":":rabbit2:","category":"nature","emoji_order":"1380","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"chipmunk":{"unicode":"1f43f","unicode_alt":"1f43f-fe0f","code_decimal":"🐿","name":"chipmunk","shortname":":chipmunk:","category":"nature","emoji_order":"1381","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"bat":{"unicode":"1f987","unicode_alt":"","code_decimal":"🦇","name":"bat","shortname":":bat:","category":"nature","emoji_order":"1382","aliases":[],"aliases_ascii":[],"keywords":[]},"bear":{"unicode":"1f43b","unicode_alt":"","code_decimal":"🐻","name":"bear face","shortname":":bear:","category":"nature","emoji_order":"1383","aliases":[],"aliases_ascii":[],"keywords":["wildlife","roar","animal"]},"koala":{"unicode":"1f428","unicode_alt":"","code_decimal":"🐨","name":"koala","shortname":":koala:","category":"nature","emoji_order":"1384","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"panda_face":{"unicode":"1f43c","unicode_alt":"","code_decimal":"🐼","name":"panda face","shortname":":panda_face:","category":"nature","emoji_order":"1385","aliases":[],"aliases_ascii":[],"keywords":["wildlife","roar","animal"]},"feet":{"unicode":"1f43e","unicode_alt":"","code_decimal":"🐾","name":"paw prints","shortname":":feet:","category":"nature","emoji_order":"1386","aliases":[":paw_prints:"],"aliases_ascii":[],"keywords":["animal"]},"turkey":{"unicode":"1f983","unicode_alt":"","code_decimal":"🦃","name":"turkey","shortname":":turkey:","category":"nature","emoji_order":"1387","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"chicken":{"unicode":"1f414","unicode_alt":"","code_decimal":"🐔","name":"chicken","shortname":":chicken:","category":"nature","emoji_order":"1388","aliases":[],"aliases_ascii":[],"keywords":["animal","chicken"]},"rooster":{"unicode":"1f413","unicode_alt":"","code_decimal":"🐓","name":"rooster","shortname":":rooster:","category":"nature","emoji_order":"1389","aliases":[],"aliases_ascii":[],"keywords":["animal"]},"hatching_chick":{"unicode":"1f423","unicode_alt":"","code_decimal":"🐣","name":"hatching chick","shortname":":hatching_chick:","category":"nature","emoji_order":"1390","aliases":[],"aliases_ascii":[],"keywords":["animal","chicken"]},"baby_chick":{"unicode":"1f424","unicode_alt":"","code_decimal":"🐤","name":"baby chick","shortname":":baby_chick:","category":"nature","emoji_order":"1391","aliases":[],"aliases_ascii":[],"keywords":["animal","chicken"]},"hatched_chick":{"unicode":"1f425","unicode_alt":"","code_decimal":"🐥","name":"front-facing baby chick","shortname":":hatched_chick:","category":"nature","emoji_order":"1392","aliases":[],"aliases_ascii":[],"keywords":["animal","chicken"]},"bird":{"unicode":"1f426","unicode_alt":"","code_decimal":"🐦","name":"bird","shortname":":bird:","category":"nature","emoji_order":"1393","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"penguin":{"unicode":"1f427","unicode_alt":"","code_decimal":"🐧","name":"penguin","shortname":":penguin:","category":"nature","emoji_order":"1394","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"dove":{"unicode":"1f54a","unicode_alt":"1f54a-fe0f","code_decimal":"🕊","name":"dove of peace","shortname":":dove:","category":"nature","emoji_order":"1395","aliases":[":dove_of_peace:"],"aliases_ascii":[],"keywords":["animal"]},"eagle":{"unicode":"1f985","unicode_alt":"","code_decimal":"🦅","name":"eagle","shortname":":eagle:","category":"nature","emoji_order":"1396","aliases":[],"aliases_ascii":[],"keywords":[]},"duck":{"unicode":"1f986","unicode_alt":"","code_decimal":"🦆","name":"duck","shortname":":duck:","category":"nature","emoji_order":"1397","aliases":[],"aliases_ascii":[],"keywords":[]},"owl":{"unicode":"1f989","unicode_alt":"","code_decimal":"🦉","name":"owl","shortname":":owl:","category":"nature","emoji_order":"1398","aliases":[],"aliases_ascii":[],"keywords":[]},"frog":{"unicode":"1f438","unicode_alt":"","code_decimal":"🐸","name":"frog face","shortname":":frog:","category":"nature","emoji_order":"1399","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"crocodile":{"unicode":"1f40a","unicode_alt":"","code_decimal":"🐊","name":"crocodile","shortname":":crocodile:","category":"nature","emoji_order":"1400","aliases":[],"aliases_ascii":[],"keywords":["wildlife","reptile","animal"]},"turtle":{"unicode":"1f422","unicode_alt":"","code_decimal":"🐢","name":"turtle","shortname":":turtle:","category":"nature","emoji_order":"1401","aliases":[],"aliases_ascii":[],"keywords":["wildlife","reptile","animal"]},"lizard":{"unicode":"1f98e","unicode_alt":"","code_decimal":"🦎","name":"lizard","shortname":":lizard:","category":"nature","emoji_order":"1402","aliases":[],"aliases_ascii":[],"keywords":[]},"snake":{"unicode":"1f40d","unicode_alt":"","code_decimal":"🐍","name":"snake","shortname":":snake:","category":"nature","emoji_order":"1403","aliases":[],"aliases_ascii":[],"keywords":["wildlife","reptile","animal","creationism"]},"dragon_face":{"unicode":"1f432","unicode_alt":"","code_decimal":"🐲","name":"dragon face","shortname":":dragon_face:","category":"nature","emoji_order":"1404","aliases":[],"aliases_ascii":[],"keywords":["roar","monster","reptile","animal"]},"dragon":{"unicode":"1f409","unicode_alt":"","code_decimal":"🐉","name":"dragon","shortname":":dragon:","category":"nature","emoji_order":"1405","aliases":[],"aliases_ascii":[],"keywords":["roar","reptile","animal"]},"whale":{"unicode":"1f433","unicode_alt":"","code_decimal":"🐳","name":"spouting whale","shortname":":whale:","category":"nature","emoji_order":"1406","aliases":[],"aliases_ascii":[],"keywords":["wildlife","tropical","whales","animal"]},"whale2":{"unicode":"1f40b","unicode_alt":"","code_decimal":"🐋","name":"whale","shortname":":whale2:","category":"nature","emoji_order":"1407","aliases":[],"aliases_ascii":[],"keywords":["wildlife","tropical","whales","animal"]},"dolphin":{"unicode":"1f42c","unicode_alt":"","code_decimal":"🐬","name":"dolphin","shortname":":dolphin:","category":"nature","emoji_order":"1408","aliases":[],"aliases_ascii":[],"keywords":["wildlife","tropical","animal"]},"fish":{"unicode":"1f41f","unicode_alt":"","code_decimal":"🐟","name":"fish","shortname":":fish:","category":"nature","emoji_order":"1409","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"tropical_fish":{"unicode":"1f420","unicode_alt":"","code_decimal":"🐠","name":"tropical fish","shortname":":tropical_fish:","category":"nature","emoji_order":"1410","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"blowfish":{"unicode":"1f421","unicode_alt":"","code_decimal":"🐡","name":"blowfish","shortname":":blowfish:","category":"nature","emoji_order":"1411","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"shark":{"unicode":"1f988","unicode_alt":"","code_decimal":"🦈","name":"shark","shortname":":shark:","category":"nature","emoji_order":"1412","aliases":[],"aliases_ascii":[],"keywords":[]},"octopus":{"unicode":"1f419","unicode_alt":"","code_decimal":"🐙","name":"octopus","shortname":":octopus:","category":"nature","emoji_order":"1413","aliases":[],"aliases_ascii":[],"keywords":["wildlife","animal"]},"shell":{"unicode":"1f41a","unicode_alt":"","code_decimal":"🐚","name":"spiral shell","shortname":":shell:","category":"nature","emoji_order":"1414","aliases":[],"aliases_ascii":[],"keywords":[]},"crab":{"unicode":"1f980","unicode_alt":"","code_decimal":"🦀","name":"crab","shortname":":crab:","category":"nature","emoji_order":"1415","aliases":[],"aliases_ascii":[],"keywords":["tropical","animal"]},"shrimp":{"unicode":"1f990","unicode_alt":"","code_decimal":"🦐","name":"shrimp","shortname":":shrimp:","category":"nature","emoji_order":"1416","aliases":[],"aliases_ascii":[],"keywords":[]},"squid":{"unicode":"1f991","unicode_alt":"","code_decimal":"🦑","name":"squid","shortname":":squid:","category":"nature","emoji_order":"1417","aliases":[],"aliases_ascii":[],"keywords":[]},"butterfly":{"unicode":"1f98b","unicode_alt":"","code_decimal":"🦋","name":"butterfly","shortname":":butterfly:","category":"nature","emoji_order":"1418","aliases":[],"aliases_ascii":[],"keywords":[]},"snail":{"unicode":"1f40c","unicode_alt":"","code_decimal":"🐌","name":"snail","shortname":":snail:","category":"nature","emoji_order":"1419","aliases":[],"aliases_ascii":[],"keywords":["insects","animal"]},"bug":{"unicode":"1f41b","unicode_alt":"","code_decimal":"🐛","name":"bug","shortname":":bug:","category":"nature","emoji_order":"1420","aliases":[],"aliases_ascii":[],"keywords":["insects","animal"]},"ant":{"unicode":"1f41c","unicode_alt":"","code_decimal":"🐜","name":"ant","shortname":":ant:","category":"nature","emoji_order":"1421","aliases":[],"aliases_ascii":[],"keywords":["insects","animal"]},"bee":{"unicode":"1f41d","unicode_alt":"","code_decimal":"🐝","name":"honeybee","shortname":":bee:","category":"nature","emoji_order":"1422","aliases":[],"aliases_ascii":[],"keywords":["insects","animal"]},"beetle":{"unicode":"1f41e","unicode_alt":"","code_decimal":"🐞","name":"lady beetle","shortname":":beetle:","category":"nature","emoji_order":"1423","aliases":[],"aliases_ascii":[],"keywords":["insects","animal"]},"spider":{"unicode":"1f577","unicode_alt":"1f577-fe0f","code_decimal":"🕷","name":"spider","shortname":":spider:","category":"nature","emoji_order":"1424","aliases":[],"aliases_ascii":[],"keywords":["insects","halloween","animal"]},"spider_web":{"unicode":"1f578","unicode_alt":"1f578-fe0f","code_decimal":"🕸","name":"spider web","shortname":":spider_web:","category":"nature","emoji_order":"1425","aliases":[],"aliases_ascii":[],"keywords":["halloween"]},"scorpion":{"unicode":"1f982","unicode_alt":"","code_decimal":"🦂","name":"scorpion","shortname":":scorpion:","category":"nature","emoji_order":"1426","aliases":[],"aliases_ascii":[],"keywords":["insects","reptile","animal"]},"bouquet":{"unicode":"1f490","unicode_alt":"","code_decimal":"💐","name":"bouquet","shortname":":bouquet:","category":"nature","emoji_order":"1427","aliases":[],"aliases_ascii":[],"keywords":["nature","flower","plant","rip","condolence"]},"cherry_blossom":{"unicode":"1f338","unicode_alt":"","code_decimal":"🌸","name":"cherry blossom","shortname":":cherry_blossom:","category":"nature","emoji_order":"1428","aliases":[],"aliases_ascii":[],"keywords":["nature","flower","plant","tropical"]},"white_flower":{"unicode":"1f4ae","unicode_alt":"","code_decimal":"💮","name":"white flower","shortname":":white_flower:","category":"symbols","emoji_order":"1429","aliases":[],"aliases_ascii":[],"keywords":["flower","symbol"]},"rosette":{"unicode":"1f3f5","unicode_alt":"1f3f5-fe0f","code_decimal":"🏵","name":"rosette","shortname":":rosette:","category":"nature","emoji_order":"1430","aliases":[],"aliases_ascii":[],"keywords":["tropical"]},"rose":{"unicode":"1f339","unicode_alt":"","code_decimal":"🌹","name":"rose","shortname":":rose:","category":"nature","emoji_order":"1431","aliases":[],"aliases_ascii":[],"keywords":["nature","flower","plant","rip","condolence","beautiful"]},"wilted_rose":{"unicode":"1f940","unicode_alt":"","code_decimal":"🥀","name":"wilted flower","shortname":":wilted_rose:","category":"nature","emoji_order":"1432","aliases":[":wilted_flower:"],"aliases_ascii":[],"keywords":[]},"hibiscus":{"unicode":"1f33a","unicode_alt":"","code_decimal":"🌺","name":"hibiscus","shortname":":hibiscus:","category":"nature","emoji_order":"1433","aliases":[],"aliases_ascii":[],"keywords":["nature","flower","plant","tropical"]},"sunflower":{"unicode":"1f33b","unicode_alt":"","code_decimal":"🌻","name":"sunflower","shortname":":sunflower:","category":"nature","emoji_order":"1434","aliases":[],"aliases_ascii":[],"keywords":["nature","flower","plant"]},"blossom":{"unicode":"1f33c","unicode_alt":"","code_decimal":"🌼","name":"blossom","shortname":":blossom:","category":"nature","emoji_order":"1435","aliases":[],"aliases_ascii":[],"keywords":["nature","flower","plant"]},"tulip":{"unicode":"1f337","unicode_alt":"","code_decimal":"🌷","name":"tulip","shortname":":tulip:","category":"nature","emoji_order":"1436","aliases":[],"aliases_ascii":[],"keywords":["nature","flower","plant","vagina","girls night"]},"seedling":{"unicode":"1f331","unicode_alt":"","code_decimal":"🌱","name":"seedling","shortname":":seedling:","category":"nature","emoji_order":"1437","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","leaf"]},"evergreen_tree":{"unicode":"1f332","unicode_alt":"","code_decimal":"🌲","name":"evergreen tree","shortname":":evergreen_tree:","category":"nature","emoji_order":"1438","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","holidays","christmas","camp","trees"]},"deciduous_tree":{"unicode":"1f333","unicode_alt":"","code_decimal":"🌳","name":"deciduous tree","shortname":":deciduous_tree:","category":"nature","emoji_order":"1439","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","camp","trees"]},"palm_tree":{"unicode":"1f334","unicode_alt":"","code_decimal":"🌴","name":"palm tree","shortname":":palm_tree:","category":"nature","emoji_order":"1440","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","tropical","trees"]},"cactus":{"unicode":"1f335","unicode_alt":"","code_decimal":"🌵","name":"cactus","shortname":":cactus:","category":"nature","emoji_order":"1441","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","trees"]},"ear_of_rice":{"unicode":"1f33e","unicode_alt":"","code_decimal":"🌾","name":"ear of rice","shortname":":ear_of_rice:","category":"nature","emoji_order":"1442","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","leaf"]},"herb":{"unicode":"1f33f","unicode_alt":"","code_decimal":"🌿","name":"herb","shortname":":herb:","category":"nature","emoji_order":"1443","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","leaf"]},"shamrock":{"unicode":"2618","unicode_alt":"2618-fe0f","code_decimal":"☘","name":"shamrock","shortname":":shamrock:","category":"nature","emoji_order":"1444","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","luck","leaf"]},"four_leaf_clover":{"unicode":"1f340","unicode_alt":"","code_decimal":"🍀","name":"four leaf clover","shortname":":four_leaf_clover:","category":"nature","emoji_order":"1445","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","luck","leaf","sol"]},"maple_leaf":{"unicode":"1f341","unicode_alt":"","code_decimal":"🍁","name":"maple leaf","shortname":":maple_leaf:","category":"nature","emoji_order":"1446","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","leaf"]},"fallen_leaf":{"unicode":"1f342","unicode_alt":"","code_decimal":"🍂","name":"fallen leaf","shortname":":fallen_leaf:","category":"nature","emoji_order":"1447","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","leaf"]},"leaves":{"unicode":"1f343","unicode_alt":"","code_decimal":"🍃","name":"leaf fluttering in wind","shortname":":leaves:","category":"nature","emoji_order":"1448","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","leaf"]},"grapes":{"unicode":"1f347","unicode_alt":"","code_decimal":"🍇","name":"grapes","shortname":":grapes:","category":"food","emoji_order":"1449","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"melon":{"unicode":"1f348","unicode_alt":"","code_decimal":"🍈","name":"melon","shortname":":melon:","category":"food","emoji_order":"1450","aliases":[],"aliases_ascii":[],"keywords":["fruit","boobs","food"]},"watermelon":{"unicode":"1f349","unicode_alt":"","code_decimal":"🍉","name":"watermelon","shortname":":watermelon:","category":"food","emoji_order":"1451","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"tangerine":{"unicode":"1f34a","unicode_alt":"","code_decimal":"🍊","name":"tangerine","shortname":":tangerine:","category":"food","emoji_order":"1452","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"lemon":{"unicode":"1f34b","unicode_alt":"","code_decimal":"🍋","name":"lemon","shortname":":lemon:","category":"food","emoji_order":"1453","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"banana":{"unicode":"1f34c","unicode_alt":"","code_decimal":"🍌","name":"banana","shortname":":banana:","category":"food","emoji_order":"1454","aliases":[],"aliases_ascii":[],"keywords":["fruit","penis","food"]},"pineapple":{"unicode":"1f34d","unicode_alt":"","code_decimal":"🍍","name":"pineapple","shortname":":pineapple:","category":"food","emoji_order":"1455","aliases":[],"aliases_ascii":[],"keywords":["fruit","food","tropical"]},"apple":{"unicode":"1f34e","unicode_alt":"","code_decimal":"🍎","name":"red apple","shortname":":apple:","category":"food","emoji_order":"1456","aliases":[],"aliases_ascii":[],"keywords":["fruit","food","creationism"]},"green_apple":{"unicode":"1f34f","unicode_alt":"","code_decimal":"🍏","name":"green apple","shortname":":green_apple:","category":"food","emoji_order":"1457","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"pear":{"unicode":"1f350","unicode_alt":"","code_decimal":"🍐","name":"pear","shortname":":pear:","category":"food","emoji_order":"1458","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"peach":{"unicode":"1f351","unicode_alt":"","code_decimal":"🍑","name":"peach","shortname":":peach:","category":"food","emoji_order":"1459","aliases":[],"aliases_ascii":[],"keywords":["fruit","butt","food"]},"cherries":{"unicode":"1f352","unicode_alt":"","code_decimal":"🍒","name":"cherries","shortname":":cherries:","category":"food","emoji_order":"1460","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"strawberry":{"unicode":"1f353","unicode_alt":"","code_decimal":"🍓","name":"strawberry","shortname":":strawberry:","category":"food","emoji_order":"1461","aliases":[],"aliases_ascii":[],"keywords":["fruit","food"]},"kiwi":{"unicode":"1f95d","unicode_alt":"","code_decimal":"🥝","name":"kiwifruit","shortname":":kiwi:","category":"food","emoji_order":"1462","aliases":[":kiwifruit:"],"aliases_ascii":[],"keywords":[]},"tomato":{"unicode":"1f345","unicode_alt":"","code_decimal":"🍅","name":"tomato","shortname":":tomato:","category":"food","emoji_order":"1463","aliases":[],"aliases_ascii":[],"keywords":["fruit","vegetables","food"]},"avocado":{"unicode":"1f951","unicode_alt":"","code_decimal":"🥑","name":"avocado","shortname":":avocado:","category":"food","emoji_order":"1464","aliases":[],"aliases_ascii":[],"keywords":[]},"eggplant":{"unicode":"1f346","unicode_alt":"","code_decimal":"🍆","name":"aubergine","shortname":":eggplant:","category":"food","emoji_order":"1465","aliases":[],"aliases_ascii":[],"keywords":["vegetables","penis","food"]},"potato":{"unicode":"1f954","unicode_alt":"","code_decimal":"🥔","name":"potato","shortname":":potato:","category":"food","emoji_order":"1466","aliases":[],"aliases_ascii":[],"keywords":[]},"carrot":{"unicode":"1f955","unicode_alt":"","code_decimal":"🥕","name":"carrot","shortname":":carrot:","category":"food","emoji_order":"1467","aliases":[],"aliases_ascii":[],"keywords":[]},"corn":{"unicode":"1f33d","unicode_alt":"","code_decimal":"🌽","name":"ear of maize","shortname":":corn:","category":"food","emoji_order":"1468","aliases":[],"aliases_ascii":[],"keywords":["vegetables","food"]},"hot_pepper":{"unicode":"1f336","unicode_alt":"1f336-fe0f","code_decimal":"🌶","name":"hot pepper","shortname":":hot_pepper:","category":"food","emoji_order":"1469","aliases":[],"aliases_ascii":[],"keywords":["vegetables","food"]},"cucumber":{"unicode":"1f952","unicode_alt":"","code_decimal":"🥒","name":"cucumber","shortname":":cucumber:","category":"food","emoji_order":"1470","aliases":[],"aliases_ascii":[],"keywords":[]},"mushroom":{"unicode":"1f344","unicode_alt":"","code_decimal":"🍄","name":"mushroom","shortname":":mushroom:","category":"nature","emoji_order":"1471","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","drugs"]},"peanuts":{"unicode":"1f95c","unicode_alt":"","code_decimal":"🥜","name":"peanuts","shortname":":peanuts:","category":"food","emoji_order":"1472","aliases":[":shelled_peanut:"],"aliases_ascii":[],"keywords":[]},"chestnut":{"unicode":"1f330","unicode_alt":"","code_decimal":"🌰","name":"chestnut","shortname":":chestnut:","category":"nature","emoji_order":"1473","aliases":[],"aliases_ascii":[],"keywords":["nature","plant"]},"bread":{"unicode":"1f35e","unicode_alt":"","code_decimal":"🍞","name":"bread","shortname":":bread:","category":"food","emoji_order":"1474","aliases":[],"aliases_ascii":[],"keywords":["food"]},"croissant":{"unicode":"1f950","unicode_alt":"","code_decimal":"🥐","name":"croissant","shortname":":croissant:","category":"food","emoji_order":"1475","aliases":[],"aliases_ascii":[],"keywords":[]},"french_bread":{"unicode":"1f956","unicode_alt":"","code_decimal":"🥖","name":"baguette bread","shortname":":french_bread:","category":"food","emoji_order":"1476","aliases":[":baguette_bread:"],"aliases_ascii":[],"keywords":[]},"pancakes":{"unicode":"1f95e","unicode_alt":"","code_decimal":"🥞","name":"pancakes","shortname":":pancakes:","category":"food","emoji_order":"1477","aliases":[],"aliases_ascii":[],"keywords":[]},"cheese":{"unicode":"1f9c0","unicode_alt":"","code_decimal":"🧀","name":"cheese wedge","shortname":":cheese:","category":"food","emoji_order":"1478","aliases":[":cheese_wedge:"],"aliases_ascii":[],"keywords":["food"]},"meat_on_bone":{"unicode":"1f356","unicode_alt":"","code_decimal":"🍖","name":"meat on bone","shortname":":meat_on_bone:","category":"food","emoji_order":"1479","aliases":[],"aliases_ascii":[],"keywords":["food"]},"poultry_leg":{"unicode":"1f357","unicode_alt":"","code_decimal":"🍗","name":"poultry leg","shortname":":poultry_leg:","category":"food","emoji_order":"1480","aliases":[],"aliases_ascii":[],"keywords":["food","holidays"]},"bacon":{"unicode":"1f953","unicode_alt":"","code_decimal":"🥓","name":"bacon","shortname":":bacon:","category":"food","emoji_order":"1481","aliases":[],"aliases_ascii":[],"keywords":["pig"]},"hamburger":{"unicode":"1f354","unicode_alt":"","code_decimal":"🍔","name":"hamburger","shortname":":hamburger:","category":"food","emoji_order":"1482","aliases":[],"aliases_ascii":[],"keywords":["america","food"]},"fries":{"unicode":"1f35f","unicode_alt":"","code_decimal":"🍟","name":"french fries","shortname":":fries:","category":"food","emoji_order":"1483","aliases":[],"aliases_ascii":[],"keywords":["america","food"]},"pizza":{"unicode":"1f355","unicode_alt":"","code_decimal":"🍕","name":"slice of pizza","shortname":":pizza:","category":"food","emoji_order":"1484","aliases":[],"aliases_ascii":[],"keywords":["italian","food","boys night"]},"hotdog":{"unicode":"1f32d","unicode_alt":"","code_decimal":"🌭","name":"hot dog","shortname":":hotdog:","category":"food","emoji_order":"1485","aliases":[":hot_dog:"],"aliases_ascii":[],"keywords":["america","food"]},"taco":{"unicode":"1f32e","unicode_alt":"","code_decimal":"🌮","name":"taco","shortname":":taco:","category":"food","emoji_order":"1486","aliases":[],"aliases_ascii":[],"keywords":["food","mexican","vagina"]},"burrito":{"unicode":"1f32f","unicode_alt":"","code_decimal":"🌯","name":"burrito","shortname":":burrito:","category":"food","emoji_order":"1487","aliases":[],"aliases_ascii":[],"keywords":["food","mexican"]},"stuffed_flatbread":{"unicode":"1f959","unicode_alt":"","code_decimal":"🥙","name":"stuffed flatbread","shortname":":stuffed_flatbread:","category":"food","emoji_order":"1488","aliases":[":stuffed_pita:"],"aliases_ascii":[],"keywords":[]},"egg":{"unicode":"1f95a","unicode_alt":"","code_decimal":"🥚","name":"egg","shortname":":egg:","category":"food","emoji_order":"1489","aliases":[],"aliases_ascii":[],"keywords":[]},"cooking":{"unicode":"1f373","unicode_alt":"","code_decimal":"🍳","name":"cooking","shortname":":cooking:","category":"food","emoji_order":"1490","aliases":[],"aliases_ascii":[],"keywords":["food"]},"shallow_pan_of_food":{"unicode":"1f958","unicode_alt":"","code_decimal":"🥘","name":"shallow pan of food","shortname":":shallow_pan_of_food:","category":"food","emoji_order":"1491","aliases":[":paella:"],"aliases_ascii":[],"keywords":["pan of food"]},"stew":{"unicode":"1f372","unicode_alt":"","code_decimal":"🍲","name":"pot of food","shortname":":stew:","category":"food","emoji_order":"1492","aliases":[],"aliases_ascii":[],"keywords":["food","steam"]},"salad":{"unicode":"1f957","unicode_alt":"","code_decimal":"🥗","name":"green salad","shortname":":salad:","category":"food","emoji_order":"1493","aliases":[":green_salad:"],"aliases_ascii":[],"keywords":[]},"popcorn":{"unicode":"1f37f","unicode_alt":"","code_decimal":"🍿","name":"popcorn","shortname":":popcorn:","category":"food","emoji_order":"1494","aliases":[],"aliases_ascii":[],"keywords":["food","parties"]},"bento":{"unicode":"1f371","unicode_alt":"","code_decimal":"🍱","name":"bento box","shortname":":bento:","category":"food","emoji_order":"1495","aliases":[],"aliases_ascii":[],"keywords":["object","sushi","japan","food"]},"rice_cracker":{"unicode":"1f358","unicode_alt":"","code_decimal":"🍘","name":"rice cracker","shortname":":rice_cracker:","category":"food","emoji_order":"1496","aliases":[],"aliases_ascii":[],"keywords":["sushi","food"]},"rice_ball":{"unicode":"1f359","unicode_alt":"","code_decimal":"🍙","name":"rice ball","shortname":":rice_ball:","category":"food","emoji_order":"1497","aliases":[],"aliases_ascii":[],"keywords":["sushi","japan","food"]},"rice":{"unicode":"1f35a","unicode_alt":"","code_decimal":"🍚","name":"cooked rice","shortname":":rice:","category":"food","emoji_order":"1498","aliases":[],"aliases_ascii":[],"keywords":["sushi","japan","food"]},"curry":{"unicode":"1f35b","unicode_alt":"","code_decimal":"🍛","name":"curry and rice","shortname":":curry:","category":"food","emoji_order":"1499","aliases":[],"aliases_ascii":[],"keywords":["food"]},"ramen":{"unicode":"1f35c","unicode_alt":"","code_decimal":"🍜","name":"steaming bowl","shortname":":ramen:","category":"food","emoji_order":"1500","aliases":[],"aliases_ascii":[],"keywords":["noodles","ramen","japan","food"]},"spaghetti":{"unicode":"1f35d","unicode_alt":"","code_decimal":"🍝","name":"spaghetti","shortname":":spaghetti:","category":"food","emoji_order":"1501","aliases":[],"aliases_ascii":[],"keywords":["noodles","pasta","italian","food"]},"sweet_potato":{"unicode":"1f360","unicode_alt":"","code_decimal":"🍠","name":"roasted sweet potato","shortname":":sweet_potato:","category":"food","emoji_order":"1502","aliases":[],"aliases_ascii":[],"keywords":["vegetables","food"]},"oden":{"unicode":"1f362","unicode_alt":"","code_decimal":"🍢","name":"oden","shortname":":oden:","category":"food","emoji_order":"1503","aliases":[],"aliases_ascii":[],"keywords":["food"]},"sushi":{"unicode":"1f363","unicode_alt":"","code_decimal":"🍣","name":"sushi","shortname":":sushi:","category":"food","emoji_order":"1504","aliases":[],"aliases_ascii":[],"keywords":["sushi","japan","food"]},"fried_shrimp":{"unicode":"1f364","unicode_alt":"","code_decimal":"🍤","name":"fried shrimp","shortname":":fried_shrimp:","category":"food","emoji_order":"1505","aliases":[],"aliases_ascii":[],"keywords":["food"]},"fish_cake":{"unicode":"1f365","unicode_alt":"","code_decimal":"🍥","name":"fish cake with swirl design","shortname":":fish_cake:","category":"food","emoji_order":"1506","aliases":[],"aliases_ascii":[],"keywords":["sushi","food"]},"dango":{"unicode":"1f361","unicode_alt":"","code_decimal":"🍡","name":"dango","shortname":":dango:","category":"food","emoji_order":"1507","aliases":[],"aliases_ascii":[],"keywords":["food"]},"icecream":{"unicode":"1f366","unicode_alt":"","code_decimal":"🍦","name":"soft ice cream","shortname":":icecream:","category":"food","emoji_order":"1508","aliases":[],"aliases_ascii":[],"keywords":["food"]},"shaved_ice":{"unicode":"1f367","unicode_alt":"","code_decimal":"🍧","name":"shaved ice","shortname":":shaved_ice:","category":"food","emoji_order":"1509","aliases":[],"aliases_ascii":[],"keywords":["food"]},"ice_cream":{"unicode":"1f368","unicode_alt":"","code_decimal":"🍨","name":"ice cream","shortname":":ice_cream:","category":"food","emoji_order":"1510","aliases":[],"aliases_ascii":[],"keywords":["food"]},"doughnut":{"unicode":"1f369","unicode_alt":"","code_decimal":"🍩","name":"doughnut","shortname":":doughnut:","category":"food","emoji_order":"1511","aliases":[],"aliases_ascii":[],"keywords":["food"]},"cookie":{"unicode":"1f36a","unicode_alt":"","code_decimal":"🍪","name":"cookie","shortname":":cookie:","category":"food","emoji_order":"1512","aliases":[],"aliases_ascii":[],"keywords":["food","vagina"]},"birthday":{"unicode":"1f382","unicode_alt":"","code_decimal":"🎂","name":"birthday cake","shortname":":birthday:","category":"food","emoji_order":"1513","aliases":[],"aliases_ascii":[],"keywords":["birthday","food","parties"]},"cake":{"unicode":"1f370","unicode_alt":"","code_decimal":"🍰","name":"shortcake","shortname":":cake:","category":"food","emoji_order":"1514","aliases":[],"aliases_ascii":[],"keywords":["food"]},"chocolate_bar":{"unicode":"1f36b","unicode_alt":"","code_decimal":"🍫","name":"chocolate bar","shortname":":chocolate_bar:","category":"food","emoji_order":"1515","aliases":[],"aliases_ascii":[],"keywords":["food","halloween"]},"candy":{"unicode":"1f36c","unicode_alt":"","code_decimal":"🍬","name":"candy","shortname":":candy:","category":"food","emoji_order":"1516","aliases":[],"aliases_ascii":[],"keywords":["food","halloween"]},"lollipop":{"unicode":"1f36d","unicode_alt":"","code_decimal":"🍭","name":"lollipop","shortname":":lollipop:","category":"food","emoji_order":"1517","aliases":[],"aliases_ascii":[],"keywords":["food","halloween"]},"custard":{"unicode":"1f36e","unicode_alt":"","code_decimal":"🍮","name":"custard","shortname":":custard:","category":"food","emoji_order":"1518","aliases":[":pudding:",":flan:"],"aliases_ascii":[],"keywords":["food"]},"honey_pot":{"unicode":"1f36f","unicode_alt":"","code_decimal":"🍯","name":"honey pot","shortname":":honey_pot:","category":"food","emoji_order":"1519","aliases":[],"aliases_ascii":[],"keywords":["food","vagina"]},"baby_bottle":{"unicode":"1f37c","unicode_alt":"","code_decimal":"🍼","name":"baby bottle","shortname":":baby_bottle:","category":"food","emoji_order":"1520","aliases":[],"aliases_ascii":[],"keywords":["drink","object","food","baby"]},"milk":{"unicode":"1f95b","unicode_alt":"","code_decimal":"🥛","name":"glass of milk","shortname":":milk:","category":"food","emoji_order":"1521","aliases":[":glass_of_milk:"],"aliases_ascii":[],"keywords":[]},"coffee":{"unicode":"2615","unicode_alt":"2615-fe0f","code_decimal":"☕","name":"hot beverage","shortname":":coffee:","category":"food","emoji_order":"1522","aliases":[],"aliases_ascii":[],"keywords":["drink","caffeine","steam","morning"]},"tea":{"unicode":"1f375","unicode_alt":"","code_decimal":"🍵","name":"teacup without handle","shortname":":tea:","category":"food","emoji_order":"1523","aliases":[],"aliases_ascii":[],"keywords":["drink","japan","caffeine","steam","morning"]},"sake":{"unicode":"1f376","unicode_alt":"","code_decimal":"🍶","name":"sake bottle and cup","shortname":":sake:","category":"food","emoji_order":"1524","aliases":[],"aliases_ascii":[],"keywords":["drink","japan","sake","alcohol","girls night"]},"champagne":{"unicode":"1f37e","unicode_alt":"","code_decimal":"🍾","name":"bottle with popping cork","shortname":":champagne:","category":"food","emoji_order":"1525","aliases":[":bottle_with_popping_cork:"],"aliases_ascii":[],"keywords":["drink","cheers","alcohol","parties"]},"wine_glass":{"unicode":"1f377","unicode_alt":"","code_decimal":"🍷","name":"wine glass","shortname":":wine_glass:","category":"food","emoji_order":"1526","aliases":[],"aliases_ascii":[],"keywords":["drink","italian","alcohol","girls night","parties"]},"cocktail":{"unicode":"1f378","unicode_alt":"","code_decimal":"🍸","name":"cocktail glass","shortname":":cocktail:","category":"food","emoji_order":"1527","aliases":[],"aliases_ascii":[],"keywords":["drink","cocktail","alcohol","girls night","parties"]},"tropical_drink":{"unicode":"1f379","unicode_alt":"","code_decimal":"🍹","name":"tropical drink","shortname":":tropical_drink:","category":"food","emoji_order":"1528","aliases":[],"aliases_ascii":[],"keywords":["drink","cocktail","tropical","alcohol"]},"beer":{"unicode":"1f37a","unicode_alt":"","code_decimal":"🍺","name":"beer mug","shortname":":beer:","category":"food","emoji_order":"1529","aliases":[],"aliases_ascii":[],"keywords":["drink","beer","alcohol","parties"]},"beers":{"unicode":"1f37b","unicode_alt":"","code_decimal":"🍻","name":"clinking beer mugs","shortname":":beers:","category":"food","emoji_order":"1530","aliases":[],"aliases_ascii":[],"keywords":["drink","cheers","beer","alcohol","thank you","boys night","parties"]},"champagne_glass":{"unicode":"1f942","unicode_alt":"","code_decimal":"🥂","name":"clinking glasses","shortname":":champagne_glass:","category":"food","emoji_order":"1531","aliases":[":clinking_glass:"],"aliases_ascii":[],"keywords":[]},"tumbler_glass":{"unicode":"1f943","unicode_alt":"","code_decimal":"🥃","name":"tumbler glass","shortname":":tumbler_glass:","category":"food","emoji_order":"1532","aliases":[":whisky:"],"aliases_ascii":[],"keywords":["booze"]},"fork_knife_plate":{"unicode":"1f37d","unicode_alt":"1f37d-fe0f","code_decimal":"🍽","name":"fork and knife with plate","shortname":":fork_knife_plate:","category":"food","emoji_order":"1533","aliases":[":fork_and_knife_with_plate:"],"aliases_ascii":[],"keywords":["object","food"]},"fork_and_knife":{"unicode":"1f374","unicode_alt":"","code_decimal":"🍴","name":"fork and knife","shortname":":fork_and_knife:","category":"food","emoji_order":"1534","aliases":[],"aliases_ascii":[],"keywords":["object","weapon","food"]},"spoon":{"unicode":"1f944","unicode_alt":"","code_decimal":"🥄","name":"spoon","shortname":":spoon:","category":"food","emoji_order":"1535","aliases":[],"aliases_ascii":[],"keywords":[]},"knife":{"unicode":"1f52a","unicode_alt":"","code_decimal":"🔪","name":"hocho","shortname":":knife:","category":"objects","emoji_order":"1536","aliases":[],"aliases_ascii":[],"keywords":["object","weapon"]},"amphora":{"unicode":"1f3fa","unicode_alt":"","code_decimal":"🏺","name":"amphora","shortname":":amphora:","category":"objects","emoji_order":"1537","aliases":[],"aliases_ascii":[],"keywords":["object"]},"earth_africa":{"unicode":"1f30d","unicode_alt":"","code_decimal":"🌍","name":"earth globe europe-africa","shortname":":earth_africa:","category":"nature","emoji_order":"1538","aliases":[],"aliases_ascii":[],"keywords":["map","vacation","globe"]},"earth_americas":{"unicode":"1f30e","unicode_alt":"","code_decimal":"🌎","name":"earth globe americas","shortname":":earth_americas:","category":"nature","emoji_order":"1539","aliases":[],"aliases_ascii":[],"keywords":["map","vacation","globe"]},"earth_asia":{"unicode":"1f30f","unicode_alt":"","code_decimal":"🌏","name":"earth globe asia-australia","shortname":":earth_asia:","category":"nature","emoji_order":"1540","aliases":[],"aliases_ascii":[],"keywords":["map","vacation","globe"]},"globe_with_meridians":{"unicode":"1f310","unicode_alt":"","code_decimal":"🌐","name":"globe with meridians","shortname":":globe_with_meridians:","category":"symbols","emoji_order":"1541","aliases":[],"aliases_ascii":[],"keywords":["symbol","globe"]},"map":{"unicode":"1f5fa","unicode_alt":"1f5fa-fe0f","code_decimal":"🗺","name":"world map","shortname":":map:","category":"objects","emoji_order":"1542","aliases":[":world_map:"],"aliases_ascii":[],"keywords":["travel","map","vacation"]},"japan":{"unicode":"1f5fe","unicode_alt":"","code_decimal":"🗾","name":"silhouette of japan","shortname":":japan:","category":"travel","emoji_order":"1543","aliases":[],"aliases_ascii":[],"keywords":["places","travel","map","vacation","tropical"]},"mountain_snow":{"unicode":"1f3d4","unicode_alt":"1f3d4-fe0f","code_decimal":"🏔","name":"snow capped mountain","shortname":":mountain_snow:","category":"travel","emoji_order":"1544","aliases":[":snow_capped_mountain:"],"aliases_ascii":[],"keywords":["places","travel","vacation","cold","camp"]},"mountain":{"unicode":"26f0","unicode_alt":"26f0-fe0f","code_decimal":"⛰","name":"mountain","shortname":":mountain:","category":"travel","emoji_order":"1545","aliases":[],"aliases_ascii":[],"keywords":["places","travel","vacation","camp"]},"volcano":{"unicode":"1f30b","unicode_alt":"","code_decimal":"🌋","name":"volcano","shortname":":volcano:","category":"travel","emoji_order":"1546","aliases":[],"aliases_ascii":[],"keywords":["places","tropical"]},"mount_fuji":{"unicode":"1f5fb","unicode_alt":"","code_decimal":"🗻","name":"mount fuji","shortname":":mount_fuji:","category":"travel","emoji_order":"1547","aliases":[],"aliases_ascii":[],"keywords":["places","travel","vacation","cold","camp"]},"camping":{"unicode":"1f3d5","unicode_alt":"1f3d5-fe0f","code_decimal":"🏕","name":"camping","shortname":":camping:","category":"travel","emoji_order":"1548","aliases":[],"aliases_ascii":[],"keywords":["places","travel","vacation","camp"]},"beach":{"unicode":"1f3d6","unicode_alt":"1f3d6-fe0f","code_decimal":"🏖","name":"beach with umbrella","shortname":":beach:","category":"travel","emoji_order":"1549","aliases":[":beach_with_umbrella:"],"aliases_ascii":[],"keywords":["places","travel","vacation","tropical","beach","swim"]},"desert":{"unicode":"1f3dc","unicode_alt":"1f3dc-fe0f","code_decimal":"🏜","name":"desert","shortname":":desert:","category":"travel","emoji_order":"1550","aliases":[],"aliases_ascii":[],"keywords":["places","travel","vacation","hot"]},"island":{"unicode":"1f3dd","unicode_alt":"1f3dd-fe0f","code_decimal":"🏝","name":"desert island","shortname":":island:","category":"travel","emoji_order":"1551","aliases":[":desert_island:"],"aliases_ascii":[],"keywords":["places","travel","vacation","tropical","beach","swim"]},"park":{"unicode":"1f3de","unicode_alt":"1f3de-fe0f","code_decimal":"🏞","name":"national park","shortname":":park:","category":"travel","emoji_order":"1552","aliases":[":national_park:"],"aliases_ascii":[],"keywords":["travel","vacation","park","camp"]},"stadium":{"unicode":"1f3df","unicode_alt":"1f3df-fe0f","code_decimal":"🏟","name":"stadium","shortname":":stadium:","category":"travel","emoji_order":"1553","aliases":[],"aliases_ascii":[],"keywords":["places","building","travel","vacation","boys night"]},"classical_building":{"unicode":"1f3db","unicode_alt":"1f3db-fe0f","code_decimal":"🏛","name":"classical building","shortname":":classical_building:","category":"travel","emoji_order":"1554","aliases":[],"aliases_ascii":[],"keywords":["places","building","travel","vacation"]},"construction_site":{"unicode":"1f3d7","unicode_alt":"1f3d7-fe0f","code_decimal":"🏗","name":"building construction","shortname":":construction_site:","category":"travel","emoji_order":"1555","aliases":[":building_construction:"],"aliases_ascii":[],"keywords":["building","crane"]},"homes":{"unicode":"1f3d8","unicode_alt":"1f3d8-fe0f","code_decimal":"🏘","name":"house buildings","shortname":":homes:","category":"travel","emoji_order":"1556","aliases":[":house_buildings:"],"aliases_ascii":[],"keywords":["places","building","house"]},"cityscape":{"unicode":"1f3d9","unicode_alt":"1f3d9-fe0f","code_decimal":"🏙","name":"cityscape","shortname":":cityscape:","category":"travel","emoji_order":"1557","aliases":[],"aliases_ascii":[],"keywords":["places","building","vacation"]},"house_abandoned":{"unicode":"1f3da","unicode_alt":"1f3da-fe0f","code_decimal":"🏚","name":"derelict house building","shortname":":house_abandoned:","category":"travel","emoji_order":"1558","aliases":[":derelict_house_building:"],"aliases_ascii":[],"keywords":["places","building","house"]},"house":{"unicode":"1f3e0","unicode_alt":"","code_decimal":"🏠","name":"house building","shortname":":house:","category":"travel","emoji_order":"1559","aliases":[],"aliases_ascii":[],"keywords":["places","building","house"]},"house_with_garden":{"unicode":"1f3e1","unicode_alt":"","code_decimal":"🏡","name":"house with garden","shortname":":house_with_garden:","category":"travel","emoji_order":"1560","aliases":[],"aliases_ascii":[],"keywords":["places","building","house"]},"office":{"unicode":"1f3e2","unicode_alt":"","code_decimal":"🏢","name":"office building","shortname":":office:","category":"travel","emoji_order":"1561","aliases":[],"aliases_ascii":[],"keywords":["places","building","work"]},"post_office":{"unicode":"1f3e3","unicode_alt":"","code_decimal":"🏣","name":"japanese post office","shortname":":post_office:","category":"travel","emoji_order":"1562","aliases":[],"aliases_ascii":[],"keywords":["places","building","post office"]},"european_post_office":{"unicode":"1f3e4","unicode_alt":"","code_decimal":"🏤","name":"european post office","shortname":":european_post_office:","category":"travel","emoji_order":"1563","aliases":[],"aliases_ascii":[],"keywords":["places","building","post office"]},"hospital":{"unicode":"1f3e5","unicode_alt":"","code_decimal":"🏥","name":"hospital","shortname":":hospital:","category":"travel","emoji_order":"1564","aliases":[],"aliases_ascii":[],"keywords":["places","building","health","911"]},"bank":{"unicode":"1f3e6","unicode_alt":"","code_decimal":"🏦","name":"bank","shortname":":bank:","category":"travel","emoji_order":"1565","aliases":[],"aliases_ascii":[],"keywords":["places","building"]},"hotel":{"unicode":"1f3e8","unicode_alt":"","code_decimal":"🏨","name":"hotel","shortname":":hotel:","category":"travel","emoji_order":"1566","aliases":[],"aliases_ascii":[],"keywords":["places","building","vacation"]},"love_hotel":{"unicode":"1f3e9","unicode_alt":"","code_decimal":"🏩","name":"love hotel","shortname":":love_hotel:","category":"travel","emoji_order":"1567","aliases":[],"aliases_ascii":[],"keywords":["places","building","love"]},"convenience_store":{"unicode":"1f3ea","unicode_alt":"","code_decimal":"🏪","name":"convenience store","shortname":":convenience_store:","category":"travel","emoji_order":"1568","aliases":[],"aliases_ascii":[],"keywords":["places","building"]},"school":{"unicode":"1f3eb","unicode_alt":"","code_decimal":"🏫","name":"school","shortname":":school:","category":"travel","emoji_order":"1569","aliases":[],"aliases_ascii":[],"keywords":["places","building"]},"department_store":{"unicode":"1f3ec","unicode_alt":"","code_decimal":"🏬","name":"department store","shortname":":department_store:","category":"travel","emoji_order":"1570","aliases":[],"aliases_ascii":[],"keywords":["places","building"]},"factory":{"unicode":"1f3ed","unicode_alt":"","code_decimal":"🏭","name":"factory","shortname":":factory:","category":"travel","emoji_order":"1571","aliases":[],"aliases_ascii":[],"keywords":["places","building","travel","steam"]},"japanese_castle":{"unicode":"1f3ef","unicode_alt":"","code_decimal":"🏯","name":"japanese castle","shortname":":japanese_castle:","category":"travel","emoji_order":"1572","aliases":[],"aliases_ascii":[],"keywords":["places","building","travel","vacation"]},"european_castle":{"unicode":"1f3f0","unicode_alt":"","code_decimal":"🏰","name":"european castle","shortname":":european_castle:","category":"travel","emoji_order":"1573","aliases":[],"aliases_ascii":[],"keywords":["places","building","travel","vacation"]},"wedding":{"unicode":"1f492","unicode_alt":"","code_decimal":"💒","name":"wedding","shortname":":wedding:","category":"travel","emoji_order":"1574","aliases":[],"aliases_ascii":[],"keywords":["places","wedding","building","love","parties"]},"tokyo_tower":{"unicode":"1f5fc","unicode_alt":"","code_decimal":"🗼","name":"tokyo tower","shortname":":tokyo_tower:","category":"travel","emoji_order":"1575","aliases":[],"aliases_ascii":[],"keywords":["places","travel","vacation","eiffel tower"]},"statue_of_liberty":{"unicode":"1f5fd","unicode_alt":"","code_decimal":"🗽","name":"statue of liberty","shortname":":statue_of_liberty:","category":"travel","emoji_order":"1576","aliases":[],"aliases_ascii":[],"keywords":["places","america","travel","vacation","statue of liberty","free speech"]},"church":{"unicode":"26ea","unicode_alt":"26ea-fe0f","code_decimal":"⛪","name":"church","shortname":":church:","category":"travel","emoji_order":"1577","aliases":[],"aliases_ascii":[],"keywords":["places","wedding","religion","building","condolence"]},"mosque":{"unicode":"1f54c","unicode_alt":"","code_decimal":"🕌","name":"mosque","shortname":":mosque:","category":"travel","emoji_order":"1578","aliases":[],"aliases_ascii":[],"keywords":["places","religion","building","vacation","condolence"]},"synagogue":{"unicode":"1f54d","unicode_alt":"","code_decimal":"🕍","name":"synagogue","shortname":":synagogue:","category":"travel","emoji_order":"1579","aliases":[],"aliases_ascii":[],"keywords":["places","religion","building","travel","vacation","condolence"]},"shinto_shrine":{"unicode":"26e9","unicode_alt":"26e9-fe0f","code_decimal":"⛩","name":"shinto shrine","shortname":":shinto_shrine:","category":"travel","emoji_order":"1580","aliases":[],"aliases_ascii":[],"keywords":["places","building","travel","vacation"]},"kaaba":{"unicode":"1f54b","unicode_alt":"","code_decimal":"🕋","name":"kaaba","shortname":":kaaba:","category":"travel","emoji_order":"1581","aliases":[],"aliases_ascii":[],"keywords":["places","religion","building","condolence"]},"fountain":{"unicode":"26f2","unicode_alt":"26f2-fe0f","code_decimal":"⛲","name":"fountain","shortname":":fountain:","category":"travel","emoji_order":"1582","aliases":[],"aliases_ascii":[],"keywords":["travel","vacation"]},"tent":{"unicode":"26fa","unicode_alt":"26fa-fe0f","code_decimal":"⛺","name":"tent","shortname":":tent:","category":"travel","emoji_order":"1583","aliases":[],"aliases_ascii":[],"keywords":["places","travel","vacation","camp"]},"foggy":{"unicode":"1f301","unicode_alt":"","code_decimal":"🌁","name":"foggy","shortname":":foggy:","category":"travel","emoji_order":"1584","aliases":[],"aliases_ascii":[],"keywords":["places","building","sky","travel","vacation"]},"night_with_stars":{"unicode":"1f303","unicode_alt":"","code_decimal":"🌃","name":"night with stars","shortname":":night_with_stars:","category":"travel","emoji_order":"1585","aliases":[],"aliases_ascii":[],"keywords":["places","building","sky","vacation","goodnight"]},"sunrise_over_mountains":{"unicode":"1f304","unicode_alt":"","code_decimal":"🌄","name":"sunrise over mountains","shortname":":sunrise_over_mountains:","category":"travel","emoji_order":"1586","aliases":[],"aliases_ascii":[],"keywords":["places","sky","travel","vacation","day","sun","camp","morning"]},"sunrise":{"unicode":"1f305","unicode_alt":"","code_decimal":"🌅","name":"sunrise","shortname":":sunrise:","category":"travel","emoji_order":"1587","aliases":[],"aliases_ascii":[],"keywords":["places","sky","travel","vacation","tropical","day","sun","hump day","morning"]},"city_dusk":{"unicode":"1f306","unicode_alt":"","code_decimal":"🌆","name":"cityscape at dusk","shortname":":city_dusk:","category":"travel","emoji_order":"1588","aliases":[],"aliases_ascii":[],"keywords":["places","building"]},"city_sunset":{"unicode":"1f307","unicode_alt":"","code_decimal":"🌇","name":"sunset over buildings","shortname":":city_sunset:","category":"travel","emoji_order":"1589","aliases":[":city_sunrise:"],"aliases_ascii":[],"keywords":["places","building","sky","vacation"]},"bridge_at_night":{"unicode":"1f309","unicode_alt":"","code_decimal":"🌉","name":"bridge at night","shortname":":bridge_at_night:","category":"travel","emoji_order":"1590","aliases":[],"aliases_ascii":[],"keywords":["places","travel","vacation","goodnight"]},"hotsprings":{"unicode":"2668","unicode_alt":"2668-fe0f","code_decimal":"♨","name":"hot springs","shortname":":hotsprings:","category":"symbols","emoji_order":"1591","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"milky_way":{"unicode":"1f30c","unicode_alt":"","code_decimal":"🌌","name":"milky way","shortname":":milky_way:","category":"travel","emoji_order":"1592","aliases":[],"aliases_ascii":[],"keywords":["places","space","sky","travel","vacation"]},"carousel_horse":{"unicode":"1f3a0","unicode_alt":"","code_decimal":"🎠","name":"carousel horse","shortname":":carousel_horse:","category":"travel","emoji_order":"1593","aliases":[],"aliases_ascii":[],"keywords":["places","object","vacation","roller coaster","carousel"]},"ferris_wheel":{"unicode":"1f3a1","unicode_alt":"","code_decimal":"🎡","name":"ferris wheel","shortname":":ferris_wheel:","category":"travel","emoji_order":"1594","aliases":[],"aliases_ascii":[],"keywords":["places","vacation","ferris wheel"]},"roller_coaster":{"unicode":"1f3a2","unicode_alt":"","code_decimal":"🎢","name":"roller coaster","shortname":":roller_coaster:","category":"travel","emoji_order":"1595","aliases":[],"aliases_ascii":[],"keywords":["places","vacation","roller coaster"]},"barber":{"unicode":"1f488","unicode_alt":"","code_decimal":"💈","name":"barber pole","shortname":":barber:","category":"objects","emoji_order":"1596","aliases":[],"aliases_ascii":[],"keywords":["object"]},"circus_tent":{"unicode":"1f3aa","unicode_alt":"","code_decimal":"🎪","name":"circus tent","shortname":":circus_tent:","category":"activity","emoji_order":"1597","aliases":[],"aliases_ascii":[],"keywords":["circus tent"]},"performing_arts":{"unicode":"1f3ad","unicode_alt":"","code_decimal":"🎭","name":"performing arts","shortname":":performing_arts:","category":"activity","emoji_order":"1598","aliases":[],"aliases_ascii":[],"keywords":["theatre","movie"]},"frame_photo":{"unicode":"1f5bc","unicode_alt":"1f5bc-fe0f","code_decimal":"🖼","name":"frame with picture","shortname":":frame_photo:","category":"objects","emoji_order":"1599","aliases":[":frame_with_picture:"],"aliases_ascii":[],"keywords":["travel","vacation"]},"art":{"unicode":"1f3a8","unicode_alt":"","code_decimal":"🎨","name":"artist palette","shortname":":art:","category":"activity","emoji_order":"1600","aliases":[],"aliases_ascii":[],"keywords":[]},"slot_machine":{"unicode":"1f3b0","unicode_alt":"","code_decimal":"🎰","name":"slot machine","shortname":":slot_machine:","category":"activity","emoji_order":"1601","aliases":[],"aliases_ascii":[],"keywords":["game","boys night"]},"steam_locomotive":{"unicode":"1f682","unicode_alt":"","code_decimal":"🚂","name":"steam locomotive","shortname":":steam_locomotive:","category":"travel","emoji_order":"1602","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train","steam"]},"railway_car":{"unicode":"1f683","unicode_alt":"","code_decimal":"🚃","name":"railway car","shortname":":railway_car:","category":"travel","emoji_order":"1603","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"bullettrain_side":{"unicode":"1f684","unicode_alt":"","code_decimal":"🚄","name":"high-speed train","shortname":":bullettrain_side:","category":"travel","emoji_order":"1604","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"bullettrain_front":{"unicode":"1f685","unicode_alt":"","code_decimal":"🚅","name":"high-speed train with bullet nose","shortname":":bullettrain_front:","category":"travel","emoji_order":"1605","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"train2":{"unicode":"1f686","unicode_alt":"","code_decimal":"🚆","name":"train","shortname":":train2:","category":"travel","emoji_order":"1606","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"metro":{"unicode":"1f687","unicode_alt":"","code_decimal":"🚇","name":"metro","shortname":":metro:","category":"travel","emoji_order":"1607","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"light_rail":{"unicode":"1f688","unicode_alt":"","code_decimal":"🚈","name":"light rail","shortname":":light_rail:","category":"travel","emoji_order":"1608","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"station":{"unicode":"1f689","unicode_alt":"","code_decimal":"🚉","name":"station","shortname":":station:","category":"travel","emoji_order":"1609","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"tram":{"unicode":"1f68a","unicode_alt":"","code_decimal":"🚊","name":"tram","shortname":":tram:","category":"travel","emoji_order":"1610","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"monorail":{"unicode":"1f69d","unicode_alt":"","code_decimal":"🚝","name":"monorail","shortname":":monorail:","category":"travel","emoji_order":"1611","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train","vacation"]},"mountain_railway":{"unicode":"1f69e","unicode_alt":"","code_decimal":"🚞","name":"mountain railway","shortname":":mountain_railway:","category":"travel","emoji_order":"1612","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"train":{"unicode":"1f68b","unicode_alt":"","code_decimal":"🚋","name":"tram car","shortname":":train:","category":"travel","emoji_order":"1613","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"bus":{"unicode":"1f68c","unicode_alt":"","code_decimal":"🚌","name":"bus","shortname":":bus:","category":"travel","emoji_order":"1614","aliases":[],"aliases_ascii":[],"keywords":["transportation","bus","office"]},"oncoming_bus":{"unicode":"1f68d","unicode_alt":"","code_decimal":"🚍","name":"oncoming bus","shortname":":oncoming_bus:","category":"travel","emoji_order":"1615","aliases":[],"aliases_ascii":[],"keywords":["transportation","bus","travel"]},"trolleybus":{"unicode":"1f68e","unicode_alt":"","code_decimal":"🚎","name":"trolleybus","shortname":":trolleybus:","category":"travel","emoji_order":"1616","aliases":[],"aliases_ascii":[],"keywords":["transportation","bus","travel"]},"minibus":{"unicode":"1f690","unicode_alt":"","code_decimal":"🚐","name":"minibus","shortname":":minibus:","category":"travel","emoji_order":"1617","aliases":[],"aliases_ascii":[],"keywords":["transportation","bus"]},"ambulance":{"unicode":"1f691","unicode_alt":"","code_decimal":"🚑","name":"ambulance","shortname":":ambulance:","category":"travel","emoji_order":"1618","aliases":[],"aliases_ascii":[],"keywords":["transportation","911"]},"fire_engine":{"unicode":"1f692","unicode_alt":"","code_decimal":"🚒","name":"fire engine","shortname":":fire_engine:","category":"travel","emoji_order":"1619","aliases":[],"aliases_ascii":[],"keywords":["transportation","truck","911"]},"police_car":{"unicode":"1f693","unicode_alt":"","code_decimal":"🚓","name":"police car","shortname":":police_car:","category":"travel","emoji_order":"1620","aliases":[],"aliases_ascii":[],"keywords":["transportation","car","police","911"]},"oncoming_police_car":{"unicode":"1f694","unicode_alt":"","code_decimal":"🚔","name":"oncoming police car","shortname":":oncoming_police_car:","category":"travel","emoji_order":"1621","aliases":[],"aliases_ascii":[],"keywords":["transportation","car","police","911"]},"taxi":{"unicode":"1f695","unicode_alt":"","code_decimal":"🚕","name":"taxi","shortname":":taxi:","category":"travel","emoji_order":"1622","aliases":[],"aliases_ascii":[],"keywords":["transportation","car","travel"]},"oncoming_taxi":{"unicode":"1f696","unicode_alt":"","code_decimal":"🚖","name":"oncoming taxi","shortname":":oncoming_taxi:","category":"travel","emoji_order":"1623","aliases":[],"aliases_ascii":[],"keywords":["transportation","car","travel"]},"red_car":{"unicode":"1f697","unicode_alt":"","code_decimal":"🚗","name":"automobile","shortname":":red_car:","category":"travel","emoji_order":"1624","aliases":[],"aliases_ascii":[],"keywords":["transportation","car","travel"]},"oncoming_automobile":{"unicode":"1f698","unicode_alt":"","code_decimal":"🚘","name":"oncoming automobile","shortname":":oncoming_automobile:","category":"travel","emoji_order":"1625","aliases":[],"aliases_ascii":[],"keywords":["transportation","car","travel"]},"blue_car":{"unicode":"1f699","unicode_alt":"","code_decimal":"🚙","name":"recreational vehicle","shortname":":blue_car:","category":"travel","emoji_order":"1626","aliases":[],"aliases_ascii":[],"keywords":["transportation","car","travel"]},"truck":{"unicode":"1f69a","unicode_alt":"","code_decimal":"🚚","name":"delivery truck","shortname":":truck:","category":"travel","emoji_order":"1627","aliases":[],"aliases_ascii":[],"keywords":["transportation","truck"]},"articulated_lorry":{"unicode":"1f69b","unicode_alt":"","code_decimal":"🚛","name":"articulated lorry","shortname":":articulated_lorry:","category":"travel","emoji_order":"1628","aliases":[],"aliases_ascii":[],"keywords":["transportation","truck"]},"tractor":{"unicode":"1f69c","unicode_alt":"","code_decimal":"🚜","name":"tractor","shortname":":tractor:","category":"travel","emoji_order":"1629","aliases":[],"aliases_ascii":[],"keywords":["transportation"]},"bike":{"unicode":"1f6b2","unicode_alt":"","code_decimal":"🚲","name":"bicycle","shortname":":bike:","category":"travel","emoji_order":"1630","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","bike"]},"scooter":{"unicode":"1f6f4","unicode_alt":"","code_decimal":"🛴","name":"scooter","shortname":":scooter:","category":"travel","emoji_order":"1631","aliases":[],"aliases_ascii":[],"keywords":[]},"motor_scooter":{"unicode":"1f6f5","unicode_alt":"","code_decimal":"🛵","name":"motor scooter","shortname":":motor_scooter:","category":"travel","emoji_order":"1632","aliases":[":motorbike:"],"aliases_ascii":[],"keywords":["moped"]},"busstop":{"unicode":"1f68f","unicode_alt":"","code_decimal":"🚏","name":"bus stop","shortname":":busstop:","category":"travel","emoji_order":"1633","aliases":[],"aliases_ascii":[],"keywords":["object"]},"motorway":{"unicode":"1f6e3","unicode_alt":"1f6e3-fe0f","code_decimal":"🛣","name":"motorway","shortname":":motorway:","category":"travel","emoji_order":"1634","aliases":[],"aliases_ascii":[],"keywords":["travel","vacation","camp"]},"railway_track":{"unicode":"1f6e4","unicode_alt":"1f6e4-fe0f","code_decimal":"🛤","name":"railway track","shortname":":railway_track:","category":"travel","emoji_order":"1635","aliases":[":railroad_track:"],"aliases_ascii":[],"keywords":["travel","train","vacation"]},"fuelpump":{"unicode":"26fd","unicode_alt":"26fd-fe0f","code_decimal":"⛽","name":"fuel pump","shortname":":fuelpump:","category":"travel","emoji_order":"1636","aliases":[],"aliases_ascii":[],"keywords":["object","gas pump"]},"rotating_light":{"unicode":"1f6a8","unicode_alt":"","code_decimal":"🚨","name":"police cars revolving light","shortname":":rotating_light:","category":"travel","emoji_order":"1637","aliases":[],"aliases_ascii":[],"keywords":["transportation","object","police","911"]},"traffic_light":{"unicode":"1f6a5","unicode_alt":"","code_decimal":"🚥","name":"horizontal traffic light","shortname":":traffic_light:","category":"travel","emoji_order":"1638","aliases":[],"aliases_ascii":[],"keywords":["object","stop light"]},"vertical_traffic_light":{"unicode":"1f6a6","unicode_alt":"","code_decimal":"🚦","name":"vertical traffic light","shortname":":vertical_traffic_light:","category":"travel","emoji_order":"1639","aliases":[],"aliases_ascii":[],"keywords":["object","stop light"]},"construction":{"unicode":"1f6a7","unicode_alt":"","code_decimal":"🚧","name":"construction sign","shortname":":construction:","category":"travel","emoji_order":"1640","aliases":[],"aliases_ascii":[],"keywords":["object"]},"octagonal_sign":{"unicode":"1f6d1","unicode_alt":"","code_decimal":"🛑","name":"octagonal sign","shortname":":octagonal_sign:","category":"symbols","emoji_order":"1641","aliases":[":stop_sign:"],"aliases_ascii":[],"keywords":[]},"anchor":{"unicode":"2693","unicode_alt":"2693-fe0f","code_decimal":"⚓","name":"anchor","shortname":":anchor:","category":"travel","emoji_order":"1642","aliases":[],"aliases_ascii":[],"keywords":["object","travel","boat","vacation"]},"sailboat":{"unicode":"26f5","unicode_alt":"26f5-fe0f","code_decimal":"⛵","name":"sailboat","shortname":":sailboat:","category":"travel","emoji_order":"1643","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","boat","vacation"]},"canoe":{"unicode":"1f6f6","unicode_alt":"","code_decimal":"🛶","name":"canoe","shortname":":canoe:","category":"travel","emoji_order":"1644","aliases":[":kayak:"],"aliases_ascii":[],"keywords":[]},"speedboat":{"unicode":"1f6a4","unicode_alt":"","code_decimal":"🚤","name":"speedboat","shortname":":speedboat:","category":"travel","emoji_order":"1645","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","boat","vacation","tropical"]},"cruise_ship":{"unicode":"1f6f3","unicode_alt":"1f6f3-fe0f","code_decimal":"🛳","name":"passenger ship","shortname":":cruise_ship:","category":"travel","emoji_order":"1646","aliases":[":passenger_ship:"],"aliases_ascii":[],"keywords":["transportation","travel","boat","vacation"]},"ferry":{"unicode":"26f4","unicode_alt":"26f4-fe0f","code_decimal":"⛴","name":"ferry","shortname":":ferry:","category":"travel","emoji_order":"1647","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","boat","vacation"]},"motorboat":{"unicode":"1f6e5","unicode_alt":"1f6e5-fe0f","code_decimal":"🛥","name":"motorboat","shortname":":motorboat:","category":"travel","emoji_order":"1648","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","boat"]},"ship":{"unicode":"1f6a2","unicode_alt":"","code_decimal":"🚢","name":"ship","shortname":":ship:","category":"travel","emoji_order":"1649","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","boat","vacation"]},"airplane":{"unicode":"2708","unicode_alt":"2708-fe0f","code_decimal":"✈","name":"airplane","shortname":":airplane:","category":"travel","emoji_order":"1650","aliases":[],"aliases_ascii":[],"keywords":["transportation","plane","travel","vacation","fly"]},"airplane_small":{"unicode":"1f6e9","unicode_alt":"1f6e9-fe0f","code_decimal":"🛩","name":"small airplane","shortname":":airplane_small:","category":"travel","emoji_order":"1651","aliases":[":small_airplane:"],"aliases_ascii":[],"keywords":["transportation","plane","travel","vacation","fly"]},"airplane_departure":{"unicode":"1f6eb","unicode_alt":"","code_decimal":"🛫","name":"airplane departure","shortname":":airplane_departure:","category":"travel","emoji_order":"1652","aliases":[],"aliases_ascii":[],"keywords":["transportation","plane","travel","vacation","fly"]},"airplane_arriving":{"unicode":"1f6ec","unicode_alt":"","code_decimal":"🛬","name":"airplane arriving","shortname":":airplane_arriving:","category":"travel","emoji_order":"1653","aliases":[],"aliases_ascii":[],"keywords":["transportation","plane","travel","vacation","fly"]},"seat":{"unicode":"1f4ba","unicode_alt":"","code_decimal":"💺","name":"seat","shortname":":seat:","category":"travel","emoji_order":"1654","aliases":[],"aliases_ascii":[],"keywords":["transportation","object","travel","vacation"]},"helicopter":{"unicode":"1f681","unicode_alt":"","code_decimal":"🚁","name":"helicopter","shortname":":helicopter:","category":"travel","emoji_order":"1655","aliases":[],"aliases_ascii":[],"keywords":["transportation","plane","travel","fly"]},"suspension_railway":{"unicode":"1f69f","unicode_alt":"","code_decimal":"🚟","name":"suspension railway","shortname":":suspension_railway:","category":"travel","emoji_order":"1656","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"mountain_cableway":{"unicode":"1f6a0","unicode_alt":"","code_decimal":"🚠","name":"mountain cableway","shortname":":mountain_cableway:","category":"travel","emoji_order":"1657","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"aerial_tramway":{"unicode":"1f6a1","unicode_alt":"","code_decimal":"🚡","name":"aerial tramway","shortname":":aerial_tramway:","category":"travel","emoji_order":"1658","aliases":[],"aliases_ascii":[],"keywords":["transportation","travel","train"]},"rocket":{"unicode":"1f680","unicode_alt":"","code_decimal":"🚀","name":"rocket","shortname":":rocket:","category":"travel","emoji_order":"1659","aliases":[],"aliases_ascii":[],"keywords":["transportation","object","space","fly","blast"]},"satellite_orbital":{"unicode":"1f6f0","unicode_alt":"1f6f0-fe0f","code_decimal":"🛰","name":"satellite","shortname":":satellite_orbital:","category":"travel","emoji_order":"1660","aliases":[],"aliases_ascii":[],"keywords":["object"]},"bellhop":{"unicode":"1f6ce","unicode_alt":"1f6ce-fe0f","code_decimal":"🛎","name":"bellhop bell","shortname":":bellhop:","category":"objects","emoji_order":"1661","aliases":[":bellhop_bell:"],"aliases_ascii":[],"keywords":["object"]},"door":{"unicode":"1f6aa","unicode_alt":"","code_decimal":"🚪","name":"door","shortname":":door:","category":"objects","emoji_order":"1662","aliases":[],"aliases_ascii":[],"keywords":["object"]},"sleeping_accommodation":{"unicode":"1f6cc","unicode_alt":"","code_decimal":"🛌","name":"sleeping accommodation","shortname":":sleeping_accommodation:","category":"objects","emoji_order":"1663","aliases":[],"aliases_ascii":[],"keywords":["tired"]},"bed":{"unicode":"1f6cf","unicode_alt":"1f6cf-fe0f","code_decimal":"🛏","name":"bed","shortname":":bed:","category":"objects","emoji_order":"1669","aliases":[],"aliases_ascii":[],"keywords":["object","tired"]},"couch":{"unicode":"1f6cb","unicode_alt":"1f6cb-fe0f","code_decimal":"🛋","name":"couch and lamp","shortname":":couch:","category":"objects","emoji_order":"1670","aliases":[":couch_and_lamp:"],"aliases_ascii":[],"keywords":["object"]},"toilet":{"unicode":"1f6bd","unicode_alt":"","code_decimal":"🚽","name":"toilet","shortname":":toilet:","category":"objects","emoji_order":"1671","aliases":[],"aliases_ascii":[],"keywords":["object","bathroom"]},"shower":{"unicode":"1f6bf","unicode_alt":"","code_decimal":"🚿","name":"shower","shortname":":shower:","category":"objects","emoji_order":"1672","aliases":[],"aliases_ascii":[],"keywords":["object","bathroom"]},"bath":{"unicode":"1f6c0","unicode_alt":"","code_decimal":"🛀","name":"bath","shortname":":bath:","category":"activity","emoji_order":"1673","aliases":[],"aliases_ascii":[],"keywords":["bathroom","tired","diversity","steam"]},"bath_tone1":{"unicode":"1f6c0-1f3fb","unicode_alt":"","code_decimal":"🛀🏻","name":"bath tone 1","shortname":":bath_tone1:","category":"activity","emoji_order":"1674","aliases":[],"aliases_ascii":[],"keywords":[]},"bath_tone2":{"unicode":"1f6c0-1f3fc","unicode_alt":"","code_decimal":"🛀🏼","name":"bath tone 2","shortname":":bath_tone2:","category":"activity","emoji_order":"1675","aliases":[],"aliases_ascii":[],"keywords":[]},"bath_tone3":{"unicode":"1f6c0-1f3fd","unicode_alt":"","code_decimal":"🛀🏽","name":"bath tone 3","shortname":":bath_tone3:","category":"activity","emoji_order":"1676","aliases":[],"aliases_ascii":[],"keywords":[]},"bath_tone4":{"unicode":"1f6c0-1f3fe","unicode_alt":"","code_decimal":"🛀🏾","name":"bath tone 4","shortname":":bath_tone4:","category":"activity","emoji_order":"1677","aliases":[],"aliases_ascii":[],"keywords":[]},"bath_tone5":{"unicode":"1f6c0-1f3ff","unicode_alt":"","code_decimal":"🛀🏿","name":"bath tone 5","shortname":":bath_tone5:","category":"activity","emoji_order":"1678","aliases":[],"aliases_ascii":[],"keywords":[]},"bathtub":{"unicode":"1f6c1","unicode_alt":"","code_decimal":"🛁","name":"bathtub","shortname":":bathtub:","category":"objects","emoji_order":"1679","aliases":[],"aliases_ascii":[],"keywords":["object","bathroom","tired","steam"]},"hourglass":{"unicode":"231b","unicode_alt":"231b-fe0f","code_decimal":"⌛","name":"hourglass","shortname":":hourglass:","category":"objects","emoji_order":"1680","aliases":[],"aliases_ascii":[],"keywords":["object","time"]},"hourglass_flowing_sand":{"unicode":"23f3","unicode_alt":"","code_decimal":"⏳","name":"hourglass with flowing sand","shortname":":hourglass_flowing_sand:","category":"objects","emoji_order":"1681","aliases":[],"aliases_ascii":[],"keywords":["object","time"]},"watch":{"unicode":"231a","unicode_alt":"231a-fe0f","code_decimal":"⌚","name":"watch","shortname":":watch:","category":"objects","emoji_order":"1682","aliases":[],"aliases_ascii":[],"keywords":["electronics","time"]},"alarm_clock":{"unicode":"23f0","unicode_alt":"","code_decimal":"⏰","name":"alarm clock","shortname":":alarm_clock:","category":"objects","emoji_order":"1683","aliases":[],"aliases_ascii":[],"keywords":["object","time"]},"stopwatch":{"unicode":"23f1","unicode_alt":"23f1-fe0f","code_decimal":"⏱","name":"stopwatch","shortname":":stopwatch:","category":"objects","emoji_order":"1684","aliases":[],"aliases_ascii":[],"keywords":["electronics","time"]},"timer":{"unicode":"23f2","unicode_alt":"23f2-fe0f","code_decimal":"⏲","name":"timer clock","shortname":":timer:","category":"objects","emoji_order":"1685","aliases":[":timer_clock:"],"aliases_ascii":[],"keywords":["object","time"]},"clock":{"unicode":"1f570","unicode_alt":"1f570-fe0f","code_decimal":"🕰","name":"mantlepiece clock","shortname":":clock:","category":"objects","emoji_order":"1686","aliases":[":mantlepiece_clock:"],"aliases_ascii":[],"keywords":["object","time"]},"clock12":{"unicode":"1f55b","unicode_alt":"","code_decimal":"🕛","name":"clock face twelve oclock","shortname":":clock12:","category":"symbols","emoji_order":"1687","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock1230":{"unicode":"1f567","unicode_alt":"","code_decimal":"🕧","name":"clock face twelve-thirty","shortname":":clock1230:","category":"symbols","emoji_order":"1688","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock1":{"unicode":"1f550","unicode_alt":"","code_decimal":"🕐","name":"clock face one oclock","shortname":":clock1:","category":"symbols","emoji_order":"1689","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock130":{"unicode":"1f55c","unicode_alt":"","code_decimal":"🕜","name":"clock face one-thirty","shortname":":clock130:","category":"symbols","emoji_order":"1690","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock2":{"unicode":"1f551","unicode_alt":"","code_decimal":"🕑","name":"clock face two oclock","shortname":":clock2:","category":"symbols","emoji_order":"1691","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock230":{"unicode":"1f55d","unicode_alt":"","code_decimal":"🕝","name":"clock face two-thirty","shortname":":clock230:","category":"symbols","emoji_order":"1692","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock3":{"unicode":"1f552","unicode_alt":"","code_decimal":"🕒","name":"clock face three oclock","shortname":":clock3:","category":"symbols","emoji_order":"1693","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock330":{"unicode":"1f55e","unicode_alt":"","code_decimal":"🕞","name":"clock face three-thirty","shortname":":clock330:","category":"symbols","emoji_order":"1694","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock4":{"unicode":"1f553","unicode_alt":"","code_decimal":"🕓","name":"clock face four oclock","shortname":":clock4:","category":"symbols","emoji_order":"1695","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock430":{"unicode":"1f55f","unicode_alt":"","code_decimal":"🕟","name":"clock face four-thirty","shortname":":clock430:","category":"symbols","emoji_order":"1696","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock5":{"unicode":"1f554","unicode_alt":"","code_decimal":"🕔","name":"clock face five oclock","shortname":":clock5:","category":"symbols","emoji_order":"1697","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock530":{"unicode":"1f560","unicode_alt":"","code_decimal":"🕠","name":"clock face five-thirty","shortname":":clock530:","category":"symbols","emoji_order":"1698","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock6":{"unicode":"1f555","unicode_alt":"","code_decimal":"🕕","name":"clock face six oclock","shortname":":clock6:","category":"symbols","emoji_order":"1699","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock630":{"unicode":"1f561","unicode_alt":"","code_decimal":"🕡","name":"clock face six-thirty","shortname":":clock630:","category":"symbols","emoji_order":"1700","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock7":{"unicode":"1f556","unicode_alt":"","code_decimal":"🕖","name":"clock face seven oclock","shortname":":clock7:","category":"symbols","emoji_order":"1701","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock730":{"unicode":"1f562","unicode_alt":"","code_decimal":"🕢","name":"clock face seven-thirty","shortname":":clock730:","category":"symbols","emoji_order":"1702","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock8":{"unicode":"1f557","unicode_alt":"","code_decimal":"🕗","name":"clock face eight oclock","shortname":":clock8:","category":"symbols","emoji_order":"1703","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock830":{"unicode":"1f563","unicode_alt":"","code_decimal":"🕣","name":"clock face eight-thirty","shortname":":clock830:","category":"symbols","emoji_order":"1704","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock9":{"unicode":"1f558","unicode_alt":"","code_decimal":"🕘","name":"clock face nine oclock","shortname":":clock9:","category":"symbols","emoji_order":"1705","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock930":{"unicode":"1f564","unicode_alt":"","code_decimal":"🕤","name":"clock face nine-thirty","shortname":":clock930:","category":"symbols","emoji_order":"1706","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock10":{"unicode":"1f559","unicode_alt":"","code_decimal":"🕙","name":"clock face ten oclock","shortname":":clock10:","category":"symbols","emoji_order":"1707","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock1030":{"unicode":"1f565","unicode_alt":"","code_decimal":"🕥","name":"clock face ten-thirty","shortname":":clock1030:","category":"symbols","emoji_order":"1708","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock11":{"unicode":"1f55a","unicode_alt":"","code_decimal":"🕚","name":"clock face eleven oclock","shortname":":clock11:","category":"symbols","emoji_order":"1709","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"clock1130":{"unicode":"1f566","unicode_alt":"","code_decimal":"🕦","name":"clock face eleven-thirty","shortname":":clock1130:","category":"symbols","emoji_order":"1710","aliases":[],"aliases_ascii":[],"keywords":["symbol","time"]},"new_moon":{"unicode":"1f311","unicode_alt":"","code_decimal":"🌑","name":"new moon symbol","shortname":":new_moon:","category":"nature","emoji_order":"1711","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon"]},"waxing_crescent_moon":{"unicode":"1f312","unicode_alt":"","code_decimal":"🌒","name":"waxing crescent moon symbol","shortname":":waxing_crescent_moon:","category":"nature","emoji_order":"1712","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon"]},"first_quarter_moon":{"unicode":"1f313","unicode_alt":"","code_decimal":"🌓","name":"first quarter moon symbol","shortname":":first_quarter_moon:","category":"nature","emoji_order":"1713","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon"]},"waxing_gibbous_moon":{"unicode":"1f314","unicode_alt":"","code_decimal":"🌔","name":"waxing gibbous moon symbol","shortname":":waxing_gibbous_moon:","category":"nature","emoji_order":"1714","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon"]},"full_moon":{"unicode":"1f315","unicode_alt":"","code_decimal":"🌕","name":"full moon symbol","shortname":":full_moon:","category":"nature","emoji_order":"1715","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon"]},"waning_gibbous_moon":{"unicode":"1f316","unicode_alt":"","code_decimal":"🌖","name":"waning gibbous moon symbol","shortname":":waning_gibbous_moon:","category":"nature","emoji_order":"1716","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon"]},"last_quarter_moon":{"unicode":"1f317","unicode_alt":"","code_decimal":"🌗","name":"last quarter moon symbol","shortname":":last_quarter_moon:","category":"nature","emoji_order":"1717","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon"]},"waning_crescent_moon":{"unicode":"1f318","unicode_alt":"","code_decimal":"🌘","name":"waning crescent moon symbol","shortname":":waning_crescent_moon:","category":"nature","emoji_order":"1718","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon"]},"crescent_moon":{"unicode":"1f319","unicode_alt":"","code_decimal":"🌙","name":"crescent moon","shortname":":crescent_moon:","category":"nature","emoji_order":"1719","aliases":[],"aliases_ascii":[],"keywords":["space","sky","goodnight","moon"]},"new_moon_with_face":{"unicode":"1f31a","unicode_alt":"","code_decimal":"🌚","name":"new moon with face","shortname":":new_moon_with_face:","category":"nature","emoji_order":"1720","aliases":[],"aliases_ascii":[],"keywords":["space","sky","goodnight","moon"]},"first_quarter_moon_with_face":{"unicode":"1f31b","unicode_alt":"","code_decimal":"🌛","name":"first quarter moon with face","shortname":":first_quarter_moon_with_face:","category":"nature","emoji_order":"1721","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon"]},"last_quarter_moon_with_face":{"unicode":"1f31c","unicode_alt":"","code_decimal":"🌜","name":"last quarter moon with face","shortname":":last_quarter_moon_with_face:","category":"nature","emoji_order":"1722","aliases":[],"aliases_ascii":[],"keywords":["space","sky","moon"]},"thermometer":{"unicode":"1f321","unicode_alt":"1f321-fe0f","code_decimal":"🌡","name":"thermometer","shortname":":thermometer:","category":"objects","emoji_order":"1723","aliases":[],"aliases_ascii":[],"keywords":["object","science","health","hot"]},"sunny":{"unicode":"2600","unicode_alt":"2600-fe0f","code_decimal":"☀","name":"black sun with rays","shortname":":sunny:","category":"nature","emoji_order":"1724","aliases":[],"aliases_ascii":[],"keywords":["weather","sky","day","sun","hot","morning"]},"full_moon_with_face":{"unicode":"1f31d","unicode_alt":"","code_decimal":"🌝","name":"full moon with face","shortname":":full_moon_with_face:","category":"nature","emoji_order":"1725","aliases":[],"aliases_ascii":[],"keywords":["space","sky","goodnight","moon"]},"sun_with_face":{"unicode":"1f31e","unicode_alt":"","code_decimal":"🌞","name":"sun with face","shortname":":sun_with_face:","category":"nature","emoji_order":"1726","aliases":[],"aliases_ascii":[],"keywords":["sky","day","sun","hump day","morning"]},"star":{"unicode":"2b50","unicode_alt":"2b50-fe0f","code_decimal":"⭐","name":"white medium star","shortname":":star:","category":"nature","emoji_order":"1727","aliases":[],"aliases_ascii":[],"keywords":["space","sky","star"]},"star2":{"unicode":"1f31f","unicode_alt":"","code_decimal":"🌟","name":"glowing star","shortname":":star2:","category":"nature","emoji_order":"1728","aliases":[],"aliases_ascii":[],"keywords":["space","sky","star"]},"stars":{"unicode":"1f320","unicode_alt":"","code_decimal":"🌠","name":"shooting star","shortname":":stars:","category":"travel","emoji_order":"1729","aliases":[],"aliases_ascii":[],"keywords":["space"]},"cloud":{"unicode":"2601","unicode_alt":"2601-fe0f","code_decimal":"☁","name":"cloud","shortname":":cloud:","category":"nature","emoji_order":"1730","aliases":[],"aliases_ascii":[],"keywords":["weather","sky","cloud","cold","rain"]},"partly_sunny":{"unicode":"26c5","unicode_alt":"26c5-fe0f","code_decimal":"⛅","name":"sun behind cloud","shortname":":partly_sunny:","category":"nature","emoji_order":"1731","aliases":[],"aliases_ascii":[],"keywords":["weather","sky","cloud","sun"]},"thunder_cloud_rain":{"unicode":"26c8","unicode_alt":"26c8-fe0f","code_decimal":"⛈","name":"thunder cloud and rain","shortname":":thunder_cloud_rain:","category":"nature","emoji_order":"1732","aliases":[":thunder_cloud_and_rain:"],"aliases_ascii":[],"keywords":["weather","sky","cloud","cold","rain"]},"white_sun_small_cloud":{"unicode":"1f324","unicode_alt":"1f324-fe0f","code_decimal":"🌤","name":"white sun with small cloud","shortname":":white_sun_small_cloud:","category":"nature","emoji_order":"1733","aliases":[":white_sun_with_small_cloud:"],"aliases_ascii":[],"keywords":["weather","sky","cloud","sun"]},"white_sun_cloud":{"unicode":"1f325","unicode_alt":"1f325-fe0f","code_decimal":"🌥","name":"white sun behind cloud","shortname":":white_sun_cloud:","category":"nature","emoji_order":"1734","aliases":[":white_sun_behind_cloud:"],"aliases_ascii":[],"keywords":["weather","sky","cloud","cold","sun"]},"white_sun_rain_cloud":{"unicode":"1f326","unicode_alt":"1f326-fe0f","code_decimal":"🌦","name":"white sun behind cloud with rain","shortname":":white_sun_rain_cloud:","category":"nature","emoji_order":"1735","aliases":[":white_sun_behind_cloud_with_rain:"],"aliases_ascii":[],"keywords":["weather","sky","cloud","cold","rain","sun"]},"cloud_rain":{"unicode":"1f327","unicode_alt":"1f327-fe0f","code_decimal":"🌧","name":"cloud with rain","shortname":":cloud_rain:","category":"nature","emoji_order":"1736","aliases":[":cloud_with_rain:"],"aliases_ascii":[],"keywords":["weather","winter","sky","cloud","cold","rain"]},"cloud_snow":{"unicode":"1f328","unicode_alt":"1f328-fe0f","code_decimal":"🌨","name":"cloud with snow","shortname":":cloud_snow:","category":"nature","emoji_order":"1737","aliases":[":cloud_with_snow:"],"aliases_ascii":[],"keywords":["weather","winter","sky","cloud","cold","snow"]},"cloud_lightning":{"unicode":"1f329","unicode_alt":"1f329-fe0f","code_decimal":"🌩","name":"cloud with lightning","shortname":":cloud_lightning:","category":"nature","emoji_order":"1738","aliases":[":cloud_with_lightning:"],"aliases_ascii":[],"keywords":["weather","sky","cloud","cold","rain"]},"cloud_tornado":{"unicode":"1f32a","unicode_alt":"1f32a-fe0f","code_decimal":"🌪","name":"cloud with tornado","shortname":":cloud_tornado:","category":"nature","emoji_order":"1739","aliases":[":cloud_with_tornado:"],"aliases_ascii":[],"keywords":["weather","sky","cold"]},"fog":{"unicode":"1f32b","unicode_alt":"1f32b-fe0f","code_decimal":"🌫","name":"fog","shortname":":fog:","category":"nature","emoji_order":"1740","aliases":[],"aliases_ascii":[],"keywords":["weather","sky","cold"]},"wind_blowing_face":{"unicode":"1f32c","unicode_alt":"1f32c-fe0f","code_decimal":"🌬","name":"wind blowing face","shortname":":wind_blowing_face:","category":"nature","emoji_order":"1741","aliases":[],"aliases_ascii":[],"keywords":["weather","cold"]},"cyclone":{"unicode":"1f300","unicode_alt":"","code_decimal":"🌀","name":"cyclone","shortname":":cyclone:","category":"symbols","emoji_order":"1742","aliases":[],"aliases_ascii":[],"keywords":["symbol","drugs"]},"rainbow":{"unicode":"1f308","unicode_alt":"","code_decimal":"🌈","name":"rainbow","shortname":":rainbow:","category":"travel","emoji_order":"1743","aliases":[],"aliases_ascii":[],"keywords":["weather","gay","sky","rain"]},"closed_umbrella":{"unicode":"1f302","unicode_alt":"","code_decimal":"🌂","name":"closed umbrella","shortname":":closed_umbrella:","category":"people","emoji_order":"1744","aliases":[],"aliases_ascii":[],"keywords":["object","sky","rain","accessories"]},"umbrella2":{"unicode":"2602","unicode_alt":"2602-fe0f","code_decimal":"☂","name":"umbrella","shortname":":umbrella2:","category":"nature","emoji_order":"1745","aliases":[],"aliases_ascii":[],"keywords":["weather","object","sky","cold"]},"umbrella":{"unicode":"2614","unicode_alt":"2614-fe0f","code_decimal":"☔","name":"umbrella with rain drops","shortname":":umbrella:","category":"nature","emoji_order":"1746","aliases":[],"aliases_ascii":[],"keywords":["weather","sky","cold","rain"]},"beach_umbrella":{"unicode":"26f1","unicode_alt":"26f1-fe0f","code_decimal":"⛱","name":"umbrella on ground","shortname":":beach_umbrella:","category":"objects","emoji_order":"1747","aliases":[":umbrella_on_ground:"],"aliases_ascii":[],"keywords":["travel","vacation","tropical"]},"zap":{"unicode":"26a1","unicode_alt":"26a1-fe0f","code_decimal":"⚡","name":"high voltage sign","shortname":":zap:","category":"nature","emoji_order":"1748","aliases":[],"aliases_ascii":[],"keywords":["weather","sky","diarrhea"]},"snowflake":{"unicode":"2744","unicode_alt":"2744-fe0f","code_decimal":"❄","name":"snowflake","shortname":":snowflake:","category":"nature","emoji_order":"1749","aliases":[],"aliases_ascii":[],"keywords":["weather","winter","sky","holidays","cold","snow"]},"snowman2":{"unicode":"2603","unicode_alt":"2603-fe0f","code_decimal":"☃","name":"snowman","shortname":":snowman2:","category":"nature","emoji_order":"1750","aliases":[],"aliases_ascii":[],"keywords":["weather","winter","holidays","christmas","cold","snow"]},"snowman":{"unicode":"26c4","unicode_alt":"26c4-fe0f","code_decimal":"⛄","name":"snowman without snow","shortname":":snowman:","category":"nature","emoji_order":"1751","aliases":[],"aliases_ascii":[],"keywords":["weather","winter","holidays","cold","snow"]},"comet":{"unicode":"2604","unicode_alt":"2604-fe0f","code_decimal":"☄","name":"comet","shortname":":comet:","category":"nature","emoji_order":"1752","aliases":[],"aliases_ascii":[],"keywords":["space","sky"]},"fire":{"unicode":"1f525","unicode_alt":"","code_decimal":"🔥","name":"fire","shortname":":fire:","category":"nature","emoji_order":"1753","aliases":[":flame:"],"aliases_ascii":[],"keywords":["wth","hot"]},"droplet":{"unicode":"1f4a7","unicode_alt":"","code_decimal":"💧","name":"droplet","shortname":":droplet:","category":"nature","emoji_order":"1754","aliases":[],"aliases_ascii":[],"keywords":["weather","sky","rain"]},"ocean":{"unicode":"1f30a","unicode_alt":"","code_decimal":"🌊","name":"water wave","shortname":":ocean:","category":"nature","emoji_order":"1755","aliases":[],"aliases_ascii":[],"keywords":["weather","boat","tropical","swim"]},"jack_o_lantern":{"unicode":"1f383","unicode_alt":"","code_decimal":"🎃","name":"jack-o-lantern","shortname":":jack_o_lantern:","category":"nature","emoji_order":"1756","aliases":[],"aliases_ascii":[],"keywords":["holidays","halloween"]},"christmas_tree":{"unicode":"1f384","unicode_alt":"","code_decimal":"🎄","name":"christmas tree","shortname":":christmas_tree:","category":"nature","emoji_order":"1757","aliases":[],"aliases_ascii":[],"keywords":["plant","holidays","christmas","trees"]},"fireworks":{"unicode":"1f386","unicode_alt":"","code_decimal":"🎆","name":"fireworks","shortname":":fireworks:","category":"travel","emoji_order":"1758","aliases":[],"aliases_ascii":[],"keywords":["parties"]},"sparkler":{"unicode":"1f387","unicode_alt":"","code_decimal":"🎇","name":"firework sparkler","shortname":":sparkler:","category":"travel","emoji_order":"1759","aliases":[],"aliases_ascii":[],"keywords":["parties"]},"sparkles":{"unicode":"2728","unicode_alt":"","code_decimal":"✨","name":"sparkles","shortname":":sparkles:","category":"nature","emoji_order":"1760","aliases":[],"aliases_ascii":[],"keywords":["star","girls night"]},"balloon":{"unicode":"1f388","unicode_alt":"","code_decimal":"🎈","name":"balloon","shortname":":balloon:","category":"objects","emoji_order":"1761","aliases":[],"aliases_ascii":[],"keywords":["object","birthday","good","parties"]},"tada":{"unicode":"1f389","unicode_alt":"","code_decimal":"🎉","name":"party popper","shortname":":tada:","category":"objects","emoji_order":"1762","aliases":[],"aliases_ascii":[],"keywords":["object","birthday","holidays","cheers","good","girls night","boys night","parties"]},"confetti_ball":{"unicode":"1f38a","unicode_alt":"","code_decimal":"🎊","name":"confetti ball","shortname":":confetti_ball:","category":"objects","emoji_order":"1763","aliases":[],"aliases_ascii":[],"keywords":["object","birthday","holidays","cheers","girls night","boys night","parties"]},"tanabata_tree":{"unicode":"1f38b","unicode_alt":"","code_decimal":"🎋","name":"tanabata tree","shortname":":tanabata_tree:","category":"nature","emoji_order":"1764","aliases":[],"aliases_ascii":[],"keywords":["nature","plant","trees"]},"bamboo":{"unicode":"1f38d","unicode_alt":"","code_decimal":"🎍","name":"pine decoration","shortname":":bamboo:","category":"nature","emoji_order":"1765","aliases":[],"aliases_ascii":[],"keywords":["nature","plant"]},"dolls":{"unicode":"1f38e","unicode_alt":"","code_decimal":"🎎","name":"japanese dolls","shortname":":dolls:","category":"objects","emoji_order":"1766","aliases":[],"aliases_ascii":[],"keywords":["people","japan"]},"flags":{"unicode":"1f38f","unicode_alt":"","code_decimal":"🎏","name":"carp streamer","shortname":":flags:","category":"objects","emoji_order":"1767","aliases":[],"aliases_ascii":[],"keywords":["object","japan"]},"wind_chime":{"unicode":"1f390","unicode_alt":"","code_decimal":"🎐","name":"wind chime","shortname":":wind_chime:","category":"objects","emoji_order":"1768","aliases":[],"aliases_ascii":[],"keywords":["object","japan"]},"rice_scene":{"unicode":"1f391","unicode_alt":"","code_decimal":"🎑","name":"moon viewing ceremony","shortname":":rice_scene:","category":"travel","emoji_order":"1769","aliases":[],"aliases_ascii":[],"keywords":["places","space","sky","travel"]},"ribbon":{"unicode":"1f380","unicode_alt":"","code_decimal":"🎀","name":"ribbon","shortname":":ribbon:","category":"objects","emoji_order":"1770","aliases":[],"aliases_ascii":[],"keywords":["object","gift","birthday"]},"gift":{"unicode":"1f381","unicode_alt":"","code_decimal":"🎁","name":"wrapped present","shortname":":gift:","category":"objects","emoji_order":"1771","aliases":[],"aliases_ascii":[],"keywords":["object","gift","birthday","holidays","christmas","parties"]},"reminder_ribbon":{"unicode":"1f397","unicode_alt":"1f397-fe0f","code_decimal":"🎗","name":"reminder ribbon","shortname":":reminder_ribbon:","category":"activity","emoji_order":"1772","aliases":[],"aliases_ascii":[],"keywords":["award"]},"tickets":{"unicode":"1f39f","unicode_alt":"1f39f-fe0f","code_decimal":"🎟","name":"admission tickets","shortname":":tickets:","category":"activity","emoji_order":"1773","aliases":[":admission_tickets:"],"aliases_ascii":[],"keywords":["theatre","movie","parties"]},"ticket":{"unicode":"1f3ab","unicode_alt":"","code_decimal":"🎫","name":"ticket","shortname":":ticket:","category":"activity","emoji_order":"1774","aliases":[],"aliases_ascii":[],"keywords":["theatre","movie","parties"]},"military_medal":{"unicode":"1f396","unicode_alt":"1f396-fe0f","code_decimal":"🎖","name":"military medal","shortname":":military_medal:","category":"activity","emoji_order":"1775","aliases":[],"aliases_ascii":[],"keywords":["object","award","win"]},"trophy":{"unicode":"1f3c6","unicode_alt":"","code_decimal":"🏆","name":"trophy","shortname":":trophy:","category":"activity","emoji_order":"1776","aliases":[],"aliases_ascii":[],"keywords":["object","game","award","win","perfect","parties"]},"medal":{"unicode":"1f3c5","unicode_alt":"","code_decimal":"🏅","name":"sports medal","shortname":":medal:","category":"activity","emoji_order":"1777","aliases":[":sports_medal:"],"aliases_ascii":[],"keywords":["object","award","sport","win","perfect"]},"first_place":{"unicode":"1f947","unicode_alt":"","code_decimal":"🥇","name":"first place medal","shortname":":first_place:","category":"activity","emoji_order":"1778","aliases":[":first_place_medal:"],"aliases_ascii":[],"keywords":[]},"second_place":{"unicode":"1f948","unicode_alt":"","code_decimal":"🥈","name":"second place medal","shortname":":second_place:","category":"activity","emoji_order":"1779","aliases":[":second_place_medal:"],"aliases_ascii":[],"keywords":[]},"third_place":{"unicode":"1f949","unicode_alt":"","code_decimal":"🥉","name":"third place medal","shortname":":third_place:","category":"activity","emoji_order":"1780","aliases":[":third_place_medal:"],"aliases_ascii":[],"keywords":[]},"soccer":{"unicode":"26bd","unicode_alt":"26bd-fe0f","code_decimal":"⚽","name":"soccer ball","shortname":":soccer:","category":"activity","emoji_order":"1781","aliases":[],"aliases_ascii":[],"keywords":["game","ball","sport","soccer","football"]},"baseball":{"unicode":"26be","unicode_alt":"26be-fe0f","code_decimal":"⚾","name":"baseball","shortname":":baseball:","category":"activity","emoji_order":"1782","aliases":[],"aliases_ascii":[],"keywords":["game","ball","sport","baseball"]},"basketball":{"unicode":"1f3c0","unicode_alt":"","code_decimal":"🏀","name":"basketball and hoop","shortname":":basketball:","category":"activity","emoji_order":"1783","aliases":[],"aliases_ascii":[],"keywords":["game","ball","sport","basketball"]},"volleyball":{"unicode":"1f3d0","unicode_alt":"","code_decimal":"🏐","name":"volleyball","shortname":":volleyball:","category":"activity","emoji_order":"1784","aliases":[],"aliases_ascii":[],"keywords":["game","ball","sport","volleyball"]},"football":{"unicode":"1f3c8","unicode_alt":"","code_decimal":"🏈","name":"american football","shortname":":football:","category":"activity","emoji_order":"1785","aliases":[],"aliases_ascii":[],"keywords":["america","game","ball","sport","football"]},"rugby_football":{"unicode":"1f3c9","unicode_alt":"","code_decimal":"🏉","name":"rugby football","shortname":":rugby_football:","category":"activity","emoji_order":"1786","aliases":[],"aliases_ascii":[],"keywords":["game","sport","football"]},"tennis":{"unicode":"1f3be","unicode_alt":"","code_decimal":"🎾","name":"tennis racquet and ball","shortname":":tennis:","category":"activity","emoji_order":"1787","aliases":[],"aliases_ascii":[],"keywords":["game","ball","sport","tennis"]},"8ball":{"unicode":"1f3b1","unicode_alt":"","code_decimal":"🎱","name":"billiards","shortname":":8ball:","category":"activity","emoji_order":"1788","aliases":[],"aliases_ascii":[],"keywords":["game","ball","sport","billiards","luck","boys night"]},"bowling":{"unicode":"1f3b3","unicode_alt":"","code_decimal":"🎳","name":"bowling","shortname":":bowling:","category":"activity","emoji_order":"1789","aliases":[],"aliases_ascii":[],"keywords":["game","ball","sport","boys night"]},"cricket":{"unicode":"1f3cf","unicode_alt":"","code_decimal":"🏏","name":"cricket bat and ball","shortname":":cricket:","category":"activity","emoji_order":"1790","aliases":[":cricket_bat_ball:"],"aliases_ascii":[],"keywords":["ball","sport","cricket"]},"field_hockey":{"unicode":"1f3d1","unicode_alt":"","code_decimal":"🏑","name":"field hockey stick and ball","shortname":":field_hockey:","category":"activity","emoji_order":"1791","aliases":[],"aliases_ascii":[],"keywords":["ball","sport","hockey"]},"hockey":{"unicode":"1f3d2","unicode_alt":"","code_decimal":"🏒","name":"ice hockey stick and puck","shortname":":hockey:","category":"activity","emoji_order":"1792","aliases":[],"aliases_ascii":[],"keywords":["game","sport","hockey"]},"ping_pong":{"unicode":"1f3d3","unicode_alt":"","code_decimal":"🏓","name":"table tennis paddle and ball","shortname":":ping_pong:","category":"activity","emoji_order":"1793","aliases":[":table_tennis:"],"aliases_ascii":[],"keywords":["game","ball","sport","ping pong"]},"badminton":{"unicode":"1f3f8","unicode_alt":"","code_decimal":"🏸","name":"badminton racquet","shortname":":badminton:","category":"activity","emoji_order":"1794","aliases":[],"aliases_ascii":[],"keywords":["game","sport","badminton"]},"boxing_glove":{"unicode":"1f94a","unicode_alt":"","code_decimal":"🥊","name":"boxing glove","shortname":":boxing_glove:","category":"activity","emoji_order":"1795","aliases":[":boxing_gloves:"],"aliases_ascii":[],"keywords":[]},"martial_arts_uniform":{"unicode":"1f94b","unicode_alt":"","code_decimal":"🥋","name":"martial arts uniform","shortname":":martial_arts_uniform:","category":"activity","emoji_order":"1796","aliases":[":karate_uniform:"],"aliases_ascii":[],"keywords":[]},"goal":{"unicode":"1f945","unicode_alt":"","code_decimal":"🥅","name":"goal net","shortname":":goal:","category":"activity","emoji_order":"1797","aliases":[":goal_net:"],"aliases_ascii":[],"keywords":[]},"dart":{"unicode":"1f3af","unicode_alt":"","code_decimal":"🎯","name":"direct hit","shortname":":dart:","category":"activity","emoji_order":"1798","aliases":[],"aliases_ascii":[],"keywords":["game","sport","boys night"]},"golf":{"unicode":"26f3","unicode_alt":"26f3-fe0f","code_decimal":"⛳","name":"flag in hole","shortname":":golf:","category":"activity","emoji_order":"1799","aliases":[],"aliases_ascii":[],"keywords":["game","ball","vacation","sport","golf"]},"ice_skate":{"unicode":"26f8","unicode_alt":"26f8-fe0f","code_decimal":"⛸","name":"ice skate","shortname":":ice_skate:","category":"activity","emoji_order":"1800","aliases":[],"aliases_ascii":[],"keywords":["cold","sport","ice skating"]},"fishing_pole_and_fish":{"unicode":"1f3a3","unicode_alt":"","code_decimal":"🎣","name":"fishing pole and fish","shortname":":fishing_pole_and_fish:","category":"activity","emoji_order":"1801","aliases":[],"aliases_ascii":[],"keywords":["vacation","sport","fishing"]},"running_shirt_with_sash":{"unicode":"1f3bd","unicode_alt":"","code_decimal":"🎽","name":"running shirt with sash","shortname":":running_shirt_with_sash:","category":"activity","emoji_order":"1802","aliases":[],"aliases_ascii":[],"keywords":["award"]},"ski":{"unicode":"1f3bf","unicode_alt":"","code_decimal":"🎿","name":"ski and ski boot","shortname":":ski:","category":"activity","emoji_order":"1803","aliases":[],"aliases_ascii":[],"keywords":["cold","sport","skiing"]},"video_game":{"unicode":"1f3ae","unicode_alt":"","code_decimal":"🎮","name":"video game","shortname":":video_game:","category":"activity","emoji_order":"1804","aliases":[],"aliases_ascii":[],"keywords":["electronics","game","boys night"]},"joystick":{"unicode":"1f579","unicode_alt":"1f579-fe0f","code_decimal":"🕹","name":"joystick","shortname":":joystick:","category":"objects","emoji_order":"1805","aliases":[],"aliases_ascii":[],"keywords":["electronics","game","boys night"]},"game_die":{"unicode":"1f3b2","unicode_alt":"","code_decimal":"🎲","name":"game die","shortname":":game_die:","category":"activity","emoji_order":"1806","aliases":[],"aliases_ascii":[],"keywords":["object","game","boys night"]},"spades":{"unicode":"2660","unicode_alt":"2660-fe0f","code_decimal":"♠","name":"black spade suit","shortname":":spades:","category":"symbols","emoji_order":"1807","aliases":[],"aliases_ascii":[],"keywords":["symbol","game"]},"hearts":{"unicode":"2665","unicode_alt":"2665-fe0f","code_decimal":"♥","name":"black heart suit","shortname":":hearts:","category":"symbols","emoji_order":"1808","aliases":[],"aliases_ascii":[],"keywords":["love","symbol","game"]},"diamonds":{"unicode":"2666","unicode_alt":"2666-fe0f","code_decimal":"♦","name":"black diamond suit","shortname":":diamonds:","category":"symbols","emoji_order":"1809","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","game"]},"clubs":{"unicode":"2663","unicode_alt":"2663-fe0f","code_decimal":"♣","name":"black club suit","shortname":":clubs:","category":"symbols","emoji_order":"1810","aliases":[],"aliases_ascii":[],"keywords":["symbol","game"]},"black_joker":{"unicode":"1f0cf","unicode_alt":"","code_decimal":"🃏","name":"playing card black joker","shortname":":black_joker:","category":"symbols","emoji_order":"1811","aliases":[],"aliases_ascii":[],"keywords":["object","symbol","game"]},"mahjong":{"unicode":"1f004","unicode_alt":"1f004-fe0f","code_decimal":"🀄","name":"mahjong tile red dragon","shortname":":mahjong:","category":"symbols","emoji_order":"1812","aliases":[],"aliases_ascii":[],"keywords":["object","symbol","game"]},"flower_playing_cards":{"unicode":"1f3b4","unicode_alt":"","code_decimal":"🎴","name":"flower playing cards","shortname":":flower_playing_cards:","category":"symbols","emoji_order":"1813","aliases":[],"aliases_ascii":[],"keywords":["object","symbol"]},"mute":{"unicode":"1f507","unicode_alt":"","code_decimal":"🔇","name":"speaker with cancellation stroke","shortname":":mute:","category":"symbols","emoji_order":"1814","aliases":[],"aliases_ascii":[],"keywords":["alarm","symbol"]},"speaker":{"unicode":"1f508","unicode_alt":"","code_decimal":"🔈","name":"speaker","shortname":":speaker:","category":"symbols","emoji_order":"1815","aliases":[],"aliases_ascii":[],"keywords":["alarm","symbol"]},"sound":{"unicode":"1f509","unicode_alt":"","code_decimal":"🔉","name":"speaker with one sound wave","shortname":":sound:","category":"symbols","emoji_order":"1816","aliases":[],"aliases_ascii":[],"keywords":["alarm","symbol"]},"loud_sound":{"unicode":"1f50a","unicode_alt":"","code_decimal":"🔊","name":"speaker with three sound waves","shortname":":loud_sound:","category":"symbols","emoji_order":"1817","aliases":[],"aliases_ascii":[],"keywords":["alarm","symbol"]},"loudspeaker":{"unicode":"1f4e2","unicode_alt":"","code_decimal":"📢","name":"public address loudspeaker","shortname":":loudspeaker:","category":"symbols","emoji_order":"1818","aliases":[],"aliases_ascii":[],"keywords":["object","alarm","symbol"]},"mega":{"unicode":"1f4e3","unicode_alt":"","code_decimal":"📣","name":"cheering megaphone","shortname":":mega:","category":"symbols","emoji_order":"1819","aliases":[],"aliases_ascii":[],"keywords":["object","sport"]},"postal_horn":{"unicode":"1f4ef","unicode_alt":"","code_decimal":"📯","name":"postal horn","shortname":":postal_horn:","category":"objects","emoji_order":"1820","aliases":[],"aliases_ascii":[],"keywords":["object"]},"bell":{"unicode":"1f514","unicode_alt":"","code_decimal":"🔔","name":"bell","shortname":":bell:","category":"symbols","emoji_order":"1821","aliases":[],"aliases_ascii":[],"keywords":["object","alarm","symbol"]},"no_bell":{"unicode":"1f515","unicode_alt":"","code_decimal":"🔕","name":"bell with cancellation stroke","shortname":":no_bell:","category":"symbols","emoji_order":"1822","aliases":[],"aliases_ascii":[],"keywords":["alarm","symbol"]},"musical_score":{"unicode":"1f3bc","unicode_alt":"","code_decimal":"🎼","name":"musical score","shortname":":musical_score:","category":"activity","emoji_order":"1823","aliases":[],"aliases_ascii":[],"keywords":["instruments"]},"musical_note":{"unicode":"1f3b5","unicode_alt":"","code_decimal":"🎵","name":"musical note","shortname":":musical_note:","category":"symbols","emoji_order":"1824","aliases":[],"aliases_ascii":[],"keywords":["instruments","symbol"]},"notes":{"unicode":"1f3b6","unicode_alt":"","code_decimal":"🎶","name":"multiple musical notes","shortname":":notes:","category":"symbols","emoji_order":"1825","aliases":[],"aliases_ascii":[],"keywords":["instruments","symbol"]},"microphone2":{"unicode":"1f399","unicode_alt":"1f399-fe0f","code_decimal":"🎙","name":"studio microphone","shortname":":microphone2:","category":"objects","emoji_order":"1826","aliases":[":studio_microphone:"],"aliases_ascii":[],"keywords":["electronics","object"]},"level_slider":{"unicode":"1f39a","unicode_alt":"1f39a-fe0f","code_decimal":"🎚","name":"level slider","shortname":":level_slider:","category":"objects","emoji_order":"1827","aliases":[],"aliases_ascii":[],"keywords":[]},"control_knobs":{"unicode":"1f39b","unicode_alt":"1f39b-fe0f","code_decimal":"🎛","name":"control knobs","shortname":":control_knobs:","category":"objects","emoji_order":"1828","aliases":[],"aliases_ascii":[],"keywords":["time"]},"microphone":{"unicode":"1f3a4","unicode_alt":"","code_decimal":"🎤","name":"microphone","shortname":":microphone:","category":"activity","emoji_order":"1829","aliases":[],"aliases_ascii":[],"keywords":["instruments"]},"headphones":{"unicode":"1f3a7","unicode_alt":"","code_decimal":"🎧","name":"headphone","shortname":":headphones:","category":"activity","emoji_order":"1830","aliases":[],"aliases_ascii":[],"keywords":["instruments"]},"radio":{"unicode":"1f4fb","unicode_alt":"","code_decimal":"📻","name":"radio","shortname":":radio:","category":"objects","emoji_order":"1831","aliases":[],"aliases_ascii":[],"keywords":["electronics"]},"saxophone":{"unicode":"1f3b7","unicode_alt":"","code_decimal":"🎷","name":"saxophone","shortname":":saxophone:","category":"activity","emoji_order":"1832","aliases":[],"aliases_ascii":[],"keywords":["instruments"]},"guitar":{"unicode":"1f3b8","unicode_alt":"","code_decimal":"🎸","name":"guitar","shortname":":guitar:","category":"activity","emoji_order":"1833","aliases":[],"aliases_ascii":[],"keywords":["instruments"]},"musical_keyboard":{"unicode":"1f3b9","unicode_alt":"","code_decimal":"🎹","name":"musical keyboard","shortname":":musical_keyboard:","category":"activity","emoji_order":"1834","aliases":[],"aliases_ascii":[],"keywords":["instruments"]},"trumpet":{"unicode":"1f3ba","unicode_alt":"","code_decimal":"🎺","name":"trumpet","shortname":":trumpet:","category":"activity","emoji_order":"1835","aliases":[],"aliases_ascii":[],"keywords":["instruments"]},"violin":{"unicode":"1f3bb","unicode_alt":"","code_decimal":"🎻","name":"violin","shortname":":violin:","category":"activity","emoji_order":"1836","aliases":[],"aliases_ascii":[],"keywords":["instruments","sarcastic"]},"drum":{"unicode":"1f941","unicode_alt":"","code_decimal":"🥁","name":"drum with drumsticks","shortname":":drum:","category":"activity","emoji_order":"1837","aliases":[":drum_with_drumsticks:"],"aliases_ascii":[],"keywords":[]},"iphone":{"unicode":"1f4f1","unicode_alt":"","code_decimal":"📱","name":"mobile phone","shortname":":iphone:","category":"objects","emoji_order":"1838","aliases":[],"aliases_ascii":[],"keywords":["electronics","phone","selfie"]},"calling":{"unicode":"1f4f2","unicode_alt":"","code_decimal":"📲","name":"mobile phone with rightwards arrow at left","shortname":":calling:","category":"objects","emoji_order":"1839","aliases":[],"aliases_ascii":[],"keywords":["electronics","phone","selfie"]},"telephone":{"unicode":"260e","unicode_alt":"260e-fe0f","code_decimal":"☎","name":"black telephone","shortname":":telephone:","category":"objects","emoji_order":"1840","aliases":[],"aliases_ascii":[],"keywords":["electronics","phone"]},"telephone_receiver":{"unicode":"1f4de","unicode_alt":"","code_decimal":"📞","name":"telephone receiver","shortname":":telephone_receiver:","category":"objects","emoji_order":"1841","aliases":[],"aliases_ascii":[],"keywords":["electronics","phone"]},"pager":{"unicode":"1f4df","unicode_alt":"","code_decimal":"📟","name":"pager","shortname":":pager:","category":"objects","emoji_order":"1842","aliases":[],"aliases_ascii":[],"keywords":["electronics","work"]},"fax":{"unicode":"1f4e0","unicode_alt":"","code_decimal":"📠","name":"fax machine","shortname":":fax:","category":"objects","emoji_order":"1843","aliases":[],"aliases_ascii":[],"keywords":["electronics","work","office"]},"battery":{"unicode":"1f50b","unicode_alt":"","code_decimal":"🔋","name":"battery","shortname":":battery:","category":"objects","emoji_order":"1844","aliases":[],"aliases_ascii":[],"keywords":["object"]},"electric_plug":{"unicode":"1f50c","unicode_alt":"","code_decimal":"🔌","name":"electric plug","shortname":":electric_plug:","category":"objects","emoji_order":"1845","aliases":[],"aliases_ascii":[],"keywords":["electronics"]},"computer":{"unicode":"1f4bb","unicode_alt":"","code_decimal":"💻","name":"personal computer","shortname":":computer:","category":"objects","emoji_order":"1846","aliases":[],"aliases_ascii":[],"keywords":["electronics","work","office"]},"desktop":{"unicode":"1f5a5","unicode_alt":"1f5a5-fe0f","code_decimal":"🖥","name":"desktop computer","shortname":":desktop:","category":"objects","emoji_order":"1847","aliases":[":desktop_computer:"],"aliases_ascii":[],"keywords":["electronics","work"]},"printer":{"unicode":"1f5a8","unicode_alt":"1f5a8-fe0f","code_decimal":"🖨","name":"printer","shortname":":printer:","category":"objects","emoji_order":"1848","aliases":[],"aliases_ascii":[],"keywords":["electronics","work","office"]},"keyboard":{"unicode":"2328","unicode_alt":"2328-fe0f","code_decimal":"⌨","name":"keyboard","shortname":":keyboard:","category":"objects","emoji_order":"1849","aliases":[],"aliases_ascii":[],"keywords":["electronics","work","office"]},"mouse_three_button":{"unicode":"1f5b1","unicode_alt":"1f5b1-fe0f","code_decimal":"🖱","name":"three button mouse","shortname":":mouse_three_button:","category":"objects","emoji_order":"1850","aliases":[":three_button_mouse:"],"aliases_ascii":[],"keywords":["electronics","work","game","office"]},"trackball":{"unicode":"1f5b2","unicode_alt":"1f5b2-fe0f","code_decimal":"🖲","name":"trackball","shortname":":trackball:","category":"objects","emoji_order":"1851","aliases":[],"aliases_ascii":[],"keywords":["electronics","work","game","office"]},"minidisc":{"unicode":"1f4bd","unicode_alt":"","code_decimal":"💽","name":"minidisc","shortname":":minidisc:","category":"objects","emoji_order":"1852","aliases":[],"aliases_ascii":[],"keywords":["electronics"]},"floppy_disk":{"unicode":"1f4be","unicode_alt":"","code_decimal":"💾","name":"floppy disk","shortname":":floppy_disk:","category":"objects","emoji_order":"1853","aliases":[],"aliases_ascii":[],"keywords":["electronics","office"]},"cd":{"unicode":"1f4bf","unicode_alt":"","code_decimal":"💿","name":"optical disc","shortname":":cd:","category":"objects","emoji_order":"1854","aliases":[],"aliases_ascii":[],"keywords":["electronics"]},"dvd":{"unicode":"1f4c0","unicode_alt":"","code_decimal":"📀","name":"dvd","shortname":":dvd:","category":"objects","emoji_order":"1855","aliases":[],"aliases_ascii":[],"keywords":["electronics"]},"movie_camera":{"unicode":"1f3a5","unicode_alt":"","code_decimal":"🎥","name":"movie camera","shortname":":movie_camera:","category":"objects","emoji_order":"1856","aliases":[],"aliases_ascii":[],"keywords":["object","camera","movie"]},"film_frames":{"unicode":"1f39e","unicode_alt":"1f39e-fe0f","code_decimal":"🎞","name":"film frames","shortname":":film_frames:","category":"objects","emoji_order":"1857","aliases":[],"aliases_ascii":[],"keywords":["object","camera","movie"]},"projector":{"unicode":"1f4fd","unicode_alt":"1f4fd-fe0f","code_decimal":"📽","name":"film projector","shortname":":projector:","category":"objects","emoji_order":"1858","aliases":[":film_projector:"],"aliases_ascii":[],"keywords":["object","camera","movie"]},"clapper":{"unicode":"1f3ac","unicode_alt":"","code_decimal":"🎬","name":"clapper board","shortname":":clapper:","category":"activity","emoji_order":"1859","aliases":[],"aliases_ascii":[],"keywords":["movie"]},"tv":{"unicode":"1f4fa","unicode_alt":"","code_decimal":"📺","name":"television","shortname":":tv:","category":"objects","emoji_order":"1860","aliases":[],"aliases_ascii":[],"keywords":["electronics"]},"camera":{"unicode":"1f4f7","unicode_alt":"","code_decimal":"📷","name":"camera","shortname":":camera:","category":"objects","emoji_order":"1861","aliases":[],"aliases_ascii":[],"keywords":["electronics","camera","selfie"]},"camera_with_flash":{"unicode":"1f4f8","unicode_alt":"","code_decimal":"📸","name":"camera with flash","shortname":":camera_with_flash:","category":"objects","emoji_order":"1862","aliases":[],"aliases_ascii":[],"keywords":["electronics","camera"]},"video_camera":{"unicode":"1f4f9","unicode_alt":"","code_decimal":"📹","name":"video camera","shortname":":video_camera:","category":"objects","emoji_order":"1863","aliases":[],"aliases_ascii":[],"keywords":["electronics","camera","movie"]},"vhs":{"unicode":"1f4fc","unicode_alt":"","code_decimal":"📼","name":"videocassette","shortname":":vhs:","category":"objects","emoji_order":"1864","aliases":[],"aliases_ascii":[],"keywords":["electronics"]},"mag":{"unicode":"1f50d","unicode_alt":"","code_decimal":"🔍","name":"left-pointing magnifying glass","shortname":":mag:","category":"objects","emoji_order":"1865","aliases":[],"aliases_ascii":[],"keywords":["object"]},"mag_right":{"unicode":"1f50e","unicode_alt":"","code_decimal":"🔎","name":"right-pointing magnifying glass","shortname":":mag_right:","category":"objects","emoji_order":"1866","aliases":[],"aliases_ascii":[],"keywords":["object"]},"microscope":{"unicode":"1f52c","unicode_alt":"","code_decimal":"🔬","name":"microscope","shortname":":microscope:","category":"objects","emoji_order":"1867","aliases":[],"aliases_ascii":[],"keywords":["object","science"]},"telescope":{"unicode":"1f52d","unicode_alt":"","code_decimal":"🔭","name":"telescope","shortname":":telescope:","category":"objects","emoji_order":"1868","aliases":[],"aliases_ascii":[],"keywords":["object","space","science"]},"satellite":{"unicode":"1f4e1","unicode_alt":"","code_decimal":"📡","name":"satellite antenna","shortname":":satellite:","category":"objects","emoji_order":"1869","aliases":[],"aliases_ascii":[],"keywords":["object"]},"candle":{"unicode":"1f56f","unicode_alt":"1f56f-fe0f","code_decimal":"🕯","name":"candle","shortname":":candle:","category":"objects","emoji_order":"1870","aliases":[],"aliases_ascii":[],"keywords":["object"]},"bulb":{"unicode":"1f4a1","unicode_alt":"","code_decimal":"💡","name":"electric light bulb","shortname":":bulb:","category":"objects","emoji_order":"1871","aliases":[],"aliases_ascii":[],"keywords":["object","science"]},"flashlight":{"unicode":"1f526","unicode_alt":"","code_decimal":"🔦","name":"electric torch","shortname":":flashlight:","category":"objects","emoji_order":"1872","aliases":[],"aliases_ascii":[],"keywords":["electronics","object"]},"izakaya_lantern":{"unicode":"1f3ee","unicode_alt":"","code_decimal":"🏮","name":"izakaya lantern","shortname":":izakaya_lantern:","category":"objects","emoji_order":"1873","aliases":[],"aliases_ascii":[],"keywords":["object","japan"]},"notebook_with_decorative_cover":{"unicode":"1f4d4","unicode_alt":"","code_decimal":"📔","name":"notebook with decorative cover","shortname":":notebook_with_decorative_cover:","category":"objects","emoji_order":"1874","aliases":[],"aliases_ascii":[],"keywords":["object","office","write"]},"closed_book":{"unicode":"1f4d5","unicode_alt":"","code_decimal":"📕","name":"closed book","shortname":":closed_book:","category":"objects","emoji_order":"1875","aliases":[],"aliases_ascii":[],"keywords":["object","office","write","book"]},"book":{"unicode":"1f4d6","unicode_alt":"","code_decimal":"📖","name":"open book","shortname":":book:","category":"objects","emoji_order":"1876","aliases":[],"aliases_ascii":[],"keywords":["object","office","write","book"]},"green_book":{"unicode":"1f4d7","unicode_alt":"","code_decimal":"📗","name":"green book","shortname":":green_book:","category":"objects","emoji_order":"1877","aliases":[],"aliases_ascii":[],"keywords":["object","office","book"]},"blue_book":{"unicode":"1f4d8","unicode_alt":"","code_decimal":"📘","name":"blue book","shortname":":blue_book:","category":"objects","emoji_order":"1878","aliases":[],"aliases_ascii":[],"keywords":["object","office","write","book"]},"orange_book":{"unicode":"1f4d9","unicode_alt":"","code_decimal":"📙","name":"orange book","shortname":":orange_book:","category":"objects","emoji_order":"1879","aliases":[],"aliases_ascii":[],"keywords":["object","office","write","book"]},"books":{"unicode":"1f4da","unicode_alt":"","code_decimal":"📚","name":"books","shortname":":books:","category":"objects","emoji_order":"1880","aliases":[],"aliases_ascii":[],"keywords":["object","office","write","book"]},"notebook":{"unicode":"1f4d3","unicode_alt":"","code_decimal":"📓","name":"notebook","shortname":":notebook:","category":"objects","emoji_order":"1881","aliases":[],"aliases_ascii":[],"keywords":["object","office","write"]},"ledger":{"unicode":"1f4d2","unicode_alt":"","code_decimal":"📒","name":"ledger","shortname":":ledger:","category":"objects","emoji_order":"1882","aliases":[],"aliases_ascii":[],"keywords":["object","office","write"]},"page_with_curl":{"unicode":"1f4c3","unicode_alt":"","code_decimal":"📃","name":"page with curl","shortname":":page_with_curl:","category":"objects","emoji_order":"1883","aliases":[],"aliases_ascii":[],"keywords":["office","write"]},"scroll":{"unicode":"1f4dc","unicode_alt":"","code_decimal":"📜","name":"scroll","shortname":":scroll:","category":"objects","emoji_order":"1884","aliases":[],"aliases_ascii":[],"keywords":["object","office"]},"page_facing_up":{"unicode":"1f4c4","unicode_alt":"","code_decimal":"📄","name":"page facing up","shortname":":page_facing_up:","category":"objects","emoji_order":"1885","aliases":[],"aliases_ascii":[],"keywords":["work","office","write"]},"newspaper":{"unicode":"1f4f0","unicode_alt":"","code_decimal":"📰","name":"newspaper","shortname":":newspaper:","category":"objects","emoji_order":"1886","aliases":[],"aliases_ascii":[],"keywords":["office","write"]},"newspaper2":{"unicode":"1f5de","unicode_alt":"1f5de-fe0f","code_decimal":"🗞","name":"rolled-up newspaper","shortname":":newspaper2:","category":"objects","emoji_order":"1887","aliases":[":rolled_up_newspaper:"],"aliases_ascii":[],"keywords":["office","write"]},"bookmark_tabs":{"unicode":"1f4d1","unicode_alt":"","code_decimal":"📑","name":"bookmark tabs","shortname":":bookmark_tabs:","category":"objects","emoji_order":"1888","aliases":[],"aliases_ascii":[],"keywords":["office","write"]},"bookmark":{"unicode":"1f516","unicode_alt":"","code_decimal":"🔖","name":"bookmark","shortname":":bookmark:","category":"objects","emoji_order":"1889","aliases":[],"aliases_ascii":[],"keywords":["object","book"]},"label":{"unicode":"1f3f7","unicode_alt":"1f3f7-fe0f","code_decimal":"🏷","name":"label","shortname":":label:","category":"objects","emoji_order":"1890","aliases":[],"aliases_ascii":[],"keywords":["object"]},"moneybag":{"unicode":"1f4b0","unicode_alt":"","code_decimal":"💰","name":"money bag","shortname":":moneybag:","category":"objects","emoji_order":"1891","aliases":[],"aliases_ascii":[],"keywords":["bag","award","money"]},"yen":{"unicode":"1f4b4","unicode_alt":"","code_decimal":"💴","name":"banknote with yen sign","shortname":":yen:","category":"objects","emoji_order":"1892","aliases":[],"aliases_ascii":[],"keywords":["money"]},"dollar":{"unicode":"1f4b5","unicode_alt":"","code_decimal":"💵","name":"banknote with dollar sign","shortname":":dollar:","category":"objects","emoji_order":"1893","aliases":[],"aliases_ascii":[],"keywords":["money"]},"euro":{"unicode":"1f4b6","unicode_alt":"","code_decimal":"💶","name":"banknote with euro sign","shortname":":euro:","category":"objects","emoji_order":"1894","aliases":[],"aliases_ascii":[],"keywords":["money"]},"pound":{"unicode":"1f4b7","unicode_alt":"","code_decimal":"💷","name":"banknote with pound sign","shortname":":pound:","category":"objects","emoji_order":"1895","aliases":[],"aliases_ascii":[],"keywords":["money"]},"money_with_wings":{"unicode":"1f4b8","unicode_alt":"","code_decimal":"💸","name":"money with wings","shortname":":money_with_wings:","category":"objects","emoji_order":"1896","aliases":[],"aliases_ascii":[],"keywords":["money","boys night"]},"credit_card":{"unicode":"1f4b3","unicode_alt":"","code_decimal":"💳","name":"credit card","shortname":":credit_card:","category":"objects","emoji_order":"1897","aliases":[],"aliases_ascii":[],"keywords":["object","money","boys night"]},"chart":{"unicode":"1f4b9","unicode_alt":"","code_decimal":"💹","name":"chart with upwards trend and yen sign","shortname":":chart:","category":"symbols","emoji_order":"1898","aliases":[],"aliases_ascii":[],"keywords":["symbol","money"]},"currency_exchange":{"unicode":"1f4b1","unicode_alt":"","code_decimal":"💱","name":"currency exchange","shortname":":currency_exchange:","category":"symbols","emoji_order":"1899","aliases":[],"aliases_ascii":[],"keywords":["symbol","money"]},"heavy_dollar_sign":{"unicode":"1f4b2","unicode_alt":"","code_decimal":"💲","name":"heavy dollar sign","shortname":":heavy_dollar_sign:","category":"symbols","emoji_order":"1900","aliases":[],"aliases_ascii":[],"keywords":["math","symbol","money"]},"envelope":{"unicode":"2709","unicode_alt":"2709-fe0f","code_decimal":"✉","name":"envelope","shortname":":envelope:","category":"objects","emoji_order":"1901","aliases":[],"aliases_ascii":[],"keywords":["object","office","write"]},"e-mail":{"unicode":"1f4e7","unicode_alt":"","code_decimal":"📧","name":"e-mail symbol","shortname":":e-mail:","category":"objects","emoji_order":"1902","aliases":[":email:"],"aliases_ascii":[],"keywords":["office"]},"incoming_envelope":{"unicode":"1f4e8","unicode_alt":"","code_decimal":"📨","name":"incoming envelope","shortname":":incoming_envelope:","category":"objects","emoji_order":"1903","aliases":[],"aliases_ascii":[],"keywords":["object"]},"envelope_with_arrow":{"unicode":"1f4e9","unicode_alt":"","code_decimal":"📩","name":"envelope with downwards arrow above","shortname":":envelope_with_arrow:","category":"objects","emoji_order":"1904","aliases":[],"aliases_ascii":[],"keywords":["object","office"]},"outbox_tray":{"unicode":"1f4e4","unicode_alt":"","code_decimal":"📤","name":"outbox tray","shortname":":outbox_tray:","category":"objects","emoji_order":"1905","aliases":[],"aliases_ascii":[],"keywords":["work","office"]},"inbox_tray":{"unicode":"1f4e5","unicode_alt":"","code_decimal":"📥","name":"inbox tray","shortname":":inbox_tray:","category":"objects","emoji_order":"1906","aliases":[],"aliases_ascii":[],"keywords":["work","office"]},"package":{"unicode":"1f4e6","unicode_alt":"","code_decimal":"📦","name":"package","shortname":":package:","category":"objects","emoji_order":"1907","aliases":[],"aliases_ascii":[],"keywords":["object","gift","office"]},"mailbox":{"unicode":"1f4eb","unicode_alt":"","code_decimal":"📫","name":"closed mailbox with raised flag","shortname":":mailbox:","category":"objects","emoji_order":"1908","aliases":[],"aliases_ascii":[],"keywords":["object"]},"mailbox_closed":{"unicode":"1f4ea","unicode_alt":"","code_decimal":"📪","name":"closed mailbox with lowered flag","shortname":":mailbox_closed:","category":"objects","emoji_order":"1909","aliases":[],"aliases_ascii":[],"keywords":["object","office"]},"mailbox_with_mail":{"unicode":"1f4ec","unicode_alt":"","code_decimal":"📬","name":"open mailbox with raised flag","shortname":":mailbox_with_mail:","category":"objects","emoji_order":"1910","aliases":[],"aliases_ascii":[],"keywords":["object"]},"mailbox_with_no_mail":{"unicode":"1f4ed","unicode_alt":"","code_decimal":"📭","name":"open mailbox with lowered flag","shortname":":mailbox_with_no_mail:","category":"objects","emoji_order":"1911","aliases":[],"aliases_ascii":[],"keywords":["object"]},"postbox":{"unicode":"1f4ee","unicode_alt":"","code_decimal":"📮","name":"postbox","shortname":":postbox:","category":"objects","emoji_order":"1912","aliases":[],"aliases_ascii":[],"keywords":["object"]},"ballot_box":{"unicode":"1f5f3","unicode_alt":"1f5f3-fe0f","code_decimal":"🗳","name":"ballot box with ballot","shortname":":ballot_box:","category":"objects","emoji_order":"1913","aliases":[":ballot_box_with_ballot:"],"aliases_ascii":[],"keywords":["object","office"]},"pencil2":{"unicode":"270f","unicode_alt":"270f-fe0f","code_decimal":"✏","name":"pencil","shortname":":pencil2:","category":"objects","emoji_order":"1914","aliases":[],"aliases_ascii":[],"keywords":["object","office","write"]},"black_nib":{"unicode":"2712","unicode_alt":"2712-fe0f","code_decimal":"✒","name":"black nib","shortname":":black_nib:","category":"objects","emoji_order":"1915","aliases":[],"aliases_ascii":[],"keywords":["object","office","write"]},"pen_fountain":{"unicode":"1f58b","unicode_alt":"1f58b-fe0f","code_decimal":"🖋","name":"lower left fountain pen","shortname":":pen_fountain:","category":"objects","emoji_order":"1916","aliases":[":lower_left_fountain_pen:"],"aliases_ascii":[],"keywords":["object","office","write"]},"pen_ballpoint":{"unicode":"1f58a","unicode_alt":"1f58a-fe0f","code_decimal":"🖊","name":"lower left ballpoint pen","shortname":":pen_ballpoint:","category":"objects","emoji_order":"1917","aliases":[":lower_left_ballpoint_pen:"],"aliases_ascii":[],"keywords":["object","office","write"]},"paintbrush":{"unicode":"1f58c","unicode_alt":"1f58c-fe0f","code_decimal":"🖌","name":"lower left paintbrush","shortname":":paintbrush:","category":"objects","emoji_order":"1918","aliases":[":lower_left_paintbrush:"],"aliases_ascii":[],"keywords":["object","office","write"]},"crayon":{"unicode":"1f58d","unicode_alt":"1f58d-fe0f","code_decimal":"🖍","name":"lower left crayon","shortname":":crayon:","category":"objects","emoji_order":"1919","aliases":[":lower_left_crayon:"],"aliases_ascii":[],"keywords":["object","office","write"]},"pencil":{"unicode":"1f4dd","unicode_alt":"","code_decimal":"📝","name":"memo","shortname":":pencil:","category":"objects","emoji_order":"1920","aliases":[],"aliases_ascii":[],"keywords":["work","office","write"]},"briefcase":{"unicode":"1f4bc","unicode_alt":"","code_decimal":"💼","name":"briefcase","shortname":":briefcase:","category":"people","emoji_order":"1921","aliases":[],"aliases_ascii":[],"keywords":["bag","work","accessories","nutcase","job"]},"file_folder":{"unicode":"1f4c1","unicode_alt":"","code_decimal":"📁","name":"file folder","shortname":":file_folder:","category":"objects","emoji_order":"1922","aliases":[],"aliases_ascii":[],"keywords":["work","office"]},"open_file_folder":{"unicode":"1f4c2","unicode_alt":"","code_decimal":"📂","name":"open file folder","shortname":":open_file_folder:","category":"objects","emoji_order":"1923","aliases":[],"aliases_ascii":[],"keywords":["work","office"]},"dividers":{"unicode":"1f5c2","unicode_alt":"1f5c2-fe0f","code_decimal":"🗂","name":"card index dividers","shortname":":dividers:","category":"objects","emoji_order":"1924","aliases":[":card_index_dividers:"],"aliases_ascii":[],"keywords":["work","office"]},"date":{"unicode":"1f4c5","unicode_alt":"","code_decimal":"📅","name":"calendar","shortname":":date:","category":"objects","emoji_order":"1925","aliases":[],"aliases_ascii":[],"keywords":["object","office"]},"calendar":{"unicode":"1f4c6","unicode_alt":"","code_decimal":"📆","name":"tear-off calendar","shortname":":calendar:","category":"objects","emoji_order":"1926","aliases":[],"aliases_ascii":[],"keywords":["object","office"]},"notepad_spiral":{"unicode":"1f5d2","unicode_alt":"1f5d2-fe0f","code_decimal":"🗒","name":"spiral note pad","shortname":":notepad_spiral:","category":"objects","emoji_order":"1927","aliases":[":spiral_note_pad:"],"aliases_ascii":[],"keywords":["work","office","write"]},"calendar_spiral":{"unicode":"1f5d3","unicode_alt":"1f5d3-fe0f","code_decimal":"🗓","name":"spiral calendar pad","shortname":":calendar_spiral:","category":"objects","emoji_order":"1928","aliases":[":spiral_calendar_pad:"],"aliases_ascii":[],"keywords":["object","office"]},"card_index":{"unicode":"1f4c7","unicode_alt":"","code_decimal":"📇","name":"card index","shortname":":card_index:","category":"objects","emoji_order":"1929","aliases":[],"aliases_ascii":[],"keywords":["object","work","office"]},"chart_with_upwards_trend":{"unicode":"1f4c8","unicode_alt":"","code_decimal":"📈","name":"chart with upwards trend","shortname":":chart_with_upwards_trend:","category":"objects","emoji_order":"1930","aliases":[],"aliases_ascii":[],"keywords":["work","office"]},"chart_with_downwards_trend":{"unicode":"1f4c9","unicode_alt":"","code_decimal":"📉","name":"chart with downwards trend","shortname":":chart_with_downwards_trend:","category":"objects","emoji_order":"1931","aliases":[],"aliases_ascii":[],"keywords":["work","office"]},"bar_chart":{"unicode":"1f4ca","unicode_alt":"","code_decimal":"📊","name":"bar chart","shortname":":bar_chart:","category":"objects","emoji_order":"1932","aliases":[],"aliases_ascii":[],"keywords":["work","office"]},"clipboard":{"unicode":"1f4cb","unicode_alt":"","code_decimal":"📋","name":"clipboard","shortname":":clipboard:","category":"objects","emoji_order":"1933","aliases":[],"aliases_ascii":[],"keywords":["object","work","office","write"]},"pushpin":{"unicode":"1f4cc","unicode_alt":"","code_decimal":"📌","name":"pushpin","shortname":":pushpin:","category":"objects","emoji_order":"1934","aliases":[],"aliases_ascii":[],"keywords":["object","office"]},"round_pushpin":{"unicode":"1f4cd","unicode_alt":"","code_decimal":"📍","name":"round pushpin","shortname":":round_pushpin:","category":"objects","emoji_order":"1935","aliases":[],"aliases_ascii":[],"keywords":["object","office"]},"paperclip":{"unicode":"1f4ce","unicode_alt":"","code_decimal":"📎","name":"paperclip","shortname":":paperclip:","category":"objects","emoji_order":"1936","aliases":[],"aliases_ascii":[],"keywords":["object","work","office"]},"paperclips":{"unicode":"1f587","unicode_alt":"1f587-fe0f","code_decimal":"🖇","name":"linked paperclips","shortname":":paperclips:","category":"objects","emoji_order":"1937","aliases":[":linked_paperclips:"],"aliases_ascii":[],"keywords":["object","work","office"]},"straight_ruler":{"unicode":"1f4cf","unicode_alt":"","code_decimal":"📏","name":"straight ruler","shortname":":straight_ruler:","category":"objects","emoji_order":"1938","aliases":[],"aliases_ascii":[],"keywords":["object","tool","office"]},"triangular_ruler":{"unicode":"1f4d0","unicode_alt":"","code_decimal":"📐","name":"triangular ruler","shortname":":triangular_ruler:","category":"objects","emoji_order":"1939","aliases":[],"aliases_ascii":[],"keywords":["object","tool","office"]},"scissors":{"unicode":"2702","unicode_alt":"2702-fe0f","code_decimal":"✂","name":"black scissors","shortname":":scissors:","category":"objects","emoji_order":"1940","aliases":[],"aliases_ascii":[],"keywords":["object","tool","weapon","office"]},"card_box":{"unicode":"1f5c3","unicode_alt":"1f5c3-fe0f","code_decimal":"🗃","name":"card file box","shortname":":card_box:","category":"objects","emoji_order":"1941","aliases":[":card_file_box:"],"aliases_ascii":[],"keywords":["object","work","office"]},"file_cabinet":{"unicode":"1f5c4","unicode_alt":"1f5c4-fe0f","code_decimal":"🗄","name":"file cabinet","shortname":":file_cabinet:","category":"objects","emoji_order":"1942","aliases":[],"aliases_ascii":[],"keywords":["object","work","office"]},"wastebasket":{"unicode":"1f5d1","unicode_alt":"1f5d1-fe0f","code_decimal":"🗑","name":"wastebasket","shortname":":wastebasket:","category":"objects","emoji_order":"1943","aliases":[],"aliases_ascii":[],"keywords":["object","work"]},"lock":{"unicode":"1f512","unicode_alt":"","code_decimal":"🔒","name":"lock","shortname":":lock:","category":"objects","emoji_order":"1944","aliases":[],"aliases_ascii":[],"keywords":["object","lock"]},"unlock":{"unicode":"1f513","unicode_alt":"","code_decimal":"🔓","name":"open lock","shortname":":unlock:","category":"objects","emoji_order":"1945","aliases":[],"aliases_ascii":[],"keywords":["object","lock"]},"lock_with_ink_pen":{"unicode":"1f50f","unicode_alt":"","code_decimal":"🔏","name":"lock with ink pen","shortname":":lock_with_ink_pen:","category":"objects","emoji_order":"1946","aliases":[],"aliases_ascii":[],"keywords":["object","lock"]},"closed_lock_with_key":{"unicode":"1f510","unicode_alt":"","code_decimal":"🔐","name":"closed lock with key","shortname":":closed_lock_with_key:","category":"objects","emoji_order":"1947","aliases":[],"aliases_ascii":[],"keywords":["object","lock"]},"key":{"unicode":"1f511","unicode_alt":"","code_decimal":"🔑","name":"key","shortname":":key:","category":"objects","emoji_order":"1948","aliases":[],"aliases_ascii":[],"keywords":["object","lock"]},"key2":{"unicode":"1f5dd","unicode_alt":"1f5dd-fe0f","code_decimal":"🗝","name":"old key","shortname":":key2:","category":"objects","emoji_order":"1949","aliases":[":old_key:"],"aliases_ascii":[],"keywords":["object","lock"]},"hammer":{"unicode":"1f528","unicode_alt":"","code_decimal":"🔨","name":"hammer","shortname":":hammer:","category":"objects","emoji_order":"1950","aliases":[],"aliases_ascii":[],"keywords":["object","tool","weapon"]},"pick":{"unicode":"26cf","unicode_alt":"26cf-fe0f","code_decimal":"⛏","name":"pick","shortname":":pick:","category":"objects","emoji_order":"1951","aliases":[],"aliases_ascii":[],"keywords":["object","tool","weapon"]},"hammer_pick":{"unicode":"2692","unicode_alt":"2692-fe0f","code_decimal":"⚒","name":"hammer and pick","shortname":":hammer_pick:","category":"objects","emoji_order":"1952","aliases":[":hammer_and_pick:"],"aliases_ascii":[],"keywords":["object","tool","weapon"]},"tools":{"unicode":"1f6e0","unicode_alt":"1f6e0-fe0f","code_decimal":"🛠","name":"hammer and wrench","shortname":":tools:","category":"objects","emoji_order":"1953","aliases":[":hammer_and_wrench:"],"aliases_ascii":[],"keywords":["object","tool"]},"dagger":{"unicode":"1f5e1","unicode_alt":"1f5e1-fe0f","code_decimal":"🗡","name":"dagger knife","shortname":":dagger:","category":"objects","emoji_order":"1954","aliases":[":dagger_knife:"],"aliases_ascii":[],"keywords":["object","weapon"]},"crossed_swords":{"unicode":"2694","unicode_alt":"2694-fe0f","code_decimal":"⚔","name":"crossed swords","shortname":":crossed_swords:","category":"objects","emoji_order":"1955","aliases":[],"aliases_ascii":[],"keywords":["object","weapon"]},"gun":{"unicode":"1f52b","unicode_alt":"","code_decimal":"🔫","name":"pistol","shortname":":gun:","category":"objects","emoji_order":"1956","aliases":[],"aliases_ascii":[],"keywords":["object","weapon","dead","gun","sarcastic"]},"bow_and_arrow":{"unicode":"1f3f9","unicode_alt":"","code_decimal":"🏹","name":"bow and arrow","shortname":":bow_and_arrow:","category":"activity","emoji_order":"1957","aliases":[":archery:"],"aliases_ascii":[],"keywords":["weapon","sport"]},"shield":{"unicode":"1f6e1","unicode_alt":"1f6e1-fe0f","code_decimal":"🛡","name":"shield","shortname":":shield:","category":"objects","emoji_order":"1958","aliases":[],"aliases_ascii":[],"keywords":["object"]},"wrench":{"unicode":"1f527","unicode_alt":"","code_decimal":"🔧","name":"wrench","shortname":":wrench:","category":"objects","emoji_order":"1959","aliases":[],"aliases_ascii":[],"keywords":["object","tool"]},"nut_and_bolt":{"unicode":"1f529","unicode_alt":"","code_decimal":"🔩","name":"nut and bolt","shortname":":nut_and_bolt:","category":"objects","emoji_order":"1960","aliases":[],"aliases_ascii":[],"keywords":["object","tool","nutcase"]},"gear":{"unicode":"2699","unicode_alt":"2699-fe0f","code_decimal":"⚙","name":"gear","shortname":":gear:","category":"objects","emoji_order":"1961","aliases":[],"aliases_ascii":[],"keywords":["object","tool"]},"compression":{"unicode":"1f5dc","unicode_alt":"1f5dc-fe0f","code_decimal":"🗜","name":"compression","shortname":":compression:","category":"objects","emoji_order":"1962","aliases":[],"aliases_ascii":[],"keywords":[]},"alembic":{"unicode":"2697","unicode_alt":"2697-fe0f","code_decimal":"⚗","name":"alembic","shortname":":alembic:","category":"objects","emoji_order":"1963","aliases":[],"aliases_ascii":[],"keywords":["object","science"]},"scales":{"unicode":"2696","unicode_alt":"2696-fe0f","code_decimal":"⚖","name":"scales","shortname":":scales:","category":"objects","emoji_order":"1964","aliases":[],"aliases_ascii":[],"keywords":["object"]},"link":{"unicode":"1f517","unicode_alt":"","code_decimal":"🔗","name":"link symbol","shortname":":link:","category":"objects","emoji_order":"1965","aliases":[],"aliases_ascii":[],"keywords":["symbol","office"]},"chains":{"unicode":"26d3","unicode_alt":"26d3-fe0f","code_decimal":"⛓","name":"chains","shortname":":chains:","category":"objects","emoji_order":"1966","aliases":[],"aliases_ascii":[],"keywords":["object","tool"]},"syringe":{"unicode":"1f489","unicode_alt":"","code_decimal":"💉","name":"syringe","shortname":":syringe:","category":"objects","emoji_order":"1967","aliases":[],"aliases_ascii":[],"keywords":["object","weapon","health","drugs"]},"pill":{"unicode":"1f48a","unicode_alt":"","code_decimal":"💊","name":"pill","shortname":":pill:","category":"objects","emoji_order":"1968","aliases":[],"aliases_ascii":[],"keywords":["object","health","drugs"]},"smoking":{"unicode":"1f6ac","unicode_alt":"","code_decimal":"🚬","name":"smoking symbol","shortname":":smoking:","category":"objects","emoji_order":"1969","aliases":[],"aliases_ascii":[],"keywords":["symbol","drugs","smoking"]},"coffin":{"unicode":"26b0","unicode_alt":"26b0-fe0f","code_decimal":"⚰","name":"coffin","shortname":":coffin:","category":"objects","emoji_order":"1970","aliases":[],"aliases_ascii":[],"keywords":["object","dead","rip"]},"urn":{"unicode":"26b1","unicode_alt":"26b1-fe0f","code_decimal":"⚱","name":"funeral urn","shortname":":urn:","category":"objects","emoji_order":"1971","aliases":[":funeral_urn:"],"aliases_ascii":[],"keywords":["object","dead","rip"]},"moyai":{"unicode":"1f5ff","unicode_alt":"","code_decimal":"🗿","name":"moyai","shortname":":moyai:","category":"objects","emoji_order":"1972","aliases":[],"aliases_ascii":[],"keywords":["travel","vacation"]},"oil":{"unicode":"1f6e2","unicode_alt":"1f6e2-fe0f","code_decimal":"🛢","name":"oil drum","shortname":":oil:","category":"objects","emoji_order":"1973","aliases":[":oil_drum:"],"aliases_ascii":[],"keywords":["object"]},"crystal_ball":{"unicode":"1f52e","unicode_alt":"","code_decimal":"🔮","name":"crystal ball","shortname":":crystal_ball:","category":"objects","emoji_order":"1974","aliases":[],"aliases_ascii":[],"keywords":["object","ball"]},"shopping_cart":{"unicode":"1f6d2","unicode_alt":"","code_decimal":"🛒","name":"shopping trolley","shortname":":shopping_cart:","category":"objects","emoji_order":"1975","aliases":[":shopping_trolley:"],"aliases_ascii":[],"keywords":[]},"atm":{"unicode":"1f3e7","unicode_alt":"","code_decimal":"🏧","name":"automated teller machine","shortname":":atm:","category":"symbols","emoji_order":"1976","aliases":[],"aliases_ascii":[],"keywords":["electronics","symbol","money"]},"put_litter_in_its_place":{"unicode":"1f6ae","unicode_alt":"","code_decimal":"🚮","name":"put litter in its place symbol","shortname":":put_litter_in_its_place:","category":"symbols","emoji_order":"1977","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"potable_water":{"unicode":"1f6b0","unicode_alt":"","code_decimal":"🚰","name":"potable water symbol","shortname":":potable_water:","category":"symbols","emoji_order":"1978","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"wheelchair":{"unicode":"267f","unicode_alt":"267f-fe0f","code_decimal":"♿","name":"wheelchair symbol","shortname":":wheelchair:","category":"symbols","emoji_order":"1979","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"mens":{"unicode":"1f6b9","unicode_alt":"","code_decimal":"🚹","name":"mens symbol","shortname":":mens:","category":"symbols","emoji_order":"1980","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"womens":{"unicode":"1f6ba","unicode_alt":"","code_decimal":"🚺","name":"womens symbol","shortname":":womens:","category":"symbols","emoji_order":"1981","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"restroom":{"unicode":"1f6bb","unicode_alt":"","code_decimal":"🚻","name":"restroom","shortname":":restroom:","category":"symbols","emoji_order":"1982","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"baby_symbol":{"unicode":"1f6bc","unicode_alt":"","code_decimal":"🚼","name":"baby symbol","shortname":":baby_symbol:","category":"symbols","emoji_order":"1983","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"wc":{"unicode":"1f6be","unicode_alt":"","code_decimal":"🚾","name":"water closet","shortname":":wc:","category":"symbols","emoji_order":"1984","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"passport_control":{"unicode":"1f6c2","unicode_alt":"","code_decimal":"🛂","name":"passport control","shortname":":passport_control:","category":"symbols","emoji_order":"1985","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"customs":{"unicode":"1f6c3","unicode_alt":"","code_decimal":"🛃","name":"customs","shortname":":customs:","category":"symbols","emoji_order":"1986","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"baggage_claim":{"unicode":"1f6c4","unicode_alt":"","code_decimal":"🛄","name":"baggage claim","shortname":":baggage_claim:","category":"symbols","emoji_order":"1987","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"left_luggage":{"unicode":"1f6c5","unicode_alt":"","code_decimal":"🛅","name":"left luggage","shortname":":left_luggage:","category":"symbols","emoji_order":"1988","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"warning":{"unicode":"26a0","unicode_alt":"26a0-fe0f","code_decimal":"⚠","name":"warning sign","shortname":":warning:","category":"symbols","emoji_order":"1989","aliases":[],"aliases_ascii":[],"keywords":["symbol","punctuation"]},"children_crossing":{"unicode":"1f6b8","unicode_alt":"","code_decimal":"🚸","name":"children crossing","shortname":":children_crossing:","category":"symbols","emoji_order":"1990","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"no_entry":{"unicode":"26d4","unicode_alt":"26d4-fe0f","code_decimal":"⛔","name":"no entry","shortname":":no_entry:","category":"symbols","emoji_order":"1991","aliases":[],"aliases_ascii":[],"keywords":["symbol","circle"]},"no_entry_sign":{"unicode":"1f6ab","unicode_alt":"","code_decimal":"🚫","name":"no entry sign","shortname":":no_entry_sign:","category":"symbols","emoji_order":"1992","aliases":[],"aliases_ascii":[],"keywords":["symbol","circle"]},"no_bicycles":{"unicode":"1f6b3","unicode_alt":"","code_decimal":"🚳","name":"no bicycles","shortname":":no_bicycles:","category":"symbols","emoji_order":"1993","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"no_smoking":{"unicode":"1f6ad","unicode_alt":"","code_decimal":"🚭","name":"no smoking symbol","shortname":":no_smoking:","category":"symbols","emoji_order":"1994","aliases":[],"aliases_ascii":[],"keywords":["symbol","smoking"]},"do_not_litter":{"unicode":"1f6af","unicode_alt":"","code_decimal":"🚯","name":"do not litter symbol","shortname":":do_not_litter:","category":"symbols","emoji_order":"1995","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"non-potable_water":{"unicode":"1f6b1","unicode_alt":"","code_decimal":"🚱","name":"non-potable water symbol","shortname":":non-potable_water:","category":"symbols","emoji_order":"1996","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"no_pedestrians":{"unicode":"1f6b7","unicode_alt":"","code_decimal":"🚷","name":"no pedestrians","shortname":":no_pedestrians:","category":"symbols","emoji_order":"1997","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"no_mobile_phones":{"unicode":"1f4f5","unicode_alt":"","code_decimal":"📵","name":"no mobile phones","shortname":":no_mobile_phones:","category":"symbols","emoji_order":"1998","aliases":[],"aliases_ascii":[],"keywords":["symbol","phone"]},"underage":{"unicode":"1f51e","unicode_alt":"","code_decimal":"🔞","name":"no one under eighteen symbol","shortname":":underage:","category":"symbols","emoji_order":"1999","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"radioactive":{"unicode":"2622","unicode_alt":"2622-fe0f","code_decimal":"☢","name":"radioactive sign","shortname":":radioactive:","category":"symbols","emoji_order":"2000","aliases":[":radioactive_sign:"],"aliases_ascii":[],"keywords":["symbol","science"]},"biohazard":{"unicode":"2623","unicode_alt":"2623-fe0f","code_decimal":"☣","name":"biohazard sign","shortname":":biohazard:","category":"symbols","emoji_order":"2001","aliases":[":biohazard_sign:"],"aliases_ascii":[],"keywords":["symbol","science"]},"arrow_up":{"unicode":"2b06","unicode_alt":"2b06-fe0f","code_decimal":"⬆","name":"upwards black arrow","shortname":":arrow_up:","category":"symbols","emoji_order":"2002","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_upper_right":{"unicode":"2197","unicode_alt":"2197-fe0f","code_decimal":"↗","name":"north east arrow","shortname":":arrow_upper_right:","category":"symbols","emoji_order":"2003","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_right":{"unicode":"27a1","unicode_alt":"27a1-fe0f","code_decimal":"➡","name":"black rightwards arrow","shortname":":arrow_right:","category":"symbols","emoji_order":"2004","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_lower_right":{"unicode":"2198","unicode_alt":"2198-fe0f","code_decimal":"↘","name":"south east arrow","shortname":":arrow_lower_right:","category":"symbols","emoji_order":"2005","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_down":{"unicode":"2b07","unicode_alt":"2b07-fe0f","code_decimal":"⬇","name":"downwards black arrow","shortname":":arrow_down:","category":"symbols","emoji_order":"2006","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_lower_left":{"unicode":"2199","unicode_alt":"2199-fe0f","code_decimal":"↙","name":"south west arrow","shortname":":arrow_lower_left:","category":"symbols","emoji_order":"2007","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_left":{"unicode":"2b05","unicode_alt":"2b05-fe0f","code_decimal":"⬅","name":"leftwards black arrow","shortname":":arrow_left:","category":"symbols","emoji_order":"2008","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_upper_left":{"unicode":"2196","unicode_alt":"2196-fe0f","code_decimal":"↖","name":"north west arrow","shortname":":arrow_upper_left:","category":"symbols","emoji_order":"2009","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_up_down":{"unicode":"2195","unicode_alt":"2195-fe0f","code_decimal":"↕","name":"up down arrow","shortname":":arrow_up_down:","category":"symbols","emoji_order":"2010","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"left_right_arrow":{"unicode":"2194","unicode_alt":"2194-fe0f","code_decimal":"↔","name":"left right arrow","shortname":":left_right_arrow:","category":"symbols","emoji_order":"2011","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"leftwards_arrow_with_hook":{"unicode":"21a9","unicode_alt":"21a9-fe0f","code_decimal":"↩","name":"leftwards arrow with hook","shortname":":leftwards_arrow_with_hook:","category":"symbols","emoji_order":"2012","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_right_hook":{"unicode":"21aa","unicode_alt":"21aa-fe0f","code_decimal":"↪","name":"rightwards arrow with hook","shortname":":arrow_right_hook:","category":"symbols","emoji_order":"2013","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_heading_up":{"unicode":"2934","unicode_alt":"2934-fe0f","code_decimal":"⤴","name":"arrow pointing rightwards then curving upwards","shortname":":arrow_heading_up:","category":"symbols","emoji_order":"2014","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_heading_down":{"unicode":"2935","unicode_alt":"2935-fe0f","code_decimal":"⤵","name":"arrow pointing rightwards then curving downwards","shortname":":arrow_heading_down:","category":"symbols","emoji_order":"2015","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrows_clockwise":{"unicode":"1f503","unicode_alt":"","code_decimal":"🔃","name":"clockwise downwards and upwards open circle arrows","shortname":":arrows_clockwise:","category":"symbols","emoji_order":"2016","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrows_counterclockwise":{"unicode":"1f504","unicode_alt":"","code_decimal":"🔄","name":"anticlockwise downwards and upwards open circle arrows","shortname":":arrows_counterclockwise:","category":"symbols","emoji_order":"2017","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"back":{"unicode":"1f519","unicode_alt":"","code_decimal":"🔙","name":"back with leftwards arrow above","shortname":":back:","category":"symbols","emoji_order":"2018","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"end":{"unicode":"1f51a","unicode_alt":"","code_decimal":"🔚","name":"end with leftwards arrow above","shortname":":end:","category":"symbols","emoji_order":"2019","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"on":{"unicode":"1f51b","unicode_alt":"","code_decimal":"🔛","name":"on with exclamation mark with left right arrow abo","shortname":":on:","category":"symbols","emoji_order":"2020","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"soon":{"unicode":"1f51c","unicode_alt":"","code_decimal":"🔜","name":"soon with rightwards arrow above","shortname":":soon:","category":"symbols","emoji_order":"2021","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"top":{"unicode":"1f51d","unicode_alt":"","code_decimal":"🔝","name":"top with upwards arrow above","shortname":":top:","category":"symbols","emoji_order":"2022","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"place_of_worship":{"unicode":"1f6d0","unicode_alt":"","code_decimal":"🛐","name":"place of worship","shortname":":place_of_worship:","category":"symbols","emoji_order":"2023","aliases":[":worship_symbol:"],"aliases_ascii":[],"keywords":["religion","symbol","pray"]},"atom":{"unicode":"269b","unicode_alt":"269b-fe0f","code_decimal":"⚛","name":"atom symbol","shortname":":atom:","category":"symbols","emoji_order":"2024","aliases":[":atom_symbol:"],"aliases_ascii":[],"keywords":["symbol","science"]},"om_symbol":{"unicode":"1f549","unicode_alt":"1f549-fe0f","code_decimal":"🕉","name":"om symbol","shortname":":om_symbol:","category":"symbols","emoji_order":"2025","aliases":[],"aliases_ascii":[],"keywords":["religion","symbol"]},"star_of_david":{"unicode":"2721","unicode_alt":"2721-fe0f","code_decimal":"✡","name":"star of david","shortname":":star_of_david:","category":"symbols","emoji_order":"2026","aliases":[],"aliases_ascii":[],"keywords":["religion","jew","star","symbol"]},"wheel_of_dharma":{"unicode":"2638","unicode_alt":"2638-fe0f","code_decimal":"☸","name":"wheel of dharma","shortname":":wheel_of_dharma:","category":"symbols","emoji_order":"2027","aliases":[],"aliases_ascii":[],"keywords":["religion","symbol"]},"yin_yang":{"unicode":"262f","unicode_alt":"262f-fe0f","code_decimal":"☯","name":"yin yang","shortname":":yin_yang:","category":"symbols","emoji_order":"2028","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"cross":{"unicode":"271d","unicode_alt":"271d-fe0f","code_decimal":"✝","name":"latin cross","shortname":":cross:","category":"symbols","emoji_order":"2029","aliases":[":latin_cross:"],"aliases_ascii":[],"keywords":["religion","symbol"]},"orthodox_cross":{"unicode":"2626","unicode_alt":"2626-fe0f","code_decimal":"☦","name":"orthodox cross","shortname":":orthodox_cross:","category":"symbols","emoji_order":"2030","aliases":[],"aliases_ascii":[],"keywords":["religion","symbol"]},"star_and_crescent":{"unicode":"262a","unicode_alt":"262a-fe0f","code_decimal":"☪","name":"star and crescent","shortname":":star_and_crescent:","category":"symbols","emoji_order":"2031","aliases":[],"aliases_ascii":[],"keywords":["religion","symbol"]},"peace":{"unicode":"262e","unicode_alt":"262e-fe0f","code_decimal":"☮","name":"peace symbol","shortname":":peace:","category":"symbols","emoji_order":"2032","aliases":[":peace_symbol:"],"aliases_ascii":[],"keywords":["symbol","peace","drugs"]},"menorah":{"unicode":"1f54e","unicode_alt":"","code_decimal":"🕎","name":"menorah with nine branches","shortname":":menorah:","category":"symbols","emoji_order":"2033","aliases":[],"aliases_ascii":[],"keywords":["religion","object","jew","symbol","holidays"]},"six_pointed_star":{"unicode":"1f52f","unicode_alt":"","code_decimal":"🔯","name":"six pointed star with middle dot","shortname":":six_pointed_star:","category":"symbols","emoji_order":"2034","aliases":[],"aliases_ascii":[],"keywords":["religion","jew","star","symbol"]},"aries":{"unicode":"2648","unicode_alt":"2648-fe0f","code_decimal":"♈","name":"aries","shortname":":aries:","category":"symbols","emoji_order":"2035","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"taurus":{"unicode":"2649","unicode_alt":"2649-fe0f","code_decimal":"♉","name":"taurus","shortname":":taurus:","category":"symbols","emoji_order":"2036","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"gemini":{"unicode":"264a","unicode_alt":"264a-fe0f","code_decimal":"♊","name":"gemini","shortname":":gemini:","category":"symbols","emoji_order":"2037","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"cancer":{"unicode":"264b","unicode_alt":"264b-fe0f","code_decimal":"♋","name":"cancer","shortname":":cancer:","category":"symbols","emoji_order":"2038","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"leo":{"unicode":"264c","unicode_alt":"264c-fe0f","code_decimal":"♌","name":"leo","shortname":":leo:","category":"symbols","emoji_order":"2039","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"virgo":{"unicode":"264d","unicode_alt":"264d-fe0f","code_decimal":"♍","name":"virgo","shortname":":virgo:","category":"symbols","emoji_order":"2040","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"libra":{"unicode":"264e","unicode_alt":"264e-fe0f","code_decimal":"♎","name":"libra","shortname":":libra:","category":"symbols","emoji_order":"2041","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"scorpius":{"unicode":"264f","unicode_alt":"264f-fe0f","code_decimal":"♏","name":"scorpius","shortname":":scorpius:","category":"symbols","emoji_order":"2042","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"sagittarius":{"unicode":"2650","unicode_alt":"2650-fe0f","code_decimal":"♐","name":"sagittarius","shortname":":sagittarius:","category":"symbols","emoji_order":"2043","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"capricorn":{"unicode":"2651","unicode_alt":"2651-fe0f","code_decimal":"♑","name":"capricorn","shortname":":capricorn:","category":"symbols","emoji_order":"2044","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"aquarius":{"unicode":"2652","unicode_alt":"2652-fe0f","code_decimal":"♒","name":"aquarius","shortname":":aquarius:","category":"symbols","emoji_order":"2045","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"pisces":{"unicode":"2653","unicode_alt":"2653-fe0f","code_decimal":"♓","name":"pisces","shortname":":pisces:","category":"symbols","emoji_order":"2046","aliases":[],"aliases_ascii":[],"keywords":["zodiac","symbol"]},"ophiuchus":{"unicode":"26ce","unicode_alt":"","code_decimal":"⛎","name":"ophiuchus","shortname":":ophiuchus:","category":"symbols","emoji_order":"2047","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"twisted_rightwards_arrows":{"unicode":"1f500","unicode_alt":"","code_decimal":"🔀","name":"twisted rightwards arrows","shortname":":twisted_rightwards_arrows:","category":"symbols","emoji_order":"2048","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"repeat":{"unicode":"1f501","unicode_alt":"","code_decimal":"🔁","name":"clockwise rightwards and leftwards open circle arrows","shortname":":repeat:","category":"symbols","emoji_order":"2049","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"repeat_one":{"unicode":"1f502","unicode_alt":"","code_decimal":"🔂","name":"clockwise rightwards and leftwards open circle arrows with circled one overlay","shortname":":repeat_one:","category":"symbols","emoji_order":"2050","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_forward":{"unicode":"25b6","unicode_alt":"25b6-fe0f","code_decimal":"▶","name":"black right-pointing triangle","shortname":":arrow_forward:","category":"symbols","emoji_order":"2051","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol","triangle"]},"fast_forward":{"unicode":"23e9","unicode_alt":"","code_decimal":"⏩","name":"black right-pointing double triangle","shortname":":fast_forward:","category":"symbols","emoji_order":"2052","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"track_next":{"unicode":"23ed","unicode_alt":"23ed-fe0f","code_decimal":"⏭","name":"black right-pointing double triangle with vertical bar","shortname":":track_next:","category":"symbols","emoji_order":"2053","aliases":[":next_track:"],"aliases_ascii":[],"keywords":["arrow","symbol"]},"play_pause":{"unicode":"23ef","unicode_alt":"23ef-fe0f","code_decimal":"⏯","name":"black right-pointing double triangle with double vertical bar","shortname":":play_pause:","category":"symbols","emoji_order":"2054","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_backward":{"unicode":"25c0","unicode_alt":"25c0-fe0f","code_decimal":"◀","name":"black left-pointing triangle","shortname":":arrow_backward:","category":"symbols","emoji_order":"2055","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol","triangle"]},"rewind":{"unicode":"23ea","unicode_alt":"","code_decimal":"⏪","name":"black left-pointing double triangle","shortname":":rewind:","category":"symbols","emoji_order":"2056","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"track_previous":{"unicode":"23ee","unicode_alt":"23ee-fe0f","code_decimal":"⏮","name":"black left-pointing double triangle with vertical bar","shortname":":track_previous:","category":"symbols","emoji_order":"2057","aliases":[":previous_track:"],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_up_small":{"unicode":"1f53c","unicode_alt":"","code_decimal":"🔼","name":"up-pointing small red triangle","shortname":":arrow_up_small:","category":"symbols","emoji_order":"2058","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol","triangle"]},"arrow_double_up":{"unicode":"23eb","unicode_alt":"","code_decimal":"⏫","name":"black up-pointing double triangle","shortname":":arrow_double_up:","category":"symbols","emoji_order":"2059","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"arrow_down_small":{"unicode":"1f53d","unicode_alt":"","code_decimal":"🔽","name":"down-pointing small red triangle","shortname":":arrow_down_small:","category":"symbols","emoji_order":"2060","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol","triangle"]},"arrow_double_down":{"unicode":"23ec","unicode_alt":"","code_decimal":"⏬","name":"black down-pointing double triangle","shortname":":arrow_double_down:","category":"symbols","emoji_order":"2061","aliases":[],"aliases_ascii":[],"keywords":["arrow","symbol"]},"pause_button":{"unicode":"23f8","unicode_alt":"23f8-fe0f","code_decimal":"⏸","name":"double vertical bar","shortname":":pause_button:","category":"symbols","emoji_order":"2062","aliases":[":double_vertical_bar:"],"aliases_ascii":[],"keywords":["symbol"]},"stop_button":{"unicode":"23f9","unicode_alt":"23f9-fe0f","code_decimal":"⏹","name":"black square for stop","shortname":":stop_button:","category":"symbols","emoji_order":"2063","aliases":[],"aliases_ascii":[],"keywords":["symbol","square"]},"record_button":{"unicode":"23fa","unicode_alt":"23fa-fe0f","code_decimal":"⏺","name":"black circle for record","shortname":":record_button:","category":"symbols","emoji_order":"2064","aliases":[],"aliases_ascii":[],"keywords":["symbol","circle"]},"eject":{"unicode":"23cf","unicode_alt":"23cf-fe0f","code_decimal":"⏏","name":"eject symbol","shortname":":eject:","category":"symbols","emoji_order":"2065","aliases":[":eject_symbol:"],"aliases_ascii":[],"keywords":[]},"cinema":{"unicode":"1f3a6","unicode_alt":"","code_decimal":"🎦","name":"cinema","shortname":":cinema:","category":"symbols","emoji_order":"2066","aliases":[],"aliases_ascii":[],"keywords":["symbol","camera","movie"]},"low_brightness":{"unicode":"1f505","unicode_alt":"","code_decimal":"🔅","name":"low brightness symbol","shortname":":low_brightness:","category":"symbols","emoji_order":"2067","aliases":[],"aliases_ascii":[],"keywords":["symbol","sun"]},"high_brightness":{"unicode":"1f506","unicode_alt":"","code_decimal":"🔆","name":"high brightness symbol","shortname":":high_brightness:","category":"symbols","emoji_order":"2068","aliases":[],"aliases_ascii":[],"keywords":["symbol","sun"]},"signal_strength":{"unicode":"1f4f6","unicode_alt":"","code_decimal":"📶","name":"antenna with bars","shortname":":signal_strength:","category":"symbols","emoji_order":"2069","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"vibration_mode":{"unicode":"1f4f3","unicode_alt":"","code_decimal":"📳","name":"vibration mode","shortname":":vibration_mode:","category":"symbols","emoji_order":"2070","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"mobile_phone_off":{"unicode":"1f4f4","unicode_alt":"","code_decimal":"📴","name":"mobile phone off","shortname":":mobile_phone_off:","category":"symbols","emoji_order":"2071","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"recycle":{"unicode":"267b","unicode_alt":"267b-fe0f","code_decimal":"♻","name":"black universal recycling symbol","shortname":":recycle:","category":"symbols","emoji_order":"2072","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"name_badge":{"unicode":"1f4db","unicode_alt":"","code_decimal":"📛","name":"name badge","shortname":":name_badge:","category":"symbols","emoji_order":"2073","aliases":[],"aliases_ascii":[],"keywords":["work"]},"fleur-de-lis":{"unicode":"269c","unicode_alt":"269c-fe0f","code_decimal":"⚜","name":"fleur-de-lis","shortname":":fleur-de-lis:","category":"symbols","emoji_order":"2074","aliases":[],"aliases_ascii":[],"keywords":["object","symbol"]},"beginner":{"unicode":"1f530","unicode_alt":"","code_decimal":"🔰","name":"japanese symbol for beginner","shortname":":beginner:","category":"symbols","emoji_order":"2075","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"trident":{"unicode":"1f531","unicode_alt":"","code_decimal":"🔱","name":"trident emblem","shortname":":trident:","category":"symbols","emoji_order":"2076","aliases":[],"aliases_ascii":[],"keywords":["object","symbol"]},"o":{"unicode":"2b55","unicode_alt":"2b55-fe0f","code_decimal":"⭕","name":"heavy large circle","shortname":":o:","category":"symbols","emoji_order":"2077","aliases":[],"aliases_ascii":[],"keywords":["symbol","circle"]},"white_check_mark":{"unicode":"2705","unicode_alt":"","code_decimal":"✅","name":"white heavy check mark","shortname":":white_check_mark:","category":"symbols","emoji_order":"2078","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"ballot_box_with_check":{"unicode":"2611","unicode_alt":"2611-fe0f","code_decimal":"☑","name":"ballot box with check","shortname":":ballot_box_with_check:","category":"symbols","emoji_order":"2079","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"heavy_check_mark":{"unicode":"2714","unicode_alt":"2714-fe0f","code_decimal":"✔","name":"heavy check mark","shortname":":heavy_check_mark:","category":"symbols","emoji_order":"2080","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"heavy_multiplication_x":{"unicode":"2716","unicode_alt":"2716-fe0f","code_decimal":"✖","name":"heavy multiplication x","shortname":":heavy_multiplication_x:","category":"symbols","emoji_order":"2081","aliases":[],"aliases_ascii":[],"keywords":["math","symbol"]},"x":{"unicode":"274c","unicode_alt":"","code_decimal":"❌","name":"cross mark","shortname":":x:","category":"symbols","emoji_order":"2082","aliases":[],"aliases_ascii":[],"keywords":["symbol","sol"]},"negative_squared_cross_mark":{"unicode":"274e","unicode_alt":"","code_decimal":"❎","name":"negative squared cross mark","shortname":":negative_squared_cross_mark:","category":"symbols","emoji_order":"2083","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"heavy_plus_sign":{"unicode":"2795","unicode_alt":"","code_decimal":"➕","name":"heavy plus sign","shortname":":heavy_plus_sign:","category":"symbols","emoji_order":"2084","aliases":[],"aliases_ascii":[],"keywords":["math","symbol"]},"heavy_minus_sign":{"unicode":"2796","unicode_alt":"","code_decimal":"➖","name":"heavy minus sign","shortname":":heavy_minus_sign:","category":"symbols","emoji_order":"2088","aliases":[],"aliases_ascii":[],"keywords":["math","symbol"]},"heavy_division_sign":{"unicode":"2797","unicode_alt":"","code_decimal":"➗","name":"heavy division sign","shortname":":heavy_division_sign:","category":"symbols","emoji_order":"2089","aliases":[],"aliases_ascii":[],"keywords":["math","symbol"]},"curly_loop":{"unicode":"27b0","unicode_alt":"","code_decimal":"➰","name":"curly loop","shortname":":curly_loop:","category":"symbols","emoji_order":"2090","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"loop":{"unicode":"27bf","unicode_alt":"","code_decimal":"➿","name":"double curly loop","shortname":":loop:","category":"symbols","emoji_order":"2091","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"part_alternation_mark":{"unicode":"303d","unicode_alt":"303d-fe0f","code_decimal":"〽","name":"part alternation mark","shortname":":part_alternation_mark:","category":"symbols","emoji_order":"2092","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"eight_spoked_asterisk":{"unicode":"2733","unicode_alt":"2733-fe0f","code_decimal":"✳","name":"eight spoked asterisk","shortname":":eight_spoked_asterisk:","category":"symbols","emoji_order":"2093","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"eight_pointed_black_star":{"unicode":"2734","unicode_alt":"2734-fe0f","code_decimal":"✴","name":"eight pointed black star","shortname":":eight_pointed_black_star:","category":"symbols","emoji_order":"2094","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"sparkle":{"unicode":"2747","unicode_alt":"2747-fe0f","code_decimal":"❇","name":"sparkle","shortname":":sparkle:","category":"symbols","emoji_order":"2095","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"bangbang":{"unicode":"203c","unicode_alt":"203c-fe0f","code_decimal":"‼","name":"double exclamation mark","shortname":":bangbang:","category":"symbols","emoji_order":"2096","aliases":[],"aliases_ascii":[],"keywords":["symbol","punctuation"]},"interrobang":{"unicode":"2049","unicode_alt":"2049-fe0f","code_decimal":"⁉","name":"exclamation question mark","shortname":":interrobang:","category":"symbols","emoji_order":"2097","aliases":[],"aliases_ascii":[],"keywords":["symbol","punctuation"]},"question":{"unicode":"2753","unicode_alt":"","code_decimal":"❓","name":"black question mark ornament","shortname":":question:","category":"symbols","emoji_order":"2098","aliases":[],"aliases_ascii":[],"keywords":["symbol","punctuation","wth"]},"grey_question":{"unicode":"2754","unicode_alt":"","code_decimal":"❔","name":"white question mark ornament","shortname":":grey_question:","category":"symbols","emoji_order":"2099","aliases":[],"aliases_ascii":[],"keywords":["symbol","punctuation"]},"grey_exclamation":{"unicode":"2755","unicode_alt":"","code_decimal":"❕","name":"white exclamation mark ornament","shortname":":grey_exclamation:","category":"symbols","emoji_order":"2100","aliases":[],"aliases_ascii":[],"keywords":["symbol","punctuation"]},"exclamation":{"unicode":"2757","unicode_alt":"2757-fe0f","code_decimal":"❗","name":"heavy exclamation mark symbol","shortname":":exclamation:","category":"symbols","emoji_order":"2101","aliases":[],"aliases_ascii":[],"keywords":["symbol","punctuation"]},"wavy_dash":{"unicode":"3030","unicode_alt":"3030-fe0f","code_decimal":"〰","name":"wavy dash","shortname":":wavy_dash:","category":"symbols","emoji_order":"2102","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"copyright":{"unicode":"00a9","unicode_alt":"00a9-fe0f","code_decimal":"©","name":"copyright sign","shortname":":copyright:","category":"symbols","emoji_order":"2103","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"registered":{"unicode":"00ae","unicode_alt":"00ae-fe0f","code_decimal":"®","name":"registered sign","shortname":":registered:","category":"symbols","emoji_order":"2104","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"tm":{"unicode":"2122","unicode_alt":"2122-fe0f","code_decimal":"™","name":"trade mark sign","shortname":":tm:","category":"symbols","emoji_order":"2105","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"hash":{"unicode":"0023-20e3","unicode_alt":"0023-fe0f-20e3","code_decimal":"#⃣","name":"keycap number sign","shortname":":hash:","category":"symbols","emoji_order":"2106","aliases":[],"aliases_ascii":[],"keywords":["number","symbol"]},"asterisk":{"unicode":"002a-20e3","unicode_alt":"002a-fe0f-20e3","code_decimal":"*⃣","name":"keycap asterisk","shortname":":asterisk:","category":"symbols","emoji_order":"2107","aliases":[":keycap_asterisk:"],"aliases_ascii":[],"keywords":["symbol"]},"zero":{"unicode":"0030-20e3","unicode_alt":"0030-fe0f-20e3","code_decimal":"0⃣","name":"keycap digit zero","shortname":":zero:","category":"symbols","emoji_order":"2108","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"one":{"unicode":"0031-20e3","unicode_alt":"0031-fe0f-20e3","code_decimal":"1⃣","name":"keycap digit one","shortname":":one:","category":"symbols","emoji_order":"2109","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"two":{"unicode":"0032-20e3","unicode_alt":"0032-fe0f-20e3","code_decimal":"2⃣","name":"keycap digit two","shortname":":two:","category":"symbols","emoji_order":"2110","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"three":{"unicode":"0033-20e3","unicode_alt":"0033-fe0f-20e3","code_decimal":"3⃣","name":"keycap digit three","shortname":":three:","category":"symbols","emoji_order":"2111","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"four":{"unicode":"0034-20e3","unicode_alt":"0034-fe0f-20e3","code_decimal":"4⃣","name":"keycap digit four","shortname":":four:","category":"symbols","emoji_order":"2112","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"five":{"unicode":"0035-20e3","unicode_alt":"0035-fe0f-20e3","code_decimal":"5⃣","name":"keycap digit five","shortname":":five:","category":"symbols","emoji_order":"2113","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"six":{"unicode":"0036-20e3","unicode_alt":"0036-fe0f-20e3","code_decimal":"6⃣","name":"keycap digit six","shortname":":six:","category":"symbols","emoji_order":"2114","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"seven":{"unicode":"0037-20e3","unicode_alt":"0037-fe0f-20e3","code_decimal":"7⃣","name":"keycap digit seven","shortname":":seven:","category":"symbols","emoji_order":"2115","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"eight":{"unicode":"0038-20e3","unicode_alt":"0038-fe0f-20e3","code_decimal":"8⃣","name":"keycap digit eight","shortname":":eight:","category":"symbols","emoji_order":"2116","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"nine":{"unicode":"0039-20e3","unicode_alt":"0039-fe0f-20e3","code_decimal":"9⃣","name":"keycap digit nine","shortname":":nine:","category":"symbols","emoji_order":"2117","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"keycap_ten":{"unicode":"1f51f","unicode_alt":"","code_decimal":"🔟","name":"keycap ten","shortname":":keycap_ten:","category":"symbols","emoji_order":"2118","aliases":[],"aliases_ascii":[],"keywords":["number","math","symbol"]},"100":{"unicode":"1f4af","unicode_alt":"","code_decimal":"💯","name":"hundred points symbol","shortname":":100:","category":"symbols","emoji_order":"2119","aliases":[],"aliases_ascii":[],"keywords":["symbol","wow","win","perfect","parties"]},"capital_abcd":{"unicode":"1f520","unicode_alt":"","code_decimal":"🔠","name":"input symbol for latin capital letters","shortname":":capital_abcd:","category":"symbols","emoji_order":"2120","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"abcd":{"unicode":"1f521","unicode_alt":"","code_decimal":"🔡","name":"input symbol for latin small letters","shortname":":abcd:","category":"symbols","emoji_order":"2121","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"1234":{"unicode":"1f522","unicode_alt":"","code_decimal":"🔢","name":"input symbol for numbers","shortname":":1234:","category":"symbols","emoji_order":"2122","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"symbols":{"unicode":"1f523","unicode_alt":"","code_decimal":"🔣","name":"input symbol for symbols","shortname":":symbols:","category":"symbols","emoji_order":"2123","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"abc":{"unicode":"1f524","unicode_alt":"","code_decimal":"🔤","name":"input symbol for latin letters","shortname":":abc:","category":"symbols","emoji_order":"2124","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"a":{"unicode":"1f170","unicode_alt":"","code_decimal":"🅰","name":"negative squared latin capital letter a","shortname":":a:","category":"symbols","emoji_order":"2125","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"ab":{"unicode":"1f18e","unicode_alt":"","code_decimal":"🆎","name":"negative squared ab","shortname":":ab:","category":"symbols","emoji_order":"2126","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"b":{"unicode":"1f171","unicode_alt":"","code_decimal":"🅱","name":"negative squared latin capital letter b","shortname":":b:","category":"symbols","emoji_order":"2127","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"cl":{"unicode":"1f191","unicode_alt":"","code_decimal":"🆑","name":"squared cl","shortname":":cl:","category":"symbols","emoji_order":"2128","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"cool":{"unicode":"1f192","unicode_alt":"","code_decimal":"🆒","name":"squared cool","shortname":":cool:","category":"symbols","emoji_order":"2129","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"free":{"unicode":"1f193","unicode_alt":"","code_decimal":"🆓","name":"squared free","shortname":":free:","category":"symbols","emoji_order":"2130","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"information_source":{"unicode":"2139","unicode_alt":"2139-fe0f","code_decimal":"ℹ","name":"information source","shortname":":information_source:","category":"symbols","emoji_order":"2131","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"id":{"unicode":"1f194","unicode_alt":"","code_decimal":"🆔","name":"squared id","shortname":":id:","category":"symbols","emoji_order":"2132","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"m":{"unicode":"24c2","unicode_alt":"24c2-fe0f","code_decimal":"Ⓜ","name":"circled latin capital letter m","shortname":":m:","category":"symbols","emoji_order":"2133","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"new":{"unicode":"1f195","unicode_alt":"","code_decimal":"🆕","name":"squared new","shortname":":new:","category":"symbols","emoji_order":"2134","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"ng":{"unicode":"1f196","unicode_alt":"","code_decimal":"🆖","name":"squared ng","shortname":":ng:","category":"symbols","emoji_order":"2135","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"o2":{"unicode":"1f17e","unicode_alt":"","code_decimal":"🅾","name":"negative squared latin capital letter o","shortname":":o2:","category":"symbols","emoji_order":"2136","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"ok":{"unicode":"1f197","unicode_alt":"","code_decimal":"🆗","name":"squared ok","shortname":":ok:","category":"symbols","emoji_order":"2137","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"parking":{"unicode":"1f17f","unicode_alt":"1f17f-fe0f","code_decimal":"🅿","name":"negative squared latin capital letter p","shortname":":parking:","category":"symbols","emoji_order":"2138","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"sos":{"unicode":"1f198","unicode_alt":"","code_decimal":"🆘","name":"squared sos","shortname":":sos:","category":"symbols","emoji_order":"2139","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"up":{"unicode":"1f199","unicode_alt":"","code_decimal":"🆙","name":"squared up with exclamation mark","shortname":":up:","category":"symbols","emoji_order":"2140","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"vs":{"unicode":"1f19a","unicode_alt":"","code_decimal":"🆚","name":"squared vs","shortname":":vs:","category":"symbols","emoji_order":"2141","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"koko":{"unicode":"1f201","unicode_alt":"","code_decimal":"🈁","name":"squared katakana koko","shortname":":koko:","category":"symbols","emoji_order":"2142","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"sa":{"unicode":"1f202","unicode_alt":"1f202-fe0f","code_decimal":"🈂","name":"squared katakana sa","shortname":":sa:","category":"symbols","emoji_order":"2143","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u6708":{"unicode":"1f237","unicode_alt":"1f237-fe0f","code_decimal":"🈷","name":"squared cjk unified ideograph-6708","shortname":":u6708:","category":"symbols","emoji_order":"2144","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u6709":{"unicode":"1f236","unicode_alt":"","code_decimal":"🈶","name":"squared cjk unified ideograph-6709","shortname":":u6709:","category":"symbols","emoji_order":"2145","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u6307":{"unicode":"1f22f","unicode_alt":"1f22f-fe0f","code_decimal":"🈯","name":"squared cjk unified ideograph-6307","shortname":":u6307:","category":"symbols","emoji_order":"2146","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"ideograph_advantage":{"unicode":"1f250","unicode_alt":"","code_decimal":"🉐","name":"circled ideograph advantage","shortname":":ideograph_advantage:","category":"symbols","emoji_order":"2147","aliases":[],"aliases_ascii":[],"keywords":["japan","symbol"]},"u5272":{"unicode":"1f239","unicode_alt":"","code_decimal":"🈹","name":"squared cjk unified ideograph-5272","shortname":":u5272:","category":"symbols","emoji_order":"2148","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u7121":{"unicode":"1f21a","unicode_alt":"1f21a-fe0f","code_decimal":"🈚","name":"squared cjk unified ideograph-7121","shortname":":u7121:","category":"symbols","emoji_order":"2149","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u7981":{"unicode":"1f232","unicode_alt":"","code_decimal":"🈲","name":"squared cjk unified ideograph-7981","shortname":":u7981:","category":"symbols","emoji_order":"2150","aliases":[],"aliases_ascii":[],"keywords":["japan","symbol"]},"accept":{"unicode":"1f251","unicode_alt":"","code_decimal":"🉑","name":"circled ideograph accept","shortname":":accept:","category":"symbols","emoji_order":"2151","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u7533":{"unicode":"1f238","unicode_alt":"","code_decimal":"🈸","name":"squared cjk unified ideograph-7533","shortname":":u7533:","category":"symbols","emoji_order":"2152","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u5408":{"unicode":"1f234","unicode_alt":"","code_decimal":"🈴","name":"squared cjk unified ideograph-5408","shortname":":u5408:","category":"symbols","emoji_order":"2153","aliases":[],"aliases_ascii":[],"keywords":["japan","symbol"]},"u7a7a":{"unicode":"1f233","unicode_alt":"","code_decimal":"🈳","name":"squared cjk unified ideograph-7a7a","shortname":":u7a7a:","category":"symbols","emoji_order":"2154","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"congratulations":{"unicode":"3297","unicode_alt":"3297-fe0f","code_decimal":"㊗","name":"circled ideograph congratulation","shortname":":congratulations:","category":"symbols","emoji_order":"2155","aliases":[],"aliases_ascii":[],"keywords":["japan","symbol"]},"secret":{"unicode":"3299","unicode_alt":"3299-fe0f","code_decimal":"㊙","name":"circled ideograph secret","shortname":":secret:","category":"symbols","emoji_order":"2156","aliases":[],"aliases_ascii":[],"keywords":["japan","symbol"]},"u55b6":{"unicode":"1f23a","unicode_alt":"","code_decimal":"🈺","name":"squared cjk unified ideograph-55b6","shortname":":u55b6:","category":"symbols","emoji_order":"2157","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"u6e80":{"unicode":"1f235","unicode_alt":"","code_decimal":"🈵","name":"squared cjk unified ideograph-6e80","shortname":":u6e80:","category":"symbols","emoji_order":"2158","aliases":[],"aliases_ascii":[],"keywords":["japan","symbol"]},"black_small_square":{"unicode":"25aa","unicode_alt":"25aa-fe0f","code_decimal":"▪","name":"black small square","shortname":":black_small_square:","category":"symbols","emoji_order":"2159","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square"]},"white_small_square":{"unicode":"25ab","unicode_alt":"25ab-fe0f","code_decimal":"▫","name":"white small square","shortname":":white_small_square:","category":"symbols","emoji_order":"2160","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square"]},"white_medium_square":{"unicode":"25fb","unicode_alt":"25fb-fe0f","code_decimal":"◻","name":"white medium square","shortname":":white_medium_square:","category":"symbols","emoji_order":"2161","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square"]},"black_medium_square":{"unicode":"25fc","unicode_alt":"25fc-fe0f","code_decimal":"◼","name":"black medium square","shortname":":black_medium_square:","category":"symbols","emoji_order":"2162","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square"]},"white_medium_small_square":{"unicode":"25fd","unicode_alt":"25fd-fe0f","code_decimal":"◽","name":"white medium small square","shortname":":white_medium_small_square:","category":"symbols","emoji_order":"2163","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square"]},"black_medium_small_square":{"unicode":"25fe","unicode_alt":"25fe-fe0f","code_decimal":"◾","name":"black medium small square","shortname":":black_medium_small_square:","category":"symbols","emoji_order":"2164","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square"]},"black_large_square":{"unicode":"2b1b","unicode_alt":"2b1b-fe0f","code_decimal":"⬛","name":"black large square","shortname":":black_large_square:","category":"symbols","emoji_order":"2165","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square"]},"white_large_square":{"unicode":"2b1c","unicode_alt":"2b1c-fe0f","code_decimal":"⬜","name":"white large square","shortname":":white_large_square:","category":"symbols","emoji_order":"2166","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square"]},"large_orange_diamond":{"unicode":"1f536","unicode_alt":"","code_decimal":"🔶","name":"large orange diamond","shortname":":large_orange_diamond:","category":"symbols","emoji_order":"2167","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol"]},"large_blue_diamond":{"unicode":"1f537","unicode_alt":"","code_decimal":"🔷","name":"large blue diamond","shortname":":large_blue_diamond:","category":"symbols","emoji_order":"2168","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol"]},"small_orange_diamond":{"unicode":"1f538","unicode_alt":"","code_decimal":"🔸","name":"small orange diamond","shortname":":small_orange_diamond:","category":"symbols","emoji_order":"2169","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol"]},"small_blue_diamond":{"unicode":"1f539","unicode_alt":"","code_decimal":"🔹","name":"small blue diamond","shortname":":small_blue_diamond:","category":"symbols","emoji_order":"2170","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol"]},"small_red_triangle":{"unicode":"1f53a","unicode_alt":"","code_decimal":"🔺","name":"up-pointing red triangle","shortname":":small_red_triangle:","category":"symbols","emoji_order":"2171","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","triangle"]},"small_red_triangle_down":{"unicode":"1f53b","unicode_alt":"","code_decimal":"🔻","name":"down-pointing red triangle","shortname":":small_red_triangle_down:","category":"symbols","emoji_order":"2172","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","triangle"]},"diamond_shape_with_a_dot_inside":{"unicode":"1f4a0","unicode_alt":"","code_decimal":"💠","name":"diamond shape with a dot inside","shortname":":diamond_shape_with_a_dot_inside:","category":"symbols","emoji_order":"2173","aliases":[],"aliases_ascii":[],"keywords":["symbol"]},"radio_button":{"unicode":"1f518","unicode_alt":"","code_decimal":"🔘","name":"radio button","shortname":":radio_button:","category":"symbols","emoji_order":"2174","aliases":[],"aliases_ascii":[],"keywords":["symbol","circle"]},"black_square_button":{"unicode":"1f532","unicode_alt":"","code_decimal":"🔲","name":"black square button","shortname":":black_square_button:","category":"symbols","emoji_order":"2175","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square"]},"white_square_button":{"unicode":"1f533","unicode_alt":"","code_decimal":"🔳","name":"white square button","shortname":":white_square_button:","category":"symbols","emoji_order":"2176","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","square"]},"white_circle":{"unicode":"26aa","unicode_alt":"26aa-fe0f","code_decimal":"⚪","name":"white circle","shortname":":white_circle:","category":"symbols","emoji_order":"2177","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","circle"]},"black_circle":{"unicode":"26ab","unicode_alt":"26ab-fe0f","code_decimal":"⚫","name":"black circle","shortname":":black_circle:","category":"symbols","emoji_order":"2178","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","circle"]},"red_circle":{"unicode":"1f534","unicode_alt":"","code_decimal":"🔴","name":"red circle","shortname":":red_circle:","category":"symbols","emoji_order":"2179","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","circle"]},"blue_circle":{"unicode":"1f535","unicode_alt":"","code_decimal":"🔵","name":"blue circle","shortname":":blue_circle:","category":"symbols","emoji_order":"2180","aliases":[],"aliases_ascii":[],"keywords":["shapes","symbol","circle"]},"checkered_flag":{"unicode":"1f3c1","unicode_alt":"","code_decimal":"🏁","name":"chequered flag","shortname":":checkered_flag:","category":"travel","emoji_order":"2181","aliases":[],"aliases_ascii":[],"keywords":["object"]},"triangular_flag_on_post":{"unicode":"1f6a9","unicode_alt":"","code_decimal":"🚩","name":"triangular flag on post","shortname":":triangular_flag_on_post:","category":"objects","emoji_order":"2182","aliases":[],"aliases_ascii":[],"keywords":["object"]},"crossed_flags":{"unicode":"1f38c","unicode_alt":"","code_decimal":"🎌","name":"crossed flags","shortname":":crossed_flags:","category":"objects","emoji_order":"2183","aliases":[],"aliases_ascii":[],"keywords":["object","japan"]},"flag_black":{"unicode":"1f3f4","unicode_alt":"","code_decimal":"🏴","name":"waving black flag","shortname":":flag_black:","category":"objects","emoji_order":"2184","aliases":[":waving_black_flag:"],"aliases_ascii":[],"keywords":["object"]},"flag_white":{"unicode":"1f3f3","unicode_alt":"1f3f3-fe0f","code_decimal":"🏳","name":"waving white flag","shortname":":flag_white:","category":"objects","emoji_order":"2185","aliases":[":waving_white_flag:"],"aliases_ascii":[],"keywords":["object"]},"rainbow_flag":{"unicode":"1f3f3-1f308","unicode_alt":"","code_decimal":"🏳🌈","name":"rainbow_flag","shortname":":rainbow_flag:","category":"objects","emoji_order":"2186","aliases":[":gay_pride_flag:"],"aliases_ascii":[],"keywords":[]},"flag_ac":{"unicode":"1f1e6-1f1e8","unicode_alt":"","code_decimal":"🇦🇨","name":"ascension","shortname":":flag_ac:","category":"flags","emoji_order":"2187","aliases":[":ac:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ad":{"unicode":"1f1e6-1f1e9","unicode_alt":"","code_decimal":"🇦🇩","name":"andorra","shortname":":flag_ad:","category":"flags","emoji_order":"2188","aliases":[":ad:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ae":{"unicode":"1f1e6-1f1ea","unicode_alt":"","code_decimal":"🇦🇪","name":"the united arab emirates","shortname":":flag_ae:","category":"flags","emoji_order":"2189","aliases":[":ae:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_af":{"unicode":"1f1e6-1f1eb","unicode_alt":"","code_decimal":"🇦🇫","name":"afghanistan","shortname":":flag_af:","category":"flags","emoji_order":"2190","aliases":[":af:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ag":{"unicode":"1f1e6-1f1ec","unicode_alt":"","code_decimal":"🇦🇬","name":"antigua and barbuda","shortname":":flag_ag:","category":"flags","emoji_order":"2191","aliases":[":ag:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ai":{"unicode":"1f1e6-1f1ee","unicode_alt":"","code_decimal":"🇦🇮","name":"anguilla","shortname":":flag_ai:","category":"flags","emoji_order":"2192","aliases":[":ai:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_al":{"unicode":"1f1e6-1f1f1","unicode_alt":"","code_decimal":"🇦🇱","name":"albania","shortname":":flag_al:","category":"flags","emoji_order":"2193","aliases":[":al:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_am":{"unicode":"1f1e6-1f1f2","unicode_alt":"","code_decimal":"🇦🇲","name":"armenia","shortname":":flag_am:","category":"flags","emoji_order":"2194","aliases":[":am:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ao":{"unicode":"1f1e6-1f1f4","unicode_alt":"","code_decimal":"🇦🇴","name":"angola","shortname":":flag_ao:","category":"flags","emoji_order":"2195","aliases":[":ao:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_aq":{"unicode":"1f1e6-1f1f6","unicode_alt":"","code_decimal":"🇦🇶","name":"antarctica","shortname":":flag_aq:","category":"flags","emoji_order":"2196","aliases":[":aq:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ar":{"unicode":"1f1e6-1f1f7","unicode_alt":"","code_decimal":"🇦🇷","name":"argentina","shortname":":flag_ar:","category":"flags","emoji_order":"2197","aliases":[":ar:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_as":{"unicode":"1f1e6-1f1f8","unicode_alt":"","code_decimal":"🇦🇸","name":"american samoa","shortname":":flag_as:","category":"flags","emoji_order":"2198","aliases":[":as:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_at":{"unicode":"1f1e6-1f1f9","unicode_alt":"","code_decimal":"🇦🇹","name":"austria","shortname":":flag_at:","category":"flags","emoji_order":"2199","aliases":[":at:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_au":{"unicode":"1f1e6-1f1fa","unicode_alt":"","code_decimal":"🇦🇺","name":"australia","shortname":":flag_au:","category":"flags","emoji_order":"2200","aliases":[":au:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_aw":{"unicode":"1f1e6-1f1fc","unicode_alt":"","code_decimal":"🇦🇼","name":"aruba","shortname":":flag_aw:","category":"flags","emoji_order":"2201","aliases":[":aw:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ax":{"unicode":"1f1e6-1f1fd","unicode_alt":"","code_decimal":"🇦🇽","name":"\u00e5land islands","shortname":":flag_ax:","category":"flags","emoji_order":"2202","aliases":[":ax:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_az":{"unicode":"1f1e6-1f1ff","unicode_alt":"","code_decimal":"🇦🇿","name":"azerbaijan","shortname":":flag_az:","category":"flags","emoji_order":"2203","aliases":[":az:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ba":{"unicode":"1f1e7-1f1e6","unicode_alt":"","code_decimal":"🇧🇦","name":"bosnia and herzegovina","shortname":":flag_ba:","category":"flags","emoji_order":"2204","aliases":[":ba:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bb":{"unicode":"1f1e7-1f1e7","unicode_alt":"","code_decimal":"🇧🇧","name":"barbados","shortname":":flag_bb:","category":"flags","emoji_order":"2205","aliases":[":bb:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bd":{"unicode":"1f1e7-1f1e9","unicode_alt":"","code_decimal":"🇧🇩","name":"bangladesh","shortname":":flag_bd:","category":"flags","emoji_order":"2206","aliases":[":bd:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_be":{"unicode":"1f1e7-1f1ea","unicode_alt":"","code_decimal":"🇧🇪","name":"belgium","shortname":":flag_be:","category":"flags","emoji_order":"2207","aliases":[":be:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bf":{"unicode":"1f1e7-1f1eb","unicode_alt":"","code_decimal":"🇧🇫","name":"burkina faso","shortname":":flag_bf:","category":"flags","emoji_order":"2208","aliases":[":bf:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bg":{"unicode":"1f1e7-1f1ec","unicode_alt":"","code_decimal":"🇧🇬","name":"bulgaria","shortname":":flag_bg:","category":"flags","emoji_order":"2209","aliases":[":bg:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bh":{"unicode":"1f1e7-1f1ed","unicode_alt":"","code_decimal":"🇧🇭","name":"bahrain","shortname":":flag_bh:","category":"flags","emoji_order":"2210","aliases":[":bh:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bi":{"unicode":"1f1e7-1f1ee","unicode_alt":"","code_decimal":"🇧🇮","name":"burundi","shortname":":flag_bi:","category":"flags","emoji_order":"2211","aliases":[":bi:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bj":{"unicode":"1f1e7-1f1ef","unicode_alt":"","code_decimal":"🇧🇯","name":"benin","shortname":":flag_bj:","category":"flags","emoji_order":"2212","aliases":[":bj:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bl":{"unicode":"1f1e7-1f1f1","unicode_alt":"","code_decimal":"🇧🇱","name":"saint barth\u00e9lemy","shortname":":flag_bl:","category":"flags","emoji_order":"2213","aliases":[":bl:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bm":{"unicode":"1f1e7-1f1f2","unicode_alt":"","code_decimal":"🇧🇲","name":"bermuda","shortname":":flag_bm:","category":"flags","emoji_order":"2214","aliases":[":bm:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bn":{"unicode":"1f1e7-1f1f3","unicode_alt":"","code_decimal":"🇧🇳","name":"brunei","shortname":":flag_bn:","category":"flags","emoji_order":"2215","aliases":[":bn:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bo":{"unicode":"1f1e7-1f1f4","unicode_alt":"","code_decimal":"🇧🇴","name":"bolivia","shortname":":flag_bo:","category":"flags","emoji_order":"2216","aliases":[":bo:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bq":{"unicode":"1f1e7-1f1f6","unicode_alt":"","code_decimal":"🇧🇶","name":"caribbean netherlands","shortname":":flag_bq:","category":"flags","emoji_order":"2217","aliases":[":bq:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_br":{"unicode":"1f1e7-1f1f7","unicode_alt":"","code_decimal":"🇧🇷","name":"brazil","shortname":":flag_br:","category":"flags","emoji_order":"2218","aliases":[":br:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bs":{"unicode":"1f1e7-1f1f8","unicode_alt":"","code_decimal":"🇧🇸","name":"the bahamas","shortname":":flag_bs:","category":"flags","emoji_order":"2219","aliases":[":bs:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bt":{"unicode":"1f1e7-1f1f9","unicode_alt":"","code_decimal":"🇧🇹","name":"bhutan","shortname":":flag_bt:","category":"flags","emoji_order":"2220","aliases":[":bt:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bv":{"unicode":"1f1e7-1f1fb","unicode_alt":"","code_decimal":"🇧🇻","name":"bouvet island","shortname":":flag_bv:","category":"flags","emoji_order":"2221","aliases":[":bv:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bw":{"unicode":"1f1e7-1f1fc","unicode_alt":"","code_decimal":"🇧🇼","name":"botswana","shortname":":flag_bw:","category":"flags","emoji_order":"2222","aliases":[":bw:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_by":{"unicode":"1f1e7-1f1fe","unicode_alt":"","code_decimal":"🇧🇾","name":"belarus","shortname":":flag_by:","category":"flags","emoji_order":"2223","aliases":[":by:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_bz":{"unicode":"1f1e7-1f1ff","unicode_alt":"","code_decimal":"🇧🇿","name":"belize","shortname":":flag_bz:","category":"flags","emoji_order":"2224","aliases":[":bz:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ca":{"unicode":"1f1e8-1f1e6","unicode_alt":"","code_decimal":"🇨🇦","name":"canada","shortname":":flag_ca:","category":"flags","emoji_order":"2225","aliases":[":ca:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cc":{"unicode":"1f1e8-1f1e8","unicode_alt":"","code_decimal":"🇨🇨","name":"cocos (keeling) islands","shortname":":flag_cc:","category":"flags","emoji_order":"2226","aliases":[":cc:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cd":{"unicode":"1f1e8-1f1e9","unicode_alt":"","code_decimal":"🇨🇩","name":"the democratic republic of the congo","shortname":":flag_cd:","category":"flags","emoji_order":"2227","aliases":[":congo:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cf":{"unicode":"1f1e8-1f1eb","unicode_alt":"","code_decimal":"🇨🇫","name":"central african republic","shortname":":flag_cf:","category":"flags","emoji_order":"2228","aliases":[":cf:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cg":{"unicode":"1f1e8-1f1ec","unicode_alt":"","code_decimal":"🇨🇬","name":"the republic of the congo","shortname":":flag_cg:","category":"flags","emoji_order":"2229","aliases":[":cg:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ch":{"unicode":"1f1e8-1f1ed","unicode_alt":"","code_decimal":"🇨🇭","name":"switzerland","shortname":":flag_ch:","category":"flags","emoji_order":"2230","aliases":[":ch:"],"aliases_ascii":[],"keywords":["country","neutral","flag"]},"flag_ci":{"unicode":"1f1e8-1f1ee","unicode_alt":"","code_decimal":"🇨🇮","name":"c\u00f4te d\u2019ivoire","shortname":":flag_ci:","category":"flags","emoji_order":"2231","aliases":[":ci:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ck":{"unicode":"1f1e8-1f1f0","unicode_alt":"","code_decimal":"🇨🇰","name":"cook islands","shortname":":flag_ck:","category":"flags","emoji_order":"2232","aliases":[":ck:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cl":{"unicode":"1f1e8-1f1f1","unicode_alt":"","code_decimal":"🇨🇱","name":"chile","shortname":":flag_cl:","category":"flags","emoji_order":"2233","aliases":[":chile:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cm":{"unicode":"1f1e8-1f1f2","unicode_alt":"","code_decimal":"🇨🇲","name":"cameroon","shortname":":flag_cm:","category":"flags","emoji_order":"2234","aliases":[":cm:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cn":{"unicode":"1f1e8-1f1f3","unicode_alt":"","code_decimal":"🇨🇳","name":"china","shortname":":flag_cn:","category":"flags","emoji_order":"2235","aliases":[":cn:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_co":{"unicode":"1f1e8-1f1f4","unicode_alt":"","code_decimal":"🇨🇴","name":"colombia","shortname":":flag_co:","category":"flags","emoji_order":"2236","aliases":[":co:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cp":{"unicode":"1f1e8-1f1f5","unicode_alt":"","code_decimal":"🇨🇵","name":"clipperton island","shortname":":flag_cp:","category":"flags","emoji_order":"2237","aliases":[":cp:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cr":{"unicode":"1f1e8-1f1f7","unicode_alt":"","code_decimal":"🇨🇷","name":"costa rica","shortname":":flag_cr:","category":"flags","emoji_order":"2238","aliases":[":cr:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cu":{"unicode":"1f1e8-1f1fa","unicode_alt":"","code_decimal":"🇨🇺","name":"cuba","shortname":":flag_cu:","category":"flags","emoji_order":"2239","aliases":[":cu:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cv":{"unicode":"1f1e8-1f1fb","unicode_alt":"","code_decimal":"🇨🇻","name":"cape verde","shortname":":flag_cv:","category":"flags","emoji_order":"2240","aliases":[":cv:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cw":{"unicode":"1f1e8-1f1fc","unicode_alt":"","code_decimal":"🇨🇼","name":"cura\u00e7ao","shortname":":flag_cw:","category":"flags","emoji_order":"2241","aliases":[":cw:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cx":{"unicode":"1f1e8-1f1fd","unicode_alt":"","code_decimal":"🇨🇽","name":"christmas island","shortname":":flag_cx:","category":"flags","emoji_order":"2242","aliases":[":cx:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cy":{"unicode":"1f1e8-1f1fe","unicode_alt":"","code_decimal":"🇨🇾","name":"cyprus","shortname":":flag_cy:","category":"flags","emoji_order":"2243","aliases":[":cy:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_cz":{"unicode":"1f1e8-1f1ff","unicode_alt":"","code_decimal":"🇨🇿","name":"the czech republic","shortname":":flag_cz:","category":"flags","emoji_order":"2244","aliases":[":cz:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_de":{"unicode":"1f1e9-1f1ea","unicode_alt":"","code_decimal":"🇩🇪","name":"germany","shortname":":flag_de:","category":"flags","emoji_order":"2245","aliases":[":de:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_dg":{"unicode":"1f1e9-1f1ec","unicode_alt":"","code_decimal":"🇩🇬","name":"diego garcia","shortname":":flag_dg:","category":"flags","emoji_order":"2246","aliases":[":dg:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_dj":{"unicode":"1f1e9-1f1ef","unicode_alt":"","code_decimal":"🇩🇯","name":"djibouti","shortname":":flag_dj:","category":"flags","emoji_order":"2247","aliases":[":dj:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_dk":{"unicode":"1f1e9-1f1f0","unicode_alt":"","code_decimal":"🇩🇰","name":"denmark","shortname":":flag_dk:","category":"flags","emoji_order":"2248","aliases":[":dk:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_dm":{"unicode":"1f1e9-1f1f2","unicode_alt":"","code_decimal":"🇩🇲","name":"dominica","shortname":":flag_dm:","category":"flags","emoji_order":"2249","aliases":[":dm:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_do":{"unicode":"1f1e9-1f1f4","unicode_alt":"","code_decimal":"🇩🇴","name":"the dominican republic","shortname":":flag_do:","category":"flags","emoji_order":"2250","aliases":[":do:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_dz":{"unicode":"1f1e9-1f1ff","unicode_alt":"","code_decimal":"🇩🇿","name":"algeria","shortname":":flag_dz:","category":"flags","emoji_order":"2251","aliases":[":dz:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ea":{"unicode":"1f1ea-1f1e6","unicode_alt":"","code_decimal":"🇪🇦","name":"ceuta, melilla","shortname":":flag_ea:","category":"flags","emoji_order":"2252","aliases":[":ea:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ec":{"unicode":"1f1ea-1f1e8","unicode_alt":"","code_decimal":"🇪🇨","name":"ecuador","shortname":":flag_ec:","category":"flags","emoji_order":"2253","aliases":[":ec:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ee":{"unicode":"1f1ea-1f1ea","unicode_alt":"","code_decimal":"🇪🇪","name":"estonia","shortname":":flag_ee:","category":"flags","emoji_order":"2254","aliases":[":ee:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_eg":{"unicode":"1f1ea-1f1ec","unicode_alt":"","code_decimal":"🇪🇬","name":"egypt","shortname":":flag_eg:","category":"flags","emoji_order":"2255","aliases":[":eg:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_eh":{"unicode":"1f1ea-1f1ed","unicode_alt":"","code_decimal":"🇪🇭","name":"western sahara","shortname":":flag_eh:","category":"flags","emoji_order":"2256","aliases":[":eh:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_er":{"unicode":"1f1ea-1f1f7","unicode_alt":"","code_decimal":"🇪🇷","name":"eritrea","shortname":":flag_er:","category":"flags","emoji_order":"2257","aliases":[":er:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_es":{"unicode":"1f1ea-1f1f8","unicode_alt":"","code_decimal":"🇪🇸","name":"spain","shortname":":flag_es:","category":"flags","emoji_order":"2258","aliases":[":es:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_et":{"unicode":"1f1ea-1f1f9","unicode_alt":"","code_decimal":"🇪🇹","name":"ethiopia","shortname":":flag_et:","category":"flags","emoji_order":"2259","aliases":[":et:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_eu":{"unicode":"1f1ea-1f1fa","unicode_alt":"","code_decimal":"🇪🇺","name":"european union","shortname":":flag_eu:","category":"flags","emoji_order":"2260","aliases":[":eu:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_fi":{"unicode":"1f1eb-1f1ee","unicode_alt":"","code_decimal":"🇫🇮","name":"finland","shortname":":flag_fi:","category":"flags","emoji_order":"2261","aliases":[":fi:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_fj":{"unicode":"1f1eb-1f1ef","unicode_alt":"","code_decimal":"🇫🇯","name":"fiji","shortname":":flag_fj:","category":"flags","emoji_order":"2262","aliases":[":fj:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_fk":{"unicode":"1f1eb-1f1f0","unicode_alt":"","code_decimal":"🇫🇰","name":"falkland islands","shortname":":flag_fk:","category":"flags","emoji_order":"2263","aliases":[":fk:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_fm":{"unicode":"1f1eb-1f1f2","unicode_alt":"","code_decimal":"🇫🇲","name":"micronesia","shortname":":flag_fm:","category":"flags","emoji_order":"2264","aliases":[":fm:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_fo":{"unicode":"1f1eb-1f1f4","unicode_alt":"","code_decimal":"🇫🇴","name":"faroe islands","shortname":":flag_fo:","category":"flags","emoji_order":"2265","aliases":[":fo:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_fr":{"unicode":"1f1eb-1f1f7","unicode_alt":"","code_decimal":"🇫🇷","name":"france","shortname":":flag_fr:","category":"flags","emoji_order":"2266","aliases":[":fr:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ga":{"unicode":"1f1ec-1f1e6","unicode_alt":"","code_decimal":"🇬🇦","name":"gabon","shortname":":flag_ga:","category":"flags","emoji_order":"2267","aliases":[":ga:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gb":{"unicode":"1f1ec-1f1e7","unicode_alt":"","code_decimal":"🇬🇧","name":"great britain","shortname":":flag_gb:","category":"flags","emoji_order":"2268","aliases":[":gb:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gd":{"unicode":"1f1ec-1f1e9","unicode_alt":"","code_decimal":"🇬🇩","name":"grenada","shortname":":flag_gd:","category":"flags","emoji_order":"2269","aliases":[":gd:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ge":{"unicode":"1f1ec-1f1ea","unicode_alt":"","code_decimal":"🇬🇪","name":"georgia","shortname":":flag_ge:","category":"flags","emoji_order":"2270","aliases":[":ge:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gf":{"unicode":"1f1ec-1f1eb","unicode_alt":"","code_decimal":"🇬🇫","name":"french guiana","shortname":":flag_gf:","category":"flags","emoji_order":"2271","aliases":[":gf:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gg":{"unicode":"1f1ec-1f1ec","unicode_alt":"","code_decimal":"🇬🇬","name":"guernsey","shortname":":flag_gg:","category":"flags","emoji_order":"2272","aliases":[":gg:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gh":{"unicode":"1f1ec-1f1ed","unicode_alt":"","code_decimal":"🇬🇭","name":"ghana","shortname":":flag_gh:","category":"flags","emoji_order":"2273","aliases":[":gh:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gi":{"unicode":"1f1ec-1f1ee","unicode_alt":"","code_decimal":"🇬🇮","name":"gibraltar","shortname":":flag_gi:","category":"flags","emoji_order":"2274","aliases":[":gi:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gl":{"unicode":"1f1ec-1f1f1","unicode_alt":"","code_decimal":"🇬🇱","name":"greenland","shortname":":flag_gl:","category":"flags","emoji_order":"2275","aliases":[":gl:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gm":{"unicode":"1f1ec-1f1f2","unicode_alt":"","code_decimal":"🇬🇲","name":"the gambia","shortname":":flag_gm:","category":"flags","emoji_order":"2276","aliases":[":gm:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gn":{"unicode":"1f1ec-1f1f3","unicode_alt":"","code_decimal":"🇬🇳","name":"guinea","shortname":":flag_gn:","category":"flags","emoji_order":"2277","aliases":[":gn:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gp":{"unicode":"1f1ec-1f1f5","unicode_alt":"","code_decimal":"🇬🇵","name":"guadeloupe","shortname":":flag_gp:","category":"flags","emoji_order":"2278","aliases":[":gp:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gq":{"unicode":"1f1ec-1f1f6","unicode_alt":"","code_decimal":"🇬🇶","name":"equatorial guinea","shortname":":flag_gq:","category":"flags","emoji_order":"2279","aliases":[":gq:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gr":{"unicode":"1f1ec-1f1f7","unicode_alt":"","code_decimal":"🇬🇷","name":"greece","shortname":":flag_gr:","category":"flags","emoji_order":"2280","aliases":[":gr:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gs":{"unicode":"1f1ec-1f1f8","unicode_alt":"","code_decimal":"🇬🇸","name":"south georgia","shortname":":flag_gs:","category":"flags","emoji_order":"2281","aliases":[":gs:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gt":{"unicode":"1f1ec-1f1f9","unicode_alt":"","code_decimal":"🇬🇹","name":"guatemala","shortname":":flag_gt:","category":"flags","emoji_order":"2282","aliases":[":gt:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gu":{"unicode":"1f1ec-1f1fa","unicode_alt":"","code_decimal":"🇬🇺","name":"guam","shortname":":flag_gu:","category":"flags","emoji_order":"2283","aliases":[":gu:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gw":{"unicode":"1f1ec-1f1fc","unicode_alt":"","code_decimal":"🇬🇼","name":"guinea-bissau","shortname":":flag_gw:","category":"flags","emoji_order":"2284","aliases":[":gw:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_gy":{"unicode":"1f1ec-1f1fe","unicode_alt":"","code_decimal":"🇬🇾","name":"guyana","shortname":":flag_gy:","category":"flags","emoji_order":"2285","aliases":[":gy:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_hk":{"unicode":"1f1ed-1f1f0","unicode_alt":"","code_decimal":"🇭🇰","name":"hong kong","shortname":":flag_hk:","category":"flags","emoji_order":"2286","aliases":[":hk:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_hm":{"unicode":"1f1ed-1f1f2","unicode_alt":"","code_decimal":"🇭🇲","name":"heard island and mcdonald islands","shortname":":flag_hm:","category":"flags","emoji_order":"2287","aliases":[":hm:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_hn":{"unicode":"1f1ed-1f1f3","unicode_alt":"","code_decimal":"🇭🇳","name":"honduras","shortname":":flag_hn:","category":"flags","emoji_order":"2288","aliases":[":hn:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_hr":{"unicode":"1f1ed-1f1f7","unicode_alt":"","code_decimal":"🇭🇷","name":"croatia","shortname":":flag_hr:","category":"flags","emoji_order":"2289","aliases":[":hr:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ht":{"unicode":"1f1ed-1f1f9","unicode_alt":"","code_decimal":"🇭🇹","name":"haiti","shortname":":flag_ht:","category":"flags","emoji_order":"2290","aliases":[":ht:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_hu":{"unicode":"1f1ed-1f1fa","unicode_alt":"","code_decimal":"🇭🇺","name":"hungary","shortname":":flag_hu:","category":"flags","emoji_order":"2291","aliases":[":hu:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ic":{"unicode":"1f1ee-1f1e8","unicode_alt":"","code_decimal":"🇮🇨","name":"canary islands","shortname":":flag_ic:","category":"flags","emoji_order":"2292","aliases":[":ic:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_id":{"unicode":"1f1ee-1f1e9","unicode_alt":"","code_decimal":"🇮🇩","name":"indonesia","shortname":":flag_id:","category":"flags","emoji_order":"2293","aliases":[":indonesia:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ie":{"unicode":"1f1ee-1f1ea","unicode_alt":"","code_decimal":"🇮🇪","name":"ireland","shortname":":flag_ie:","category":"flags","emoji_order":"2294","aliases":[":ie:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_il":{"unicode":"1f1ee-1f1f1","unicode_alt":"","code_decimal":"🇮🇱","name":"israel","shortname":":flag_il:","category":"flags","emoji_order":"2295","aliases":[":il:"],"aliases_ascii":[],"keywords":["jew","country","flag"]},"flag_im":{"unicode":"1f1ee-1f1f2","unicode_alt":"","code_decimal":"🇮🇲","name":"isle of man","shortname":":flag_im:","category":"flags","emoji_order":"2296","aliases":[":im:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_in":{"unicode":"1f1ee-1f1f3","unicode_alt":"","code_decimal":"🇮🇳","name":"india","shortname":":flag_in:","category":"flags","emoji_order":"2297","aliases":[":in:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_io":{"unicode":"1f1ee-1f1f4","unicode_alt":"","code_decimal":"🇮🇴","name":"british indian ocean territory","shortname":":flag_io:","category":"flags","emoji_order":"2298","aliases":[":io:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_iq":{"unicode":"1f1ee-1f1f6","unicode_alt":"","code_decimal":"🇮🇶","name":"iraq","shortname":":flag_iq:","category":"flags","emoji_order":"2299","aliases":[":iq:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ir":{"unicode":"1f1ee-1f1f7","unicode_alt":"","code_decimal":"🇮🇷","name":"iran","shortname":":flag_ir:","category":"flags","emoji_order":"2300","aliases":[":ir:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_is":{"unicode":"1f1ee-1f1f8","unicode_alt":"","code_decimal":"🇮🇸","name":"iceland","shortname":":flag_is:","category":"flags","emoji_order":"2301","aliases":[":is:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_it":{"unicode":"1f1ee-1f1f9","unicode_alt":"","code_decimal":"🇮🇹","name":"italy","shortname":":flag_it:","category":"flags","emoji_order":"2302","aliases":[":it:"],"aliases_ascii":[],"keywords":["italian","country","flag"]},"flag_je":{"unicode":"1f1ef-1f1ea","unicode_alt":"","code_decimal":"🇯🇪","name":"jersey","shortname":":flag_je:","category":"flags","emoji_order":"2303","aliases":[":je:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_jm":{"unicode":"1f1ef-1f1f2","unicode_alt":"","code_decimal":"🇯🇲","name":"jamaica","shortname":":flag_jm:","category":"flags","emoji_order":"2304","aliases":[":jm:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_jo":{"unicode":"1f1ef-1f1f4","unicode_alt":"","code_decimal":"🇯🇴","name":"jordan","shortname":":flag_jo:","category":"flags","emoji_order":"2305","aliases":[":jo:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_jp":{"unicode":"1f1ef-1f1f5","unicode_alt":"","code_decimal":"🇯🇵","name":"japan","shortname":":flag_jp:","category":"flags","emoji_order":"2306","aliases":[":jp:"],"aliases_ascii":[],"keywords":["japan","country","flag"]},"flag_ke":{"unicode":"1f1f0-1f1ea","unicode_alt":"","code_decimal":"🇰🇪","name":"kenya","shortname":":flag_ke:","category":"flags","emoji_order":"2307","aliases":[":ke:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_kg":{"unicode":"1f1f0-1f1ec","unicode_alt":"","code_decimal":"🇰🇬","name":"kyrgyzstan","shortname":":flag_kg:","category":"flags","emoji_order":"2308","aliases":[":kg:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_kh":{"unicode":"1f1f0-1f1ed","unicode_alt":"","code_decimal":"🇰🇭","name":"cambodia","shortname":":flag_kh:","category":"flags","emoji_order":"2309","aliases":[":kh:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ki":{"unicode":"1f1f0-1f1ee","unicode_alt":"","code_decimal":"🇰🇮","name":"kiribati","shortname":":flag_ki:","category":"flags","emoji_order":"2310","aliases":[":ki:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_km":{"unicode":"1f1f0-1f1f2","unicode_alt":"","code_decimal":"🇰🇲","name":"the comoros","shortname":":flag_km:","category":"flags","emoji_order":"2311","aliases":[":km:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_kn":{"unicode":"1f1f0-1f1f3","unicode_alt":"","code_decimal":"🇰🇳","name":"saint kitts and nevis","shortname":":flag_kn:","category":"flags","emoji_order":"2312","aliases":[":kn:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_kp":{"unicode":"1f1f0-1f1f5","unicode_alt":"","code_decimal":"🇰🇵","name":"north korea","shortname":":flag_kp:","category":"flags","emoji_order":"2313","aliases":[":kp:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_kr":{"unicode":"1f1f0-1f1f7","unicode_alt":"","code_decimal":"🇰🇷","name":"korea","shortname":":flag_kr:","category":"flags","emoji_order":"2314","aliases":[":kr:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_kw":{"unicode":"1f1f0-1f1fc","unicode_alt":"","code_decimal":"🇰🇼","name":"kuwait","shortname":":flag_kw:","category":"flags","emoji_order":"2315","aliases":[":kw:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ky":{"unicode":"1f1f0-1f1fe","unicode_alt":"","code_decimal":"🇰🇾","name":"cayman islands","shortname":":flag_ky:","category":"flags","emoji_order":"2316","aliases":[":ky:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_kz":{"unicode":"1f1f0-1f1ff","unicode_alt":"","code_decimal":"🇰🇿","name":"kazakhstan","shortname":":flag_kz:","category":"flags","emoji_order":"2317","aliases":[":kz:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_la":{"unicode":"1f1f1-1f1e6","unicode_alt":"","code_decimal":"🇱🇦","name":"laos","shortname":":flag_la:","category":"flags","emoji_order":"2318","aliases":[":la:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_lb":{"unicode":"1f1f1-1f1e7","unicode_alt":"","code_decimal":"🇱🇧","name":"lebanon","shortname":":flag_lb:","category":"flags","emoji_order":"2319","aliases":[":lb:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_lc":{"unicode":"1f1f1-1f1e8","unicode_alt":"","code_decimal":"🇱🇨","name":"saint lucia","shortname":":flag_lc:","category":"flags","emoji_order":"2320","aliases":[":lc:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_li":{"unicode":"1f1f1-1f1ee","unicode_alt":"","code_decimal":"🇱🇮","name":"liechtenstein","shortname":":flag_li:","category":"flags","emoji_order":"2321","aliases":[":li:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_lk":{"unicode":"1f1f1-1f1f0","unicode_alt":"","code_decimal":"🇱🇰","name":"sri lanka","shortname":":flag_lk:","category":"flags","emoji_order":"2322","aliases":[":lk:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_lr":{"unicode":"1f1f1-1f1f7","unicode_alt":"","code_decimal":"🇱🇷","name":"liberia","shortname":":flag_lr:","category":"flags","emoji_order":"2323","aliases":[":lr:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ls":{"unicode":"1f1f1-1f1f8","unicode_alt":"","code_decimal":"🇱🇸","name":"lesotho","shortname":":flag_ls:","category":"flags","emoji_order":"2324","aliases":[":ls:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_lt":{"unicode":"1f1f1-1f1f9","unicode_alt":"","code_decimal":"🇱🇹","name":"lithuania","shortname":":flag_lt:","category":"flags","emoji_order":"2325","aliases":[":lt:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_lu":{"unicode":"1f1f1-1f1fa","unicode_alt":"","code_decimal":"🇱🇺","name":"luxembourg","shortname":":flag_lu:","category":"flags","emoji_order":"2326","aliases":[":lu:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_lv":{"unicode":"1f1f1-1f1fb","unicode_alt":"","code_decimal":"🇱🇻","name":"latvia","shortname":":flag_lv:","category":"flags","emoji_order":"2327","aliases":[":lv:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ly":{"unicode":"1f1f1-1f1fe","unicode_alt":"","code_decimal":"🇱🇾","name":"libya","shortname":":flag_ly:","category":"flags","emoji_order":"2328","aliases":[":ly:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ma":{"unicode":"1f1f2-1f1e6","unicode_alt":"","code_decimal":"🇲🇦","name":"morocco","shortname":":flag_ma:","category":"flags","emoji_order":"2329","aliases":[":ma:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mc":{"unicode":"1f1f2-1f1e8","unicode_alt":"","code_decimal":"🇲🇨","name":"monaco","shortname":":flag_mc:","category":"flags","emoji_order":"2330","aliases":[":mc:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_md":{"unicode":"1f1f2-1f1e9","unicode_alt":"","code_decimal":"🇲🇩","name":"moldova","shortname":":flag_md:","category":"flags","emoji_order":"2331","aliases":[":md:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_me":{"unicode":"1f1f2-1f1ea","unicode_alt":"","code_decimal":"🇲🇪","name":"montenegro","shortname":":flag_me:","category":"flags","emoji_order":"2332","aliases":[":me:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mf":{"unicode":"1f1f2-1f1eb","unicode_alt":"","code_decimal":"🇲🇫","name":"saint martin","shortname":":flag_mf:","category":"flags","emoji_order":"2333","aliases":[":mf:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mg":{"unicode":"1f1f2-1f1ec","unicode_alt":"","code_decimal":"🇲🇬","name":"madagascar","shortname":":flag_mg:","category":"flags","emoji_order":"2334","aliases":[":mg:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mh":{"unicode":"1f1f2-1f1ed","unicode_alt":"","code_decimal":"🇲🇭","name":"the marshall islands","shortname":":flag_mh:","category":"flags","emoji_order":"2335","aliases":[":mh:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mk":{"unicode":"1f1f2-1f1f0","unicode_alt":"","code_decimal":"🇲🇰","name":"macedonia","shortname":":flag_mk:","category":"flags","emoji_order":"2336","aliases":[":mk:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ml":{"unicode":"1f1f2-1f1f1","unicode_alt":"","code_decimal":"🇲🇱","name":"mali","shortname":":flag_ml:","category":"flags","emoji_order":"2337","aliases":[":ml:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mm":{"unicode":"1f1f2-1f1f2","unicode_alt":"","code_decimal":"🇲🇲","name":"myanmar","shortname":":flag_mm:","category":"flags","emoji_order":"2338","aliases":[":mm:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mn":{"unicode":"1f1f2-1f1f3","unicode_alt":"","code_decimal":"🇲🇳","name":"mongolia","shortname":":flag_mn:","category":"flags","emoji_order":"2339","aliases":[":mn:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mo":{"unicode":"1f1f2-1f1f4","unicode_alt":"","code_decimal":"🇲🇴","name":"macau","shortname":":flag_mo:","category":"flags","emoji_order":"2340","aliases":[":mo:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mp":{"unicode":"1f1f2-1f1f5","unicode_alt":"","code_decimal":"🇲🇵","name":"northern mariana islands","shortname":":flag_mp:","category":"flags","emoji_order":"2341","aliases":[":mp:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mq":{"unicode":"1f1f2-1f1f6","unicode_alt":"","code_decimal":"🇲🇶","name":"martinique","shortname":":flag_mq:","category":"flags","emoji_order":"2342","aliases":[":mq:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mr":{"unicode":"1f1f2-1f1f7","unicode_alt":"","code_decimal":"🇲🇷","name":"mauritania","shortname":":flag_mr:","category":"flags","emoji_order":"2343","aliases":[":mr:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ms":{"unicode":"1f1f2-1f1f8","unicode_alt":"","code_decimal":"🇲🇸","name":"montserrat","shortname":":flag_ms:","category":"flags","emoji_order":"2344","aliases":[":ms:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mt":{"unicode":"1f1f2-1f1f9","unicode_alt":"","code_decimal":"🇲🇹","name":"malta","shortname":":flag_mt:","category":"flags","emoji_order":"2345","aliases":[":mt:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mu":{"unicode":"1f1f2-1f1fa","unicode_alt":"","code_decimal":"🇲🇺","name":"mauritius","shortname":":flag_mu:","category":"flags","emoji_order":"2346","aliases":[":mu:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mv":{"unicode":"1f1f2-1f1fb","unicode_alt":"","code_decimal":"🇲🇻","name":"maldives","shortname":":flag_mv:","category":"flags","emoji_order":"2347","aliases":[":mv:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mw":{"unicode":"1f1f2-1f1fc","unicode_alt":"","code_decimal":"🇲🇼","name":"malawi","shortname":":flag_mw:","category":"flags","emoji_order":"2348","aliases":[":mw:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mx":{"unicode":"1f1f2-1f1fd","unicode_alt":"","code_decimal":"🇲🇽","name":"mexico","shortname":":flag_mx:","category":"flags","emoji_order":"2349","aliases":[":mx:"],"aliases_ascii":[],"keywords":["country","mexican","flag"]},"flag_my":{"unicode":"1f1f2-1f1fe","unicode_alt":"","code_decimal":"🇲🇾","name":"malaysia","shortname":":flag_my:","category":"flags","emoji_order":"2350","aliases":[":my:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_mz":{"unicode":"1f1f2-1f1ff","unicode_alt":"","code_decimal":"🇲🇿","name":"mozambique","shortname":":flag_mz:","category":"flags","emoji_order":"2351","aliases":[":mz:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_na":{"unicode":"1f1f3-1f1e6","unicode_alt":"","code_decimal":"🇳🇦","name":"namibia","shortname":":flag_na:","category":"flags","emoji_order":"2352","aliases":[":na:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_nc":{"unicode":"1f1f3-1f1e8","unicode_alt":"","code_decimal":"🇳🇨","name":"new caledonia","shortname":":flag_nc:","category":"flags","emoji_order":"2353","aliases":[":nc:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ne":{"unicode":"1f1f3-1f1ea","unicode_alt":"","code_decimal":"🇳🇪","name":"niger","shortname":":flag_ne:","category":"flags","emoji_order":"2354","aliases":[":ne:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_nf":{"unicode":"1f1f3-1f1eb","unicode_alt":"","code_decimal":"🇳🇫","name":"norfolk island","shortname":":flag_nf:","category":"flags","emoji_order":"2355","aliases":[":nf:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ng":{"unicode":"1f1f3-1f1ec","unicode_alt":"","code_decimal":"🇳🇬","name":"nigeria","shortname":":flag_ng:","category":"flags","emoji_order":"2356","aliases":[":nigeria:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ni":{"unicode":"1f1f3-1f1ee","unicode_alt":"","code_decimal":"🇳🇮","name":"nicaragua","shortname":":flag_ni:","category":"flags","emoji_order":"2357","aliases":[":ni:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_nl":{"unicode":"1f1f3-1f1f1","unicode_alt":"","code_decimal":"🇳🇱","name":"the netherlands","shortname":":flag_nl:","category":"flags","emoji_order":"2358","aliases":[":nl:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_no":{"unicode":"1f1f3-1f1f4","unicode_alt":"","code_decimal":"🇳🇴","name":"norway","shortname":":flag_no:","category":"flags","emoji_order":"2359","aliases":[":no:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_np":{"unicode":"1f1f3-1f1f5","unicode_alt":"","code_decimal":"🇳🇵","name":"nepal","shortname":":flag_np:","category":"flags","emoji_order":"2360","aliases":[":np:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_nr":{"unicode":"1f1f3-1f1f7","unicode_alt":"","code_decimal":"🇳🇷","name":"nauru","shortname":":flag_nr:","category":"flags","emoji_order":"2361","aliases":[":nr:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_nu":{"unicode":"1f1f3-1f1fa","unicode_alt":"","code_decimal":"🇳🇺","name":"niue","shortname":":flag_nu:","category":"flags","emoji_order":"2362","aliases":[":nu:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_nz":{"unicode":"1f1f3-1f1ff","unicode_alt":"","code_decimal":"🇳🇿","name":"new zealand","shortname":":flag_nz:","category":"flags","emoji_order":"2363","aliases":[":nz:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_om":{"unicode":"1f1f4-1f1f2","unicode_alt":"","code_decimal":"🇴🇲","name":"oman","shortname":":flag_om:","category":"flags","emoji_order":"2364","aliases":[":om:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_pa":{"unicode":"1f1f5-1f1e6","unicode_alt":"","code_decimal":"🇵🇦","name":"panama","shortname":":flag_pa:","category":"flags","emoji_order":"2365","aliases":[":pa:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_pe":{"unicode":"1f1f5-1f1ea","unicode_alt":"","code_decimal":"🇵🇪","name":"peru","shortname":":flag_pe:","category":"flags","emoji_order":"2366","aliases":[":pe:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_pf":{"unicode":"1f1f5-1f1eb","unicode_alt":"","code_decimal":"🇵🇫","name":"french polynesia","shortname":":flag_pf:","category":"flags","emoji_order":"2367","aliases":[":pf:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_pg":{"unicode":"1f1f5-1f1ec","unicode_alt":"","code_decimal":"🇵🇬","name":"papua new guinea","shortname":":flag_pg:","category":"flags","emoji_order":"2368","aliases":[":pg:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ph":{"unicode":"1f1f5-1f1ed","unicode_alt":"","code_decimal":"🇵🇭","name":"the philippines","shortname":":flag_ph:","category":"flags","emoji_order":"2369","aliases":[":ph:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_pk":{"unicode":"1f1f5-1f1f0","unicode_alt":"","code_decimal":"🇵🇰","name":"pakistan","shortname":":flag_pk:","category":"flags","emoji_order":"2370","aliases":[":pk:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_pl":{"unicode":"1f1f5-1f1f1","unicode_alt":"","code_decimal":"🇵🇱","name":"poland","shortname":":flag_pl:","category":"flags","emoji_order":"2371","aliases":[":pl:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_pm":{"unicode":"1f1f5-1f1f2","unicode_alt":"","code_decimal":"🇵🇲","name":"saint pierre and miquelon","shortname":":flag_pm:","category":"flags","emoji_order":"2372","aliases":[":pm:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_pn":{"unicode":"1f1f5-1f1f3","unicode_alt":"","code_decimal":"🇵🇳","name":"pitcairn","shortname":":flag_pn:","category":"flags","emoji_order":"2373","aliases":[":pn:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_pr":{"unicode":"1f1f5-1f1f7","unicode_alt":"","code_decimal":"🇵🇷","name":"puerto rico","shortname":":flag_pr:","category":"flags","emoji_order":"2374","aliases":[":pr:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ps":{"unicode":"1f1f5-1f1f8","unicode_alt":"","code_decimal":"🇵🇸","name":"palestinian authority","shortname":":flag_ps:","category":"flags","emoji_order":"2375","aliases":[":ps:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_pt":{"unicode":"1f1f5-1f1f9","unicode_alt":"","code_decimal":"🇵🇹","name":"portugal","shortname":":flag_pt:","category":"flags","emoji_order":"2376","aliases":[":pt:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_pw":{"unicode":"1f1f5-1f1fc","unicode_alt":"","code_decimal":"🇵🇼","name":"palau","shortname":":flag_pw:","category":"flags","emoji_order":"2377","aliases":[":pw:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_py":{"unicode":"1f1f5-1f1fe","unicode_alt":"","code_decimal":"🇵🇾","name":"paraguay","shortname":":flag_py:","category":"flags","emoji_order":"2378","aliases":[":py:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_qa":{"unicode":"1f1f6-1f1e6","unicode_alt":"","code_decimal":"🇶🇦","name":"qatar","shortname":":flag_qa:","category":"flags","emoji_order":"2379","aliases":[":qa:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_re":{"unicode":"1f1f7-1f1ea","unicode_alt":"","code_decimal":"🇷🇪","name":"r\u00e9union","shortname":":flag_re:","category":"flags","emoji_order":"2380","aliases":[":re:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ro":{"unicode":"1f1f7-1f1f4","unicode_alt":"","code_decimal":"🇷🇴","name":"romania","shortname":":flag_ro:","category":"flags","emoji_order":"2381","aliases":[":ro:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_rs":{"unicode":"1f1f7-1f1f8","unicode_alt":"","code_decimal":"🇷🇸","name":"serbia","shortname":":flag_rs:","category":"flags","emoji_order":"2382","aliases":[":rs:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ru":{"unicode":"1f1f7-1f1fa","unicode_alt":"","code_decimal":"🇷🇺","name":"russia","shortname":":flag_ru:","category":"flags","emoji_order":"2383","aliases":[":ru:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_rw":{"unicode":"1f1f7-1f1fc","unicode_alt":"","code_decimal":"🇷🇼","name":"rwanda","shortname":":flag_rw:","category":"flags","emoji_order":"2384","aliases":[":rw:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sa":{"unicode":"1f1f8-1f1e6","unicode_alt":"","code_decimal":"🇸🇦","name":"saudi arabia","shortname":":flag_sa:","category":"flags","emoji_order":"2385","aliases":[":saudiarabia:",":saudi:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sb":{"unicode":"1f1f8-1f1e7","unicode_alt":"","code_decimal":"🇸🇧","name":"the solomon islands","shortname":":flag_sb:","category":"flags","emoji_order":"2386","aliases":[":sb:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sc":{"unicode":"1f1f8-1f1e8","unicode_alt":"","code_decimal":"🇸🇨","name":"the seychelles","shortname":":flag_sc:","category":"flags","emoji_order":"2387","aliases":[":sc:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sd":{"unicode":"1f1f8-1f1e9","unicode_alt":"","code_decimal":"🇸🇩","name":"sudan","shortname":":flag_sd:","category":"flags","emoji_order":"2388","aliases":[":sd:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_se":{"unicode":"1f1f8-1f1ea","unicode_alt":"","code_decimal":"🇸🇪","name":"sweden","shortname":":flag_se:","category":"flags","emoji_order":"2389","aliases":[":se:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sg":{"unicode":"1f1f8-1f1ec","unicode_alt":"","code_decimal":"🇸🇬","name":"singapore","shortname":":flag_sg:","category":"flags","emoji_order":"2390","aliases":[":sg:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sh":{"unicode":"1f1f8-1f1ed","unicode_alt":"","code_decimal":"🇸🇭","name":"saint helena","shortname":":flag_sh:","category":"flags","emoji_order":"2391","aliases":[":sh:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_si":{"unicode":"1f1f8-1f1ee","unicode_alt":"","code_decimal":"🇸🇮","name":"slovenia","shortname":":flag_si:","category":"flags","emoji_order":"2392","aliases":[":si:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sj":{"unicode":"1f1f8-1f1ef","unicode_alt":"","code_decimal":"🇸🇯","name":"svalbard and jan mayen","shortname":":flag_sj:","category":"flags","emoji_order":"2393","aliases":[":sj:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sk":{"unicode":"1f1f8-1f1f0","unicode_alt":"","code_decimal":"🇸🇰","name":"slovakia","shortname":":flag_sk:","category":"flags","emoji_order":"2394","aliases":[":sk:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sl":{"unicode":"1f1f8-1f1f1","unicode_alt":"","code_decimal":"🇸🇱","name":"sierra leone","shortname":":flag_sl:","category":"flags","emoji_order":"2395","aliases":[":sl:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sm":{"unicode":"1f1f8-1f1f2","unicode_alt":"","code_decimal":"🇸🇲","name":"san marino","shortname":":flag_sm:","category":"flags","emoji_order":"2396","aliases":[":sm:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sn":{"unicode":"1f1f8-1f1f3","unicode_alt":"","code_decimal":"🇸🇳","name":"senegal","shortname":":flag_sn:","category":"flags","emoji_order":"2397","aliases":[":sn:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_so":{"unicode":"1f1f8-1f1f4","unicode_alt":"","code_decimal":"🇸🇴","name":"somalia","shortname":":flag_so:","category":"flags","emoji_order":"2398","aliases":[":so:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sr":{"unicode":"1f1f8-1f1f7","unicode_alt":"","code_decimal":"🇸🇷","name":"suriname","shortname":":flag_sr:","category":"flags","emoji_order":"2399","aliases":[":sr:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ss":{"unicode":"1f1f8-1f1f8","unicode_alt":"","code_decimal":"🇸🇸","name":"south sudan","shortname":":flag_ss:","category":"flags","emoji_order":"2400","aliases":[":ss:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_st":{"unicode":"1f1f8-1f1f9","unicode_alt":"","code_decimal":"🇸🇹","name":"s\u00e3o tom\u00e9 and pr\u00edncipe","shortname":":flag_st:","category":"flags","emoji_order":"2401","aliases":[":st:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sv":{"unicode":"1f1f8-1f1fb","unicode_alt":"","code_decimal":"🇸🇻","name":"el salvador","shortname":":flag_sv:","category":"flags","emoji_order":"2402","aliases":[":sv:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sx":{"unicode":"1f1f8-1f1fd","unicode_alt":"","code_decimal":"🇸🇽","name":"sint maarten","shortname":":flag_sx:","category":"flags","emoji_order":"2403","aliases":[":sx:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sy":{"unicode":"1f1f8-1f1fe","unicode_alt":"","code_decimal":"🇸🇾","name":"syria","shortname":":flag_sy:","category":"flags","emoji_order":"2404","aliases":[":sy:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_sz":{"unicode":"1f1f8-1f1ff","unicode_alt":"","code_decimal":"🇸🇿","name":"swaziland","shortname":":flag_sz:","category":"flags","emoji_order":"2405","aliases":[":sz:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ta":{"unicode":"1f1f9-1f1e6","unicode_alt":"","code_decimal":"🇹🇦","name":"tristan da cunha","shortname":":flag_ta:","category":"flags","emoji_order":"2406","aliases":[":ta:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_tc":{"unicode":"1f1f9-1f1e8","unicode_alt":"","code_decimal":"🇹🇨","name":"turks and caicos islands","shortname":":flag_tc:","category":"flags","emoji_order":"2407","aliases":[":tc:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_td":{"unicode":"1f1f9-1f1e9","unicode_alt":"","code_decimal":"🇹🇩","name":"chad","shortname":":flag_td:","category":"flags","emoji_order":"2408","aliases":[":td:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_tf":{"unicode":"1f1f9-1f1eb","unicode_alt":"","code_decimal":"🇹🇫","name":"french southern territories","shortname":":flag_tf:","category":"flags","emoji_order":"2409","aliases":[":tf:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_tg":{"unicode":"1f1f9-1f1ec","unicode_alt":"","code_decimal":"🇹🇬","name":"togo","shortname":":flag_tg:","category":"flags","emoji_order":"2410","aliases":[":tg:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_th":{"unicode":"1f1f9-1f1ed","unicode_alt":"","code_decimal":"🇹🇭","name":"thailand","shortname":":flag_th:","category":"flags","emoji_order":"2411","aliases":[":th:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_tj":{"unicode":"1f1f9-1f1ef","unicode_alt":"","code_decimal":"🇹🇯","name":"tajikistan","shortname":":flag_tj:","category":"flags","emoji_order":"2412","aliases":[":tj:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_tk":{"unicode":"1f1f9-1f1f0","unicode_alt":"","code_decimal":"🇹🇰","name":"tokelau","shortname":":flag_tk:","category":"flags","emoji_order":"2413","aliases":[":tk:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_tl":{"unicode":"1f1f9-1f1f1","unicode_alt":"","code_decimal":"🇹🇱","name":"timor-leste","shortname":":flag_tl:","category":"flags","emoji_order":"2414","aliases":[":tl:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_tm":{"unicode":"1f1f9-1f1f2","unicode_alt":"","code_decimal":"🇹🇲","name":"turkmenistan","shortname":":flag_tm:","category":"flags","emoji_order":"2415","aliases":[":turkmenistan:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_tn":{"unicode":"1f1f9-1f1f3","unicode_alt":"","code_decimal":"🇹🇳","name":"tunisia","shortname":":flag_tn:","category":"flags","emoji_order":"2416","aliases":[":tn:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_to":{"unicode":"1f1f9-1f1f4","unicode_alt":"","code_decimal":"🇹🇴","name":"tonga","shortname":":flag_to:","category":"flags","emoji_order":"2417","aliases":[":to:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_tr":{"unicode":"1f1f9-1f1f7","unicode_alt":"","code_decimal":"🇹🇷","name":"turkey","shortname":":flag_tr:","category":"flags","emoji_order":"2418","aliases":[":tr:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_tt":{"unicode":"1f1f9-1f1f9","unicode_alt":"","code_decimal":"🇹🇹","name":"trinidad and tobago","shortname":":flag_tt:","category":"flags","emoji_order":"2419","aliases":[":tt:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_tv":{"unicode":"1f1f9-1f1fb","unicode_alt":"","code_decimal":"🇹🇻","name":"tuvalu","shortname":":flag_tv:","category":"flags","emoji_order":"2420","aliases":[":tuvalu:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_tw":{"unicode":"1f1f9-1f1fc","unicode_alt":"","code_decimal":"🇹🇼","name":"the republic of china","shortname":":flag_tw:","category":"flags","emoji_order":"2421","aliases":[":tw:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_tz":{"unicode":"1f1f9-1f1ff","unicode_alt":"","code_decimal":"🇹🇿","name":"tanzania","shortname":":flag_tz:","category":"flags","emoji_order":"2422","aliases":[":tz:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ua":{"unicode":"1f1fa-1f1e6","unicode_alt":"","code_decimal":"🇺🇦","name":"ukraine","shortname":":flag_ua:","category":"flags","emoji_order":"2423","aliases":[":ua:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ug":{"unicode":"1f1fa-1f1ec","unicode_alt":"","code_decimal":"🇺🇬","name":"uganda","shortname":":flag_ug:","category":"flags","emoji_order":"2424","aliases":[":ug:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_um":{"unicode":"1f1fa-1f1f2","unicode_alt":"","code_decimal":"🇺🇲","name":"united states minor outlying islands","shortname":":flag_um:","category":"flags","emoji_order":"2425","aliases":[":um:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_us":{"unicode":"1f1fa-1f1f8","unicode_alt":"","code_decimal":"🇺🇸","name":"united states","shortname":":flag_us:","category":"flags","emoji_order":"2427","aliases":[":us:"],"aliases_ascii":[],"keywords":["america","country","flag"]},"flag_uy":{"unicode":"1f1fa-1f1fe","unicode_alt":"","code_decimal":"🇺🇾","name":"uruguay","shortname":":flag_uy:","category":"flags","emoji_order":"2428","aliases":[":uy:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_uz":{"unicode":"1f1fa-1f1ff","unicode_alt":"","code_decimal":"🇺🇿","name":"uzbekistan","shortname":":flag_uz:","category":"flags","emoji_order":"2429","aliases":[":uz:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_va":{"unicode":"1f1fb-1f1e6","unicode_alt":"","code_decimal":"🇻🇦","name":"the vatican city","shortname":":flag_va:","category":"flags","emoji_order":"2430","aliases":[":va:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_vc":{"unicode":"1f1fb-1f1e8","unicode_alt":"","code_decimal":"🇻🇨","name":"saint vincent and the grenadines","shortname":":flag_vc:","category":"flags","emoji_order":"2431","aliases":[":vc:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ve":{"unicode":"1f1fb-1f1ea","unicode_alt":"","code_decimal":"🇻🇪","name":"venezuela","shortname":":flag_ve:","category":"flags","emoji_order":"2432","aliases":[":ve:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_vg":{"unicode":"1f1fb-1f1ec","unicode_alt":"","code_decimal":"🇻🇬","name":"british virgin islands","shortname":":flag_vg:","category":"flags","emoji_order":"2433","aliases":[":vg:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_vi":{"unicode":"1f1fb-1f1ee","unicode_alt":"","code_decimal":"🇻🇮","name":"u.s. virgin islands","shortname":":flag_vi:","category":"flags","emoji_order":"2434","aliases":[":vi:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_vn":{"unicode":"1f1fb-1f1f3","unicode_alt":"","code_decimal":"🇻🇳","name":"vietnam","shortname":":flag_vn:","category":"flags","emoji_order":"2435","aliases":[":vn:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_vu":{"unicode":"1f1fb-1f1fa","unicode_alt":"","code_decimal":"🇻🇺","name":"vanuatu","shortname":":flag_vu:","category":"flags","emoji_order":"2436","aliases":[":vu:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_wf":{"unicode":"1f1fc-1f1eb","unicode_alt":"","code_decimal":"🇼🇫","name":"wallis and futuna","shortname":":flag_wf:","category":"flags","emoji_order":"2437","aliases":[":wf:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ws":{"unicode":"1f1fc-1f1f8","unicode_alt":"","code_decimal":"🇼🇸","name":"samoa","shortname":":flag_ws:","category":"flags","emoji_order":"2438","aliases":[":ws:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_xk":{"unicode":"1f1fd-1f1f0","unicode_alt":"","code_decimal":"🇽🇰","name":"kosovo","shortname":":flag_xk:","category":"flags","emoji_order":"2439","aliases":[":xk:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_ye":{"unicode":"1f1fe-1f1ea","unicode_alt":"","code_decimal":"🇾🇪","name":"yemen","shortname":":flag_ye:","category":"flags","emoji_order":"2440","aliases":[":ye:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_yt":{"unicode":"1f1fe-1f1f9","unicode_alt":"","code_decimal":"🇾🇹","name":"mayotte","shortname":":flag_yt:","category":"flags","emoji_order":"2441","aliases":[":yt:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_za":{"unicode":"1f1ff-1f1e6","unicode_alt":"","code_decimal":"🇿🇦","name":"south africa","shortname":":flag_za:","category":"flags","emoji_order":"2442","aliases":[":za:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_zm":{"unicode":"1f1ff-1f1f2","unicode_alt":"","code_decimal":"🇿🇲","name":"zambia","shortname":":flag_zm:","category":"flags","emoji_order":"2443","aliases":[":zm:"],"aliases_ascii":[],"keywords":["country","flag"]},"flag_zw":{"unicode":"1f1ff-1f1fc","unicode_alt":"","code_decimal":"🇿🇼","name":"zimbabwe","shortname":":flag_zw:","category":"flags","emoji_order":"2444","aliases":[":zw:"],"aliases_ascii":[],"keywords":["country","flag"]},"regional_indicator_z":{"unicode":"1f1ff","unicode_alt":"","code_decimal":"🇿","name":"regional indicator symbol letter z","shortname":":regional_indicator_z:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_y":{"unicode":"1f1fe","unicode_alt":"","code_decimal":"🇾","name":"regional indicator symbol letter y","shortname":":regional_indicator_y:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_x":{"unicode":"1f1fd","unicode_alt":"","code_decimal":"🇽","name":"regional indicator symbol letter x","shortname":":regional_indicator_x:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_w":{"unicode":"1f1fc","unicode_alt":"","code_decimal":"🇼","name":"regional indicator symbol letter w","shortname":":regional_indicator_w:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_v":{"unicode":"1f1fb","unicode_alt":"","code_decimal":"🇻","name":"regional indicator symbol letter v","shortname":":regional_indicator_v:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_u":{"unicode":"1f1fa","unicode_alt":"","code_decimal":"🇺","name":"regional indicator symbol letter u","shortname":":regional_indicator_u:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_t":{"unicode":"1f1f9","unicode_alt":"","code_decimal":"🇹","name":"regional indicator symbol letter t","shortname":":regional_indicator_t:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_s":{"unicode":"1f1f8","unicode_alt":"","code_decimal":"🇸","name":"regional indicator symbol letter s","shortname":":regional_indicator_s:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_r":{"unicode":"1f1f7","unicode_alt":"","code_decimal":"🇷","name":"regional indicator symbol letter r","shortname":":regional_indicator_r:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_q":{"unicode":"1f1f6","unicode_alt":"","code_decimal":"🇶","name":"regional indicator symbol letter q","shortname":":regional_indicator_q:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_p":{"unicode":"1f1f5","unicode_alt":"","code_decimal":"🇵","name":"regional indicator symbol letter p","shortname":":regional_indicator_p:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_o":{"unicode":"1f1f4","unicode_alt":"","code_decimal":"🇴","name":"regional indicator symbol letter o","shortname":":regional_indicator_o:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_n":{"unicode":"1f1f3","unicode_alt":"","code_decimal":"🇳","name":"regional indicator symbol letter n","shortname":":regional_indicator_n:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_m":{"unicode":"1f1f2","unicode_alt":"","code_decimal":"🇲","name":"regional indicator symbol letter m","shortname":":regional_indicator_m:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_l":{"unicode":"1f1f1","unicode_alt":"","code_decimal":"🇱","name":"regional indicator symbol letter l","shortname":":regional_indicator_l:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_k":{"unicode":"1f1f0","unicode_alt":"","code_decimal":"🇰","name":"regional indicator symbol letter k","shortname":":regional_indicator_k:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_j":{"unicode":"1f1ef","unicode_alt":"","code_decimal":"🇯","name":"regional indicator symbol letter j","shortname":":regional_indicator_j:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_i":{"unicode":"1f1ee","unicode_alt":"","code_decimal":"🇮","name":"regional indicator symbol letter i","shortname":":regional_indicator_i:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_h":{"unicode":"1f1ed","unicode_alt":"","code_decimal":"🇭","name":"regional indicator symbol letter h","shortname":":regional_indicator_h:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_g":{"unicode":"1f1ec","unicode_alt":"","code_decimal":"🇬","name":"regional indicator symbol letter g","shortname":":regional_indicator_g:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_f":{"unicode":"1f1eb","unicode_alt":"","code_decimal":"🇫","name":"regional indicator symbol letter f","shortname":":regional_indicator_f:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_e":{"unicode":"1f1ea","unicode_alt":"","code_decimal":"🇪","name":"regional indicator symbol letter e","shortname":":regional_indicator_e:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_d":{"unicode":"1f1e9","unicode_alt":"","code_decimal":"🇩","name":"regional indicator symbol letter d","shortname":":regional_indicator_d:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_c":{"unicode":"1f1e8","unicode_alt":"","code_decimal":"🇨","name":"regional indicator symbol letter c","shortname":":regional_indicator_c:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_b":{"unicode":"1f1e7","unicode_alt":"","code_decimal":"🇧","name":"regional indicator symbol letter b","shortname":":regional_indicator_b:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]},"regional_indicator_a":{"unicode":"1f1e6","unicode_alt":"","code_decimal":"🇦","name":"regional indicator symbol letter a","shortname":":regional_indicator_a:","category":"regional","emoji_order":"12345","aliases":[],"aliases_ascii":[],"keywords":[]}}
\ No newline at end of file
diff --git a/lib/tasks/assets.rake b/lib/tasks/assets.rake
new file mode 100644
index 0000000000000..44896afc7b6f9
--- /dev/null
+++ b/lib/tasks/assets.rake
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+def render_static_page(action, dest:, **opts)
+ I18n.with_locale(ENV['DEFAULT_LOCALE'] || I18n.default_locale) do
+ html = ApplicationController.render(action, opts)
+ File.write(dest, html)
+ end
+end
+
+namespace :assets do
+ desc 'Generate static pages'
+ task :generate_static_pages do
+ render_static_page 'errors/500', layout: 'error', dest: Rails.root.join('public', '500.html')
+ end
+end
+
+if Rake::Task.task_defined?('assets:precompile')
+ Rake::Task['assets:precompile'].enhance do
+ Webpacker.manifest.refresh
+ Rake::Task['assets:generate_static_pages'].invoke
+ end
+end
diff --git a/lib/tasks/emojis.rake b/lib/tasks/emojis.rake
new file mode 100644
index 0000000000000..cd5e30e968eb3
--- /dev/null
+++ b/lib/tasks/emojis.rake
@@ -0,0 +1,56 @@
+# frozen_string_literal: true
+
+def codepoints_to_filename(codepoints)
+ codepoints.downcase.gsub(/\A[0]+/, '').tr(' ', '-')
+end
+
+def codepoints_to_unicode(codepoints)
+ if codepoints.include?(' ')
+ codepoints.split(' ').map(&:hex).pack('U*')
+ else
+ [codepoints.hex].pack('U')
+ end
+end
+
+namespace :emojis do
+ desc 'Generate a unicode to filename mapping'
+ task :generate do
+ source = 'http://www.unicode.org/Public/emoji/5.0/emoji-test.txt'
+ codes = []
+ dest = Rails.root.join('app', 'javascript', 'mastodon', 'emoji_map.json')
+
+ puts "Downloading emojos from source... (#{source})"
+
+ HTTP.get(source).to_s.split("\n").each do |line|
+ next if line.start_with? '#'
+ parts = line.split(';').map(&:strip)
+ next if parts.size < 2
+ codes << [parts[0], parts[1].start_with?('fully-qualified')]
+ end
+
+ grouped_codes = codes.reduce([]) do |agg, current|
+ if current[1]
+ agg << [current[0]]
+ else
+ agg.last << current[0]
+ agg
+ end
+ end
+
+ existence_maps = grouped_codes.map { |c| c.map { |cc| [cc, File.exist?(Rails.root.join('public', 'emoji', codepoints_to_filename(cc) + '.svg'))] }.to_h }
+ map = {}
+
+ existence_maps.each do |group|
+ existing_one = group.key(true)
+
+ group.each_key do |key|
+ map[codepoints_to_unicode(key)] = codepoints_to_filename(existing_one)
+ end
+ end
+
+ map = map.sort { |a, b| a[0].size <=> b[0].size }.to_h
+
+ File.write(dest, Oj.dump(map))
+ puts "Wrote emojo to destination! (#{dest})"
+ end
+end
diff --git a/package.json b/package.json
index 228dd1f257079..7835a04408666 100644
--- a/package.json
+++ b/package.json
@@ -45,6 +45,7 @@
"css-loader": "^0.28.4",
"detect-passive-events": "^1.0.2",
"dotenv": "^4.0.0",
+ "emoji-mart": "^1.0.1",
"emojione": "^2.2.7",
"emojione-picker": "^2.2.1",
"es6-symbol": "^3.1.1",
@@ -88,11 +89,13 @@
"react-intl": "^2.4.0",
"react-motion": "^0.5.0",
"react-notification": "^6.7.1",
+ "react-overlays": "^0.8.1",
"react-redux": "^5.0.4",
"react-redux-loading-bar": "^2.9.2",
"react-router-dom": "^4.1.1",
"react-router-scroll": "ytase/react-router-scroll#build",
"react-simple-dropdown": "^3.0.0",
+ "react-sizeme": "^2.3.5",
"react-swipeable-views": "^0.12.3",
"react-textarea-autosize": "^5.0.7",
"react-toggle": "^4.0.1",
diff --git a/public/500.html b/public/500.html
index 5812bb476b618..e69de29bb2d1d 100644
--- a/public/500.html
+++ b/public/500.html
@@ -1,43 +0,0 @@
-
-
-
-
- We're sorry, but something went wrong
-
-
-
-
-
-
-
-
-
-
-
We're sorry, but something went wrong.
-
-
-
-
diff --git a/public/emoji/0023-20e3.png b/public/emoji/0023-20e3.png
deleted file mode 100644
index 6e26f0070b08c..0000000000000
Binary files a/public/emoji/0023-20e3.png and /dev/null differ
diff --git a/public/emoji/0023-20e3.svg b/public/emoji/0023-20e3.svg
deleted file mode 100644
index a29d90113c264..0000000000000
--- a/public/emoji/0023-20e3.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0023.png b/public/emoji/0023.png
deleted file mode 100644
index 811f22af838da..0000000000000
Binary files a/public/emoji/0023.png and /dev/null differ
diff --git a/public/emoji/0023.svg b/public/emoji/0023.svg
deleted file mode 100644
index 76c606dd03dee..0000000000000
--- a/public/emoji/0023.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/002a-20e3.png b/public/emoji/002a-20e3.png
deleted file mode 100644
index 2f8e5113803c0..0000000000000
Binary files a/public/emoji/002a-20e3.png and /dev/null differ
diff --git a/public/emoji/002a-20e3.svg b/public/emoji/002a-20e3.svg
deleted file mode 100644
index bc3b2e6eb9f8d..0000000000000
--- a/public/emoji/002a-20e3.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/002a.png b/public/emoji/002a.png
deleted file mode 100644
index c39443e24a763..0000000000000
Binary files a/public/emoji/002a.png and /dev/null differ
diff --git a/public/emoji/002a.svg b/public/emoji/002a.svg
deleted file mode 100644
index 25841490429bd..0000000000000
--- a/public/emoji/002a.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0030-20e3.png b/public/emoji/0030-20e3.png
deleted file mode 100644
index 13aca83e018e8..0000000000000
Binary files a/public/emoji/0030-20e3.png and /dev/null differ
diff --git a/public/emoji/0030-20e3.svg b/public/emoji/0030-20e3.svg
deleted file mode 100644
index 57dc889092338..0000000000000
--- a/public/emoji/0030-20e3.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0030.png b/public/emoji/0030.png
deleted file mode 100644
index e730b28dfee0a..0000000000000
Binary files a/public/emoji/0030.png and /dev/null differ
diff --git a/public/emoji/0030.svg b/public/emoji/0030.svg
deleted file mode 100644
index 8ea076ce9c1de..0000000000000
--- a/public/emoji/0030.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0031-20e3.png b/public/emoji/0031-20e3.png
deleted file mode 100644
index e6d84b80128c4..0000000000000
Binary files a/public/emoji/0031-20e3.png and /dev/null differ
diff --git a/public/emoji/0031-20e3.svg b/public/emoji/0031-20e3.svg
deleted file mode 100644
index e18178a177a10..0000000000000
--- a/public/emoji/0031-20e3.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0031.png b/public/emoji/0031.png
deleted file mode 100644
index 9c4cbd6f7f6f7..0000000000000
Binary files a/public/emoji/0031.png and /dev/null differ
diff --git a/public/emoji/0031.svg b/public/emoji/0031.svg
deleted file mode 100644
index c0ca63e68ddb3..0000000000000
--- a/public/emoji/0031.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0032-20e3.png b/public/emoji/0032-20e3.png
deleted file mode 100644
index 927339c9bffa4..0000000000000
Binary files a/public/emoji/0032-20e3.png and /dev/null differ
diff --git a/public/emoji/0032-20e3.svg b/public/emoji/0032-20e3.svg
deleted file mode 100644
index c2eb5bd504ef3..0000000000000
--- a/public/emoji/0032-20e3.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0032.png b/public/emoji/0032.png
deleted file mode 100644
index 9a0b49a0e0325..0000000000000
Binary files a/public/emoji/0032.png and /dev/null differ
diff --git a/public/emoji/0032.svg b/public/emoji/0032.svg
deleted file mode 100644
index abd01370aed1e..0000000000000
--- a/public/emoji/0032.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0033-20e3.png b/public/emoji/0033-20e3.png
deleted file mode 100644
index dbaa6183e7286..0000000000000
Binary files a/public/emoji/0033-20e3.png and /dev/null differ
diff --git a/public/emoji/0033-20e3.svg b/public/emoji/0033-20e3.svg
deleted file mode 100644
index 29527601379d2..0000000000000
--- a/public/emoji/0033-20e3.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0033.png b/public/emoji/0033.png
deleted file mode 100644
index bc898b986e83a..0000000000000
Binary files a/public/emoji/0033.png and /dev/null differ
diff --git a/public/emoji/0033.svg b/public/emoji/0033.svg
deleted file mode 100644
index 3136230ffdd8d..0000000000000
--- a/public/emoji/0033.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0034-20e3.png b/public/emoji/0034-20e3.png
deleted file mode 100644
index b0e914aac457d..0000000000000
Binary files a/public/emoji/0034-20e3.png and /dev/null differ
diff --git a/public/emoji/0034-20e3.svg b/public/emoji/0034-20e3.svg
deleted file mode 100644
index f530a75424def..0000000000000
--- a/public/emoji/0034-20e3.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0034.png b/public/emoji/0034.png
deleted file mode 100644
index 7216ee32bd080..0000000000000
Binary files a/public/emoji/0034.png and /dev/null differ
diff --git a/public/emoji/0034.svg b/public/emoji/0034.svg
deleted file mode 100644
index 1722ee95868c2..0000000000000
--- a/public/emoji/0034.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0035-20e3.png b/public/emoji/0035-20e3.png
deleted file mode 100644
index d14371f3f27f0..0000000000000
Binary files a/public/emoji/0035-20e3.png and /dev/null differ
diff --git a/public/emoji/0035-20e3.svg b/public/emoji/0035-20e3.svg
deleted file mode 100644
index dc4e1d81a5eb1..0000000000000
--- a/public/emoji/0035-20e3.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0035.png b/public/emoji/0035.png
deleted file mode 100644
index c64709a7e7a7c..0000000000000
Binary files a/public/emoji/0035.png and /dev/null differ
diff --git a/public/emoji/0035.svg b/public/emoji/0035.svg
deleted file mode 100644
index 3e7717f08bdb0..0000000000000
--- a/public/emoji/0035.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0036-20e3.png b/public/emoji/0036-20e3.png
deleted file mode 100644
index 371b3acef2cf7..0000000000000
Binary files a/public/emoji/0036-20e3.png and /dev/null differ
diff --git a/public/emoji/0036-20e3.svg b/public/emoji/0036-20e3.svg
deleted file mode 100644
index 9ce3a594fed24..0000000000000
--- a/public/emoji/0036-20e3.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0036.png b/public/emoji/0036.png
deleted file mode 100644
index 68e1e71e4b850..0000000000000
Binary files a/public/emoji/0036.png and /dev/null differ
diff --git a/public/emoji/0036.svg b/public/emoji/0036.svg
deleted file mode 100644
index 2ff6d93906bf2..0000000000000
--- a/public/emoji/0036.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0037-20e3.png b/public/emoji/0037-20e3.png
deleted file mode 100644
index 9b3476ae7c7b0..0000000000000
Binary files a/public/emoji/0037-20e3.png and /dev/null differ
diff --git a/public/emoji/0037-20e3.svg b/public/emoji/0037-20e3.svg
deleted file mode 100644
index 1f01b9db89aec..0000000000000
--- a/public/emoji/0037-20e3.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0037.png b/public/emoji/0037.png
deleted file mode 100644
index e4aa065c62f24..0000000000000
Binary files a/public/emoji/0037.png and /dev/null differ
diff --git a/public/emoji/0037.svg b/public/emoji/0037.svg
deleted file mode 100644
index 6079e493066fd..0000000000000
--- a/public/emoji/0037.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0038-20e3.png b/public/emoji/0038-20e3.png
deleted file mode 100644
index 8c95874d4c526..0000000000000
Binary files a/public/emoji/0038-20e3.png and /dev/null differ
diff --git a/public/emoji/0038-20e3.svg b/public/emoji/0038-20e3.svg
deleted file mode 100644
index b6ed90a32c198..0000000000000
--- a/public/emoji/0038-20e3.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0038.png b/public/emoji/0038.png
deleted file mode 100644
index 27eae28e69e88..0000000000000
Binary files a/public/emoji/0038.png and /dev/null differ
diff --git a/public/emoji/0038.svg b/public/emoji/0038.svg
deleted file mode 100644
index 014bf26318589..0000000000000
--- a/public/emoji/0038.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0039-20e3.png b/public/emoji/0039-20e3.png
deleted file mode 100644
index 9fce3d1eca97b..0000000000000
Binary files a/public/emoji/0039-20e3.png and /dev/null differ
diff --git a/public/emoji/0039-20e3.svg b/public/emoji/0039-20e3.svg
deleted file mode 100644
index c883419705a64..0000000000000
--- a/public/emoji/0039-20e3.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/0039.png b/public/emoji/0039.png
deleted file mode 100644
index fd9e980552607..0000000000000
Binary files a/public/emoji/0039.png and /dev/null differ
diff --git a/public/emoji/0039.svg b/public/emoji/0039.svg
deleted file mode 100644
index afda6d7b6d83f..0000000000000
--- a/public/emoji/0039.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/00a9.png b/public/emoji/00a9.png
deleted file mode 100644
index 6b9a6adbfd29d..0000000000000
Binary files a/public/emoji/00a9.png and /dev/null differ
diff --git a/public/emoji/00a9.svg b/public/emoji/00a9.svg
deleted file mode 100644
index 68a7702274faa..0000000000000
--- a/public/emoji/00a9.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/00ae.png b/public/emoji/00ae.png
deleted file mode 100644
index 53ef9f2d4e69d..0000000000000
Binary files a/public/emoji/00ae.png and /dev/null differ
diff --git a/public/emoji/00ae.svg b/public/emoji/00ae.svg
deleted file mode 100644
index 8b084f6bf6568..0000000000000
--- a/public/emoji/00ae.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f004.png b/public/emoji/1f004.png
deleted file mode 100644
index 66fd32025b22f..0000000000000
Binary files a/public/emoji/1f004.png and /dev/null differ
diff --git a/public/emoji/1f004.svg b/public/emoji/1f004.svg
index 45867fb5a2f63..f6f39e4338dca 100644
--- a/public/emoji/1f004.svg
+++ b/public/emoji/1f004.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f0cf.png b/public/emoji/1f0cf.png
deleted file mode 100644
index 3d0924b68aa32..0000000000000
Binary files a/public/emoji/1f0cf.png and /dev/null differ
diff --git a/public/emoji/1f0cf.svg b/public/emoji/1f0cf.svg
index 45ae8abccd76e..ae95b9954100c 100644
--- a/public/emoji/1f0cf.svg
+++ b/public/emoji/1f0cf.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f170.png b/public/emoji/1f170.png
deleted file mode 100644
index 8603ff05a1798..0000000000000
Binary files a/public/emoji/1f170.png and /dev/null differ
diff --git a/public/emoji/1f170.svg b/public/emoji/1f170.svg
index a2ed41f334be3..c9fc32b717b3c 100644
--- a/public/emoji/1f170.svg
+++ b/public/emoji/1f170.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f171.png b/public/emoji/1f171.png
deleted file mode 100644
index 25875bc6a14e3..0000000000000
Binary files a/public/emoji/1f171.png and /dev/null differ
diff --git a/public/emoji/1f171.svg b/public/emoji/1f171.svg
index d0f8e64940d32..f7251222d1194 100644
--- a/public/emoji/1f171.svg
+++ b/public/emoji/1f171.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f17e.png b/public/emoji/1f17e.png
deleted file mode 100644
index 73278ba194a65..0000000000000
Binary files a/public/emoji/1f17e.png and /dev/null differ
diff --git a/public/emoji/1f17e.svg b/public/emoji/1f17e.svg
index 8844efa531f04..96c14b4c39d83 100644
--- a/public/emoji/1f17e.svg
+++ b/public/emoji/1f17e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f17f.png b/public/emoji/1f17f.png
deleted file mode 100644
index 7be7dac27e89e..0000000000000
Binary files a/public/emoji/1f17f.png and /dev/null differ
diff --git a/public/emoji/1f17f.svg b/public/emoji/1f17f.svg
index 5d8564444831a..33db94984abbd 100644
--- a/public/emoji/1f17f.svg
+++ b/public/emoji/1f17f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f18e.png b/public/emoji/1f18e.png
deleted file mode 100644
index d9f2d17dea0b1..0000000000000
Binary files a/public/emoji/1f18e.png and /dev/null differ
diff --git a/public/emoji/1f18e.svg b/public/emoji/1f18e.svg
index 6c5e8866f9e29..207d4cf090496 100644
--- a/public/emoji/1f18e.svg
+++ b/public/emoji/1f18e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f191.png b/public/emoji/1f191.png
deleted file mode 100644
index 8b01b4343e243..0000000000000
Binary files a/public/emoji/1f191.png and /dev/null differ
diff --git a/public/emoji/1f191.svg b/public/emoji/1f191.svg
index ef2cbf8962e1a..7334171fdf0a1 100644
--- a/public/emoji/1f191.svg
+++ b/public/emoji/1f191.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f192.png b/public/emoji/1f192.png
deleted file mode 100644
index 74674978d007c..0000000000000
Binary files a/public/emoji/1f192.png and /dev/null differ
diff --git a/public/emoji/1f192.svg b/public/emoji/1f192.svg
index 4bcdb3b9141f8..86fd7df12b90c 100644
--- a/public/emoji/1f192.svg
+++ b/public/emoji/1f192.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f193.png b/public/emoji/1f193.png
deleted file mode 100644
index b71956eb48af0..0000000000000
Binary files a/public/emoji/1f193.png and /dev/null differ
diff --git a/public/emoji/1f193.svg b/public/emoji/1f193.svg
index d26b8c27c0670..72a80ae583dea 100644
--- a/public/emoji/1f193.svg
+++ b/public/emoji/1f193.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f194.png b/public/emoji/1f194.png
deleted file mode 100644
index 5bf69bf7ba8b6..0000000000000
Binary files a/public/emoji/1f194.png and /dev/null differ
diff --git a/public/emoji/1f194.svg b/public/emoji/1f194.svg
index 0c36d517b78bb..9d72b800c9dba 100644
--- a/public/emoji/1f194.svg
+++ b/public/emoji/1f194.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f195.png b/public/emoji/1f195.png
deleted file mode 100644
index b4f85488d1a87..0000000000000
Binary files a/public/emoji/1f195.png and /dev/null differ
diff --git a/public/emoji/1f195.svg b/public/emoji/1f195.svg
index ad6466f5e56df..22dad4cf847a5 100644
--- a/public/emoji/1f195.svg
+++ b/public/emoji/1f195.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f196.png b/public/emoji/1f196.png
deleted file mode 100644
index ee8d20f5ebc90..0000000000000
Binary files a/public/emoji/1f196.png and /dev/null differ
diff --git a/public/emoji/1f196.svg b/public/emoji/1f196.svg
index fe38c95a46001..50bf8003475f9 100644
--- a/public/emoji/1f196.svg
+++ b/public/emoji/1f196.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f197.png b/public/emoji/1f197.png
deleted file mode 100644
index d0d775532ff9b..0000000000000
Binary files a/public/emoji/1f197.png and /dev/null differ
diff --git a/public/emoji/1f197.svg b/public/emoji/1f197.svg
index c45e4e1c9b5e4..9f43d676fef73 100644
--- a/public/emoji/1f197.svg
+++ b/public/emoji/1f197.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f198.png b/public/emoji/1f198.png
deleted file mode 100644
index d7d8c9953e400..0000000000000
Binary files a/public/emoji/1f198.png and /dev/null differ
diff --git a/public/emoji/1f198.svg b/public/emoji/1f198.svg
index fef773a90c898..36cf60117085d 100644
--- a/public/emoji/1f198.svg
+++ b/public/emoji/1f198.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f199.png b/public/emoji/1f199.png
deleted file mode 100644
index 0d42142ba049a..0000000000000
Binary files a/public/emoji/1f199.png and /dev/null differ
diff --git a/public/emoji/1f199.svg b/public/emoji/1f199.svg
index f5bc638ac51f0..1f2d8e60afdfe 100644
--- a/public/emoji/1f199.svg
+++ b/public/emoji/1f199.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f19a.png b/public/emoji/1f19a.png
deleted file mode 100644
index e1180f4a46408..0000000000000
Binary files a/public/emoji/1f19a.png and /dev/null differ
diff --git a/public/emoji/1f19a.svg b/public/emoji/1f19a.svg
index 6d2545d60d106..af8f685dcc45b 100644
--- a/public/emoji/1f19a.svg
+++ b/public/emoji/1f19a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1e8.png b/public/emoji/1f1e6-1f1e8.png
deleted file mode 100644
index 286239920c772..0000000000000
Binary files a/public/emoji/1f1e6-1f1e8.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1e8.svg b/public/emoji/1f1e6-1f1e8.svg
index 23d7009995917..588d4e8bfd54c 100644
--- a/public/emoji/1f1e6-1f1e8.svg
+++ b/public/emoji/1f1e6-1f1e8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1e9.png b/public/emoji/1f1e6-1f1e9.png
deleted file mode 100644
index 20f4b14e8ad69..0000000000000
Binary files a/public/emoji/1f1e6-1f1e9.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1e9.svg b/public/emoji/1f1e6-1f1e9.svg
index 0340b9d6d0ba8..e0e8608b88d42 100644
--- a/public/emoji/1f1e6-1f1e9.svg
+++ b/public/emoji/1f1e6-1f1e9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1ea.png b/public/emoji/1f1e6-1f1ea.png
deleted file mode 100644
index d16ffe4b862fc..0000000000000
Binary files a/public/emoji/1f1e6-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1ea.svg b/public/emoji/1f1e6-1f1ea.svg
index 6610e894cd339..571251753c5f5 100644
--- a/public/emoji/1f1e6-1f1ea.svg
+++ b/public/emoji/1f1e6-1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1eb.png b/public/emoji/1f1e6-1f1eb.png
deleted file mode 100644
index a51533b554d4b..0000000000000
Binary files a/public/emoji/1f1e6-1f1eb.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1eb.svg b/public/emoji/1f1e6-1f1eb.svg
index e1998a6b2e7d3..9e880f92e3708 100644
--- a/public/emoji/1f1e6-1f1eb.svg
+++ b/public/emoji/1f1e6-1f1eb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1ec.png b/public/emoji/1f1e6-1f1ec.png
deleted file mode 100644
index 07f2ce397d094..0000000000000
Binary files a/public/emoji/1f1e6-1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1ec.svg b/public/emoji/1f1e6-1f1ec.svg
index 0bcf4ebdc0c52..10d53620ba8f3 100644
--- a/public/emoji/1f1e6-1f1ec.svg
+++ b/public/emoji/1f1e6-1f1ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1ee.png b/public/emoji/1f1e6-1f1ee.png
deleted file mode 100644
index 500b5ab09fbe0..0000000000000
Binary files a/public/emoji/1f1e6-1f1ee.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1ee.svg b/public/emoji/1f1e6-1f1ee.svg
index c117d60875c9f..cf17878e07c20 100644
--- a/public/emoji/1f1e6-1f1ee.svg
+++ b/public/emoji/1f1e6-1f1ee.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1f1.png b/public/emoji/1f1e6-1f1f1.png
deleted file mode 100644
index 03a20132cc6f0..0000000000000
Binary files a/public/emoji/1f1e6-1f1f1.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1f1.svg b/public/emoji/1f1e6-1f1f1.svg
index 62c373cb04c9c..5de35c369b7e1 100644
--- a/public/emoji/1f1e6-1f1f1.svg
+++ b/public/emoji/1f1e6-1f1f1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1f2.png b/public/emoji/1f1e6-1f1f2.png
deleted file mode 100644
index 2ad60a273eca5..0000000000000
Binary files a/public/emoji/1f1e6-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1f2.svg b/public/emoji/1f1e6-1f1f2.svg
index 619935b02a3bd..0b87990ccf1c8 100644
--- a/public/emoji/1f1e6-1f1f2.svg
+++ b/public/emoji/1f1e6-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1f4.png b/public/emoji/1f1e6-1f1f4.png
deleted file mode 100644
index cb46c31f86252..0000000000000
Binary files a/public/emoji/1f1e6-1f1f4.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1f4.svg b/public/emoji/1f1e6-1f1f4.svg
index 7440d2d238e21..32692e12dd291 100644
--- a/public/emoji/1f1e6-1f1f4.svg
+++ b/public/emoji/1f1e6-1f1f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1f6.png b/public/emoji/1f1e6-1f1f6.png
deleted file mode 100644
index b272021d37566..0000000000000
Binary files a/public/emoji/1f1e6-1f1f6.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1f6.svg b/public/emoji/1f1e6-1f1f6.svg
index 476eac8817051..8f825099019ac 100644
--- a/public/emoji/1f1e6-1f1f6.svg
+++ b/public/emoji/1f1e6-1f1f6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1f7.png b/public/emoji/1f1e6-1f1f7.png
deleted file mode 100644
index 73136caf3b7ef..0000000000000
Binary files a/public/emoji/1f1e6-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1f7.svg b/public/emoji/1f1e6-1f1f7.svg
index 040ef76bb430d..983c6df9dc3c2 100644
--- a/public/emoji/1f1e6-1f1f7.svg
+++ b/public/emoji/1f1e6-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1f8.png b/public/emoji/1f1e6-1f1f8.png
deleted file mode 100644
index 3db45a0d9f391..0000000000000
Binary files a/public/emoji/1f1e6-1f1f8.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1f8.svg b/public/emoji/1f1e6-1f1f8.svg
index 158d0c6f410f2..d4334d65cd15e 100644
--- a/public/emoji/1f1e6-1f1f8.svg
+++ b/public/emoji/1f1e6-1f1f8.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1f9.png b/public/emoji/1f1e6-1f1f9.png
deleted file mode 100644
index c43769dcb193f..0000000000000
Binary files a/public/emoji/1f1e6-1f1f9.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1f9.svg b/public/emoji/1f1e6-1f1f9.svg
index 407ac40351ca8..ea3c039e5fc10 100644
--- a/public/emoji/1f1e6-1f1f9.svg
+++ b/public/emoji/1f1e6-1f1f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1fa.png b/public/emoji/1f1e6-1f1fa.png
deleted file mode 100644
index 7794309c78c3d..0000000000000
Binary files a/public/emoji/1f1e6-1f1fa.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1fa.svg b/public/emoji/1f1e6-1f1fa.svg
index 48ab1dc09a7a2..986705ff93713 100644
--- a/public/emoji/1f1e6-1f1fa.svg
+++ b/public/emoji/1f1e6-1f1fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1fc.png b/public/emoji/1f1e6-1f1fc.png
deleted file mode 100644
index 02c840d12c90f..0000000000000
Binary files a/public/emoji/1f1e6-1f1fc.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1fc.svg b/public/emoji/1f1e6-1f1fc.svg
index ab3f2d0574dd9..3ec298915e7ae 100644
--- a/public/emoji/1f1e6-1f1fc.svg
+++ b/public/emoji/1f1e6-1f1fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1fd.png b/public/emoji/1f1e6-1f1fd.png
deleted file mode 100644
index fc5466174bb52..0000000000000
Binary files a/public/emoji/1f1e6-1f1fd.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1fd.svg b/public/emoji/1f1e6-1f1fd.svg
index 81ab225514a9e..939ea37c7e07d 100644
--- a/public/emoji/1f1e6-1f1fd.svg
+++ b/public/emoji/1f1e6-1f1fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6-1f1ff.png b/public/emoji/1f1e6-1f1ff.png
deleted file mode 100644
index 89d3d15fd9fba..0000000000000
Binary files a/public/emoji/1f1e6-1f1ff.png and /dev/null differ
diff --git a/public/emoji/1f1e6-1f1ff.svg b/public/emoji/1f1e6-1f1ff.svg
index 4ac419fbcfde7..d05dffbc2a3b1 100644
--- a/public/emoji/1f1e6-1f1ff.svg
+++ b/public/emoji/1f1e6-1f1ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e6.png b/public/emoji/1f1e6.png
deleted file mode 100644
index 2b6c439561505..0000000000000
Binary files a/public/emoji/1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1e6.svg b/public/emoji/1f1e6.svg
index 5670a81a097cc..845aea33b65ba 100644
--- a/public/emoji/1f1e6.svg
+++ b/public/emoji/1f1e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1e6.png b/public/emoji/1f1e7-1f1e6.png
deleted file mode 100644
index 25fe407e13c1f..0000000000000
Binary files a/public/emoji/1f1e7-1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1e6.svg b/public/emoji/1f1e7-1f1e6.svg
index 9c14bd4b672ad..e30dd2cb30a72 100644
--- a/public/emoji/1f1e7-1f1e6.svg
+++ b/public/emoji/1f1e7-1f1e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1e7.png b/public/emoji/1f1e7-1f1e7.png
deleted file mode 100644
index bccd8c5c9b07e..0000000000000
Binary files a/public/emoji/1f1e7-1f1e7.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1e7.svg b/public/emoji/1f1e7-1f1e7.svg
index 6bf8ae2cdd882..2eeb18255545c 100644
--- a/public/emoji/1f1e7-1f1e7.svg
+++ b/public/emoji/1f1e7-1f1e7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1e9.png b/public/emoji/1f1e7-1f1e9.png
deleted file mode 100644
index b0597a3149b03..0000000000000
Binary files a/public/emoji/1f1e7-1f1e9.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1e9.svg b/public/emoji/1f1e7-1f1e9.svg
index e2713372a67df..5d16a3f3a1ee8 100644
--- a/public/emoji/1f1e7-1f1e9.svg
+++ b/public/emoji/1f1e7-1f1e9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1ea.png b/public/emoji/1f1e7-1f1ea.png
deleted file mode 100644
index 551f086e3c4b4..0000000000000
Binary files a/public/emoji/1f1e7-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1ea.svg b/public/emoji/1f1e7-1f1ea.svg
index 085c2cdb6d3d3..18a9d1bb16706 100644
--- a/public/emoji/1f1e7-1f1ea.svg
+++ b/public/emoji/1f1e7-1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1eb.png b/public/emoji/1f1e7-1f1eb.png
deleted file mode 100644
index 444d4829f94eb..0000000000000
Binary files a/public/emoji/1f1e7-1f1eb.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1eb.svg b/public/emoji/1f1e7-1f1eb.svg
index eeb129a7713e0..769b898c90ab9 100644
--- a/public/emoji/1f1e7-1f1eb.svg
+++ b/public/emoji/1f1e7-1f1eb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1ec.png b/public/emoji/1f1e7-1f1ec.png
deleted file mode 100644
index 821eee5e170eb..0000000000000
Binary files a/public/emoji/1f1e7-1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1ec.svg b/public/emoji/1f1e7-1f1ec.svg
index f6a6723c04a14..4caa980b1bd9f 100644
--- a/public/emoji/1f1e7-1f1ec.svg
+++ b/public/emoji/1f1e7-1f1ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1ed.png b/public/emoji/1f1e7-1f1ed.png
deleted file mode 100644
index f33724249f086..0000000000000
Binary files a/public/emoji/1f1e7-1f1ed.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1ed.svg b/public/emoji/1f1e7-1f1ed.svg
index f708818b1f975..8ee8c0818bf7c 100644
--- a/public/emoji/1f1e7-1f1ed.svg
+++ b/public/emoji/1f1e7-1f1ed.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1ee.png b/public/emoji/1f1e7-1f1ee.png
deleted file mode 100644
index ea20ac93211f6..0000000000000
Binary files a/public/emoji/1f1e7-1f1ee.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1ee.svg b/public/emoji/1f1e7-1f1ee.svg
index 7ea0077c0d93a..4b0122f058fc7 100644
--- a/public/emoji/1f1e7-1f1ee.svg
+++ b/public/emoji/1f1e7-1f1ee.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1ef.png b/public/emoji/1f1e7-1f1ef.png
deleted file mode 100644
index 7cca4f8045798..0000000000000
Binary files a/public/emoji/1f1e7-1f1ef.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1ef.svg b/public/emoji/1f1e7-1f1ef.svg
index 0e99fb00dc9f4..d3d3435ffd18e 100644
--- a/public/emoji/1f1e7-1f1ef.svg
+++ b/public/emoji/1f1e7-1f1ef.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1f1.png b/public/emoji/1f1e7-1f1f1.png
deleted file mode 100644
index 1082e78999f52..0000000000000
Binary files a/public/emoji/1f1e7-1f1f1.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1f1.svg b/public/emoji/1f1e7-1f1f1.svg
index ad59884c60ed5..77b2b07bcb449 100644
--- a/public/emoji/1f1e7-1f1f1.svg
+++ b/public/emoji/1f1e7-1f1f1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1f2.png b/public/emoji/1f1e7-1f1f2.png
deleted file mode 100644
index ab8cafdac6321..0000000000000
Binary files a/public/emoji/1f1e7-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1f2.svg b/public/emoji/1f1e7-1f1f2.svg
index ba96edd0eb3a8..723f28577099b 100644
--- a/public/emoji/1f1e7-1f1f2.svg
+++ b/public/emoji/1f1e7-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1f3.png b/public/emoji/1f1e7-1f1f3.png
deleted file mode 100644
index caa9329a8962d..0000000000000
Binary files a/public/emoji/1f1e7-1f1f3.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1f3.svg b/public/emoji/1f1e7-1f1f3.svg
index 3271af93ccba2..669fd4045cb44 100644
--- a/public/emoji/1f1e7-1f1f3.svg
+++ b/public/emoji/1f1e7-1f1f3.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1f4.png b/public/emoji/1f1e7-1f1f4.png
deleted file mode 100644
index 98af62b3da7d1..0000000000000
Binary files a/public/emoji/1f1e7-1f1f4.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1f4.svg b/public/emoji/1f1e7-1f1f4.svg
index 49a94e9e919ea..f702e40b6d3d3 100644
--- a/public/emoji/1f1e7-1f1f4.svg
+++ b/public/emoji/1f1e7-1f1f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1f6.png b/public/emoji/1f1e7-1f1f6.png
deleted file mode 100644
index cb978ef9de917..0000000000000
Binary files a/public/emoji/1f1e7-1f1f6.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1f6.svg b/public/emoji/1f1e7-1f1f6.svg
index a835cb570cc9d..25fad13939cec 100644
--- a/public/emoji/1f1e7-1f1f6.svg
+++ b/public/emoji/1f1e7-1f1f6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1f7.png b/public/emoji/1f1e7-1f1f7.png
deleted file mode 100644
index b139366a42bc6..0000000000000
Binary files a/public/emoji/1f1e7-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1f7.svg b/public/emoji/1f1e7-1f1f7.svg
index 3191070a20867..f9b120d64fbb1 100644
--- a/public/emoji/1f1e7-1f1f7.svg
+++ b/public/emoji/1f1e7-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1f8.png b/public/emoji/1f1e7-1f1f8.png
deleted file mode 100644
index d36bcd2fb5280..0000000000000
Binary files a/public/emoji/1f1e7-1f1f8.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1f8.svg b/public/emoji/1f1e7-1f1f8.svg
index a353225a21720..48f72d7f8ca7f 100644
--- a/public/emoji/1f1e7-1f1f8.svg
+++ b/public/emoji/1f1e7-1f1f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1f9.png b/public/emoji/1f1e7-1f1f9.png
deleted file mode 100644
index ed57aa0360ea2..0000000000000
Binary files a/public/emoji/1f1e7-1f1f9.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1f9.svg b/public/emoji/1f1e7-1f1f9.svg
index fb5784cc72896..ac8ba9d373e32 100644
--- a/public/emoji/1f1e7-1f1f9.svg
+++ b/public/emoji/1f1e7-1f1f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1fb.png b/public/emoji/1f1e7-1f1fb.png
deleted file mode 100644
index 5884e648228c6..0000000000000
Binary files a/public/emoji/1f1e7-1f1fb.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1fb.svg b/public/emoji/1f1e7-1f1fb.svg
index e9f5672c6f8d3..75ed1e94a3856 100644
--- a/public/emoji/1f1e7-1f1fb.svg
+++ b/public/emoji/1f1e7-1f1fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1fc.png b/public/emoji/1f1e7-1f1fc.png
deleted file mode 100644
index cb12f34739daf..0000000000000
Binary files a/public/emoji/1f1e7-1f1fc.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1fc.svg b/public/emoji/1f1e7-1f1fc.svg
index 05f152a37776d..f29ad45ce9723 100644
--- a/public/emoji/1f1e7-1f1fc.svg
+++ b/public/emoji/1f1e7-1f1fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1fe.png b/public/emoji/1f1e7-1f1fe.png
deleted file mode 100644
index 859c05beb13b2..0000000000000
Binary files a/public/emoji/1f1e7-1f1fe.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1fe.svg b/public/emoji/1f1e7-1f1fe.svg
index f27068ab6a73a..b7ba015c3f890 100644
--- a/public/emoji/1f1e7-1f1fe.svg
+++ b/public/emoji/1f1e7-1f1fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7-1f1ff.png b/public/emoji/1f1e7-1f1ff.png
deleted file mode 100644
index 34761cd03d844..0000000000000
Binary files a/public/emoji/1f1e7-1f1ff.png and /dev/null differ
diff --git a/public/emoji/1f1e7-1f1ff.svg b/public/emoji/1f1e7-1f1ff.svg
index a2e5cffc0eda3..36f0d2e6c5145 100644
--- a/public/emoji/1f1e7-1f1ff.svg
+++ b/public/emoji/1f1e7-1f1ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e7.png b/public/emoji/1f1e7.png
deleted file mode 100644
index 8f69fa973ecfb..0000000000000
Binary files a/public/emoji/1f1e7.png and /dev/null differ
diff --git a/public/emoji/1f1e7.svg b/public/emoji/1f1e7.svg
index 7590fdd8ea25c..70bee81333db7 100644
--- a/public/emoji/1f1e7.svg
+++ b/public/emoji/1f1e7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1e6.png b/public/emoji/1f1e8-1f1e6.png
deleted file mode 100644
index 7c5b390e85b29..0000000000000
Binary files a/public/emoji/1f1e8-1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1e6.svg b/public/emoji/1f1e8-1f1e6.svg
index 886c66e27c142..555d21808b0c5 100644
--- a/public/emoji/1f1e8-1f1e6.svg
+++ b/public/emoji/1f1e8-1f1e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1e8.png b/public/emoji/1f1e8-1f1e8.png
deleted file mode 100644
index b6555a23d839d..0000000000000
Binary files a/public/emoji/1f1e8-1f1e8.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1e8.svg b/public/emoji/1f1e8-1f1e8.svg
index 8d002807baad0..a8d74a752d6fa 100644
--- a/public/emoji/1f1e8-1f1e8.svg
+++ b/public/emoji/1f1e8-1f1e8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1e9.png b/public/emoji/1f1e8-1f1e9.png
deleted file mode 100644
index fa92009771d64..0000000000000
Binary files a/public/emoji/1f1e8-1f1e9.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1e9.svg b/public/emoji/1f1e8-1f1e9.svg
index c635b47e7aaf4..1495355e4a5e8 100644
--- a/public/emoji/1f1e8-1f1e9.svg
+++ b/public/emoji/1f1e8-1f1e9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1eb.png b/public/emoji/1f1e8-1f1eb.png
deleted file mode 100644
index b969ae29ea9f1..0000000000000
Binary files a/public/emoji/1f1e8-1f1eb.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1eb.svg b/public/emoji/1f1e8-1f1eb.svg
index 919121cd3e6b1..d9fcde0a939ef 100644
--- a/public/emoji/1f1e8-1f1eb.svg
+++ b/public/emoji/1f1e8-1f1eb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1ec.png b/public/emoji/1f1e8-1f1ec.png
deleted file mode 100644
index 3a38a40a95e0a..0000000000000
Binary files a/public/emoji/1f1e8-1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1ec.svg b/public/emoji/1f1e8-1f1ec.svg
index d511520b95f12..c9496fe12ac8d 100644
--- a/public/emoji/1f1e8-1f1ec.svg
+++ b/public/emoji/1f1e8-1f1ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1ed.png b/public/emoji/1f1e8-1f1ed.png
deleted file mode 100644
index 5ff86b8a3b729..0000000000000
Binary files a/public/emoji/1f1e8-1f1ed.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1ed.svg b/public/emoji/1f1e8-1f1ed.svg
index 507afb37015d0..46e47864f028c 100644
--- a/public/emoji/1f1e8-1f1ed.svg
+++ b/public/emoji/1f1e8-1f1ed.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1ee.png b/public/emoji/1f1e8-1f1ee.png
deleted file mode 100644
index e3b4d15c7f177..0000000000000
Binary files a/public/emoji/1f1e8-1f1ee.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1ee.svg b/public/emoji/1f1e8-1f1ee.svg
index 4ae397b288472..47188a220bc8b 100644
--- a/public/emoji/1f1e8-1f1ee.svg
+++ b/public/emoji/1f1e8-1f1ee.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1f0.png b/public/emoji/1f1e8-1f1f0.png
deleted file mode 100644
index b6b53dbc1c4fe..0000000000000
Binary files a/public/emoji/1f1e8-1f1f0.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1f0.svg b/public/emoji/1f1e8-1f1f0.svg
index 683223e296bf7..bec3a0836911d 100644
--- a/public/emoji/1f1e8-1f1f0.svg
+++ b/public/emoji/1f1e8-1f1f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1f1.png b/public/emoji/1f1e8-1f1f1.png
deleted file mode 100644
index c9390da549940..0000000000000
Binary files a/public/emoji/1f1e8-1f1f1.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1f1.svg b/public/emoji/1f1e8-1f1f1.svg
index 51be06e6749d8..6ebd464530b1a 100644
--- a/public/emoji/1f1e8-1f1f1.svg
+++ b/public/emoji/1f1e8-1f1f1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1f2.png b/public/emoji/1f1e8-1f1f2.png
deleted file mode 100644
index 2d3f6ec45181d..0000000000000
Binary files a/public/emoji/1f1e8-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1f2.svg b/public/emoji/1f1e8-1f1f2.svg
index e86d029a4d0ce..e7651a513641e 100644
--- a/public/emoji/1f1e8-1f1f2.svg
+++ b/public/emoji/1f1e8-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1f3.png b/public/emoji/1f1e8-1f1f3.png
deleted file mode 100644
index 0a7f350a6d2dc..0000000000000
Binary files a/public/emoji/1f1e8-1f1f3.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1f3.svg b/public/emoji/1f1e8-1f1f3.svg
index 9e5bd6650f6dc..646cea9d959ab 100644
--- a/public/emoji/1f1e8-1f1f3.svg
+++ b/public/emoji/1f1e8-1f1f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1f4.png b/public/emoji/1f1e8-1f1f4.png
deleted file mode 100644
index 7e0f5e0dc3cb2..0000000000000
Binary files a/public/emoji/1f1e8-1f1f4.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1f4.svg b/public/emoji/1f1e8-1f1f4.svg
index 387be03c365ff..e9cb4f814ab90 100644
--- a/public/emoji/1f1e8-1f1f4.svg
+++ b/public/emoji/1f1e8-1f1f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1f5.png b/public/emoji/1f1e8-1f1f5.png
deleted file mode 100644
index 70c761036bd30..0000000000000
Binary files a/public/emoji/1f1e8-1f1f5.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1f5.svg b/public/emoji/1f1e8-1f1f5.svg
index 16bfba0cfefda..359779e7f0753 100644
--- a/public/emoji/1f1e8-1f1f5.svg
+++ b/public/emoji/1f1e8-1f1f5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1f7.png b/public/emoji/1f1e8-1f1f7.png
deleted file mode 100644
index a5fce1265150a..0000000000000
Binary files a/public/emoji/1f1e8-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1f7.svg b/public/emoji/1f1e8-1f1f7.svg
index e8510bc058b3f..18dabbc4e155b 100644
--- a/public/emoji/1f1e8-1f1f7.svg
+++ b/public/emoji/1f1e8-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1fa.png b/public/emoji/1f1e8-1f1fa.png
deleted file mode 100644
index 447328f7dfd7a..0000000000000
Binary files a/public/emoji/1f1e8-1f1fa.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1fa.svg b/public/emoji/1f1e8-1f1fa.svg
index ae73709b63d0f..d8c05766c9ff7 100644
--- a/public/emoji/1f1e8-1f1fa.svg
+++ b/public/emoji/1f1e8-1f1fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1fb.png b/public/emoji/1f1e8-1f1fb.png
deleted file mode 100644
index 43faf4d64d501..0000000000000
Binary files a/public/emoji/1f1e8-1f1fb.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1fb.svg b/public/emoji/1f1e8-1f1fb.svg
index c3c11d6218f07..d9055e7f3e4f2 100644
--- a/public/emoji/1f1e8-1f1fb.svg
+++ b/public/emoji/1f1e8-1f1fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1fc.png b/public/emoji/1f1e8-1f1fc.png
deleted file mode 100644
index eb39e8d0078c6..0000000000000
Binary files a/public/emoji/1f1e8-1f1fc.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1fc.svg b/public/emoji/1f1e8-1f1fc.svg
index cecfdbffd19c1..e05eae77f639b 100644
--- a/public/emoji/1f1e8-1f1fc.svg
+++ b/public/emoji/1f1e8-1f1fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1fd.png b/public/emoji/1f1e8-1f1fd.png
deleted file mode 100644
index 09d21359f3af7..0000000000000
Binary files a/public/emoji/1f1e8-1f1fd.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1fd.svg b/public/emoji/1f1e8-1f1fd.svg
index 281154200726f..30857e46b3681 100644
--- a/public/emoji/1f1e8-1f1fd.svg
+++ b/public/emoji/1f1e8-1f1fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1fe.png b/public/emoji/1f1e8-1f1fe.png
deleted file mode 100644
index 154a7aa317632..0000000000000
Binary files a/public/emoji/1f1e8-1f1fe.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1fe.svg b/public/emoji/1f1e8-1f1fe.svg
index 4529030d14d42..fe7b2b05f860c 100644
--- a/public/emoji/1f1e8-1f1fe.svg
+++ b/public/emoji/1f1e8-1f1fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8-1f1ff.png b/public/emoji/1f1e8-1f1ff.png
deleted file mode 100644
index 9737ca223c756..0000000000000
Binary files a/public/emoji/1f1e8-1f1ff.png and /dev/null differ
diff --git a/public/emoji/1f1e8-1f1ff.svg b/public/emoji/1f1e8-1f1ff.svg
index 3226720bec8cb..3dd8a789c957f 100644
--- a/public/emoji/1f1e8-1f1ff.svg
+++ b/public/emoji/1f1e8-1f1ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e8.png b/public/emoji/1f1e8.png
deleted file mode 100644
index f94e668a2c418..0000000000000
Binary files a/public/emoji/1f1e8.png and /dev/null differ
diff --git a/public/emoji/1f1e8.svg b/public/emoji/1f1e8.svg
index 1aa1eabd4d838..c2a6d71f10fb6 100644
--- a/public/emoji/1f1e8.svg
+++ b/public/emoji/1f1e8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e9-1f1ea.png b/public/emoji/1f1e9-1f1ea.png
deleted file mode 100644
index 98ed76b3bab72..0000000000000
Binary files a/public/emoji/1f1e9-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1e9-1f1ea.svg b/public/emoji/1f1e9-1f1ea.svg
index b2015a77aea5c..ef390466f7ccc 100644
--- a/public/emoji/1f1e9-1f1ea.svg
+++ b/public/emoji/1f1e9-1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e9-1f1ec.png b/public/emoji/1f1e9-1f1ec.png
deleted file mode 100644
index aae927d14b8bf..0000000000000
Binary files a/public/emoji/1f1e9-1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1e9-1f1ec.svg b/public/emoji/1f1e9-1f1ec.svg
index 04d9b4ee65955..0266453dd1c5a 100644
--- a/public/emoji/1f1e9-1f1ec.svg
+++ b/public/emoji/1f1e9-1f1ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e9-1f1ef.png b/public/emoji/1f1e9-1f1ef.png
deleted file mode 100644
index 73c2a2acbd984..0000000000000
Binary files a/public/emoji/1f1e9-1f1ef.png and /dev/null differ
diff --git a/public/emoji/1f1e9-1f1ef.svg b/public/emoji/1f1e9-1f1ef.svg
index f4ae5eafa0f55..a4daa6f94cabb 100644
--- a/public/emoji/1f1e9-1f1ef.svg
+++ b/public/emoji/1f1e9-1f1ef.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e9-1f1f0.png b/public/emoji/1f1e9-1f1f0.png
deleted file mode 100644
index e5a60b06256fe..0000000000000
Binary files a/public/emoji/1f1e9-1f1f0.png and /dev/null differ
diff --git a/public/emoji/1f1e9-1f1f0.svg b/public/emoji/1f1e9-1f1f0.svg
index fd2d704d08a39..ceda13d974f0a 100644
--- a/public/emoji/1f1e9-1f1f0.svg
+++ b/public/emoji/1f1e9-1f1f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e9-1f1f2.png b/public/emoji/1f1e9-1f1f2.png
deleted file mode 100644
index 50f8a53981d6b..0000000000000
Binary files a/public/emoji/1f1e9-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1e9-1f1f2.svg b/public/emoji/1f1e9-1f1f2.svg
index 27fc817ba9f73..66d850adc8c1f 100644
--- a/public/emoji/1f1e9-1f1f2.svg
+++ b/public/emoji/1f1e9-1f1f2.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e9-1f1f4.png b/public/emoji/1f1e9-1f1f4.png
deleted file mode 100644
index 037a45d7c269d..0000000000000
Binary files a/public/emoji/1f1e9-1f1f4.png and /dev/null differ
diff --git a/public/emoji/1f1e9-1f1f4.svg b/public/emoji/1f1e9-1f1f4.svg
index 133278cbb3911..48967b1c978ec 100644
--- a/public/emoji/1f1e9-1f1f4.svg
+++ b/public/emoji/1f1e9-1f1f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e9-1f1ff.png b/public/emoji/1f1e9-1f1ff.png
deleted file mode 100644
index 24945b10f2dfa..0000000000000
Binary files a/public/emoji/1f1e9-1f1ff.png and /dev/null differ
diff --git a/public/emoji/1f1e9-1f1ff.svg b/public/emoji/1f1e9-1f1ff.svg
index 081674e2a63c1..243c153f30b9e 100644
--- a/public/emoji/1f1e9-1f1ff.svg
+++ b/public/emoji/1f1e9-1f1ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1e9.png b/public/emoji/1f1e9.png
deleted file mode 100644
index 4a36666e5f73e..0000000000000
Binary files a/public/emoji/1f1e9.png and /dev/null differ
diff --git a/public/emoji/1f1e9.svg b/public/emoji/1f1e9.svg
index e7085af164ed4..b96b27d1f7f5a 100644
--- a/public/emoji/1f1e9.svg
+++ b/public/emoji/1f1e9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ea-1f1e6.png b/public/emoji/1f1ea-1f1e6.png
deleted file mode 100644
index 356ff34783800..0000000000000
Binary files a/public/emoji/1f1ea-1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1ea-1f1e6.svg b/public/emoji/1f1ea-1f1e6.svg
index 0a39cf63e2008..97f8ad0117c00 100644
--- a/public/emoji/1f1ea-1f1e6.svg
+++ b/public/emoji/1f1ea-1f1e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ea-1f1e8.png b/public/emoji/1f1ea-1f1e8.png
deleted file mode 100644
index 138145946199d..0000000000000
Binary files a/public/emoji/1f1ea-1f1e8.png and /dev/null differ
diff --git a/public/emoji/1f1ea-1f1e8.svg b/public/emoji/1f1ea-1f1e8.svg
index 2d7bf4d1b4875..d8af4a1928606 100644
--- a/public/emoji/1f1ea-1f1e8.svg
+++ b/public/emoji/1f1ea-1f1e8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ea-1f1ea.png b/public/emoji/1f1ea-1f1ea.png
deleted file mode 100644
index 84f317e77471d..0000000000000
Binary files a/public/emoji/1f1ea-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1ea-1f1ea.svg b/public/emoji/1f1ea-1f1ea.svg
index 0f3f6d8ed7fc2..e8359c64b35bb 100644
--- a/public/emoji/1f1ea-1f1ea.svg
+++ b/public/emoji/1f1ea-1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ea-1f1ec.png b/public/emoji/1f1ea-1f1ec.png
deleted file mode 100644
index 57786064a95f2..0000000000000
Binary files a/public/emoji/1f1ea-1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1ea-1f1ec.svg b/public/emoji/1f1ea-1f1ec.svg
index ee47f26c9f679..9018d1c60a55b 100644
--- a/public/emoji/1f1ea-1f1ec.svg
+++ b/public/emoji/1f1ea-1f1ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ea-1f1ed.png b/public/emoji/1f1ea-1f1ed.png
deleted file mode 100644
index 4d7a76687f68d..0000000000000
Binary files a/public/emoji/1f1ea-1f1ed.png and /dev/null differ
diff --git a/public/emoji/1f1ea-1f1ed.svg b/public/emoji/1f1ea-1f1ed.svg
index 63f1fe8ac22ca..a4bbad309925c 100644
--- a/public/emoji/1f1ea-1f1ed.svg
+++ b/public/emoji/1f1ea-1f1ed.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ea-1f1f7.png b/public/emoji/1f1ea-1f1f7.png
deleted file mode 100644
index 0c3c724c1fba9..0000000000000
Binary files a/public/emoji/1f1ea-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1ea-1f1f7.svg b/public/emoji/1f1ea-1f1f7.svg
index 616efd6cc85aa..067278b0275d8 100644
--- a/public/emoji/1f1ea-1f1f7.svg
+++ b/public/emoji/1f1ea-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ea-1f1f8.png b/public/emoji/1f1ea-1f1f8.png
deleted file mode 100644
index 3e73597a2257a..0000000000000
Binary files a/public/emoji/1f1ea-1f1f8.png and /dev/null differ
diff --git a/public/emoji/1f1ea-1f1f8.svg b/public/emoji/1f1ea-1f1f8.svg
index 891a2597b9c4b..97f8ad0117c00 100644
--- a/public/emoji/1f1ea-1f1f8.svg
+++ b/public/emoji/1f1ea-1f1f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ea-1f1f9.png b/public/emoji/1f1ea-1f1f9.png
deleted file mode 100644
index 9560a134c9706..0000000000000
Binary files a/public/emoji/1f1ea-1f1f9.png and /dev/null differ
diff --git a/public/emoji/1f1ea-1f1f9.svg b/public/emoji/1f1ea-1f1f9.svg
index ab724478ea889..7e7a5194d7547 100644
--- a/public/emoji/1f1ea-1f1f9.svg
+++ b/public/emoji/1f1ea-1f1f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ea-1f1fa.png b/public/emoji/1f1ea-1f1fa.png
deleted file mode 100644
index 0b456cf33308b..0000000000000
Binary files a/public/emoji/1f1ea-1f1fa.png and /dev/null differ
diff --git a/public/emoji/1f1ea-1f1fa.svg b/public/emoji/1f1ea-1f1fa.svg
index 40416b4bad917..76f6485a8d199 100644
--- a/public/emoji/1f1ea-1f1fa.svg
+++ b/public/emoji/1f1ea-1f1fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ea.png b/public/emoji/1f1ea.png
deleted file mode 100644
index 66f7e8d8cfb84..0000000000000
Binary files a/public/emoji/1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1ea.svg b/public/emoji/1f1ea.svg
index 6727438c4d4a5..d1521bb00a311 100644
--- a/public/emoji/1f1ea.svg
+++ b/public/emoji/1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1eb-1f1ee.png b/public/emoji/1f1eb-1f1ee.png
deleted file mode 100644
index ebcf58abfc5a6..0000000000000
Binary files a/public/emoji/1f1eb-1f1ee.png and /dev/null differ
diff --git a/public/emoji/1f1eb-1f1ee.svg b/public/emoji/1f1eb-1f1ee.svg
index 0894ffc582490..ce60e2d95d9a7 100644
--- a/public/emoji/1f1eb-1f1ee.svg
+++ b/public/emoji/1f1eb-1f1ee.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1eb-1f1ef.png b/public/emoji/1f1eb-1f1ef.png
deleted file mode 100644
index 9cc8c37fe3747..0000000000000
Binary files a/public/emoji/1f1eb-1f1ef.png and /dev/null differ
diff --git a/public/emoji/1f1eb-1f1ef.svg b/public/emoji/1f1eb-1f1ef.svg
index 0bbbeae0fd4ac..198e69ed6a9c0 100644
--- a/public/emoji/1f1eb-1f1ef.svg
+++ b/public/emoji/1f1eb-1f1ef.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1eb-1f1f0.png b/public/emoji/1f1eb-1f1f0.png
deleted file mode 100644
index 61372fd2549aa..0000000000000
Binary files a/public/emoji/1f1eb-1f1f0.png and /dev/null differ
diff --git a/public/emoji/1f1eb-1f1f0.svg b/public/emoji/1f1eb-1f1f0.svg
index 29f0c8548ff67..e2c5a49178d54 100644
--- a/public/emoji/1f1eb-1f1f0.svg
+++ b/public/emoji/1f1eb-1f1f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1eb-1f1f2.png b/public/emoji/1f1eb-1f1f2.png
deleted file mode 100644
index 0889825c8e12e..0000000000000
Binary files a/public/emoji/1f1eb-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1eb-1f1f2.svg b/public/emoji/1f1eb-1f1f2.svg
index ca329d00ae56e..01e5dd223ab71 100644
--- a/public/emoji/1f1eb-1f1f2.svg
+++ b/public/emoji/1f1eb-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1eb-1f1f4.png b/public/emoji/1f1eb-1f1f4.png
deleted file mode 100644
index 9a4431b0831b7..0000000000000
Binary files a/public/emoji/1f1eb-1f1f4.png and /dev/null differ
diff --git a/public/emoji/1f1eb-1f1f4.svg b/public/emoji/1f1eb-1f1f4.svg
index d5b522ebec877..c1fd7e977297c 100644
--- a/public/emoji/1f1eb-1f1f4.svg
+++ b/public/emoji/1f1eb-1f1f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1eb-1f1f7.png b/public/emoji/1f1eb-1f1f7.png
deleted file mode 100644
index 62ca19c3fcf4a..0000000000000
Binary files a/public/emoji/1f1eb-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1eb-1f1f7.svg b/public/emoji/1f1eb-1f1f7.svg
index 7f9d0ab3275e3..359779e7f0753 100644
--- a/public/emoji/1f1eb-1f1f7.svg
+++ b/public/emoji/1f1eb-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1eb.png b/public/emoji/1f1eb.png
deleted file mode 100644
index 913b230fde0c2..0000000000000
Binary files a/public/emoji/1f1eb.png and /dev/null differ
diff --git a/public/emoji/1f1eb.svg b/public/emoji/1f1eb.svg
index 2d54ed2388178..c5907a4a44e19 100644
--- a/public/emoji/1f1eb.svg
+++ b/public/emoji/1f1eb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1e6.png b/public/emoji/1f1ec-1f1e6.png
deleted file mode 100644
index 2e68e527a3ef5..0000000000000
Binary files a/public/emoji/1f1ec-1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1e6.svg b/public/emoji/1f1ec-1f1e6.svg
index f30f1e0445d96..809addb476e68 100644
--- a/public/emoji/1f1ec-1f1e6.svg
+++ b/public/emoji/1f1ec-1f1e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1e7.png b/public/emoji/1f1ec-1f1e7.png
deleted file mode 100644
index 3ed10f623470d..0000000000000
Binary files a/public/emoji/1f1ec-1f1e7.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1e7.svg b/public/emoji/1f1ec-1f1e7.svg
index f745d658d0dce..9628d4f2b4474 100644
--- a/public/emoji/1f1ec-1f1e7.svg
+++ b/public/emoji/1f1ec-1f1e7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1e9.png b/public/emoji/1f1ec-1f1e9.png
deleted file mode 100644
index 527aad338079a..0000000000000
Binary files a/public/emoji/1f1ec-1f1e9.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1e9.svg b/public/emoji/1f1ec-1f1e9.svg
index c33b39dfc6c3e..33a1f9b844e6d 100644
--- a/public/emoji/1f1ec-1f1e9.svg
+++ b/public/emoji/1f1ec-1f1e9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1ea.png b/public/emoji/1f1ec-1f1ea.png
deleted file mode 100644
index a75d142480db5..0000000000000
Binary files a/public/emoji/1f1ec-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1ea.svg b/public/emoji/1f1ec-1f1ea.svg
index 044d07dcaba9a..e1dc358f4dc4b 100644
--- a/public/emoji/1f1ec-1f1ea.svg
+++ b/public/emoji/1f1ec-1f1ea.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1eb.png b/public/emoji/1f1ec-1f1eb.png
deleted file mode 100644
index 0cf96f327c000..0000000000000
Binary files a/public/emoji/1f1ec-1f1eb.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1eb.svg b/public/emoji/1f1ec-1f1eb.svg
index 328baf263503b..4aef797025f66 100644
--- a/public/emoji/1f1ec-1f1eb.svg
+++ b/public/emoji/1f1ec-1f1eb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1ec.png b/public/emoji/1f1ec-1f1ec.png
deleted file mode 100644
index 970002c7f765e..0000000000000
Binary files a/public/emoji/1f1ec-1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1ec.svg b/public/emoji/1f1ec-1f1ec.svg
index 3e4098e429969..8bd725600d067 100644
--- a/public/emoji/1f1ec-1f1ec.svg
+++ b/public/emoji/1f1ec-1f1ec.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1ed.png b/public/emoji/1f1ec-1f1ed.png
deleted file mode 100644
index f31b5eb7b45c1..0000000000000
Binary files a/public/emoji/1f1ec-1f1ed.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1ed.svg b/public/emoji/1f1ec-1f1ed.svg
index f3558ad051248..ea91d2508459c 100644
--- a/public/emoji/1f1ec-1f1ed.svg
+++ b/public/emoji/1f1ec-1f1ed.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1ee.png b/public/emoji/1f1ec-1f1ee.png
deleted file mode 100644
index e554a2a1d0c62..0000000000000
Binary files a/public/emoji/1f1ec-1f1ee.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1ee.svg b/public/emoji/1f1ec-1f1ee.svg
index c980311a080f6..77ac932899b65 100644
--- a/public/emoji/1f1ec-1f1ee.svg
+++ b/public/emoji/1f1ec-1f1ee.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1f1.png b/public/emoji/1f1ec-1f1f1.png
deleted file mode 100644
index 2e795dd4e339d..0000000000000
Binary files a/public/emoji/1f1ec-1f1f1.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1f1.svg b/public/emoji/1f1ec-1f1f1.svg
index 484b80c08bf35..aa1713855f5fc 100644
--- a/public/emoji/1f1ec-1f1f1.svg
+++ b/public/emoji/1f1ec-1f1f1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1f2.png b/public/emoji/1f1ec-1f1f2.png
deleted file mode 100644
index bb69c0975a3e0..0000000000000
Binary files a/public/emoji/1f1ec-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1f2.svg b/public/emoji/1f1ec-1f1f2.svg
index 5fa53d532bd91..38e8738de4b14 100644
--- a/public/emoji/1f1ec-1f1f2.svg
+++ b/public/emoji/1f1ec-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1f3.png b/public/emoji/1f1ec-1f1f3.png
deleted file mode 100644
index 1981f61dbf510..0000000000000
Binary files a/public/emoji/1f1ec-1f1f3.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1f3.svg b/public/emoji/1f1ec-1f1f3.svg
index ea98260a48a43..94758e5377e16 100644
--- a/public/emoji/1f1ec-1f1f3.svg
+++ b/public/emoji/1f1ec-1f1f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1f5.png b/public/emoji/1f1ec-1f1f5.png
deleted file mode 100644
index 10e42e672bdcf..0000000000000
Binary files a/public/emoji/1f1ec-1f1f5.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1f5.svg b/public/emoji/1f1ec-1f1f5.svg
index f044d48d20a75..5cba06978261b 100644
--- a/public/emoji/1f1ec-1f1f5.svg
+++ b/public/emoji/1f1ec-1f1f5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1f6.png b/public/emoji/1f1ec-1f1f6.png
deleted file mode 100644
index 11475e61eeb05..0000000000000
Binary files a/public/emoji/1f1ec-1f1f6.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1f6.svg b/public/emoji/1f1ec-1f1f6.svg
index 6c4a1581a5110..0b7c182362d61 100644
--- a/public/emoji/1f1ec-1f1f6.svg
+++ b/public/emoji/1f1ec-1f1f6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1f7.png b/public/emoji/1f1ec-1f1f7.png
deleted file mode 100644
index 0f6bb1b6b94bd..0000000000000
Binary files a/public/emoji/1f1ec-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1f7.svg b/public/emoji/1f1ec-1f1f7.svg
index 75c9bc6a45d7f..686ca152e5527 100644
--- a/public/emoji/1f1ec-1f1f7.svg
+++ b/public/emoji/1f1ec-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1f8.png b/public/emoji/1f1ec-1f1f8.png
deleted file mode 100644
index 6fc92780453d1..0000000000000
Binary files a/public/emoji/1f1ec-1f1f8.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1f8.svg b/public/emoji/1f1ec-1f1f8.svg
index 68772ee199f1f..f51cd5dfc810a 100644
--- a/public/emoji/1f1ec-1f1f8.svg
+++ b/public/emoji/1f1ec-1f1f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1f9.png b/public/emoji/1f1ec-1f1f9.png
deleted file mode 100644
index 7213d4139eddd..0000000000000
Binary files a/public/emoji/1f1ec-1f1f9.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1f9.svg b/public/emoji/1f1ec-1f1f9.svg
index bc4f58471a668..3e86ce5202dca 100644
--- a/public/emoji/1f1ec-1f1f9.svg
+++ b/public/emoji/1f1ec-1f1f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1fa.png b/public/emoji/1f1ec-1f1fa.png
deleted file mode 100644
index 4027549ca3cb4..0000000000000
Binary files a/public/emoji/1f1ec-1f1fa.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1fa.svg b/public/emoji/1f1ec-1f1fa.svg
index 6cdd6bf36a567..4718442acc694 100644
--- a/public/emoji/1f1ec-1f1fa.svg
+++ b/public/emoji/1f1ec-1f1fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1fc.png b/public/emoji/1f1ec-1f1fc.png
deleted file mode 100644
index 6357f6225f4c5..0000000000000
Binary files a/public/emoji/1f1ec-1f1fc.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1fc.svg b/public/emoji/1f1ec-1f1fc.svg
index 30ed7effb912d..9c121c56454fc 100644
--- a/public/emoji/1f1ec-1f1fc.svg
+++ b/public/emoji/1f1ec-1f1fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec-1f1fe.png b/public/emoji/1f1ec-1f1fe.png
deleted file mode 100644
index 746e2fb7e4475..0000000000000
Binary files a/public/emoji/1f1ec-1f1fe.png and /dev/null differ
diff --git a/public/emoji/1f1ec-1f1fe.svg b/public/emoji/1f1ec-1f1fe.svg
index b4f6743d2b651..37faeaf905353 100644
--- a/public/emoji/1f1ec-1f1fe.svg
+++ b/public/emoji/1f1ec-1f1fe.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ec.png b/public/emoji/1f1ec.png
deleted file mode 100644
index 2711630753b77..0000000000000
Binary files a/public/emoji/1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1ec.svg b/public/emoji/1f1ec.svg
index 2fb80143076b5..a8c44210fa62c 100644
--- a/public/emoji/1f1ec.svg
+++ b/public/emoji/1f1ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ed-1f1f0.png b/public/emoji/1f1ed-1f1f0.png
deleted file mode 100644
index cf0c7151b5654..0000000000000
Binary files a/public/emoji/1f1ed-1f1f0.png and /dev/null differ
diff --git a/public/emoji/1f1ed-1f1f0.svg b/public/emoji/1f1ed-1f1f0.svg
index 20f6508bedeb0..8152b768b064d 100644
--- a/public/emoji/1f1ed-1f1f0.svg
+++ b/public/emoji/1f1ed-1f1f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ed-1f1f2.png b/public/emoji/1f1ed-1f1f2.png
deleted file mode 100644
index b613509e46679..0000000000000
Binary files a/public/emoji/1f1ed-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1ed-1f1f2.svg b/public/emoji/1f1ed-1f1f2.svg
index ee741bb195de8..986705ff93713 100644
--- a/public/emoji/1f1ed-1f1f2.svg
+++ b/public/emoji/1f1ed-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ed-1f1f3.png b/public/emoji/1f1ed-1f1f3.png
deleted file mode 100644
index 402cdcefdf818..0000000000000
Binary files a/public/emoji/1f1ed-1f1f3.png and /dev/null differ
diff --git a/public/emoji/1f1ed-1f1f3.svg b/public/emoji/1f1ed-1f1f3.svg
index 0b56c947bb706..9ffdb103ceaa6 100644
--- a/public/emoji/1f1ed-1f1f3.svg
+++ b/public/emoji/1f1ed-1f1f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ed-1f1f7.png b/public/emoji/1f1ed-1f1f7.png
deleted file mode 100644
index 46f4f06b4f2f2..0000000000000
Binary files a/public/emoji/1f1ed-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1ed-1f1f7.svg b/public/emoji/1f1ed-1f1f7.svg
index 938504a0db5dd..3d757816aca50 100644
--- a/public/emoji/1f1ed-1f1f7.svg
+++ b/public/emoji/1f1ed-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ed-1f1f9.png b/public/emoji/1f1ed-1f1f9.png
deleted file mode 100644
index d8d0c8884980b..0000000000000
Binary files a/public/emoji/1f1ed-1f1f9.png and /dev/null differ
diff --git a/public/emoji/1f1ed-1f1f9.svg b/public/emoji/1f1ed-1f1f9.svg
index 6162c6a4d2d4c..6bc1872294bcc 100644
--- a/public/emoji/1f1ed-1f1f9.svg
+++ b/public/emoji/1f1ed-1f1f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ed-1f1fa.png b/public/emoji/1f1ed-1f1fa.png
deleted file mode 100644
index a898de636a55b..0000000000000
Binary files a/public/emoji/1f1ed-1f1fa.png and /dev/null differ
diff --git a/public/emoji/1f1ed-1f1fa.svg b/public/emoji/1f1ed-1f1fa.svg
index 48b8aced60ad0..bb04c1863b7cc 100644
--- a/public/emoji/1f1ed-1f1fa.svg
+++ b/public/emoji/1f1ed-1f1fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ed.png b/public/emoji/1f1ed.png
deleted file mode 100644
index ca88e46bfc2f8..0000000000000
Binary files a/public/emoji/1f1ed.png and /dev/null differ
diff --git a/public/emoji/1f1ed.svg b/public/emoji/1f1ed.svg
index 6add3c7e046cd..337b2f0a980a9 100644
--- a/public/emoji/1f1ed.svg
+++ b/public/emoji/1f1ed.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ee-1f1e8.png b/public/emoji/1f1ee-1f1e8.png
deleted file mode 100644
index 69fd990aa95d9..0000000000000
Binary files a/public/emoji/1f1ee-1f1e8.png and /dev/null differ
diff --git a/public/emoji/1f1ee-1f1e8.svg b/public/emoji/1f1ee-1f1e8.svg
index 540234ef7a6b3..7741ac37d1a4c 100644
--- a/public/emoji/1f1ee-1f1e8.svg
+++ b/public/emoji/1f1ee-1f1e8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ee-1f1e9.png b/public/emoji/1f1ee-1f1e9.png
deleted file mode 100644
index 85b4c063a45e0..0000000000000
Binary files a/public/emoji/1f1ee-1f1e9.png and /dev/null differ
diff --git a/public/emoji/1f1ee-1f1e9.svg b/public/emoji/1f1ee-1f1e9.svg
index d92e0a0090d18..2e35859dd4c1a 100644
--- a/public/emoji/1f1ee-1f1e9.svg
+++ b/public/emoji/1f1ee-1f1e9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ee-1f1ea.png b/public/emoji/1f1ee-1f1ea.png
deleted file mode 100644
index a28295838cca4..0000000000000
Binary files a/public/emoji/1f1ee-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1ee-1f1ea.svg b/public/emoji/1f1ee-1f1ea.svg
index c3f32f72d101f..449c63946952f 100644
--- a/public/emoji/1f1ee-1f1ea.svg
+++ b/public/emoji/1f1ee-1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ee-1f1f1.png b/public/emoji/1f1ee-1f1f1.png
deleted file mode 100644
index 85c410d45fb14..0000000000000
Binary files a/public/emoji/1f1ee-1f1f1.png and /dev/null differ
diff --git a/public/emoji/1f1ee-1f1f1.svg b/public/emoji/1f1ee-1f1f1.svg
index 4118fdf99df5e..a9680cc922fbd 100644
--- a/public/emoji/1f1ee-1f1f1.svg
+++ b/public/emoji/1f1ee-1f1f1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ee-1f1f2.png b/public/emoji/1f1ee-1f1f2.png
deleted file mode 100644
index 60a2458e38ec3..0000000000000
Binary files a/public/emoji/1f1ee-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1ee-1f1f2.svg b/public/emoji/1f1ee-1f1f2.svg
index 17632dc76d8d1..7dc6a44fefccd 100644
--- a/public/emoji/1f1ee-1f1f2.svg
+++ b/public/emoji/1f1ee-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ee-1f1f3.png b/public/emoji/1f1ee-1f1f3.png
deleted file mode 100644
index feccc8952ce3b..0000000000000
Binary files a/public/emoji/1f1ee-1f1f3.png and /dev/null differ
diff --git a/public/emoji/1f1ee-1f1f3.svg b/public/emoji/1f1ee-1f1f3.svg
index 0f8b13d5728f3..c8720d0eaba93 100644
--- a/public/emoji/1f1ee-1f1f3.svg
+++ b/public/emoji/1f1ee-1f1f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ee-1f1f4.png b/public/emoji/1f1ee-1f1f4.png
deleted file mode 100644
index aae927d14b8bf..0000000000000
Binary files a/public/emoji/1f1ee-1f1f4.png and /dev/null differ
diff --git a/public/emoji/1f1ee-1f1f4.svg b/public/emoji/1f1ee-1f1f4.svg
index 04d9b4ee65955..0266453dd1c5a 100644
--- a/public/emoji/1f1ee-1f1f4.svg
+++ b/public/emoji/1f1ee-1f1f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ee-1f1f6.png b/public/emoji/1f1ee-1f1f6.png
deleted file mode 100644
index 41fd1db6f86dd..0000000000000
Binary files a/public/emoji/1f1ee-1f1f6.png and /dev/null differ
diff --git a/public/emoji/1f1ee-1f1f6.svg b/public/emoji/1f1ee-1f1f6.svg
index c260e29258e70..cde68d8e77faa 100644
--- a/public/emoji/1f1ee-1f1f6.svg
+++ b/public/emoji/1f1ee-1f1f6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ee-1f1f7.png b/public/emoji/1f1ee-1f1f7.png
deleted file mode 100644
index ff7aaf62ba604..0000000000000
Binary files a/public/emoji/1f1ee-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1ee-1f1f7.svg b/public/emoji/1f1ee-1f1f7.svg
index d7b36f5e80285..79a88385b15e2 100644
--- a/public/emoji/1f1ee-1f1f7.svg
+++ b/public/emoji/1f1ee-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ee-1f1f8.png b/public/emoji/1f1ee-1f1f8.png
deleted file mode 100644
index ad8d4131dd221..0000000000000
Binary files a/public/emoji/1f1ee-1f1f8.png and /dev/null differ
diff --git a/public/emoji/1f1ee-1f1f8.svg b/public/emoji/1f1ee-1f1f8.svg
index 485bbd003d82e..06b977391d9e8 100644
--- a/public/emoji/1f1ee-1f1f8.svg
+++ b/public/emoji/1f1ee-1f1f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ee-1f1f9.png b/public/emoji/1f1ee-1f1f9.png
deleted file mode 100644
index f21563ec533eb..0000000000000
Binary files a/public/emoji/1f1ee-1f1f9.png and /dev/null differ
diff --git a/public/emoji/1f1ee-1f1f9.svg b/public/emoji/1f1ee-1f1f9.svg
index f14b06522b6e2..9278ea01a8ea9 100644
--- a/public/emoji/1f1ee-1f1f9.svg
+++ b/public/emoji/1f1ee-1f1f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ee.png b/public/emoji/1f1ee.png
deleted file mode 100644
index 48dc16788954d..0000000000000
Binary files a/public/emoji/1f1ee.png and /dev/null differ
diff --git a/public/emoji/1f1ee.svg b/public/emoji/1f1ee.svg
index dc8d231b86439..a344801737285 100644
--- a/public/emoji/1f1ee.svg
+++ b/public/emoji/1f1ee.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ef-1f1ea.png b/public/emoji/1f1ef-1f1ea.png
deleted file mode 100644
index 198a918f6a468..0000000000000
Binary files a/public/emoji/1f1ef-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1ef-1f1ea.svg b/public/emoji/1f1ef-1f1ea.svg
index d71bf48eef617..79576ef1f0d49 100644
--- a/public/emoji/1f1ef-1f1ea.svg
+++ b/public/emoji/1f1ef-1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ef-1f1f2.png b/public/emoji/1f1ef-1f1f2.png
deleted file mode 100644
index f84e4f9e8dbd2..0000000000000
Binary files a/public/emoji/1f1ef-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1ef-1f1f2.svg b/public/emoji/1f1ef-1f1f2.svg
index 810f5ab71578a..9a2c61823db8f 100644
--- a/public/emoji/1f1ef-1f1f2.svg
+++ b/public/emoji/1f1ef-1f1f2.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ef-1f1f4.png b/public/emoji/1f1ef-1f1f4.png
deleted file mode 100644
index 20bfa147e3ee7..0000000000000
Binary files a/public/emoji/1f1ef-1f1f4.png and /dev/null differ
diff --git a/public/emoji/1f1ef-1f1f4.svg b/public/emoji/1f1ef-1f1f4.svg
index 2acfb9a8eb97f..76695fd2aceec 100644
--- a/public/emoji/1f1ef-1f1f4.svg
+++ b/public/emoji/1f1ef-1f1f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ef-1f1f5.png b/public/emoji/1f1ef-1f1f5.png
deleted file mode 100644
index 8d8838e4708a0..0000000000000
Binary files a/public/emoji/1f1ef-1f1f5.png and /dev/null differ
diff --git a/public/emoji/1f1ef-1f1f5.svg b/public/emoji/1f1ef-1f1f5.svg
index 8ffa66be68aca..e7d4edf6b7426 100644
--- a/public/emoji/1f1ef-1f1f5.svg
+++ b/public/emoji/1f1ef-1f1f5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ef.png b/public/emoji/1f1ef.png
deleted file mode 100644
index 16599daa7df59..0000000000000
Binary files a/public/emoji/1f1ef.png and /dev/null differ
diff --git a/public/emoji/1f1ef.svg b/public/emoji/1f1ef.svg
index 249efde293f87..c36897e3736e8 100644
--- a/public/emoji/1f1ef.svg
+++ b/public/emoji/1f1ef.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f0-1f1ea.png b/public/emoji/1f1f0-1f1ea.png
deleted file mode 100644
index 9e417ab300965..0000000000000
Binary files a/public/emoji/1f1f0-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1f0-1f1ea.svg b/public/emoji/1f1f0-1f1ea.svg
index 65828fd76546c..7448af9f4afa4 100644
--- a/public/emoji/1f1f0-1f1ea.svg
+++ b/public/emoji/1f1f0-1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f0-1f1ec.png b/public/emoji/1f1f0-1f1ec.png
deleted file mode 100644
index 2f2d848fe5888..0000000000000
Binary files a/public/emoji/1f1f0-1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1f0-1f1ec.svg b/public/emoji/1f1f0-1f1ec.svg
index c2b532f66038c..88eb576130330 100644
--- a/public/emoji/1f1f0-1f1ec.svg
+++ b/public/emoji/1f1f0-1f1ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f0-1f1ed.png b/public/emoji/1f1f0-1f1ed.png
deleted file mode 100644
index 9a2877dd620e8..0000000000000
Binary files a/public/emoji/1f1f0-1f1ed.png and /dev/null differ
diff --git a/public/emoji/1f1f0-1f1ed.svg b/public/emoji/1f1f0-1f1ed.svg
index a28e0243e1ac7..7ef576703a93f 100644
--- a/public/emoji/1f1f0-1f1ed.svg
+++ b/public/emoji/1f1f0-1f1ed.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f0-1f1ee.png b/public/emoji/1f1f0-1f1ee.png
deleted file mode 100644
index 10e507e3245f0..0000000000000
Binary files a/public/emoji/1f1f0-1f1ee.png and /dev/null differ
diff --git a/public/emoji/1f1f0-1f1ee.svg b/public/emoji/1f1f0-1f1ee.svg
index 81f5fc9e52d7d..4ff9bc2637c01 100644
--- a/public/emoji/1f1f0-1f1ee.svg
+++ b/public/emoji/1f1f0-1f1ee.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f0-1f1f2.png b/public/emoji/1f1f0-1f1f2.png
deleted file mode 100644
index bd5a0588e0321..0000000000000
Binary files a/public/emoji/1f1f0-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1f0-1f1f2.svg b/public/emoji/1f1f0-1f1f2.svg
index 8e9ba574d096a..576e2fa22abbc 100644
--- a/public/emoji/1f1f0-1f1f2.svg
+++ b/public/emoji/1f1f0-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f0-1f1f3.png b/public/emoji/1f1f0-1f1f3.png
deleted file mode 100644
index 776207c9605d5..0000000000000
Binary files a/public/emoji/1f1f0-1f1f3.png and /dev/null differ
diff --git a/public/emoji/1f1f0-1f1f3.svg b/public/emoji/1f1f0-1f1f3.svg
index 505ac748dd632..86a2dd6bbd5b7 100644
--- a/public/emoji/1f1f0-1f1f3.svg
+++ b/public/emoji/1f1f0-1f1f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f0-1f1f5.png b/public/emoji/1f1f0-1f1f5.png
deleted file mode 100644
index 6b3fd89eaaabc..0000000000000
Binary files a/public/emoji/1f1f0-1f1f5.png and /dev/null differ
diff --git a/public/emoji/1f1f0-1f1f5.svg b/public/emoji/1f1f0-1f1f5.svg
index dc4d679813341..c4ff6ac31be07 100644
--- a/public/emoji/1f1f0-1f1f5.svg
+++ b/public/emoji/1f1f0-1f1f5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f0-1f1f7.png b/public/emoji/1f1f0-1f1f7.png
deleted file mode 100644
index 833a88116e182..0000000000000
Binary files a/public/emoji/1f1f0-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1f0-1f1f7.svg b/public/emoji/1f1f0-1f1f7.svg
index 5b28e359525ec..7b5c67904755b 100644
--- a/public/emoji/1f1f0-1f1f7.svg
+++ b/public/emoji/1f1f0-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f0-1f1fc.png b/public/emoji/1f1f0-1f1fc.png
deleted file mode 100644
index 4d19bfa6ca7a4..0000000000000
Binary files a/public/emoji/1f1f0-1f1fc.png and /dev/null differ
diff --git a/public/emoji/1f1f0-1f1fc.svg b/public/emoji/1f1f0-1f1fc.svg
index f3076ffb4040c..735085fa90d8c 100644
--- a/public/emoji/1f1f0-1f1fc.svg
+++ b/public/emoji/1f1f0-1f1fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f0-1f1fe.png b/public/emoji/1f1f0-1f1fe.png
deleted file mode 100644
index 40daa4da597f1..0000000000000
Binary files a/public/emoji/1f1f0-1f1fe.png and /dev/null differ
diff --git a/public/emoji/1f1f0-1f1fe.svg b/public/emoji/1f1f0-1f1fe.svg
index 6d0432cb82e1b..ae4088997fa19 100644
--- a/public/emoji/1f1f0-1f1fe.svg
+++ b/public/emoji/1f1f0-1f1fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f0-1f1ff.png b/public/emoji/1f1f0-1f1ff.png
deleted file mode 100644
index 2f97a8fd3c68d..0000000000000
Binary files a/public/emoji/1f1f0-1f1ff.png and /dev/null differ
diff --git a/public/emoji/1f1f0-1f1ff.svg b/public/emoji/1f1f0-1f1ff.svg
index 107bf17ac75b5..0c398a457d590 100644
--- a/public/emoji/1f1f0-1f1ff.svg
+++ b/public/emoji/1f1f0-1f1ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f0.png b/public/emoji/1f1f0.png
deleted file mode 100644
index 204b95d1b5771..0000000000000
Binary files a/public/emoji/1f1f0.png and /dev/null differ
diff --git a/public/emoji/1f1f0.svg b/public/emoji/1f1f0.svg
index 0ae3f9a3b0f57..d9294f183c281 100644
--- a/public/emoji/1f1f0.svg
+++ b/public/emoji/1f1f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f1-1f1e6.png b/public/emoji/1f1f1-1f1e6.png
deleted file mode 100644
index 4d4179f34f6be..0000000000000
Binary files a/public/emoji/1f1f1-1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1f1-1f1e6.svg b/public/emoji/1f1f1-1f1e6.svg
index a9ebf083c8630..251d2bdec6682 100644
--- a/public/emoji/1f1f1-1f1e6.svg
+++ b/public/emoji/1f1f1-1f1e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f1-1f1e7.png b/public/emoji/1f1f1-1f1e7.png
deleted file mode 100644
index 3d594467011bf..0000000000000
Binary files a/public/emoji/1f1f1-1f1e7.png and /dev/null differ
diff --git a/public/emoji/1f1f1-1f1e7.svg b/public/emoji/1f1f1-1f1e7.svg
index d000185e59c00..3b47f5895d747 100644
--- a/public/emoji/1f1f1-1f1e7.svg
+++ b/public/emoji/1f1f1-1f1e7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f1-1f1e8.png b/public/emoji/1f1f1-1f1e8.png
deleted file mode 100644
index 45547b1e439eb..0000000000000
Binary files a/public/emoji/1f1f1-1f1e8.png and /dev/null differ
diff --git a/public/emoji/1f1f1-1f1e8.svg b/public/emoji/1f1f1-1f1e8.svg
index 9f5255714c22b..255cbe8f044d0 100644
--- a/public/emoji/1f1f1-1f1e8.svg
+++ b/public/emoji/1f1f1-1f1e8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f1-1f1ee.png b/public/emoji/1f1f1-1f1ee.png
deleted file mode 100644
index 0eafa6a2215aa..0000000000000
Binary files a/public/emoji/1f1f1-1f1ee.png and /dev/null differ
diff --git a/public/emoji/1f1f1-1f1ee.svg b/public/emoji/1f1f1-1f1ee.svg
index 51b11472b49c9..5b878c9d75d45 100644
--- a/public/emoji/1f1f1-1f1ee.svg
+++ b/public/emoji/1f1f1-1f1ee.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f1-1f1f0.png b/public/emoji/1f1f1-1f1f0.png
deleted file mode 100644
index ab4fe10c40caa..0000000000000
Binary files a/public/emoji/1f1f1-1f1f0.png and /dev/null differ
diff --git a/public/emoji/1f1f1-1f1f0.svg b/public/emoji/1f1f1-1f1f0.svg
index 5eb3cd7ee46c5..18ce60f466d41 100644
--- a/public/emoji/1f1f1-1f1f0.svg
+++ b/public/emoji/1f1f1-1f1f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f1-1f1f7.png b/public/emoji/1f1f1-1f1f7.png
deleted file mode 100644
index f66f267fea2e2..0000000000000
Binary files a/public/emoji/1f1f1-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1f1-1f1f7.svg b/public/emoji/1f1f1-1f1f7.svg
index 13995a6bf42fb..60815efb69cb1 100644
--- a/public/emoji/1f1f1-1f1f7.svg
+++ b/public/emoji/1f1f1-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f1-1f1f8.png b/public/emoji/1f1f1-1f1f8.png
deleted file mode 100644
index 24745631e3c70..0000000000000
Binary files a/public/emoji/1f1f1-1f1f8.png and /dev/null differ
diff --git a/public/emoji/1f1f1-1f1f8.svg b/public/emoji/1f1f1-1f1f8.svg
index ef9b0346c5cdd..437f875ba970d 100644
--- a/public/emoji/1f1f1-1f1f8.svg
+++ b/public/emoji/1f1f1-1f1f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f1-1f1f9.png b/public/emoji/1f1f1-1f1f9.png
deleted file mode 100644
index d644b56d62a7f..0000000000000
Binary files a/public/emoji/1f1f1-1f1f9.png and /dev/null differ
diff --git a/public/emoji/1f1f1-1f1f9.svg b/public/emoji/1f1f1-1f1f9.svg
index 513d722c0c4f6..464ae5e046966 100644
--- a/public/emoji/1f1f1-1f1f9.svg
+++ b/public/emoji/1f1f1-1f1f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f1-1f1fa.png b/public/emoji/1f1f1-1f1fa.png
deleted file mode 100644
index a2df9c929949f..0000000000000
Binary files a/public/emoji/1f1f1-1f1fa.png and /dev/null differ
diff --git a/public/emoji/1f1f1-1f1fa.svg b/public/emoji/1f1f1-1f1fa.svg
index 78de148357f49..ce8ff86f7b786 100644
--- a/public/emoji/1f1f1-1f1fa.svg
+++ b/public/emoji/1f1f1-1f1fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f1-1f1fb.png b/public/emoji/1f1f1-1f1fb.png
deleted file mode 100644
index ae680d5f0e350..0000000000000
Binary files a/public/emoji/1f1f1-1f1fb.png and /dev/null differ
diff --git a/public/emoji/1f1f1-1f1fb.svg b/public/emoji/1f1f1-1f1fb.svg
index b3fa271e08107..7265ac5074fa1 100644
--- a/public/emoji/1f1f1-1f1fb.svg
+++ b/public/emoji/1f1f1-1f1fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f1-1f1fe.png b/public/emoji/1f1f1-1f1fe.png
deleted file mode 100644
index f6e77b0f3ba7d..0000000000000
Binary files a/public/emoji/1f1f1-1f1fe.png and /dev/null differ
diff --git a/public/emoji/1f1f1-1f1fe.svg b/public/emoji/1f1f1-1f1fe.svg
index dd29b3b31e813..74add1f6f6d88 100644
--- a/public/emoji/1f1f1-1f1fe.svg
+++ b/public/emoji/1f1f1-1f1fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f1.png b/public/emoji/1f1f1.png
deleted file mode 100644
index 7992b4f681a70..0000000000000
Binary files a/public/emoji/1f1f1.png and /dev/null differ
diff --git a/public/emoji/1f1f1.svg b/public/emoji/1f1f1.svg
index 9239d516ebd68..dc299d45f11b6 100644
--- a/public/emoji/1f1f1.svg
+++ b/public/emoji/1f1f1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1e6.png b/public/emoji/1f1f2-1f1e6.png
deleted file mode 100644
index c4a056722cd3c..0000000000000
Binary files a/public/emoji/1f1f2-1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1e6.svg b/public/emoji/1f1f2-1f1e6.svg
index f2e7c5aab8f3c..77421f18da665 100644
--- a/public/emoji/1f1f2-1f1e6.svg
+++ b/public/emoji/1f1f2-1f1e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1e8.png b/public/emoji/1f1f2-1f1e8.png
deleted file mode 100644
index d479eab98cb97..0000000000000
Binary files a/public/emoji/1f1f2-1f1e8.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1e8.svg b/public/emoji/1f1f2-1f1e8.svg
index a0228346b4b9c..abc6746dcfdd7 100644
--- a/public/emoji/1f1f2-1f1e8.svg
+++ b/public/emoji/1f1f2-1f1e8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1e9.png b/public/emoji/1f1f2-1f1e9.png
deleted file mode 100644
index a7a7253987288..0000000000000
Binary files a/public/emoji/1f1f2-1f1e9.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1e9.svg b/public/emoji/1f1f2-1f1e9.svg
index 76845b662f857..b4f1fe18fe841 100644
--- a/public/emoji/1f1f2-1f1e9.svg
+++ b/public/emoji/1f1f2-1f1e9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1ea.png b/public/emoji/1f1f2-1f1ea.png
deleted file mode 100644
index 7c771e7e12031..0000000000000
Binary files a/public/emoji/1f1f2-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1ea.svg b/public/emoji/1f1f2-1f1ea.svg
index 7eb38ad815e29..45e00923e6154 100644
--- a/public/emoji/1f1f2-1f1ea.svg
+++ b/public/emoji/1f1f2-1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1eb.png b/public/emoji/1f1f2-1f1eb.png
deleted file mode 100644
index 70c761036bd30..0000000000000
Binary files a/public/emoji/1f1f2-1f1eb.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1eb.svg b/public/emoji/1f1f2-1f1eb.svg
index 16bfba0cfefda..359779e7f0753 100644
--- a/public/emoji/1f1f2-1f1eb.svg
+++ b/public/emoji/1f1f2-1f1eb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1ec.png b/public/emoji/1f1f2-1f1ec.png
deleted file mode 100644
index 2f3ccdda76fa5..0000000000000
Binary files a/public/emoji/1f1f2-1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1ec.svg b/public/emoji/1f1f2-1f1ec.svg
index 3571c0a7f4e4a..016e1c36011d1 100644
--- a/public/emoji/1f1f2-1f1ec.svg
+++ b/public/emoji/1f1f2-1f1ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1ed.png b/public/emoji/1f1f2-1f1ed.png
deleted file mode 100644
index 598016481c191..0000000000000
Binary files a/public/emoji/1f1f2-1f1ed.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1ed.svg b/public/emoji/1f1f2-1f1ed.svg
index bc53ad9667b1d..9a82f6e4a6a0e 100644
--- a/public/emoji/1f1f2-1f1ed.svg
+++ b/public/emoji/1f1f2-1f1ed.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1f0.png b/public/emoji/1f1f2-1f1f0.png
deleted file mode 100644
index 7ba775ee75c0a..0000000000000
Binary files a/public/emoji/1f1f2-1f1f0.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1f0.svg b/public/emoji/1f1f2-1f1f0.svg
index 8a3bc3e7c6de5..d5602de7c7b45 100644
--- a/public/emoji/1f1f2-1f1f0.svg
+++ b/public/emoji/1f1f2-1f1f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1f1.png b/public/emoji/1f1f2-1f1f1.png
deleted file mode 100644
index 6834378546809..0000000000000
Binary files a/public/emoji/1f1f2-1f1f1.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1f1.svg b/public/emoji/1f1f2-1f1f1.svg
index 650d974a9754d..729816534f700 100644
--- a/public/emoji/1f1f2-1f1f1.svg
+++ b/public/emoji/1f1f2-1f1f1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1f2.png b/public/emoji/1f1f2-1f1f2.png
deleted file mode 100644
index 37dc7d715912f..0000000000000
Binary files a/public/emoji/1f1f2-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1f2.svg b/public/emoji/1f1f2-1f1f2.svg
index 2df73cff5ca03..011a6a4d7d31b 100644
--- a/public/emoji/1f1f2-1f1f2.svg
+++ b/public/emoji/1f1f2-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1f3.png b/public/emoji/1f1f2-1f1f3.png
deleted file mode 100644
index 1f146bbcd1a60..0000000000000
Binary files a/public/emoji/1f1f2-1f1f3.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1f3.svg b/public/emoji/1f1f2-1f1f3.svg
index bfb46eb047a36..6987e126243b7 100644
--- a/public/emoji/1f1f2-1f1f3.svg
+++ b/public/emoji/1f1f2-1f1f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1f4.png b/public/emoji/1f1f2-1f1f4.png
deleted file mode 100644
index 7edde31f64bd0..0000000000000
Binary files a/public/emoji/1f1f2-1f1f4.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1f4.svg b/public/emoji/1f1f2-1f1f4.svg
index 30c75b65a1cda..9c7fb5365851e 100644
--- a/public/emoji/1f1f2-1f1f4.svg
+++ b/public/emoji/1f1f2-1f1f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1f5.png b/public/emoji/1f1f2-1f1f5.png
deleted file mode 100644
index 17ec1c441ed79..0000000000000
Binary files a/public/emoji/1f1f2-1f1f5.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1f5.svg b/public/emoji/1f1f2-1f1f5.svg
index 823a275f3556a..ea7005e64fc6d 100644
--- a/public/emoji/1f1f2-1f1f5.svg
+++ b/public/emoji/1f1f2-1f1f5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1f6.png b/public/emoji/1f1f2-1f1f6.png
deleted file mode 100644
index 1e672dc908710..0000000000000
Binary files a/public/emoji/1f1f2-1f1f6.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1f6.svg b/public/emoji/1f1f2-1f1f6.svg
index 79c46fd4a1784..3a12ec05010b3 100644
--- a/public/emoji/1f1f2-1f1f6.svg
+++ b/public/emoji/1f1f2-1f1f6.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1f7.png b/public/emoji/1f1f2-1f1f7.png
deleted file mode 100644
index f87de46effebd..0000000000000
Binary files a/public/emoji/1f1f2-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1f7.svg b/public/emoji/1f1f2-1f1f7.svg
index 7878b6bbfc9d8..1cc8a6fff46e2 100644
--- a/public/emoji/1f1f2-1f1f7.svg
+++ b/public/emoji/1f1f2-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1f8.png b/public/emoji/1f1f2-1f1f8.png
deleted file mode 100644
index 480b0d4ebda09..0000000000000
Binary files a/public/emoji/1f1f2-1f1f8.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1f8.svg b/public/emoji/1f1f2-1f1f8.svg
index 97cb964c8434f..24d149b0ad2f1 100644
--- a/public/emoji/1f1f2-1f1f8.svg
+++ b/public/emoji/1f1f2-1f1f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1f9.png b/public/emoji/1f1f2-1f1f9.png
deleted file mode 100644
index c9e1dbdce8226..0000000000000
Binary files a/public/emoji/1f1f2-1f1f9.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1f9.svg b/public/emoji/1f1f2-1f1f9.svg
index f2447327537dc..98a364da95004 100644
--- a/public/emoji/1f1f2-1f1f9.svg
+++ b/public/emoji/1f1f2-1f1f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1fa.png b/public/emoji/1f1f2-1f1fa.png
deleted file mode 100644
index 55b33cb7c33ee..0000000000000
Binary files a/public/emoji/1f1f2-1f1fa.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1fa.svg b/public/emoji/1f1f2-1f1fa.svg
index 03c638846b989..223c786e6849f 100644
--- a/public/emoji/1f1f2-1f1fa.svg
+++ b/public/emoji/1f1f2-1f1fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1fb.png b/public/emoji/1f1f2-1f1fb.png
deleted file mode 100644
index ce5867126ae48..0000000000000
Binary files a/public/emoji/1f1f2-1f1fb.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1fb.svg b/public/emoji/1f1f2-1f1fb.svg
index 9326ae793a4ad..87eba9d93f5d6 100644
--- a/public/emoji/1f1f2-1f1fb.svg
+++ b/public/emoji/1f1f2-1f1fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1fc.png b/public/emoji/1f1f2-1f1fc.png
deleted file mode 100644
index 003d854840143..0000000000000
Binary files a/public/emoji/1f1f2-1f1fc.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1fc.svg b/public/emoji/1f1f2-1f1fc.svg
index 4fd4f5aefe64f..2dd553add9060 100644
--- a/public/emoji/1f1f2-1f1fc.svg
+++ b/public/emoji/1f1f2-1f1fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1fd.png b/public/emoji/1f1f2-1f1fd.png
deleted file mode 100644
index 42572bcd0ba06..0000000000000
Binary files a/public/emoji/1f1f2-1f1fd.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1fd.svg b/public/emoji/1f1f2-1f1fd.svg
index 7ccbceb6a4635..fbb2ae056e12e 100644
--- a/public/emoji/1f1f2-1f1fd.svg
+++ b/public/emoji/1f1f2-1f1fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1fe.png b/public/emoji/1f1f2-1f1fe.png
deleted file mode 100644
index 17526c2674296..0000000000000
Binary files a/public/emoji/1f1f2-1f1fe.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1fe.svg b/public/emoji/1f1f2-1f1fe.svg
index 580bc7f9f43e1..97f472e19e9ef 100644
--- a/public/emoji/1f1f2-1f1fe.svg
+++ b/public/emoji/1f1f2-1f1fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2-1f1ff.png b/public/emoji/1f1f2-1f1ff.png
deleted file mode 100644
index 2352a78e786ff..0000000000000
Binary files a/public/emoji/1f1f2-1f1ff.png and /dev/null differ
diff --git a/public/emoji/1f1f2-1f1ff.svg b/public/emoji/1f1f2-1f1ff.svg
index 42ff00cefff9b..ddca4a7bd217a 100644
--- a/public/emoji/1f1f2-1f1ff.svg
+++ b/public/emoji/1f1f2-1f1ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f2.png b/public/emoji/1f1f2.png
deleted file mode 100644
index 7b848b2ce291a..0000000000000
Binary files a/public/emoji/1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1f2.svg b/public/emoji/1f1f2.svg
index c04f37116d9c4..595c1a8a72cb3 100644
--- a/public/emoji/1f1f2.svg
+++ b/public/emoji/1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f3-1f1e6.png b/public/emoji/1f1f3-1f1e6.png
deleted file mode 100644
index ed31c3df04d09..0000000000000
Binary files a/public/emoji/1f1f3-1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1f3-1f1e6.svg b/public/emoji/1f1f3-1f1e6.svg
index c53c7ddc6de5f..d8224397a7e69 100644
--- a/public/emoji/1f1f3-1f1e6.svg
+++ b/public/emoji/1f1f3-1f1e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f3-1f1e8.png b/public/emoji/1f1f3-1f1e8.png
deleted file mode 100644
index 90b3afebfa3c3..0000000000000
Binary files a/public/emoji/1f1f3-1f1e8.png and /dev/null differ
diff --git a/public/emoji/1f1f3-1f1e8.svg b/public/emoji/1f1f3-1f1e8.svg
index 7a9113f808742..5a4999f5af53a 100644
--- a/public/emoji/1f1f3-1f1e8.svg
+++ b/public/emoji/1f1f3-1f1e8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f3-1f1ea.png b/public/emoji/1f1f3-1f1ea.png
deleted file mode 100644
index f98a1173c2a91..0000000000000
Binary files a/public/emoji/1f1f3-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1f3-1f1ea.svg b/public/emoji/1f1f3-1f1ea.svg
index b7f470788873b..b7d32ca125798 100644
--- a/public/emoji/1f1f3-1f1ea.svg
+++ b/public/emoji/1f1f3-1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f3-1f1eb.png b/public/emoji/1f1f3-1f1eb.png
deleted file mode 100644
index 9099e76742031..0000000000000
Binary files a/public/emoji/1f1f3-1f1eb.png and /dev/null differ
diff --git a/public/emoji/1f1f3-1f1eb.svg b/public/emoji/1f1f3-1f1eb.svg
index 21005fb0d2c34..d8d25ec549c84 100644
--- a/public/emoji/1f1f3-1f1eb.svg
+++ b/public/emoji/1f1f3-1f1eb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f3-1f1ec.png b/public/emoji/1f1f3-1f1ec.png
deleted file mode 100644
index ea0abeff1a140..0000000000000
Binary files a/public/emoji/1f1f3-1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1f3-1f1ec.svg b/public/emoji/1f1f3-1f1ec.svg
index 0701d0cdf1be4..2e68813ae666f 100644
--- a/public/emoji/1f1f3-1f1ec.svg
+++ b/public/emoji/1f1f3-1f1ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f3-1f1ee.png b/public/emoji/1f1f3-1f1ee.png
deleted file mode 100644
index 772920dfa10d9..0000000000000
Binary files a/public/emoji/1f1f3-1f1ee.png and /dev/null differ
diff --git a/public/emoji/1f1f3-1f1ee.svg b/public/emoji/1f1f3-1f1ee.svg
index 8792eddc8dca4..d61e76bcdd28f 100644
--- a/public/emoji/1f1f3-1f1ee.svg
+++ b/public/emoji/1f1f3-1f1ee.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f3-1f1f1.png b/public/emoji/1f1f3-1f1f1.png
deleted file mode 100644
index 83a0e817e41d3..0000000000000
Binary files a/public/emoji/1f1f3-1f1f1.png and /dev/null differ
diff --git a/public/emoji/1f1f3-1f1f1.svg b/public/emoji/1f1f3-1f1f1.svg
index c150ee5942125..80adf56ddbf9b 100644
--- a/public/emoji/1f1f3-1f1f1.svg
+++ b/public/emoji/1f1f3-1f1f1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f3-1f1f4.png b/public/emoji/1f1f3-1f1f4.png
deleted file mode 100644
index 99d3142eb7b1a..0000000000000
Binary files a/public/emoji/1f1f3-1f1f4.png and /dev/null differ
diff --git a/public/emoji/1f1f3-1f1f4.svg b/public/emoji/1f1f3-1f1f4.svg
index 85182d9839513..f9a01310c6ff9 100644
--- a/public/emoji/1f1f3-1f1f4.svg
+++ b/public/emoji/1f1f3-1f1f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f3-1f1f5.png b/public/emoji/1f1f3-1f1f5.png
deleted file mode 100644
index 87425a8dfef4f..0000000000000
Binary files a/public/emoji/1f1f3-1f1f5.png and /dev/null differ
diff --git a/public/emoji/1f1f3-1f1f5.svg b/public/emoji/1f1f3-1f1f5.svg
index a1e7545badaa7..4c816f7a4e997 100644
--- a/public/emoji/1f1f3-1f1f5.svg
+++ b/public/emoji/1f1f3-1f1f5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f3-1f1f7.png b/public/emoji/1f1f3-1f1f7.png
deleted file mode 100644
index b3e3a5d56215b..0000000000000
Binary files a/public/emoji/1f1f3-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1f3-1f1f7.svg b/public/emoji/1f1f3-1f1f7.svg
index eba929277ad13..dcf7aa255e5ae 100644
--- a/public/emoji/1f1f3-1f1f7.svg
+++ b/public/emoji/1f1f3-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f3-1f1fa.png b/public/emoji/1f1f3-1f1fa.png
deleted file mode 100644
index f03614443ee9c..0000000000000
Binary files a/public/emoji/1f1f3-1f1fa.png and /dev/null differ
diff --git a/public/emoji/1f1f3-1f1fa.svg b/public/emoji/1f1f3-1f1fa.svg
index f4b61fd5e60b5..20fa1fbfa7f21 100644
--- a/public/emoji/1f1f3-1f1fa.svg
+++ b/public/emoji/1f1f3-1f1fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f3-1f1ff.png b/public/emoji/1f1f3-1f1ff.png
deleted file mode 100644
index a4eeeab9cd93a..0000000000000
Binary files a/public/emoji/1f1f3-1f1ff.png and /dev/null differ
diff --git a/public/emoji/1f1f3-1f1ff.svg b/public/emoji/1f1f3-1f1ff.svg
index 688b145c191c1..3d76eaf879e7a 100644
--- a/public/emoji/1f1f3-1f1ff.svg
+++ b/public/emoji/1f1f3-1f1ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f3.png b/public/emoji/1f1f3.png
deleted file mode 100644
index 4a11e50438506..0000000000000
Binary files a/public/emoji/1f1f3.png and /dev/null differ
diff --git a/public/emoji/1f1f3.svg b/public/emoji/1f1f3.svg
index a32f055903f3d..4736cc6eb337f 100644
--- a/public/emoji/1f1f3.svg
+++ b/public/emoji/1f1f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f4-1f1f2.png b/public/emoji/1f1f4-1f1f2.png
deleted file mode 100644
index ea824ba31e7d6..0000000000000
Binary files a/public/emoji/1f1f4-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1f4-1f1f2.svg b/public/emoji/1f1f4-1f1f2.svg
index 3a23ddcb9f345..95682a7bee3f2 100644
--- a/public/emoji/1f1f4-1f1f2.svg
+++ b/public/emoji/1f1f4-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f4.png b/public/emoji/1f1f4.png
deleted file mode 100644
index 2a0760b3150e5..0000000000000
Binary files a/public/emoji/1f1f4.png and /dev/null differ
diff --git a/public/emoji/1f1f4.svg b/public/emoji/1f1f4.svg
index 079e2b1a9d888..96fc0b1f498a9 100644
--- a/public/emoji/1f1f4.svg
+++ b/public/emoji/1f1f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5-1f1e6.png b/public/emoji/1f1f5-1f1e6.png
deleted file mode 100644
index c3091d8988913..0000000000000
Binary files a/public/emoji/1f1f5-1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1f5-1f1e6.svg b/public/emoji/1f1f5-1f1e6.svg
index cbeb3037f5f25..aa4edaa8ffbba 100644
--- a/public/emoji/1f1f5-1f1e6.svg
+++ b/public/emoji/1f1f5-1f1e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5-1f1ea.png b/public/emoji/1f1f5-1f1ea.png
deleted file mode 100644
index 39223aa9dbb8e..0000000000000
Binary files a/public/emoji/1f1f5-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1f5-1f1ea.svg b/public/emoji/1f1f5-1f1ea.svg
index dab27b6367f41..17e8abe250fdf 100644
--- a/public/emoji/1f1f5-1f1ea.svg
+++ b/public/emoji/1f1f5-1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5-1f1eb.png b/public/emoji/1f1f5-1f1eb.png
deleted file mode 100644
index 113445f8f6e47..0000000000000
Binary files a/public/emoji/1f1f5-1f1eb.png and /dev/null differ
diff --git a/public/emoji/1f1f5-1f1eb.svg b/public/emoji/1f1f5-1f1eb.svg
index d68516daa709f..8d2d874941416 100644
--- a/public/emoji/1f1f5-1f1eb.svg
+++ b/public/emoji/1f1f5-1f1eb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5-1f1ec.png b/public/emoji/1f1f5-1f1ec.png
deleted file mode 100644
index 825e9dcb762bd..0000000000000
Binary files a/public/emoji/1f1f5-1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1f5-1f1ec.svg b/public/emoji/1f1f5-1f1ec.svg
index 094bf895f50dc..a39a0e987cc9e 100644
--- a/public/emoji/1f1f5-1f1ec.svg
+++ b/public/emoji/1f1f5-1f1ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5-1f1ed.png b/public/emoji/1f1f5-1f1ed.png
deleted file mode 100644
index 8260e15bd2ca0..0000000000000
Binary files a/public/emoji/1f1f5-1f1ed.png and /dev/null differ
diff --git a/public/emoji/1f1f5-1f1ed.svg b/public/emoji/1f1f5-1f1ed.svg
index 57ebde425aabc..17965b9eb393f 100644
--- a/public/emoji/1f1f5-1f1ed.svg
+++ b/public/emoji/1f1f5-1f1ed.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5-1f1f0.png b/public/emoji/1f1f5-1f1f0.png
deleted file mode 100644
index a7b6a1c507420..0000000000000
Binary files a/public/emoji/1f1f5-1f1f0.png and /dev/null differ
diff --git a/public/emoji/1f1f5-1f1f0.svg b/public/emoji/1f1f5-1f1f0.svg
index 3a8cfd9b267ed..f3cfa46689716 100644
--- a/public/emoji/1f1f5-1f1f0.svg
+++ b/public/emoji/1f1f5-1f1f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5-1f1f1.png b/public/emoji/1f1f5-1f1f1.png
deleted file mode 100644
index 19de2edec1177..0000000000000
Binary files a/public/emoji/1f1f5-1f1f1.png and /dev/null differ
diff --git a/public/emoji/1f1f5-1f1f1.svg b/public/emoji/1f1f5-1f1f1.svg
index bf78dbbce8fef..bbc7f1ba914d7 100644
--- a/public/emoji/1f1f5-1f1f1.svg
+++ b/public/emoji/1f1f5-1f1f1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5-1f1f2.png b/public/emoji/1f1f5-1f1f2.png
deleted file mode 100644
index 2ca6055419352..0000000000000
Binary files a/public/emoji/1f1f5-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1f5-1f1f2.svg b/public/emoji/1f1f5-1f1f2.svg
index 517c6682a55c3..44e7282b8bc25 100644
--- a/public/emoji/1f1f5-1f1f2.svg
+++ b/public/emoji/1f1f5-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5-1f1f3.png b/public/emoji/1f1f5-1f1f3.png
deleted file mode 100644
index f2263b154bc10..0000000000000
Binary files a/public/emoji/1f1f5-1f1f3.png and /dev/null differ
diff --git a/public/emoji/1f1f5-1f1f3.svg b/public/emoji/1f1f5-1f1f3.svg
index adf57ca1ab7ca..e9d1c474e27f5 100644
--- a/public/emoji/1f1f5-1f1f3.svg
+++ b/public/emoji/1f1f5-1f1f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5-1f1f7.png b/public/emoji/1f1f5-1f1f7.png
deleted file mode 100644
index d0209cddb7916..0000000000000
Binary files a/public/emoji/1f1f5-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1f5-1f1f7.svg b/public/emoji/1f1f5-1f1f7.svg
index 9008a55851282..5a384c0e75c66 100644
--- a/public/emoji/1f1f5-1f1f7.svg
+++ b/public/emoji/1f1f5-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5-1f1f8.png b/public/emoji/1f1f5-1f1f8.png
deleted file mode 100644
index 7ccab09778ba9..0000000000000
Binary files a/public/emoji/1f1f5-1f1f8.png and /dev/null differ
diff --git a/public/emoji/1f1f5-1f1f8.svg b/public/emoji/1f1f5-1f1f8.svg
index e3f5f42489309..08f8d7f13f7db 100644
--- a/public/emoji/1f1f5-1f1f8.svg
+++ b/public/emoji/1f1f5-1f1f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5-1f1f9.png b/public/emoji/1f1f5-1f1f9.png
deleted file mode 100644
index cc93f27c64bab..0000000000000
Binary files a/public/emoji/1f1f5-1f1f9.png and /dev/null differ
diff --git a/public/emoji/1f1f5-1f1f9.svg b/public/emoji/1f1f5-1f1f9.svg
index f4866075c2439..81defcf3ad223 100644
--- a/public/emoji/1f1f5-1f1f9.svg
+++ b/public/emoji/1f1f5-1f1f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5-1f1fc.png b/public/emoji/1f1f5-1f1fc.png
deleted file mode 100644
index 154b2f12d3cbb..0000000000000
Binary files a/public/emoji/1f1f5-1f1fc.png and /dev/null differ
diff --git a/public/emoji/1f1f5-1f1fc.svg b/public/emoji/1f1f5-1f1fc.svg
index a88c9f8fb193d..4eaf0143ce13d 100644
--- a/public/emoji/1f1f5-1f1fc.svg
+++ b/public/emoji/1f1f5-1f1fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5-1f1fe.png b/public/emoji/1f1f5-1f1fe.png
deleted file mode 100644
index 662ad2f6ff1ac..0000000000000
Binary files a/public/emoji/1f1f5-1f1fe.png and /dev/null differ
diff --git a/public/emoji/1f1f5-1f1fe.svg b/public/emoji/1f1f5-1f1fe.svg
index 93e40d091d5d1..1853d28da9930 100644
--- a/public/emoji/1f1f5-1f1fe.svg
+++ b/public/emoji/1f1f5-1f1fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f5.png b/public/emoji/1f1f5.png
deleted file mode 100644
index bcb3298f99a83..0000000000000
Binary files a/public/emoji/1f1f5.png and /dev/null differ
diff --git a/public/emoji/1f1f5.svg b/public/emoji/1f1f5.svg
index 2a769ae73a62a..c111c03866bc4 100644
--- a/public/emoji/1f1f5.svg
+++ b/public/emoji/1f1f5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f6-1f1e6.png b/public/emoji/1f1f6-1f1e6.png
deleted file mode 100644
index a01d8b05cc769..0000000000000
Binary files a/public/emoji/1f1f6-1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1f6-1f1e6.svg b/public/emoji/1f1f6-1f1e6.svg
index 6c5ce7947f8af..0df0124967c8d 100644
--- a/public/emoji/1f1f6-1f1e6.svg
+++ b/public/emoji/1f1f6-1f1e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f6.png b/public/emoji/1f1f6.png
deleted file mode 100644
index 6c92a9dfbc863..0000000000000
Binary files a/public/emoji/1f1f6.png and /dev/null differ
diff --git a/public/emoji/1f1f6.svg b/public/emoji/1f1f6.svg
index ea3e84d3c032e..b3de8efbda60b 100644
--- a/public/emoji/1f1f6.svg
+++ b/public/emoji/1f1f6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f7-1f1ea.png b/public/emoji/1f1f7-1f1ea.png
deleted file mode 100644
index 57f2bbe9df8c9..0000000000000
Binary files a/public/emoji/1f1f7-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1f7-1f1ea.svg b/public/emoji/1f1f7-1f1ea.svg
index 634a34f5c2577..ef15739e2d283 100644
--- a/public/emoji/1f1f7-1f1ea.svg
+++ b/public/emoji/1f1f7-1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f7-1f1f4.png b/public/emoji/1f1f7-1f1f4.png
deleted file mode 100644
index 3e48c447706f7..0000000000000
Binary files a/public/emoji/1f1f7-1f1f4.png and /dev/null differ
diff --git a/public/emoji/1f1f7-1f1f4.svg b/public/emoji/1f1f7-1f1f4.svg
index 20553c7714148..3b3b6ab864ac6 100644
--- a/public/emoji/1f1f7-1f1f4.svg
+++ b/public/emoji/1f1f7-1f1f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f7-1f1f8.png b/public/emoji/1f1f7-1f1f8.png
deleted file mode 100644
index 9df6c9a5235ea..0000000000000
Binary files a/public/emoji/1f1f7-1f1f8.png and /dev/null differ
diff --git a/public/emoji/1f1f7-1f1f8.svg b/public/emoji/1f1f7-1f1f8.svg
index 276ec5da58cf5..5a2a165288ea9 100644
--- a/public/emoji/1f1f7-1f1f8.svg
+++ b/public/emoji/1f1f7-1f1f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f7-1f1fa.png b/public/emoji/1f1f7-1f1fa.png
deleted file mode 100644
index e50c9db90e72c..0000000000000
Binary files a/public/emoji/1f1f7-1f1fa.png and /dev/null differ
diff --git a/public/emoji/1f1f7-1f1fa.svg b/public/emoji/1f1f7-1f1fa.svg
index ba85d44e80460..0c0949e69c02b 100644
--- a/public/emoji/1f1f7-1f1fa.svg
+++ b/public/emoji/1f1f7-1f1fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f7-1f1fc.png b/public/emoji/1f1f7-1f1fc.png
deleted file mode 100644
index c238c874e1d8d..0000000000000
Binary files a/public/emoji/1f1f7-1f1fc.png and /dev/null differ
diff --git a/public/emoji/1f1f7-1f1fc.svg b/public/emoji/1f1f7-1f1fc.svg
index d02fc12bacd07..11651f29b62ad 100644
--- a/public/emoji/1f1f7-1f1fc.svg
+++ b/public/emoji/1f1f7-1f1fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f7.png b/public/emoji/1f1f7.png
deleted file mode 100644
index 627892c912ac0..0000000000000
Binary files a/public/emoji/1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1f7.svg b/public/emoji/1f1f7.svg
index 1e8673ffa8251..545c7700fa35a 100644
--- a/public/emoji/1f1f7.svg
+++ b/public/emoji/1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1e6.png b/public/emoji/1f1f8-1f1e6.png
deleted file mode 100644
index 4941be7d198b2..0000000000000
Binary files a/public/emoji/1f1f8-1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1e6.svg b/public/emoji/1f1f8-1f1e6.svg
index 73d0b056b0df4..86d6527578edb 100644
--- a/public/emoji/1f1f8-1f1e6.svg
+++ b/public/emoji/1f1f8-1f1e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1e7.png b/public/emoji/1f1f8-1f1e7.png
deleted file mode 100644
index 7d8f1ac6130fe..0000000000000
Binary files a/public/emoji/1f1f8-1f1e7.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1e7.svg b/public/emoji/1f1f8-1f1e7.svg
index 1253585e93a29..f5629076f5892 100644
--- a/public/emoji/1f1f8-1f1e7.svg
+++ b/public/emoji/1f1f8-1f1e7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1e8.png b/public/emoji/1f1f8-1f1e8.png
deleted file mode 100644
index 6ae4d90765eea..0000000000000
Binary files a/public/emoji/1f1f8-1f1e8.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1e8.svg b/public/emoji/1f1f8-1f1e8.svg
index c1632e6964583..2bafbc20c6314 100644
--- a/public/emoji/1f1f8-1f1e8.svg
+++ b/public/emoji/1f1f8-1f1e8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1e9.png b/public/emoji/1f1f8-1f1e9.png
deleted file mode 100644
index 963be1b36fbee..0000000000000
Binary files a/public/emoji/1f1f8-1f1e9.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1e9.svg b/public/emoji/1f1f8-1f1e9.svg
index 4fe07ce327129..387ad34056b02 100644
--- a/public/emoji/1f1f8-1f1e9.svg
+++ b/public/emoji/1f1f8-1f1e9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1ea.png b/public/emoji/1f1f8-1f1ea.png
deleted file mode 100644
index fc0d0e0ce8987..0000000000000
Binary files a/public/emoji/1f1f8-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1ea.svg b/public/emoji/1f1f8-1f1ea.svg
index ccd38777ba3ed..a84f573df13c8 100644
--- a/public/emoji/1f1f8-1f1ea.svg
+++ b/public/emoji/1f1f8-1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1ec.png b/public/emoji/1f1f8-1f1ec.png
deleted file mode 100644
index de3c7737c425c..0000000000000
Binary files a/public/emoji/1f1f8-1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1ec.svg b/public/emoji/1f1f8-1f1ec.svg
index 91caccd4adc17..3d77757f4c594 100644
--- a/public/emoji/1f1f8-1f1ec.svg
+++ b/public/emoji/1f1f8-1f1ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1ed.png b/public/emoji/1f1f8-1f1ed.png
deleted file mode 100644
index 40cd9e44e962e..0000000000000
Binary files a/public/emoji/1f1f8-1f1ed.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1ed.svg b/public/emoji/1f1f8-1f1ed.svg
index ac8dfd1a03556..5ceca0d3f05f0 100644
--- a/public/emoji/1f1f8-1f1ed.svg
+++ b/public/emoji/1f1f8-1f1ed.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1ee.png b/public/emoji/1f1f8-1f1ee.png
deleted file mode 100644
index e308999dba248..0000000000000
Binary files a/public/emoji/1f1f8-1f1ee.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1ee.svg b/public/emoji/1f1f8-1f1ee.svg
index 85338c99ca88f..aa66a1599c565 100644
--- a/public/emoji/1f1f8-1f1ee.svg
+++ b/public/emoji/1f1f8-1f1ee.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1ef.png b/public/emoji/1f1f8-1f1ef.png
deleted file mode 100644
index 5884e648228c6..0000000000000
Binary files a/public/emoji/1f1f8-1f1ef.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1ef.svg b/public/emoji/1f1f8-1f1ef.svg
index e9f5672c6f8d3..f9a01310c6ff9 100644
--- a/public/emoji/1f1f8-1f1ef.svg
+++ b/public/emoji/1f1f8-1f1ef.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1f0.png b/public/emoji/1f1f8-1f1f0.png
deleted file mode 100644
index 4259d0e1418cb..0000000000000
Binary files a/public/emoji/1f1f8-1f1f0.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1f0.svg b/public/emoji/1f1f8-1f1f0.svg
index 5b0e543563d72..d3a88c1dae5d5 100644
--- a/public/emoji/1f1f8-1f1f0.svg
+++ b/public/emoji/1f1f8-1f1f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1f1.png b/public/emoji/1f1f8-1f1f1.png
deleted file mode 100644
index d2cc68830ab4c..0000000000000
Binary files a/public/emoji/1f1f8-1f1f1.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1f1.svg b/public/emoji/1f1f8-1f1f1.svg
index 50fafc27752de..a03423c129c37 100644
--- a/public/emoji/1f1f8-1f1f1.svg
+++ b/public/emoji/1f1f8-1f1f1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1f2.png b/public/emoji/1f1f8-1f1f2.png
deleted file mode 100644
index 03b8708754e27..0000000000000
Binary files a/public/emoji/1f1f8-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1f2.svg b/public/emoji/1f1f8-1f1f2.svg
index abe63183d39ab..d26d90e38c2c9 100644
--- a/public/emoji/1f1f8-1f1f2.svg
+++ b/public/emoji/1f1f8-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1f3.png b/public/emoji/1f1f8-1f1f3.png
deleted file mode 100644
index 5368bbe93df51..0000000000000
Binary files a/public/emoji/1f1f8-1f1f3.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1f3.svg b/public/emoji/1f1f8-1f1f3.svg
index 548243e3b395a..308ef034220d0 100644
--- a/public/emoji/1f1f8-1f1f3.svg
+++ b/public/emoji/1f1f8-1f1f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1f4.png b/public/emoji/1f1f8-1f1f4.png
deleted file mode 100644
index 68a0597365a49..0000000000000
Binary files a/public/emoji/1f1f8-1f1f4.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1f4.svg b/public/emoji/1f1f8-1f1f4.svg
index 967be6174a283..c205b1b37ba88 100644
--- a/public/emoji/1f1f8-1f1f4.svg
+++ b/public/emoji/1f1f8-1f1f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1f7.png b/public/emoji/1f1f8-1f1f7.png
deleted file mode 100644
index d325132703570..0000000000000
Binary files a/public/emoji/1f1f8-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1f7.svg b/public/emoji/1f1f8-1f1f7.svg
index 6348d1a785736..d2b6e0fb50817 100644
--- a/public/emoji/1f1f8-1f1f7.svg
+++ b/public/emoji/1f1f8-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1f8.png b/public/emoji/1f1f8-1f1f8.png
deleted file mode 100644
index 122977e798f17..0000000000000
Binary files a/public/emoji/1f1f8-1f1f8.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1f8.svg b/public/emoji/1f1f8-1f1f8.svg
index 9bbb66542400f..e18f9e697bbd6 100644
--- a/public/emoji/1f1f8-1f1f8.svg
+++ b/public/emoji/1f1f8-1f1f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1f9.png b/public/emoji/1f1f8-1f1f9.png
deleted file mode 100644
index f83a863d612eb..0000000000000
Binary files a/public/emoji/1f1f8-1f1f9.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1f9.svg b/public/emoji/1f1f8-1f1f9.svg
index 08a1d8fbb4099..2d5ef73c5c07d 100644
--- a/public/emoji/1f1f8-1f1f9.svg
+++ b/public/emoji/1f1f8-1f1f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1fb.png b/public/emoji/1f1f8-1f1fb.png
deleted file mode 100644
index efb83e2f253f1..0000000000000
Binary files a/public/emoji/1f1f8-1f1fb.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1fb.svg b/public/emoji/1f1f8-1f1fb.svg
index 9c93704758026..5081fb9482c2d 100644
--- a/public/emoji/1f1f8-1f1fb.svg
+++ b/public/emoji/1f1f8-1f1fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1fd.png b/public/emoji/1f1f8-1f1fd.png
deleted file mode 100644
index 94b760fbedffc..0000000000000
Binary files a/public/emoji/1f1f8-1f1fd.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1fd.svg b/public/emoji/1f1f8-1f1fd.svg
index b0cd97a077dd3..00d7eb4d57600 100644
--- a/public/emoji/1f1f8-1f1fd.svg
+++ b/public/emoji/1f1f8-1f1fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1fe.png b/public/emoji/1f1f8-1f1fe.png
deleted file mode 100644
index 09a8ee8f78cee..0000000000000
Binary files a/public/emoji/1f1f8-1f1fe.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1fe.svg b/public/emoji/1f1f8-1f1fe.svg
index 62fbea40bf266..d7c1df75a1f3e 100644
--- a/public/emoji/1f1f8-1f1fe.svg
+++ b/public/emoji/1f1f8-1f1fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8-1f1ff.png b/public/emoji/1f1f8-1f1ff.png
deleted file mode 100644
index f74e82ea1fdeb..0000000000000
Binary files a/public/emoji/1f1f8-1f1ff.png and /dev/null differ
diff --git a/public/emoji/1f1f8-1f1ff.svg b/public/emoji/1f1f8-1f1ff.svg
index deafce4e2c85c..d6c470dd07626 100644
--- a/public/emoji/1f1f8-1f1ff.svg
+++ b/public/emoji/1f1f8-1f1ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f8.png b/public/emoji/1f1f8.png
deleted file mode 100644
index 9d0dbf93af819..0000000000000
Binary files a/public/emoji/1f1f8.png and /dev/null differ
diff --git a/public/emoji/1f1f8.svg b/public/emoji/1f1f8.svg
index a39d2010ee301..a73e5074c2671 100644
--- a/public/emoji/1f1f8.svg
+++ b/public/emoji/1f1f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1e6.png b/public/emoji/1f1f9-1f1e6.png
deleted file mode 100644
index b44283e90e29b..0000000000000
Binary files a/public/emoji/1f1f9-1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1e6.svg b/public/emoji/1f1f9-1f1e6.svg
index 68e6e9ce7cb5a..84b5c1e7d95b9 100644
--- a/public/emoji/1f1f9-1f1e6.svg
+++ b/public/emoji/1f1f9-1f1e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1e8.png b/public/emoji/1f1f9-1f1e8.png
deleted file mode 100644
index 156b33d1ba648..0000000000000
Binary files a/public/emoji/1f1f9-1f1e8.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1e8.svg b/public/emoji/1f1f9-1f1e8.svg
index ba12e33df8fd5..5f2b42d62c40a 100644
--- a/public/emoji/1f1f9-1f1e8.svg
+++ b/public/emoji/1f1f9-1f1e8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1e9.png b/public/emoji/1f1f9-1f1e9.png
deleted file mode 100644
index ebe7f59282832..0000000000000
Binary files a/public/emoji/1f1f9-1f1e9.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1e9.svg b/public/emoji/1f1f9-1f1e9.svg
index 3976073fb36ea..0e48d2772a047 100644
--- a/public/emoji/1f1f9-1f1e9.svg
+++ b/public/emoji/1f1f9-1f1e9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1eb.png b/public/emoji/1f1f9-1f1eb.png
deleted file mode 100644
index a1a3ad68ee28c..0000000000000
Binary files a/public/emoji/1f1f9-1f1eb.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1eb.svg b/public/emoji/1f1f9-1f1eb.svg
index f374f23f69986..015fbf976efa5 100644
--- a/public/emoji/1f1f9-1f1eb.svg
+++ b/public/emoji/1f1f9-1f1eb.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1ec.png b/public/emoji/1f1f9-1f1ec.png
deleted file mode 100644
index 826b73c9ac519..0000000000000
Binary files a/public/emoji/1f1f9-1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1ec.svg b/public/emoji/1f1f9-1f1ec.svg
index 1c9e70f452336..e4dc6d6d3d01c 100644
--- a/public/emoji/1f1f9-1f1ec.svg
+++ b/public/emoji/1f1f9-1f1ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1ed.png b/public/emoji/1f1f9-1f1ed.png
deleted file mode 100644
index 93ff542c5a614..0000000000000
Binary files a/public/emoji/1f1f9-1f1ed.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1ed.svg b/public/emoji/1f1f9-1f1ed.svg
index d5a54a4d89da1..426a60c8e352c 100644
--- a/public/emoji/1f1f9-1f1ed.svg
+++ b/public/emoji/1f1f9-1f1ed.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1ef.png b/public/emoji/1f1f9-1f1ef.png
deleted file mode 100644
index 7a8a0b6190a5d..0000000000000
Binary files a/public/emoji/1f1f9-1f1ef.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1ef.svg b/public/emoji/1f1f9-1f1ef.svg
index a7d29de9d08b4..126bc7c5aabf5 100644
--- a/public/emoji/1f1f9-1f1ef.svg
+++ b/public/emoji/1f1f9-1f1ef.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1f0.png b/public/emoji/1f1f9-1f1f0.png
deleted file mode 100644
index 2fa5a21b1bb2d..0000000000000
Binary files a/public/emoji/1f1f9-1f1f0.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1f0.svg b/public/emoji/1f1f9-1f1f0.svg
index 7c869591e25fc..ba9c6a1a6aadd 100644
--- a/public/emoji/1f1f9-1f1f0.svg
+++ b/public/emoji/1f1f9-1f1f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1f1.png b/public/emoji/1f1f9-1f1f1.png
deleted file mode 100644
index 5b120eccc6f79..0000000000000
Binary files a/public/emoji/1f1f9-1f1f1.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1f1.svg b/public/emoji/1f1f9-1f1f1.svg
index 43e983ac30a21..1da3e650298cf 100644
--- a/public/emoji/1f1f9-1f1f1.svg
+++ b/public/emoji/1f1f9-1f1f1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1f2.png b/public/emoji/1f1f9-1f1f2.png
deleted file mode 100644
index c3c4f53230274..0000000000000
Binary files a/public/emoji/1f1f9-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1f2.svg b/public/emoji/1f1f9-1f1f2.svg
index 785f91cbbc215..5dcd737a7a502 100644
--- a/public/emoji/1f1f9-1f1f2.svg
+++ b/public/emoji/1f1f9-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1f3.png b/public/emoji/1f1f9-1f1f3.png
deleted file mode 100644
index 58ef161229fe7..0000000000000
Binary files a/public/emoji/1f1f9-1f1f3.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1f3.svg b/public/emoji/1f1f9-1f1f3.svg
index b27930a659314..09b34992ae7f0 100644
--- a/public/emoji/1f1f9-1f1f3.svg
+++ b/public/emoji/1f1f9-1f1f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1f4.png b/public/emoji/1f1f9-1f1f4.png
deleted file mode 100644
index 1ffa7bb9d191b..0000000000000
Binary files a/public/emoji/1f1f9-1f1f4.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1f4.svg b/public/emoji/1f1f9-1f1f4.svg
index 4adcb03430e5b..cd4ae3094b5c3 100644
--- a/public/emoji/1f1f9-1f1f4.svg
+++ b/public/emoji/1f1f9-1f1f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1f7.png b/public/emoji/1f1f9-1f1f7.png
deleted file mode 100644
index 325251fae8849..0000000000000
Binary files a/public/emoji/1f1f9-1f1f7.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1f7.svg b/public/emoji/1f1f9-1f1f7.svg
index 57ab90b7ddc14..d8fd78213ec4c 100644
--- a/public/emoji/1f1f9-1f1f7.svg
+++ b/public/emoji/1f1f9-1f1f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1f9.png b/public/emoji/1f1f9-1f1f9.png
deleted file mode 100644
index ed3bb39a3001f..0000000000000
Binary files a/public/emoji/1f1f9-1f1f9.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1f9.svg b/public/emoji/1f1f9-1f1f9.svg
index d0322a71a8a18..00bf8643a6ad5 100644
--- a/public/emoji/1f1f9-1f1f9.svg
+++ b/public/emoji/1f1f9-1f1f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1fb.png b/public/emoji/1f1f9-1f1fb.png
deleted file mode 100644
index e82c65c7bb980..0000000000000
Binary files a/public/emoji/1f1f9-1f1fb.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1fb.svg b/public/emoji/1f1f9-1f1fb.svg
index e911e865f6403..1a3d48f7e3990 100644
--- a/public/emoji/1f1f9-1f1fb.svg
+++ b/public/emoji/1f1f9-1f1fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1fc.png b/public/emoji/1f1f9-1f1fc.png
deleted file mode 100644
index 3a8f00b592886..0000000000000
Binary files a/public/emoji/1f1f9-1f1fc.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1fc.svg b/public/emoji/1f1f9-1f1fc.svg
index 8ac4ed8312935..948f05efe467c 100644
--- a/public/emoji/1f1f9-1f1fc.svg
+++ b/public/emoji/1f1f9-1f1fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9-1f1ff.png b/public/emoji/1f1f9-1f1ff.png
deleted file mode 100644
index 2a020853d4edc..0000000000000
Binary files a/public/emoji/1f1f9-1f1ff.png and /dev/null differ
diff --git a/public/emoji/1f1f9-1f1ff.svg b/public/emoji/1f1f9-1f1ff.svg
index 9e65b4b844a79..8a5cbf68042c6 100644
--- a/public/emoji/1f1f9-1f1ff.svg
+++ b/public/emoji/1f1f9-1f1ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1f9.png b/public/emoji/1f1f9.png
deleted file mode 100644
index 2d882f66b19b6..0000000000000
Binary files a/public/emoji/1f1f9.png and /dev/null differ
diff --git a/public/emoji/1f1f9.svg b/public/emoji/1f1f9.svg
index 6d8e6eda8230e..c230bbcfc0f6a 100644
--- a/public/emoji/1f1f9.svg
+++ b/public/emoji/1f1f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fa-1f1e6.png b/public/emoji/1f1fa-1f1e6.png
deleted file mode 100644
index cd84d1bbd36ce..0000000000000
Binary files a/public/emoji/1f1fa-1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1fa-1f1e6.svg b/public/emoji/1f1fa-1f1e6.svg
index 3d4e0e3b59bb5..6d7254dced699 100644
--- a/public/emoji/1f1fa-1f1e6.svg
+++ b/public/emoji/1f1fa-1f1e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fa-1f1ec.png b/public/emoji/1f1fa-1f1ec.png
deleted file mode 100644
index dc97690eb55f0..0000000000000
Binary files a/public/emoji/1f1fa-1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1fa-1f1ec.svg b/public/emoji/1f1fa-1f1ec.svg
index 450937689ad54..cc3422c620806 100644
--- a/public/emoji/1f1fa-1f1ec.svg
+++ b/public/emoji/1f1fa-1f1ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fa-1f1f2.png b/public/emoji/1f1fa-1f1f2.png
deleted file mode 100644
index 4a7ee3cdf13c9..0000000000000
Binary files a/public/emoji/1f1fa-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1fa-1f1f2.svg b/public/emoji/1f1fa-1f1f2.svg
index 48488ea2452c4..a7e325796a5de 100644
--- a/public/emoji/1f1fa-1f1f2.svg
+++ b/public/emoji/1f1fa-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fa-1f1f3.svg b/public/emoji/1f1fa-1f1f3.svg
new file mode 100644
index 0000000000000..825b32daca3b9
--- /dev/null
+++ b/public/emoji/1f1fa-1f1f3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f1fa-1f1f8.png b/public/emoji/1f1fa-1f1f8.png
deleted file mode 100644
index 9f730305860c7..0000000000000
Binary files a/public/emoji/1f1fa-1f1f8.png and /dev/null differ
diff --git a/public/emoji/1f1fa-1f1f8.svg b/public/emoji/1f1fa-1f1f8.svg
index 28e8578e175cc..a7e325796a5de 100644
--- a/public/emoji/1f1fa-1f1f8.svg
+++ b/public/emoji/1f1fa-1f1f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fa-1f1fe.png b/public/emoji/1f1fa-1f1fe.png
deleted file mode 100644
index b8002a697a6a4..0000000000000
Binary files a/public/emoji/1f1fa-1f1fe.png and /dev/null differ
diff --git a/public/emoji/1f1fa-1f1fe.svg b/public/emoji/1f1fa-1f1fe.svg
index bc4ad70037aea..dfd2535a0967c 100644
--- a/public/emoji/1f1fa-1f1fe.svg
+++ b/public/emoji/1f1fa-1f1fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fa-1f1ff.png b/public/emoji/1f1fa-1f1ff.png
deleted file mode 100644
index d56ca9bc42484..0000000000000
Binary files a/public/emoji/1f1fa-1f1ff.png and /dev/null differ
diff --git a/public/emoji/1f1fa-1f1ff.svg b/public/emoji/1f1fa-1f1ff.svg
index a6bb6cbfd2912..b9997256eb4e4 100644
--- a/public/emoji/1f1fa-1f1ff.svg
+++ b/public/emoji/1f1fa-1f1ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fa.png b/public/emoji/1f1fa.png
deleted file mode 100644
index ae0cabeb1c6ec..0000000000000
Binary files a/public/emoji/1f1fa.png and /dev/null differ
diff --git a/public/emoji/1f1fa.svg b/public/emoji/1f1fa.svg
index 9966d13230d87..1e7d2986969b8 100644
--- a/public/emoji/1f1fa.svg
+++ b/public/emoji/1f1fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fb-1f1e6.png b/public/emoji/1f1fb-1f1e6.png
deleted file mode 100644
index ddaf5e3141bfb..0000000000000
Binary files a/public/emoji/1f1fb-1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1fb-1f1e6.svg b/public/emoji/1f1fb-1f1e6.svg
index d0078effe3a92..af4d6960342d6 100644
--- a/public/emoji/1f1fb-1f1e6.svg
+++ b/public/emoji/1f1fb-1f1e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fb-1f1e8.png b/public/emoji/1f1fb-1f1e8.png
deleted file mode 100644
index 43703c62a716a..0000000000000
Binary files a/public/emoji/1f1fb-1f1e8.png and /dev/null differ
diff --git a/public/emoji/1f1fb-1f1e8.svg b/public/emoji/1f1fb-1f1e8.svg
index 5cafb43d9d3c3..06ffac6988d8f 100644
--- a/public/emoji/1f1fb-1f1e8.svg
+++ b/public/emoji/1f1fb-1f1e8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fb-1f1ea.png b/public/emoji/1f1fb-1f1ea.png
deleted file mode 100644
index 1b62796824ecd..0000000000000
Binary files a/public/emoji/1f1fb-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1fb-1f1ea.svg b/public/emoji/1f1fb-1f1ea.svg
index 8274ed0b4c469..a4ed2d2aa19ab 100644
--- a/public/emoji/1f1fb-1f1ea.svg
+++ b/public/emoji/1f1fb-1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fb-1f1ec.png b/public/emoji/1f1fb-1f1ec.png
deleted file mode 100644
index 536f780f1c025..0000000000000
Binary files a/public/emoji/1f1fb-1f1ec.png and /dev/null differ
diff --git a/public/emoji/1f1fb-1f1ec.svg b/public/emoji/1f1fb-1f1ec.svg
index e5afefcad8038..6357a52facdc6 100644
--- a/public/emoji/1f1fb-1f1ec.svg
+++ b/public/emoji/1f1fb-1f1ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fb-1f1ee.png b/public/emoji/1f1fb-1f1ee.png
deleted file mode 100644
index 64102012cfec7..0000000000000
Binary files a/public/emoji/1f1fb-1f1ee.png and /dev/null differ
diff --git a/public/emoji/1f1fb-1f1ee.svg b/public/emoji/1f1fb-1f1ee.svg
index 2364a0c8c2e6a..2f0b9319457f0 100644
--- a/public/emoji/1f1fb-1f1ee.svg
+++ b/public/emoji/1f1fb-1f1ee.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fb-1f1f3.png b/public/emoji/1f1fb-1f1f3.png
deleted file mode 100644
index 427036046b667..0000000000000
Binary files a/public/emoji/1f1fb-1f1f3.png and /dev/null differ
diff --git a/public/emoji/1f1fb-1f1f3.svg b/public/emoji/1f1fb-1f1f3.svg
index a35b203fd6860..d0b7daeb44f25 100644
--- a/public/emoji/1f1fb-1f1f3.svg
+++ b/public/emoji/1f1fb-1f1f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fb-1f1fa.png b/public/emoji/1f1fb-1f1fa.png
deleted file mode 100644
index 706eba440709c..0000000000000
Binary files a/public/emoji/1f1fb-1f1fa.png and /dev/null differ
diff --git a/public/emoji/1f1fb-1f1fa.svg b/public/emoji/1f1fb-1f1fa.svg
index 51ac13f4f6ee1..7595f2f72dab9 100644
--- a/public/emoji/1f1fb-1f1fa.svg
+++ b/public/emoji/1f1fb-1f1fa.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fb.png b/public/emoji/1f1fb.png
deleted file mode 100644
index e01e179b451d9..0000000000000
Binary files a/public/emoji/1f1fb.png and /dev/null differ
diff --git a/public/emoji/1f1fb.svg b/public/emoji/1f1fb.svg
index fd7586dca7b80..946cf36a1b00c 100644
--- a/public/emoji/1f1fb.svg
+++ b/public/emoji/1f1fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fc-1f1eb.png b/public/emoji/1f1fc-1f1eb.png
deleted file mode 100644
index 70c761036bd30..0000000000000
Binary files a/public/emoji/1f1fc-1f1eb.png and /dev/null differ
diff --git a/public/emoji/1f1fc-1f1eb.svg b/public/emoji/1f1fc-1f1eb.svg
index 16bfba0cfefda..b7d01ea663b4a 100644
--- a/public/emoji/1f1fc-1f1eb.svg
+++ b/public/emoji/1f1fc-1f1eb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fc-1f1f8.png b/public/emoji/1f1fc-1f1f8.png
deleted file mode 100644
index a1ea07031418d..0000000000000
Binary files a/public/emoji/1f1fc-1f1f8.png and /dev/null differ
diff --git a/public/emoji/1f1fc-1f1f8.svg b/public/emoji/1f1fc-1f1f8.svg
index 67b769ca6e257..6e11aab766e75 100644
--- a/public/emoji/1f1fc-1f1f8.svg
+++ b/public/emoji/1f1fc-1f1f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fc.png b/public/emoji/1f1fc.png
deleted file mode 100644
index e8f614ac847c8..0000000000000
Binary files a/public/emoji/1f1fc.png and /dev/null differ
diff --git a/public/emoji/1f1fc.svg b/public/emoji/1f1fc.svg
index 3f2ce79fd6e1b..aed47a8820dbd 100644
--- a/public/emoji/1f1fc.svg
+++ b/public/emoji/1f1fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fd-1f1f0.png b/public/emoji/1f1fd-1f1f0.png
deleted file mode 100644
index e587a446632fd..0000000000000
Binary files a/public/emoji/1f1fd-1f1f0.png and /dev/null differ
diff --git a/public/emoji/1f1fd-1f1f0.svg b/public/emoji/1f1fd-1f1f0.svg
index 4a771e9381073..4499d2cfd230a 100644
--- a/public/emoji/1f1fd-1f1f0.svg
+++ b/public/emoji/1f1fd-1f1f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fd.png b/public/emoji/1f1fd.png
deleted file mode 100644
index e3bedba0be09b..0000000000000
Binary files a/public/emoji/1f1fd.png and /dev/null differ
diff --git a/public/emoji/1f1fd.svg b/public/emoji/1f1fd.svg
index 0b95b597c0cec..9af21b8df4959 100644
--- a/public/emoji/1f1fd.svg
+++ b/public/emoji/1f1fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fe-1f1ea.png b/public/emoji/1f1fe-1f1ea.png
deleted file mode 100644
index eadfebd5f6753..0000000000000
Binary files a/public/emoji/1f1fe-1f1ea.png and /dev/null differ
diff --git a/public/emoji/1f1fe-1f1ea.svg b/public/emoji/1f1fe-1f1ea.svg
index beeca622936a5..667d2ae899a45 100644
--- a/public/emoji/1f1fe-1f1ea.svg
+++ b/public/emoji/1f1fe-1f1ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1fe-1f1f9.png b/public/emoji/1f1fe-1f1f9.png
deleted file mode 100644
index c81fa6d886edf..0000000000000
Binary files a/public/emoji/1f1fe-1f1f9.png and /dev/null differ
diff --git a/public/emoji/1f1fe-1f1f9.svg b/public/emoji/1f1fe-1f1f9.svg
index b2627bf9b9950..5560649cbaa0a 100644
--- a/public/emoji/1f1fe-1f1f9.svg
+++ b/public/emoji/1f1fe-1f1f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml MAYOTTE
diff --git a/public/emoji/1f1fe.png b/public/emoji/1f1fe.png
deleted file mode 100644
index 9bfa7f2db9d77..0000000000000
Binary files a/public/emoji/1f1fe.png and /dev/null differ
diff --git a/public/emoji/1f1fe.svg b/public/emoji/1f1fe.svg
index fe9e109c05209..49eecb7d67259 100644
--- a/public/emoji/1f1fe.svg
+++ b/public/emoji/1f1fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ff-1f1e6.png b/public/emoji/1f1ff-1f1e6.png
deleted file mode 100644
index f397ef5072fc7..0000000000000
Binary files a/public/emoji/1f1ff-1f1e6.png and /dev/null differ
diff --git a/public/emoji/1f1ff-1f1e6.svg b/public/emoji/1f1ff-1f1e6.svg
index 5253e636009d7..cb41b2ef6fb1d 100644
--- a/public/emoji/1f1ff-1f1e6.svg
+++ b/public/emoji/1f1ff-1f1e6.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ff-1f1f2.png b/public/emoji/1f1ff-1f1f2.png
deleted file mode 100644
index 2494a31f662fd..0000000000000
Binary files a/public/emoji/1f1ff-1f1f2.png and /dev/null differ
diff --git a/public/emoji/1f1ff-1f1f2.svg b/public/emoji/1f1ff-1f1f2.svg
index 16306c739335e..25e86be0320f0 100644
--- a/public/emoji/1f1ff-1f1f2.svg
+++ b/public/emoji/1f1ff-1f1f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ff-1f1fc.png b/public/emoji/1f1ff-1f1fc.png
deleted file mode 100644
index e09b9652be632..0000000000000
Binary files a/public/emoji/1f1ff-1f1fc.png and /dev/null differ
diff --git a/public/emoji/1f1ff-1f1fc.svg b/public/emoji/1f1ff-1f1fc.svg
index 77f539e5f4984..aeb9a3c81c35e 100644
--- a/public/emoji/1f1ff-1f1fc.svg
+++ b/public/emoji/1f1ff-1f1fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f1ff.png b/public/emoji/1f1ff.png
deleted file mode 100644
index 5bf03f100ce20..0000000000000
Binary files a/public/emoji/1f1ff.png and /dev/null differ
diff --git a/public/emoji/1f1ff.svg b/public/emoji/1f1ff.svg
index 133cd3cf3cb4e..f8f798989151a 100644
--- a/public/emoji/1f1ff.svg
+++ b/public/emoji/1f1ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f201.png b/public/emoji/1f201.png
deleted file mode 100644
index 6450eb44d90c3..0000000000000
Binary files a/public/emoji/1f201.png and /dev/null differ
diff --git a/public/emoji/1f201.svg b/public/emoji/1f201.svg
index 44714e7ea35a7..824d957c38015 100644
--- a/public/emoji/1f201.svg
+++ b/public/emoji/1f201.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f202.png b/public/emoji/1f202.png
deleted file mode 100644
index 900f9633247b6..0000000000000
Binary files a/public/emoji/1f202.png and /dev/null differ
diff --git a/public/emoji/1f202.svg b/public/emoji/1f202.svg
index a6e36bc7d92d3..b2c039cb7735e 100644
--- a/public/emoji/1f202.svg
+++ b/public/emoji/1f202.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f21a.png b/public/emoji/1f21a.png
deleted file mode 100644
index d3a19b420de54..0000000000000
Binary files a/public/emoji/1f21a.png and /dev/null differ
diff --git a/public/emoji/1f21a.svg b/public/emoji/1f21a.svg
index 74c92f22c7d3f..1992f1d4948c4 100644
--- a/public/emoji/1f21a.svg
+++ b/public/emoji/1f21a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f22f.png b/public/emoji/1f22f.png
deleted file mode 100644
index 078e23e4ff349..0000000000000
Binary files a/public/emoji/1f22f.png and /dev/null differ
diff --git a/public/emoji/1f22f.svg b/public/emoji/1f22f.svg
index 07d785adfbf3d..265e896a919fd 100644
--- a/public/emoji/1f22f.svg
+++ b/public/emoji/1f22f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f232.png b/public/emoji/1f232.png
deleted file mode 100644
index 4c704e03433c3..0000000000000
Binary files a/public/emoji/1f232.png and /dev/null differ
diff --git a/public/emoji/1f232.svg b/public/emoji/1f232.svg
index 5cc5826cef493..442d11dcea5d3 100644
--- a/public/emoji/1f232.svg
+++ b/public/emoji/1f232.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f233.png b/public/emoji/1f233.png
deleted file mode 100644
index 47966c1ea935a..0000000000000
Binary files a/public/emoji/1f233.png and /dev/null differ
diff --git a/public/emoji/1f233.svg b/public/emoji/1f233.svg
index ae8c7bdad5e51..c9de760809721 100644
--- a/public/emoji/1f233.svg
+++ b/public/emoji/1f233.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f234.png b/public/emoji/1f234.png
deleted file mode 100644
index 8375ad9d9af80..0000000000000
Binary files a/public/emoji/1f234.png and /dev/null differ
diff --git a/public/emoji/1f234.svg b/public/emoji/1f234.svg
index ea346b6664b11..8d24fe0b14ec7 100644
--- a/public/emoji/1f234.svg
+++ b/public/emoji/1f234.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f235.png b/public/emoji/1f235.png
deleted file mode 100644
index f9dea8b8833fc..0000000000000
Binary files a/public/emoji/1f235.png and /dev/null differ
diff --git a/public/emoji/1f235.svg b/public/emoji/1f235.svg
index ed4265dc3bd05..69992bd9b24a0 100644
--- a/public/emoji/1f235.svg
+++ b/public/emoji/1f235.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f236.png b/public/emoji/1f236.png
deleted file mode 100644
index a4510de41c03d..0000000000000
Binary files a/public/emoji/1f236.png and /dev/null differ
diff --git a/public/emoji/1f236.svg b/public/emoji/1f236.svg
index 8d2d4e38f5e76..161b1389886a2 100644
--- a/public/emoji/1f236.svg
+++ b/public/emoji/1f236.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f237.png b/public/emoji/1f237.png
deleted file mode 100644
index c41bd36a26a24..0000000000000
Binary files a/public/emoji/1f237.png and /dev/null differ
diff --git a/public/emoji/1f237.svg b/public/emoji/1f237.svg
index 01c87d77594bc..a0590d6a3de3b 100644
--- a/public/emoji/1f237.svg
+++ b/public/emoji/1f237.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f238.png b/public/emoji/1f238.png
deleted file mode 100644
index 6b7af0ee22298..0000000000000
Binary files a/public/emoji/1f238.png and /dev/null differ
diff --git a/public/emoji/1f238.svg b/public/emoji/1f238.svg
index 2bec669007466..913f6ee104150 100644
--- a/public/emoji/1f238.svg
+++ b/public/emoji/1f238.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f239.png b/public/emoji/1f239.png
deleted file mode 100644
index c4f837fe68451..0000000000000
Binary files a/public/emoji/1f239.png and /dev/null differ
diff --git a/public/emoji/1f239.svg b/public/emoji/1f239.svg
index c989838cc6b3f..a85431febca04 100644
--- a/public/emoji/1f239.svg
+++ b/public/emoji/1f239.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f23a.png b/public/emoji/1f23a.png
deleted file mode 100644
index d21cb30eaf319..0000000000000
Binary files a/public/emoji/1f23a.png and /dev/null differ
diff --git a/public/emoji/1f23a.svg b/public/emoji/1f23a.svg
index 2c743f7f91931..3b7447811b754 100644
--- a/public/emoji/1f23a.svg
+++ b/public/emoji/1f23a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f250.png b/public/emoji/1f250.png
deleted file mode 100644
index 0c0d589caf05f..0000000000000
Binary files a/public/emoji/1f250.png and /dev/null differ
diff --git a/public/emoji/1f250.svg b/public/emoji/1f250.svg
index 0518c4af6a67c..b33576a7a9815 100644
--- a/public/emoji/1f250.svg
+++ b/public/emoji/1f250.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f251.png b/public/emoji/1f251.png
deleted file mode 100644
index 8afd7ce99cfb0..0000000000000
Binary files a/public/emoji/1f251.png and /dev/null differ
diff --git a/public/emoji/1f251.svg b/public/emoji/1f251.svg
index 4da18fa1981c1..c47e05b21864f 100644
--- a/public/emoji/1f251.svg
+++ b/public/emoji/1f251.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f300.png b/public/emoji/1f300.png
deleted file mode 100644
index ff00b1afe706c..0000000000000
Binary files a/public/emoji/1f300.png and /dev/null differ
diff --git a/public/emoji/1f300.svg b/public/emoji/1f300.svg
index 00f6030869e7e..2dc5286f77c85 100644
--- a/public/emoji/1f300.svg
+++ b/public/emoji/1f300.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f301.png b/public/emoji/1f301.png
deleted file mode 100644
index 57702d8d3acc9..0000000000000
Binary files a/public/emoji/1f301.png and /dev/null differ
diff --git a/public/emoji/1f301.svg b/public/emoji/1f301.svg
index a94c77a88c7e6..0ab7d698b49df 100644
--- a/public/emoji/1f301.svg
+++ b/public/emoji/1f301.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f302.png b/public/emoji/1f302.png
deleted file mode 100644
index ecefba9e446ae..0000000000000
Binary files a/public/emoji/1f302.png and /dev/null differ
diff --git a/public/emoji/1f302.svg b/public/emoji/1f302.svg
index 2e02d28950018..881160d3a428e 100644
--- a/public/emoji/1f302.svg
+++ b/public/emoji/1f302.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f303.png b/public/emoji/1f303.png
deleted file mode 100644
index ca2018f456d6f..0000000000000
Binary files a/public/emoji/1f303.png and /dev/null differ
diff --git a/public/emoji/1f303.svg b/public/emoji/1f303.svg
index cb533e58f462a..958318bc8c5dd 100644
--- a/public/emoji/1f303.svg
+++ b/public/emoji/1f303.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f304.png b/public/emoji/1f304.png
deleted file mode 100644
index 2b99307344d5c..0000000000000
Binary files a/public/emoji/1f304.png and /dev/null differ
diff --git a/public/emoji/1f304.svg b/public/emoji/1f304.svg
index 1d032f082835d..9b9aab4d62d66 100644
--- a/public/emoji/1f304.svg
+++ b/public/emoji/1f304.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f305.png b/public/emoji/1f305.png
deleted file mode 100644
index 4ad36003c2046..0000000000000
Binary files a/public/emoji/1f305.png and /dev/null differ
diff --git a/public/emoji/1f305.svg b/public/emoji/1f305.svg
index dfc8498031af3..df6b2f0d565fb 100644
--- a/public/emoji/1f305.svg
+++ b/public/emoji/1f305.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f306.png b/public/emoji/1f306.png
deleted file mode 100644
index 80cdff7cf5dbd..0000000000000
Binary files a/public/emoji/1f306.png and /dev/null differ
diff --git a/public/emoji/1f306.svg b/public/emoji/1f306.svg
index 0bf2b32a9aeae..49a62d499013b 100644
--- a/public/emoji/1f306.svg
+++ b/public/emoji/1f306.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f307.png b/public/emoji/1f307.png
deleted file mode 100644
index 7cded0ba55b1c..0000000000000
Binary files a/public/emoji/1f307.png and /dev/null differ
diff --git a/public/emoji/1f307.svg b/public/emoji/1f307.svg
index d6648a49023a4..03edebae16070 100644
--- a/public/emoji/1f307.svg
+++ b/public/emoji/1f307.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f308.png b/public/emoji/1f308.png
deleted file mode 100644
index 154735d7147bc..0000000000000
Binary files a/public/emoji/1f308.png and /dev/null differ
diff --git a/public/emoji/1f308.svg b/public/emoji/1f308.svg
index 22ae3f5f848b6..000d18debd76b 100644
--- a/public/emoji/1f308.svg
+++ b/public/emoji/1f308.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f309.png b/public/emoji/1f309.png
deleted file mode 100644
index 1d444e0be65b9..0000000000000
Binary files a/public/emoji/1f309.png and /dev/null differ
diff --git a/public/emoji/1f309.svg b/public/emoji/1f309.svg
index cdaab3191fa9c..20776394b691a 100644
--- a/public/emoji/1f309.svg
+++ b/public/emoji/1f309.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f30a.png b/public/emoji/1f30a.png
deleted file mode 100644
index 45ff1e8770303..0000000000000
Binary files a/public/emoji/1f30a.png and /dev/null differ
diff --git a/public/emoji/1f30a.svg b/public/emoji/1f30a.svg
index efdfafca58765..e72edf1e6a858 100644
--- a/public/emoji/1f30a.svg
+++ b/public/emoji/1f30a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f30b.png b/public/emoji/1f30b.png
deleted file mode 100644
index 931d569294c53..0000000000000
Binary files a/public/emoji/1f30b.png and /dev/null differ
diff --git a/public/emoji/1f30b.svg b/public/emoji/1f30b.svg
index 51ce7a82efa4c..9d4ca181812e7 100644
--- a/public/emoji/1f30b.svg
+++ b/public/emoji/1f30b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f30c.png b/public/emoji/1f30c.png
deleted file mode 100644
index b2b8ac59c5e91..0000000000000
Binary files a/public/emoji/1f30c.png and /dev/null differ
diff --git a/public/emoji/1f30c.svg b/public/emoji/1f30c.svg
index de7a0212d6837..d6764f50fe41c 100644
--- a/public/emoji/1f30c.svg
+++ b/public/emoji/1f30c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f30d.png b/public/emoji/1f30d.png
deleted file mode 100644
index 66c3348c23a07..0000000000000
Binary files a/public/emoji/1f30d.png and /dev/null differ
diff --git a/public/emoji/1f30d.svg b/public/emoji/1f30d.svg
index efe3dee5d403d..d34b7012d191a 100644
--- a/public/emoji/1f30d.svg
+++ b/public/emoji/1f30d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f30e.png b/public/emoji/1f30e.png
deleted file mode 100644
index 538c3cddd68ea..0000000000000
Binary files a/public/emoji/1f30e.png and /dev/null differ
diff --git a/public/emoji/1f30e.svg b/public/emoji/1f30e.svg
index 96eb2c4a4bede..609dd5c938887 100644
--- a/public/emoji/1f30e.svg
+++ b/public/emoji/1f30e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f30f.png b/public/emoji/1f30f.png
deleted file mode 100644
index d8df97fec3c42..0000000000000
Binary files a/public/emoji/1f30f.png and /dev/null differ
diff --git a/public/emoji/1f30f.svg b/public/emoji/1f30f.svg
index 3766698ba5c73..21b702ddbe8cb 100644
--- a/public/emoji/1f30f.svg
+++ b/public/emoji/1f30f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f310.png b/public/emoji/1f310.png
deleted file mode 100644
index 82450c1a4ba75..0000000000000
Binary files a/public/emoji/1f310.png and /dev/null differ
diff --git a/public/emoji/1f310.svg b/public/emoji/1f310.svg
index 5290ca39f7787..fa1e93b6c9f18 100644
--- a/public/emoji/1f310.svg
+++ b/public/emoji/1f310.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f311.png b/public/emoji/1f311.png
deleted file mode 100644
index ecff72caa42b2..0000000000000
Binary files a/public/emoji/1f311.png and /dev/null differ
diff --git a/public/emoji/1f311.svg b/public/emoji/1f311.svg
index 78fd41ea0680a..6b7dd3d8df7b5 100644
--- a/public/emoji/1f311.svg
+++ b/public/emoji/1f311.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f312.png b/public/emoji/1f312.png
deleted file mode 100644
index 687125173d93d..0000000000000
Binary files a/public/emoji/1f312.png and /dev/null differ
diff --git a/public/emoji/1f312.svg b/public/emoji/1f312.svg
index 7bae646dedf10..6b7680e369f09 100644
--- a/public/emoji/1f312.svg
+++ b/public/emoji/1f312.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f313.png b/public/emoji/1f313.png
deleted file mode 100644
index 5dccaf72a4f59..0000000000000
Binary files a/public/emoji/1f313.png and /dev/null differ
diff --git a/public/emoji/1f313.svg b/public/emoji/1f313.svg
index 2a604a0f77cfe..8ade662c72655 100644
--- a/public/emoji/1f313.svg
+++ b/public/emoji/1f313.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f314.png b/public/emoji/1f314.png
deleted file mode 100644
index 3a80815631828..0000000000000
Binary files a/public/emoji/1f314.png and /dev/null differ
diff --git a/public/emoji/1f314.svg b/public/emoji/1f314.svg
index 8fd4cf6a78737..1609b18e96e47 100644
--- a/public/emoji/1f314.svg
+++ b/public/emoji/1f314.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f315.png b/public/emoji/1f315.png
deleted file mode 100644
index c9a2d6aa7c9c7..0000000000000
Binary files a/public/emoji/1f315.png and /dev/null differ
diff --git a/public/emoji/1f315.svg b/public/emoji/1f315.svg
index cdcbea5971abf..e0143639f3250 100644
--- a/public/emoji/1f315.svg
+++ b/public/emoji/1f315.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f316.png b/public/emoji/1f316.png
deleted file mode 100644
index 24e1626611923..0000000000000
Binary files a/public/emoji/1f316.png and /dev/null differ
diff --git a/public/emoji/1f316.svg b/public/emoji/1f316.svg
index 0e1aa7b986de3..c7a3390eb092a 100644
--- a/public/emoji/1f316.svg
+++ b/public/emoji/1f316.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f317.png b/public/emoji/1f317.png
deleted file mode 100644
index 0842a0dd40812..0000000000000
Binary files a/public/emoji/1f317.png and /dev/null differ
diff --git a/public/emoji/1f317.svg b/public/emoji/1f317.svg
index fe9e6db9d5ffd..2c63c0179d143 100644
--- a/public/emoji/1f317.svg
+++ b/public/emoji/1f317.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f318.png b/public/emoji/1f318.png
deleted file mode 100644
index cf68706b871d5..0000000000000
Binary files a/public/emoji/1f318.png and /dev/null differ
diff --git a/public/emoji/1f318.svg b/public/emoji/1f318.svg
index 0cc59a6d05479..0cd9693b57441 100644
--- a/public/emoji/1f318.svg
+++ b/public/emoji/1f318.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f319.png b/public/emoji/1f319.png
deleted file mode 100644
index 765420ecec777..0000000000000
Binary files a/public/emoji/1f319.png and /dev/null differ
diff --git a/public/emoji/1f319.svg b/public/emoji/1f319.svg
index 3fd5b28f936b9..a05283d37cdab 100644
--- a/public/emoji/1f319.svg
+++ b/public/emoji/1f319.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f31a.png b/public/emoji/1f31a.png
deleted file mode 100644
index 150dd12400c05..0000000000000
Binary files a/public/emoji/1f31a.png and /dev/null differ
diff --git a/public/emoji/1f31a.svg b/public/emoji/1f31a.svg
index 201d831f2ae8a..ea21d3f3d7b3c 100644
--- a/public/emoji/1f31a.svg
+++ b/public/emoji/1f31a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f31b.png b/public/emoji/1f31b.png
deleted file mode 100644
index cd8a3d7acd8c0..0000000000000
Binary files a/public/emoji/1f31b.png and /dev/null differ
diff --git a/public/emoji/1f31b.svg b/public/emoji/1f31b.svg
index 1f67f817da2b5..14707c9d2c776 100644
--- a/public/emoji/1f31b.svg
+++ b/public/emoji/1f31b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f31c.png b/public/emoji/1f31c.png
deleted file mode 100644
index 94099343c5d85..0000000000000
Binary files a/public/emoji/1f31c.png and /dev/null differ
diff --git a/public/emoji/1f31c.svg b/public/emoji/1f31c.svg
index 53b98ca502e8f..b1c8b52509a0d 100644
--- a/public/emoji/1f31c.svg
+++ b/public/emoji/1f31c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f31d.png b/public/emoji/1f31d.png
deleted file mode 100644
index a5c25bbaf64cb..0000000000000
Binary files a/public/emoji/1f31d.png and /dev/null differ
diff --git a/public/emoji/1f31d.svg b/public/emoji/1f31d.svg
index 90c6d5019e36c..cc75e8a567838 100644
--- a/public/emoji/1f31d.svg
+++ b/public/emoji/1f31d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f31e.png b/public/emoji/1f31e.png
deleted file mode 100644
index 14a4ea971db2e..0000000000000
Binary files a/public/emoji/1f31e.png and /dev/null differ
diff --git a/public/emoji/1f31e.svg b/public/emoji/1f31e.svg
index f86c173d6ebd5..f694aa74aadd6 100644
--- a/public/emoji/1f31e.svg
+++ b/public/emoji/1f31e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f31f.png b/public/emoji/1f31f.png
deleted file mode 100644
index 2f5cba592db0c..0000000000000
Binary files a/public/emoji/1f31f.png and /dev/null differ
diff --git a/public/emoji/1f31f.svg b/public/emoji/1f31f.svg
index 13565256fd4aa..ac88d0d94241c 100644
--- a/public/emoji/1f31f.svg
+++ b/public/emoji/1f31f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f320.png b/public/emoji/1f320.png
deleted file mode 100644
index aa45384d1c667..0000000000000
Binary files a/public/emoji/1f320.png and /dev/null differ
diff --git a/public/emoji/1f320.svg b/public/emoji/1f320.svg
index c79d56a39b3c4..5d54372e39802 100644
--- a/public/emoji/1f320.svg
+++ b/public/emoji/1f320.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f321.png b/public/emoji/1f321.png
deleted file mode 100644
index b114739242661..0000000000000
Binary files a/public/emoji/1f321.png and /dev/null differ
diff --git a/public/emoji/1f321.svg b/public/emoji/1f321.svg
index b6419126b838b..8f55e77e1fab7 100644
--- a/public/emoji/1f321.svg
+++ b/public/emoji/1f321.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f324.png b/public/emoji/1f324.png
deleted file mode 100644
index cead0bfa521d0..0000000000000
Binary files a/public/emoji/1f324.png and /dev/null differ
diff --git a/public/emoji/1f324.svg b/public/emoji/1f324.svg
index 0bfacd23d68cb..b5d8293ceea9f 100644
--- a/public/emoji/1f324.svg
+++ b/public/emoji/1f324.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f325.png b/public/emoji/1f325.png
deleted file mode 100644
index 0a4cc10026962..0000000000000
Binary files a/public/emoji/1f325.png and /dev/null differ
diff --git a/public/emoji/1f325.svg b/public/emoji/1f325.svg
index 41fc0560ce838..8155577a34510 100644
--- a/public/emoji/1f325.svg
+++ b/public/emoji/1f325.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f326.png b/public/emoji/1f326.png
deleted file mode 100644
index 491f9ca483942..0000000000000
Binary files a/public/emoji/1f326.png and /dev/null differ
diff --git a/public/emoji/1f326.svg b/public/emoji/1f326.svg
index 8f83b295f2842..383aa2e972824 100644
--- a/public/emoji/1f326.svg
+++ b/public/emoji/1f326.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f327.png b/public/emoji/1f327.png
deleted file mode 100644
index 385685e0512e5..0000000000000
Binary files a/public/emoji/1f327.png and /dev/null differ
diff --git a/public/emoji/1f327.svg b/public/emoji/1f327.svg
index 52e6a1eff2a74..2ff8cdfa3e6b2 100644
--- a/public/emoji/1f327.svg
+++ b/public/emoji/1f327.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f328.png b/public/emoji/1f328.png
deleted file mode 100644
index 9720384eb99ea..0000000000000
Binary files a/public/emoji/1f328.png and /dev/null differ
diff --git a/public/emoji/1f328.svg b/public/emoji/1f328.svg
index dc0e858a89a9f..35476fa9545ff 100644
--- a/public/emoji/1f328.svg
+++ b/public/emoji/1f328.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f329.png b/public/emoji/1f329.png
deleted file mode 100644
index 0831e88aa3168..0000000000000
Binary files a/public/emoji/1f329.png and /dev/null differ
diff --git a/public/emoji/1f329.svg b/public/emoji/1f329.svg
index d7844b627b3b9..88bf05d374ef9 100644
--- a/public/emoji/1f329.svg
+++ b/public/emoji/1f329.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f32a.png b/public/emoji/1f32a.png
deleted file mode 100644
index 4821c89da1e0f..0000000000000
Binary files a/public/emoji/1f32a.png and /dev/null differ
diff --git a/public/emoji/1f32a.svg b/public/emoji/1f32a.svg
index 87326d990b7e0..ca5c1694a2b4d 100644
--- a/public/emoji/1f32a.svg
+++ b/public/emoji/1f32a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f32b.png b/public/emoji/1f32b.png
deleted file mode 100644
index 4e73c2de2728b..0000000000000
Binary files a/public/emoji/1f32b.png and /dev/null differ
diff --git a/public/emoji/1f32b.svg b/public/emoji/1f32b.svg
index a294ee341f457..f22dfdd849e74 100644
--- a/public/emoji/1f32b.svg
+++ b/public/emoji/1f32b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f32c.png b/public/emoji/1f32c.png
deleted file mode 100644
index df81b652eb65d..0000000000000
Binary files a/public/emoji/1f32c.png and /dev/null differ
diff --git a/public/emoji/1f32c.svg b/public/emoji/1f32c.svg
index 652f28b7c9031..cb0615f1b6700 100644
--- a/public/emoji/1f32c.svg
+++ b/public/emoji/1f32c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f32d.png b/public/emoji/1f32d.png
deleted file mode 100644
index 3c3354d94cbd7..0000000000000
Binary files a/public/emoji/1f32d.png and /dev/null differ
diff --git a/public/emoji/1f32d.svg b/public/emoji/1f32d.svg
index e9acb62da3d83..e4c7c5b617e56 100644
--- a/public/emoji/1f32d.svg
+++ b/public/emoji/1f32d.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f32e.png b/public/emoji/1f32e.png
deleted file mode 100644
index 10e847a461914..0000000000000
Binary files a/public/emoji/1f32e.png and /dev/null differ
diff --git a/public/emoji/1f32e.svg b/public/emoji/1f32e.svg
index 7ce2afabeda62..1ed1f80c85a1b 100644
--- a/public/emoji/1f32e.svg
+++ b/public/emoji/1f32e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f32f.png b/public/emoji/1f32f.png
deleted file mode 100644
index 02bd5601df7e0..0000000000000
Binary files a/public/emoji/1f32f.png and /dev/null differ
diff --git a/public/emoji/1f32f.svg b/public/emoji/1f32f.svg
index 6ae9039022207..78023dd5de070 100644
--- a/public/emoji/1f32f.svg
+++ b/public/emoji/1f32f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f330.png b/public/emoji/1f330.png
deleted file mode 100644
index e9fb40468eda8..0000000000000
Binary files a/public/emoji/1f330.png and /dev/null differ
diff --git a/public/emoji/1f330.svg b/public/emoji/1f330.svg
index 5def656045933..2bdaacc0cee9a 100644
--- a/public/emoji/1f330.svg
+++ b/public/emoji/1f330.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f331.png b/public/emoji/1f331.png
deleted file mode 100644
index ae0948bcfd6cf..0000000000000
Binary files a/public/emoji/1f331.png and /dev/null differ
diff --git a/public/emoji/1f331.svg b/public/emoji/1f331.svg
index 90f17ee296995..3fbe3c819849a 100644
--- a/public/emoji/1f331.svg
+++ b/public/emoji/1f331.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f332.png b/public/emoji/1f332.png
deleted file mode 100644
index f679d8dd77204..0000000000000
Binary files a/public/emoji/1f332.png and /dev/null differ
diff --git a/public/emoji/1f332.svg b/public/emoji/1f332.svg
index be209886311c4..6c6ce550509d0 100644
--- a/public/emoji/1f332.svg
+++ b/public/emoji/1f332.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f333.png b/public/emoji/1f333.png
deleted file mode 100644
index 785fc1c30eadf..0000000000000
Binary files a/public/emoji/1f333.png and /dev/null differ
diff --git a/public/emoji/1f333.svg b/public/emoji/1f333.svg
index 4f29da350ebdb..27070cdc13829 100644
--- a/public/emoji/1f333.svg
+++ b/public/emoji/1f333.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f334.png b/public/emoji/1f334.png
deleted file mode 100644
index 4bbb10f4f19dd..0000000000000
Binary files a/public/emoji/1f334.png and /dev/null differ
diff --git a/public/emoji/1f334.svg b/public/emoji/1f334.svg
index b0cec6d92d0f0..e20f94e2766f0 100644
--- a/public/emoji/1f334.svg
+++ b/public/emoji/1f334.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f335.png b/public/emoji/1f335.png
deleted file mode 100644
index 9b48ccf3d0c53..0000000000000
Binary files a/public/emoji/1f335.png and /dev/null differ
diff --git a/public/emoji/1f335.svg b/public/emoji/1f335.svg
index b980aad283cf4..972a1fc9ba8c8 100644
--- a/public/emoji/1f335.svg
+++ b/public/emoji/1f335.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f336.png b/public/emoji/1f336.png
deleted file mode 100644
index 266675bd5774d..0000000000000
Binary files a/public/emoji/1f336.png and /dev/null differ
diff --git a/public/emoji/1f336.svg b/public/emoji/1f336.svg
index 3763d91d28481..a5f14a3bb5017 100644
--- a/public/emoji/1f336.svg
+++ b/public/emoji/1f336.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f337.png b/public/emoji/1f337.png
deleted file mode 100644
index f799d75c1821a..0000000000000
Binary files a/public/emoji/1f337.png and /dev/null differ
diff --git a/public/emoji/1f337.svg b/public/emoji/1f337.svg
index 651218941594c..0c5a2c362d99d 100644
--- a/public/emoji/1f337.svg
+++ b/public/emoji/1f337.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f338.png b/public/emoji/1f338.png
deleted file mode 100644
index 282f3e7bc8170..0000000000000
Binary files a/public/emoji/1f338.png and /dev/null differ
diff --git a/public/emoji/1f338.svg b/public/emoji/1f338.svg
index eb6d6da7b9869..8188ae92ae42a 100644
--- a/public/emoji/1f338.svg
+++ b/public/emoji/1f338.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f339.png b/public/emoji/1f339.png
deleted file mode 100644
index 52c286d31ce22..0000000000000
Binary files a/public/emoji/1f339.png and /dev/null differ
diff --git a/public/emoji/1f339.svg b/public/emoji/1f339.svg
index e7122eb32385d..66a4b9c6a004d 100644
--- a/public/emoji/1f339.svg
+++ b/public/emoji/1f339.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f33a.png b/public/emoji/1f33a.png
deleted file mode 100644
index 39dd3524233b5..0000000000000
Binary files a/public/emoji/1f33a.png and /dev/null differ
diff --git a/public/emoji/1f33a.svg b/public/emoji/1f33a.svg
index 557788787f69d..19e7e300103e8 100644
--- a/public/emoji/1f33a.svg
+++ b/public/emoji/1f33a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f33b.png b/public/emoji/1f33b.png
deleted file mode 100644
index 08cc07761ea7b..0000000000000
Binary files a/public/emoji/1f33b.png and /dev/null differ
diff --git a/public/emoji/1f33b.svg b/public/emoji/1f33b.svg
index 3834929fe1153..b39eabf1c4a91 100644
--- a/public/emoji/1f33b.svg
+++ b/public/emoji/1f33b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f33c.png b/public/emoji/1f33c.png
deleted file mode 100644
index 4083026c1574d..0000000000000
Binary files a/public/emoji/1f33c.png and /dev/null differ
diff --git a/public/emoji/1f33c.svg b/public/emoji/1f33c.svg
index 15d420735829c..3242c56f7051b 100644
--- a/public/emoji/1f33c.svg
+++ b/public/emoji/1f33c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f33d.png b/public/emoji/1f33d.png
deleted file mode 100644
index 36e20127931ba..0000000000000
Binary files a/public/emoji/1f33d.png and /dev/null differ
diff --git a/public/emoji/1f33d.svg b/public/emoji/1f33d.svg
index 074139da8ce7a..8e542a0381e83 100644
--- a/public/emoji/1f33d.svg
+++ b/public/emoji/1f33d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f33e.png b/public/emoji/1f33e.png
deleted file mode 100644
index 3564d9d643a89..0000000000000
Binary files a/public/emoji/1f33e.png and /dev/null differ
diff --git a/public/emoji/1f33e.svg b/public/emoji/1f33e.svg
index 5b02cf7cb7b3c..ce4151b06b5f0 100644
--- a/public/emoji/1f33e.svg
+++ b/public/emoji/1f33e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f33f.png b/public/emoji/1f33f.png
deleted file mode 100644
index d984d1562bb40..0000000000000
Binary files a/public/emoji/1f33f.png and /dev/null differ
diff --git a/public/emoji/1f33f.svg b/public/emoji/1f33f.svg
index 174e90223c6f9..48fb3f3fd9031 100644
--- a/public/emoji/1f33f.svg
+++ b/public/emoji/1f33f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f340.png b/public/emoji/1f340.png
deleted file mode 100644
index fdedfcc2b4ec8..0000000000000
Binary files a/public/emoji/1f340.png and /dev/null differ
diff --git a/public/emoji/1f340.svg b/public/emoji/1f340.svg
index 0b06567d5ede7..1685a7ca1e687 100644
--- a/public/emoji/1f340.svg
+++ b/public/emoji/1f340.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f341.png b/public/emoji/1f341.png
deleted file mode 100644
index c49acea67f741..0000000000000
Binary files a/public/emoji/1f341.png and /dev/null differ
diff --git a/public/emoji/1f341.svg b/public/emoji/1f341.svg
index 35a4563626158..2b65956e15d25 100644
--- a/public/emoji/1f341.svg
+++ b/public/emoji/1f341.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f342.png b/public/emoji/1f342.png
deleted file mode 100644
index 0d60e7bdf2d89..0000000000000
Binary files a/public/emoji/1f342.png and /dev/null differ
diff --git a/public/emoji/1f342.svg b/public/emoji/1f342.svg
index 7ca377c87383c..e03bcc4de18ec 100644
--- a/public/emoji/1f342.svg
+++ b/public/emoji/1f342.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f343.png b/public/emoji/1f343.png
deleted file mode 100644
index 1e43e1af820b3..0000000000000
Binary files a/public/emoji/1f343.png and /dev/null differ
diff --git a/public/emoji/1f343.svg b/public/emoji/1f343.svg
index c19539d9d0bb6..ec4e9d7f66ec2 100644
--- a/public/emoji/1f343.svg
+++ b/public/emoji/1f343.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f344.png b/public/emoji/1f344.png
deleted file mode 100644
index dd85742ba2c8e..0000000000000
Binary files a/public/emoji/1f344.png and /dev/null differ
diff --git a/public/emoji/1f344.svg b/public/emoji/1f344.svg
index 853a49d20c001..2ebc9dd2ea85a 100644
--- a/public/emoji/1f344.svg
+++ b/public/emoji/1f344.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f345.png b/public/emoji/1f345.png
deleted file mode 100644
index 497da8f6b227c..0000000000000
Binary files a/public/emoji/1f345.png and /dev/null differ
diff --git a/public/emoji/1f345.svg b/public/emoji/1f345.svg
index b0f3efc4e0e48..6921847d170fb 100644
--- a/public/emoji/1f345.svg
+++ b/public/emoji/1f345.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f346.png b/public/emoji/1f346.png
deleted file mode 100644
index fafd7c1a14c5b..0000000000000
Binary files a/public/emoji/1f346.png and /dev/null differ
diff --git a/public/emoji/1f346.svg b/public/emoji/1f346.svg
index 78a52f6c8e1ac..a6eb936473aa8 100644
--- a/public/emoji/1f346.svg
+++ b/public/emoji/1f346.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f347.png b/public/emoji/1f347.png
deleted file mode 100644
index 30d2221889685..0000000000000
Binary files a/public/emoji/1f347.png and /dev/null differ
diff --git a/public/emoji/1f347.svg b/public/emoji/1f347.svg
index e924fc21636dc..bbcc06a2937dd 100644
--- a/public/emoji/1f347.svg
+++ b/public/emoji/1f347.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f348.png b/public/emoji/1f348.png
deleted file mode 100644
index c01232d419de8..0000000000000
Binary files a/public/emoji/1f348.png and /dev/null differ
diff --git a/public/emoji/1f348.svg b/public/emoji/1f348.svg
index d715aaa2524b7..ddd15f63123e6 100644
--- a/public/emoji/1f348.svg
+++ b/public/emoji/1f348.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f349.png b/public/emoji/1f349.png
deleted file mode 100644
index 0761488b4c972..0000000000000
Binary files a/public/emoji/1f349.png and /dev/null differ
diff --git a/public/emoji/1f349.svg b/public/emoji/1f349.svg
index 0f7a175f77a13..4ba2a40d95e87 100644
--- a/public/emoji/1f349.svg
+++ b/public/emoji/1f349.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f34a.png b/public/emoji/1f34a.png
deleted file mode 100644
index ab14e5378dbba..0000000000000
Binary files a/public/emoji/1f34a.png and /dev/null differ
diff --git a/public/emoji/1f34a.svg b/public/emoji/1f34a.svg
index a6c48c5ff0aaa..8dc08a76cc274 100644
--- a/public/emoji/1f34a.svg
+++ b/public/emoji/1f34a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f34b.png b/public/emoji/1f34b.png
deleted file mode 100644
index 9a7d95ca2209b..0000000000000
Binary files a/public/emoji/1f34b.png and /dev/null differ
diff --git a/public/emoji/1f34b.svg b/public/emoji/1f34b.svg
index e6dafd4c743c2..6a4aea458cfc5 100644
--- a/public/emoji/1f34b.svg
+++ b/public/emoji/1f34b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f34c.png b/public/emoji/1f34c.png
deleted file mode 100644
index f4987279580c2..0000000000000
Binary files a/public/emoji/1f34c.png and /dev/null differ
diff --git a/public/emoji/1f34c.svg b/public/emoji/1f34c.svg
index 9f7af936f18fe..19a2413fe559f 100644
--- a/public/emoji/1f34c.svg
+++ b/public/emoji/1f34c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f34d.png b/public/emoji/1f34d.png
deleted file mode 100644
index c89a16064626a..0000000000000
Binary files a/public/emoji/1f34d.png and /dev/null differ
diff --git a/public/emoji/1f34d.svg b/public/emoji/1f34d.svg
index 350c11f28196b..ed6150475efdb 100644
--- a/public/emoji/1f34d.svg
+++ b/public/emoji/1f34d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f34e.png b/public/emoji/1f34e.png
deleted file mode 100644
index da650c60f6256..0000000000000
Binary files a/public/emoji/1f34e.png and /dev/null differ
diff --git a/public/emoji/1f34e.svg b/public/emoji/1f34e.svg
index 1353d5dd57a83..47576d4e5818a 100644
--- a/public/emoji/1f34e.svg
+++ b/public/emoji/1f34e.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f34f.png b/public/emoji/1f34f.png
deleted file mode 100644
index 5fd51bd3915cd..0000000000000
Binary files a/public/emoji/1f34f.png and /dev/null differ
diff --git a/public/emoji/1f34f.svg b/public/emoji/1f34f.svg
index 27561bc31df48..8210910416e21 100644
--- a/public/emoji/1f34f.svg
+++ b/public/emoji/1f34f.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f350.png b/public/emoji/1f350.png
deleted file mode 100644
index 3869f718bcf47..0000000000000
Binary files a/public/emoji/1f350.png and /dev/null differ
diff --git a/public/emoji/1f350.svg b/public/emoji/1f350.svg
index 467a86e13ac11..161fe7a94320f 100644
--- a/public/emoji/1f350.svg
+++ b/public/emoji/1f350.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f351.png b/public/emoji/1f351.png
deleted file mode 100644
index 9ab57cbb75813..0000000000000
Binary files a/public/emoji/1f351.png and /dev/null differ
diff --git a/public/emoji/1f351.svg b/public/emoji/1f351.svg
index 574969a8e8cee..2f6beeebe360a 100644
--- a/public/emoji/1f351.svg
+++ b/public/emoji/1f351.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f352.png b/public/emoji/1f352.png
deleted file mode 100644
index 9b10cbaac5e64..0000000000000
Binary files a/public/emoji/1f352.png and /dev/null differ
diff --git a/public/emoji/1f352.svg b/public/emoji/1f352.svg
index d43aca6dcfc75..ba6f99a596e9f 100644
--- a/public/emoji/1f352.svg
+++ b/public/emoji/1f352.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f353.png b/public/emoji/1f353.png
deleted file mode 100644
index 7bb86f0b29cd5..0000000000000
Binary files a/public/emoji/1f353.png and /dev/null differ
diff --git a/public/emoji/1f353.svg b/public/emoji/1f353.svg
index 709e0db4b42b7..0243a55b7098a 100644
--- a/public/emoji/1f353.svg
+++ b/public/emoji/1f353.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f354.png b/public/emoji/1f354.png
deleted file mode 100644
index 3573b28a1fd51..0000000000000
Binary files a/public/emoji/1f354.png and /dev/null differ
diff --git a/public/emoji/1f354.svg b/public/emoji/1f354.svg
index 34608757f3a69..7c954be89d868 100644
--- a/public/emoji/1f354.svg
+++ b/public/emoji/1f354.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f355.png b/public/emoji/1f355.png
deleted file mode 100644
index e07365cb398c0..0000000000000
Binary files a/public/emoji/1f355.png and /dev/null differ
diff --git a/public/emoji/1f355.svg b/public/emoji/1f355.svg
index 4bd17b70e06ea..1bd819aca3eb6 100644
--- a/public/emoji/1f355.svg
+++ b/public/emoji/1f355.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f356.png b/public/emoji/1f356.png
deleted file mode 100644
index b20a59d169028..0000000000000
Binary files a/public/emoji/1f356.png and /dev/null differ
diff --git a/public/emoji/1f356.svg b/public/emoji/1f356.svg
index d1b3e056e92b4..bb4e72396ed40 100644
--- a/public/emoji/1f356.svg
+++ b/public/emoji/1f356.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f357.png b/public/emoji/1f357.png
deleted file mode 100644
index eea4a53a2f990..0000000000000
Binary files a/public/emoji/1f357.png and /dev/null differ
diff --git a/public/emoji/1f357.svg b/public/emoji/1f357.svg
index dca233f0beb3f..6096785dece63 100644
--- a/public/emoji/1f357.svg
+++ b/public/emoji/1f357.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f358.png b/public/emoji/1f358.png
deleted file mode 100644
index 7fbd08e4ff9f7..0000000000000
Binary files a/public/emoji/1f358.png and /dev/null differ
diff --git a/public/emoji/1f358.svg b/public/emoji/1f358.svg
index 5e38bb4fbe3d0..f59e71bc02215 100644
--- a/public/emoji/1f358.svg
+++ b/public/emoji/1f358.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f359.png b/public/emoji/1f359.png
deleted file mode 100644
index d3d8ee25cb849..0000000000000
Binary files a/public/emoji/1f359.png and /dev/null differ
diff --git a/public/emoji/1f359.svg b/public/emoji/1f359.svg
index 0c7cf7952bf62..7d6ececa89dd3 100644
--- a/public/emoji/1f359.svg
+++ b/public/emoji/1f359.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f35a.png b/public/emoji/1f35a.png
deleted file mode 100644
index 6e3ac7956b1a1..0000000000000
Binary files a/public/emoji/1f35a.png and /dev/null differ
diff --git a/public/emoji/1f35a.svg b/public/emoji/1f35a.svg
index 08398ca6cd66c..ebbc452f5a2d2 100644
--- a/public/emoji/1f35a.svg
+++ b/public/emoji/1f35a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f35b.png b/public/emoji/1f35b.png
deleted file mode 100644
index 69657ca810336..0000000000000
Binary files a/public/emoji/1f35b.png and /dev/null differ
diff --git a/public/emoji/1f35b.svg b/public/emoji/1f35b.svg
index 5880aea591d96..f265581010ab3 100644
--- a/public/emoji/1f35b.svg
+++ b/public/emoji/1f35b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f35c.png b/public/emoji/1f35c.png
deleted file mode 100644
index c1cb7cd738420..0000000000000
Binary files a/public/emoji/1f35c.png and /dev/null differ
diff --git a/public/emoji/1f35c.svg b/public/emoji/1f35c.svg
index 93c4cdbf2b2b9..f5371889f17fb 100644
--- a/public/emoji/1f35c.svg
+++ b/public/emoji/1f35c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f35d.png b/public/emoji/1f35d.png
deleted file mode 100644
index 89c24a321f176..0000000000000
Binary files a/public/emoji/1f35d.png and /dev/null differ
diff --git a/public/emoji/1f35d.svg b/public/emoji/1f35d.svg
index 52f7db9cab6f5..6c795af5738fc 100644
--- a/public/emoji/1f35d.svg
+++ b/public/emoji/1f35d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f35e.png b/public/emoji/1f35e.png
deleted file mode 100644
index 6676510aaa572..0000000000000
Binary files a/public/emoji/1f35e.png and /dev/null differ
diff --git a/public/emoji/1f35e.svg b/public/emoji/1f35e.svg
index bbaae9cc6ca5a..1df731d9d4eed 100644
--- a/public/emoji/1f35e.svg
+++ b/public/emoji/1f35e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f35f.png b/public/emoji/1f35f.png
deleted file mode 100644
index 4e2a4caacefb6..0000000000000
Binary files a/public/emoji/1f35f.png and /dev/null differ
diff --git a/public/emoji/1f35f.svg b/public/emoji/1f35f.svg
index fe9e1bac70bfc..15661bc9298e1 100644
--- a/public/emoji/1f35f.svg
+++ b/public/emoji/1f35f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f360.png b/public/emoji/1f360.png
deleted file mode 100644
index 92a425f2e2095..0000000000000
Binary files a/public/emoji/1f360.png and /dev/null differ
diff --git a/public/emoji/1f360.svg b/public/emoji/1f360.svg
index bfbbd9c5002c9..6ad2c856890de 100644
--- a/public/emoji/1f360.svg
+++ b/public/emoji/1f360.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f361.png b/public/emoji/1f361.png
deleted file mode 100644
index f73f37b01c739..0000000000000
Binary files a/public/emoji/1f361.png and /dev/null differ
diff --git a/public/emoji/1f361.svg b/public/emoji/1f361.svg
index 6cc82e3d9a8e0..e74a76be2c105 100644
--- a/public/emoji/1f361.svg
+++ b/public/emoji/1f361.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f362.png b/public/emoji/1f362.png
deleted file mode 100644
index d38a849fece3b..0000000000000
Binary files a/public/emoji/1f362.png and /dev/null differ
diff --git a/public/emoji/1f362.svg b/public/emoji/1f362.svg
index f00dbf6dfa564..c7dda46dca98e 100644
--- a/public/emoji/1f362.svg
+++ b/public/emoji/1f362.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f363.png b/public/emoji/1f363.png
deleted file mode 100644
index f171fd2f7a1d9..0000000000000
Binary files a/public/emoji/1f363.png and /dev/null differ
diff --git a/public/emoji/1f363.svg b/public/emoji/1f363.svg
index 93aed080747c1..ec00279f905df 100644
--- a/public/emoji/1f363.svg
+++ b/public/emoji/1f363.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f364.png b/public/emoji/1f364.png
deleted file mode 100644
index 752ba7f1398a4..0000000000000
Binary files a/public/emoji/1f364.png and /dev/null differ
diff --git a/public/emoji/1f364.svg b/public/emoji/1f364.svg
index c64f84077d4e0..3bc480d47df60 100644
--- a/public/emoji/1f364.svg
+++ b/public/emoji/1f364.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f365.png b/public/emoji/1f365.png
deleted file mode 100644
index 157bded65dbd0..0000000000000
Binary files a/public/emoji/1f365.png and /dev/null differ
diff --git a/public/emoji/1f365.svg b/public/emoji/1f365.svg
index 9932d3438a2b2..bd9130486c76b 100644
--- a/public/emoji/1f365.svg
+++ b/public/emoji/1f365.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f366.png b/public/emoji/1f366.png
deleted file mode 100644
index 8f6546e31a536..0000000000000
Binary files a/public/emoji/1f366.png and /dev/null differ
diff --git a/public/emoji/1f366.svg b/public/emoji/1f366.svg
index aab1e61fd3199..bf9a7609c4929 100644
--- a/public/emoji/1f366.svg
+++ b/public/emoji/1f366.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f367.png b/public/emoji/1f367.png
deleted file mode 100644
index 36dfb53ca93f7..0000000000000
Binary files a/public/emoji/1f367.png and /dev/null differ
diff --git a/public/emoji/1f367.svg b/public/emoji/1f367.svg
index 296c4f7177053..0d3c276dd53da 100644
--- a/public/emoji/1f367.svg
+++ b/public/emoji/1f367.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f368.png b/public/emoji/1f368.png
deleted file mode 100644
index 94267b9c43460..0000000000000
Binary files a/public/emoji/1f368.png and /dev/null differ
diff --git a/public/emoji/1f368.svg b/public/emoji/1f368.svg
index c1524bf37313b..693e2afe7bbcc 100644
--- a/public/emoji/1f368.svg
+++ b/public/emoji/1f368.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f369.png b/public/emoji/1f369.png
deleted file mode 100644
index 0ca4cd0bde8f5..0000000000000
Binary files a/public/emoji/1f369.png and /dev/null differ
diff --git a/public/emoji/1f369.svg b/public/emoji/1f369.svg
index 6620235bcdc53..ae1d58f02807f 100644
--- a/public/emoji/1f369.svg
+++ b/public/emoji/1f369.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f36a.png b/public/emoji/1f36a.png
deleted file mode 100644
index 1b6bcb1554f77..0000000000000
Binary files a/public/emoji/1f36a.png and /dev/null differ
diff --git a/public/emoji/1f36a.svg b/public/emoji/1f36a.svg
index 8daf31164c5c1..31f6bf342afd1 100644
--- a/public/emoji/1f36a.svg
+++ b/public/emoji/1f36a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f36b.png b/public/emoji/1f36b.png
deleted file mode 100644
index 318bbd40ef9c3..0000000000000
Binary files a/public/emoji/1f36b.png and /dev/null differ
diff --git a/public/emoji/1f36b.svg b/public/emoji/1f36b.svg
index 493e7b34ae043..1ac9c24d2590c 100644
--- a/public/emoji/1f36b.svg
+++ b/public/emoji/1f36b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f36c.png b/public/emoji/1f36c.png
deleted file mode 100644
index 8c67ace3a35cc..0000000000000
Binary files a/public/emoji/1f36c.png and /dev/null differ
diff --git a/public/emoji/1f36c.svg b/public/emoji/1f36c.svg
index 2c26a67d9a105..d12a6545a70b8 100644
--- a/public/emoji/1f36c.svg
+++ b/public/emoji/1f36c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f36d.png b/public/emoji/1f36d.png
deleted file mode 100644
index ad76d7bf916c7..0000000000000
Binary files a/public/emoji/1f36d.png and /dev/null differ
diff --git a/public/emoji/1f36d.svg b/public/emoji/1f36d.svg
index 887f57c0035d3..2dc9f0c59759e 100644
--- a/public/emoji/1f36d.svg
+++ b/public/emoji/1f36d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f36e.png b/public/emoji/1f36e.png
deleted file mode 100644
index fa3df67b8f63f..0000000000000
Binary files a/public/emoji/1f36e.png and /dev/null differ
diff --git a/public/emoji/1f36e.svg b/public/emoji/1f36e.svg
index de1d4317eefa1..4e251e450e57c 100644
--- a/public/emoji/1f36e.svg
+++ b/public/emoji/1f36e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f36f.png b/public/emoji/1f36f.png
deleted file mode 100644
index 9d8f592955e82..0000000000000
Binary files a/public/emoji/1f36f.png and /dev/null differ
diff --git a/public/emoji/1f36f.svg b/public/emoji/1f36f.svg
index 031903fc19b61..b29e9bf7f20e0 100644
--- a/public/emoji/1f36f.svg
+++ b/public/emoji/1f36f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f370.png b/public/emoji/1f370.png
deleted file mode 100644
index 4368177be9acf..0000000000000
Binary files a/public/emoji/1f370.png and /dev/null differ
diff --git a/public/emoji/1f370.svg b/public/emoji/1f370.svg
index c42ca1b6f1dfd..7156f048d341d 100644
--- a/public/emoji/1f370.svg
+++ b/public/emoji/1f370.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f371.png b/public/emoji/1f371.png
deleted file mode 100644
index 83d41ca7eb9ba..0000000000000
Binary files a/public/emoji/1f371.png and /dev/null differ
diff --git a/public/emoji/1f371.svg b/public/emoji/1f371.svg
index dbc80e5b30478..da1195afa2327 100644
--- a/public/emoji/1f371.svg
+++ b/public/emoji/1f371.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f372.png b/public/emoji/1f372.png
deleted file mode 100644
index 6b3f010c17a32..0000000000000
Binary files a/public/emoji/1f372.png and /dev/null differ
diff --git a/public/emoji/1f372.svg b/public/emoji/1f372.svg
index 52663af16da79..65a5fcacc24c9 100644
--- a/public/emoji/1f372.svg
+++ b/public/emoji/1f372.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f373.png b/public/emoji/1f373.png
deleted file mode 100644
index 918c980577a8d..0000000000000
Binary files a/public/emoji/1f373.png and /dev/null differ
diff --git a/public/emoji/1f373.svg b/public/emoji/1f373.svg
index 4f80ed53c0208..33e20b7282764 100644
--- a/public/emoji/1f373.svg
+++ b/public/emoji/1f373.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f374.png b/public/emoji/1f374.png
deleted file mode 100644
index 09f1feaea1c85..0000000000000
Binary files a/public/emoji/1f374.png and /dev/null differ
diff --git a/public/emoji/1f374.svg b/public/emoji/1f374.svg
index e9d6b48ef985d..3585bc0eae19f 100644
--- a/public/emoji/1f374.svg
+++ b/public/emoji/1f374.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f375.png b/public/emoji/1f375.png
deleted file mode 100644
index b53b98f0c4591..0000000000000
Binary files a/public/emoji/1f375.png and /dev/null differ
diff --git a/public/emoji/1f375.svg b/public/emoji/1f375.svg
index 7f210fc7695f9..deabda3ddfa01 100644
--- a/public/emoji/1f375.svg
+++ b/public/emoji/1f375.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f376.png b/public/emoji/1f376.png
deleted file mode 100644
index 2933f5672c401..0000000000000
Binary files a/public/emoji/1f376.png and /dev/null differ
diff --git a/public/emoji/1f376.svg b/public/emoji/1f376.svg
index b573b4566a12f..f8df7b4fb2d94 100644
--- a/public/emoji/1f376.svg
+++ b/public/emoji/1f376.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f377.png b/public/emoji/1f377.png
deleted file mode 100644
index 3cc986891926e..0000000000000
Binary files a/public/emoji/1f377.png and /dev/null differ
diff --git a/public/emoji/1f377.svg b/public/emoji/1f377.svg
index e2652b0a32c4d..4df8c35fa64e5 100644
--- a/public/emoji/1f377.svg
+++ b/public/emoji/1f377.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f378.png b/public/emoji/1f378.png
deleted file mode 100644
index 2e50c57e98d54..0000000000000
Binary files a/public/emoji/1f378.png and /dev/null differ
diff --git a/public/emoji/1f378.svg b/public/emoji/1f378.svg
index a8c9960d86f81..ed6ca0eb0d277 100644
--- a/public/emoji/1f378.svg
+++ b/public/emoji/1f378.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f379.png b/public/emoji/1f379.png
deleted file mode 100644
index cd714f81b3662..0000000000000
Binary files a/public/emoji/1f379.png and /dev/null differ
diff --git a/public/emoji/1f379.svg b/public/emoji/1f379.svg
index b96f8f05cfc1e..7b4f6eebf45aa 100644
--- a/public/emoji/1f379.svg
+++ b/public/emoji/1f379.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f37a.png b/public/emoji/1f37a.png
deleted file mode 100644
index b6d73dc0b7a45..0000000000000
Binary files a/public/emoji/1f37a.png and /dev/null differ
diff --git a/public/emoji/1f37a.svg b/public/emoji/1f37a.svg
index 85e65ba62d345..575e03bd5084f 100644
--- a/public/emoji/1f37a.svg
+++ b/public/emoji/1f37a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f37b.png b/public/emoji/1f37b.png
deleted file mode 100644
index b55deb66b4175..0000000000000
Binary files a/public/emoji/1f37b.png and /dev/null differ
diff --git a/public/emoji/1f37b.svg b/public/emoji/1f37b.svg
index 76c8bdc071b41..c4bd4c71925c6 100644
--- a/public/emoji/1f37b.svg
+++ b/public/emoji/1f37b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f37c.png b/public/emoji/1f37c.png
deleted file mode 100644
index 2bd105241808b..0000000000000
Binary files a/public/emoji/1f37c.png and /dev/null differ
diff --git a/public/emoji/1f37c.svg b/public/emoji/1f37c.svg
index 1491a98b88621..0f776fcb74252 100644
--- a/public/emoji/1f37c.svg
+++ b/public/emoji/1f37c.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f37d.png b/public/emoji/1f37d.png
deleted file mode 100644
index 7411755f70872..0000000000000
Binary files a/public/emoji/1f37d.png and /dev/null differ
diff --git a/public/emoji/1f37d.svg b/public/emoji/1f37d.svg
index 95bd3821f5ebc..469593c05d86c 100644
--- a/public/emoji/1f37d.svg
+++ b/public/emoji/1f37d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f37e.png b/public/emoji/1f37e.png
deleted file mode 100644
index 285a79a93d001..0000000000000
Binary files a/public/emoji/1f37e.png and /dev/null differ
diff --git a/public/emoji/1f37e.svg b/public/emoji/1f37e.svg
index 24714015c4803..604147b6ec466 100644
--- a/public/emoji/1f37e.svg
+++ b/public/emoji/1f37e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f37f.png b/public/emoji/1f37f.png
deleted file mode 100644
index 36853e381d4cb..0000000000000
Binary files a/public/emoji/1f37f.png and /dev/null differ
diff --git a/public/emoji/1f37f.svg b/public/emoji/1f37f.svg
index 74510dcbe49d1..0902f28801d91 100644
--- a/public/emoji/1f37f.svg
+++ b/public/emoji/1f37f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f380.png b/public/emoji/1f380.png
deleted file mode 100644
index 0f253c3d8c8b9..0000000000000
Binary files a/public/emoji/1f380.png and /dev/null differ
diff --git a/public/emoji/1f380.svg b/public/emoji/1f380.svg
index 12c535e99c696..d031920efee7e 100644
--- a/public/emoji/1f380.svg
+++ b/public/emoji/1f380.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f381.png b/public/emoji/1f381.png
deleted file mode 100644
index 844e2164560db..0000000000000
Binary files a/public/emoji/1f381.png and /dev/null differ
diff --git a/public/emoji/1f381.svg b/public/emoji/1f381.svg
index bd62608c9a79f..bbe0fa9e0c320 100644
--- a/public/emoji/1f381.svg
+++ b/public/emoji/1f381.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f382.png b/public/emoji/1f382.png
deleted file mode 100644
index 317e9a41949a2..0000000000000
Binary files a/public/emoji/1f382.png and /dev/null differ
diff --git a/public/emoji/1f382.svg b/public/emoji/1f382.svg
index 0bbef8ccc5826..955152aada10e 100644
--- a/public/emoji/1f382.svg
+++ b/public/emoji/1f382.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f383.png b/public/emoji/1f383.png
deleted file mode 100644
index 44c3fc0aec9a5..0000000000000
Binary files a/public/emoji/1f383.png and /dev/null differ
diff --git a/public/emoji/1f383.svg b/public/emoji/1f383.svg
index 21144b72eadc4..bdab6d29076d9 100644
--- a/public/emoji/1f383.svg
+++ b/public/emoji/1f383.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f384.png b/public/emoji/1f384.png
deleted file mode 100644
index 4197d37a52bca..0000000000000
Binary files a/public/emoji/1f384.png and /dev/null differ
diff --git a/public/emoji/1f384.svg b/public/emoji/1f384.svg
index 27bbe5fc5ab79..d8f76bc7f1501 100644
--- a/public/emoji/1f384.svg
+++ b/public/emoji/1f384.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f385-1f3fb.png b/public/emoji/1f385-1f3fb.png
deleted file mode 100644
index 5233ffb717403..0000000000000
Binary files a/public/emoji/1f385-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f385-1f3fb.svg b/public/emoji/1f385-1f3fb.svg
index 13c2657c34df2..2eef1d1d0fefd 100644
--- a/public/emoji/1f385-1f3fb.svg
+++ b/public/emoji/1f385-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f385-1f3fc.png b/public/emoji/1f385-1f3fc.png
deleted file mode 100644
index 4e84543819772..0000000000000
Binary files a/public/emoji/1f385-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f385-1f3fc.svg b/public/emoji/1f385-1f3fc.svg
index 4089865318ff8..ce5e991ff7bb2 100644
--- a/public/emoji/1f385-1f3fc.svg
+++ b/public/emoji/1f385-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f385-1f3fd.png b/public/emoji/1f385-1f3fd.png
deleted file mode 100644
index 7fc4f33b60f7b..0000000000000
Binary files a/public/emoji/1f385-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f385-1f3fd.svg b/public/emoji/1f385-1f3fd.svg
index 9286b2f809fdb..e6b9f14875d22 100644
--- a/public/emoji/1f385-1f3fd.svg
+++ b/public/emoji/1f385-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f385-1f3fe.png b/public/emoji/1f385-1f3fe.png
deleted file mode 100644
index d1d5a15132ded..0000000000000
Binary files a/public/emoji/1f385-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f385-1f3fe.svg b/public/emoji/1f385-1f3fe.svg
index 3745e8eef1f8b..4e6a2efebfa82 100644
--- a/public/emoji/1f385-1f3fe.svg
+++ b/public/emoji/1f385-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f385-1f3ff.png b/public/emoji/1f385-1f3ff.png
deleted file mode 100644
index 4d697a01f24c3..0000000000000
Binary files a/public/emoji/1f385-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f385-1f3ff.svg b/public/emoji/1f385-1f3ff.svg
index af8c96721c309..91b20f10be296 100644
--- a/public/emoji/1f385-1f3ff.svg
+++ b/public/emoji/1f385-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f385.png b/public/emoji/1f385.png
deleted file mode 100644
index bc83ab80d52d5..0000000000000
Binary files a/public/emoji/1f385.png and /dev/null differ
diff --git a/public/emoji/1f385.svg b/public/emoji/1f385.svg
index 9f07458bae610..55e0d6c56cba7 100644
--- a/public/emoji/1f385.svg
+++ b/public/emoji/1f385.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f386.png b/public/emoji/1f386.png
deleted file mode 100644
index 176c8b582659e..0000000000000
Binary files a/public/emoji/1f386.png and /dev/null differ
diff --git a/public/emoji/1f386.svg b/public/emoji/1f386.svg
index 9b8995a4e67d4..712a7f0110fef 100644
--- a/public/emoji/1f386.svg
+++ b/public/emoji/1f386.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f387.png b/public/emoji/1f387.png
deleted file mode 100644
index 30339cd6e09eb..0000000000000
Binary files a/public/emoji/1f387.png and /dev/null differ
diff --git a/public/emoji/1f387.svg b/public/emoji/1f387.svg
index 2014225233b4c..3e81c5c2d77e4 100644
--- a/public/emoji/1f387.svg
+++ b/public/emoji/1f387.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f388.png b/public/emoji/1f388.png
deleted file mode 100644
index 07916fe6df155..0000000000000
Binary files a/public/emoji/1f388.png and /dev/null differ
diff --git a/public/emoji/1f388.svg b/public/emoji/1f388.svg
index d29c08e05d4ce..d799bc41bacaa 100644
--- a/public/emoji/1f388.svg
+++ b/public/emoji/1f388.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f389.png b/public/emoji/1f389.png
deleted file mode 100644
index 0244d60f269e1..0000000000000
Binary files a/public/emoji/1f389.png and /dev/null differ
diff --git a/public/emoji/1f389.svg b/public/emoji/1f389.svg
index b0adb4c7257d3..0e5d08936a247 100644
--- a/public/emoji/1f389.svg
+++ b/public/emoji/1f389.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f38a.png b/public/emoji/1f38a.png
deleted file mode 100644
index ba4fd9b12be23..0000000000000
Binary files a/public/emoji/1f38a.png and /dev/null differ
diff --git a/public/emoji/1f38a.svg b/public/emoji/1f38a.svg
index a29c16a78c55b..961ed4fb652bf 100644
--- a/public/emoji/1f38a.svg
+++ b/public/emoji/1f38a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f38b.png b/public/emoji/1f38b.png
deleted file mode 100644
index 46fcb3a1aac7d..0000000000000
Binary files a/public/emoji/1f38b.png and /dev/null differ
diff --git a/public/emoji/1f38b.svg b/public/emoji/1f38b.svg
index ad576db713f8b..80bdcf94a8bce 100644
--- a/public/emoji/1f38b.svg
+++ b/public/emoji/1f38b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f38c.png b/public/emoji/1f38c.png
deleted file mode 100644
index 273bd0f0fe518..0000000000000
Binary files a/public/emoji/1f38c.png and /dev/null differ
diff --git a/public/emoji/1f38c.svg b/public/emoji/1f38c.svg
index 959e66865cd2c..8ec2b57f661a0 100644
--- a/public/emoji/1f38c.svg
+++ b/public/emoji/1f38c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f38d.png b/public/emoji/1f38d.png
deleted file mode 100644
index 5d5e0e728a09d..0000000000000
Binary files a/public/emoji/1f38d.png and /dev/null differ
diff --git a/public/emoji/1f38d.svg b/public/emoji/1f38d.svg
index 952e4c4c65237..f3bc7cfe431ff 100644
--- a/public/emoji/1f38d.svg
+++ b/public/emoji/1f38d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f38e.png b/public/emoji/1f38e.png
deleted file mode 100644
index 1095561511043..0000000000000
Binary files a/public/emoji/1f38e.png and /dev/null differ
diff --git a/public/emoji/1f38e.svg b/public/emoji/1f38e.svg
index 05628ca3ac5e3..beb21af5cf2b9 100644
--- a/public/emoji/1f38e.svg
+++ b/public/emoji/1f38e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f38f.png b/public/emoji/1f38f.png
deleted file mode 100644
index 3b451035a3a46..0000000000000
Binary files a/public/emoji/1f38f.png and /dev/null differ
diff --git a/public/emoji/1f38f.svg b/public/emoji/1f38f.svg
index 8f1261b6c3d9b..51c1fbde8ec51 100644
--- a/public/emoji/1f38f.svg
+++ b/public/emoji/1f38f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f390.png b/public/emoji/1f390.png
deleted file mode 100644
index 3c9ef3a95f6e5..0000000000000
Binary files a/public/emoji/1f390.png and /dev/null differ
diff --git a/public/emoji/1f390.svg b/public/emoji/1f390.svg
index 6a2c3ac902711..f2c5c6ea8f876 100644
--- a/public/emoji/1f390.svg
+++ b/public/emoji/1f390.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f391.png b/public/emoji/1f391.png
deleted file mode 100644
index 1a28426592a7d..0000000000000
Binary files a/public/emoji/1f391.png and /dev/null differ
diff --git a/public/emoji/1f391.svg b/public/emoji/1f391.svg
index 7a1e114284fe2..5fae1c37bfe9e 100644
--- a/public/emoji/1f391.svg
+++ b/public/emoji/1f391.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f392.png b/public/emoji/1f392.png
deleted file mode 100644
index 9997c86e7dc81..0000000000000
Binary files a/public/emoji/1f392.png and /dev/null differ
diff --git a/public/emoji/1f392.svg b/public/emoji/1f392.svg
index 812ae04099b3a..67c626e867b92 100644
--- a/public/emoji/1f392.svg
+++ b/public/emoji/1f392.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f393.png b/public/emoji/1f393.png
deleted file mode 100644
index 8b17ddd9d002d..0000000000000
Binary files a/public/emoji/1f393.png and /dev/null differ
diff --git a/public/emoji/1f393.svg b/public/emoji/1f393.svg
index 743f8c1d9820d..b3e6d83e1c98a 100644
--- a/public/emoji/1f393.svg
+++ b/public/emoji/1f393.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f396.png b/public/emoji/1f396.png
deleted file mode 100644
index ecd3fb0358453..0000000000000
Binary files a/public/emoji/1f396.png and /dev/null differ
diff --git a/public/emoji/1f396.svg b/public/emoji/1f396.svg
index 316e3a49eb598..b9102321afd46 100644
--- a/public/emoji/1f396.svg
+++ b/public/emoji/1f396.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f397.png b/public/emoji/1f397.png
deleted file mode 100644
index 3988bbd094c00..0000000000000
Binary files a/public/emoji/1f397.png and /dev/null differ
diff --git a/public/emoji/1f397.svg b/public/emoji/1f397.svg
index 11875061e152f..9c6a7b4083323 100644
--- a/public/emoji/1f397.svg
+++ b/public/emoji/1f397.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f399.png b/public/emoji/1f399.png
deleted file mode 100644
index cd9167654ffb6..0000000000000
Binary files a/public/emoji/1f399.png and /dev/null differ
diff --git a/public/emoji/1f399.svg b/public/emoji/1f399.svg
index 44c4b3f0a262e..853475c23766c 100644
--- a/public/emoji/1f399.svg
+++ b/public/emoji/1f399.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f39a.png b/public/emoji/1f39a.png
deleted file mode 100644
index 720a3b34119ef..0000000000000
Binary files a/public/emoji/1f39a.png and /dev/null differ
diff --git a/public/emoji/1f39a.svg b/public/emoji/1f39a.svg
index 426ccd12ff9f0..28cd6ecd04a28 100644
--- a/public/emoji/1f39a.svg
+++ b/public/emoji/1f39a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f39b.png b/public/emoji/1f39b.png
deleted file mode 100644
index 6635ac93b500d..0000000000000
Binary files a/public/emoji/1f39b.png and /dev/null differ
diff --git a/public/emoji/1f39b.svg b/public/emoji/1f39b.svg
index 54dda727d29cf..4bb880b277419 100644
--- a/public/emoji/1f39b.svg
+++ b/public/emoji/1f39b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f39e.png b/public/emoji/1f39e.png
deleted file mode 100644
index 30143aedbe69e..0000000000000
Binary files a/public/emoji/1f39e.png and /dev/null differ
diff --git a/public/emoji/1f39e.svg b/public/emoji/1f39e.svg
index 1a65cc86ec41d..2823df68cc660 100644
--- a/public/emoji/1f39e.svg
+++ b/public/emoji/1f39e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f39f.png b/public/emoji/1f39f.png
deleted file mode 100644
index e510f4a7a502d..0000000000000
Binary files a/public/emoji/1f39f.png and /dev/null differ
diff --git a/public/emoji/1f39f.svg b/public/emoji/1f39f.svg
index 6e4c9b6922ca5..59db5eb8ce389 100644
--- a/public/emoji/1f39f.svg
+++ b/public/emoji/1f39f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3a0.png b/public/emoji/1f3a0.png
deleted file mode 100644
index a17074edf05e1..0000000000000
Binary files a/public/emoji/1f3a0.png and /dev/null differ
diff --git a/public/emoji/1f3a0.svg b/public/emoji/1f3a0.svg
index 1c1feb0901c31..fd3e3464fadcb 100644
--- a/public/emoji/1f3a0.svg
+++ b/public/emoji/1f3a0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3a1.png b/public/emoji/1f3a1.png
deleted file mode 100644
index 55c8ff0475b59..0000000000000
Binary files a/public/emoji/1f3a1.png and /dev/null differ
diff --git a/public/emoji/1f3a1.svg b/public/emoji/1f3a1.svg
index 72c71cd4219b6..70b23f1e4601c 100644
--- a/public/emoji/1f3a1.svg
+++ b/public/emoji/1f3a1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3a2.png b/public/emoji/1f3a2.png
deleted file mode 100644
index 5b849e071e836..0000000000000
Binary files a/public/emoji/1f3a2.png and /dev/null differ
diff --git a/public/emoji/1f3a2.svg b/public/emoji/1f3a2.svg
index e8efa01a22bd9..350ee1c32670c 100644
--- a/public/emoji/1f3a2.svg
+++ b/public/emoji/1f3a2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3a3.png b/public/emoji/1f3a3.png
deleted file mode 100644
index dfcdf07eb50cc..0000000000000
Binary files a/public/emoji/1f3a3.png and /dev/null differ
diff --git a/public/emoji/1f3a3.svg b/public/emoji/1f3a3.svg
index daa26dc601c1f..8a41469416b1d 100644
--- a/public/emoji/1f3a3.svg
+++ b/public/emoji/1f3a3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3a4.png b/public/emoji/1f3a4.png
deleted file mode 100644
index d4e6b0def25c2..0000000000000
Binary files a/public/emoji/1f3a4.png and /dev/null differ
diff --git a/public/emoji/1f3a4.svg b/public/emoji/1f3a4.svg
index 810538abda3d8..854679bc75d13 100644
--- a/public/emoji/1f3a4.svg
+++ b/public/emoji/1f3a4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3a5.png b/public/emoji/1f3a5.png
deleted file mode 100644
index 4e73b130155d8..0000000000000
Binary files a/public/emoji/1f3a5.png and /dev/null differ
diff --git a/public/emoji/1f3a5.svg b/public/emoji/1f3a5.svg
index da84a9fc61859..7d6255d803a4f 100644
--- a/public/emoji/1f3a5.svg
+++ b/public/emoji/1f3a5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3a6.png b/public/emoji/1f3a6.png
deleted file mode 100644
index 65f27b386f248..0000000000000
Binary files a/public/emoji/1f3a6.png and /dev/null differ
diff --git a/public/emoji/1f3a6.svg b/public/emoji/1f3a6.svg
index 1dca8b5178fec..20804c9778072 100644
--- a/public/emoji/1f3a6.svg
+++ b/public/emoji/1f3a6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3a7.png b/public/emoji/1f3a7.png
deleted file mode 100644
index e9fd34041d87c..0000000000000
Binary files a/public/emoji/1f3a7.png and /dev/null differ
diff --git a/public/emoji/1f3a7.svg b/public/emoji/1f3a7.svg
index 15d0289022070..ef591d6b1553b 100644
--- a/public/emoji/1f3a7.svg
+++ b/public/emoji/1f3a7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3a8.png b/public/emoji/1f3a8.png
deleted file mode 100644
index bd6afe9ff06e8..0000000000000
Binary files a/public/emoji/1f3a8.png and /dev/null differ
diff --git a/public/emoji/1f3a8.svg b/public/emoji/1f3a8.svg
index c70f95ee6c447..184cb761b80ba 100644
--- a/public/emoji/1f3a8.svg
+++ b/public/emoji/1f3a8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3a9.png b/public/emoji/1f3a9.png
deleted file mode 100644
index 131b657b10961..0000000000000
Binary files a/public/emoji/1f3a9.png and /dev/null differ
diff --git a/public/emoji/1f3a9.svg b/public/emoji/1f3a9.svg
index d61f2f3d01401..6fd99395d6db8 100644
--- a/public/emoji/1f3a9.svg
+++ b/public/emoji/1f3a9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3aa.png b/public/emoji/1f3aa.png
deleted file mode 100644
index b0379775b1268..0000000000000
Binary files a/public/emoji/1f3aa.png and /dev/null differ
diff --git a/public/emoji/1f3aa.svg b/public/emoji/1f3aa.svg
index 6d0fdff84d298..e68ca8a78c4a8 100644
--- a/public/emoji/1f3aa.svg
+++ b/public/emoji/1f3aa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ab.png b/public/emoji/1f3ab.png
deleted file mode 100644
index 605936bb6b32f..0000000000000
Binary files a/public/emoji/1f3ab.png and /dev/null differ
diff --git a/public/emoji/1f3ab.svg b/public/emoji/1f3ab.svg
index 4e2c9b8ebc7d3..c29ba2917218c 100644
--- a/public/emoji/1f3ab.svg
+++ b/public/emoji/1f3ab.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ac.png b/public/emoji/1f3ac.png
deleted file mode 100644
index 81390883111ae..0000000000000
Binary files a/public/emoji/1f3ac.png and /dev/null differ
diff --git a/public/emoji/1f3ac.svg b/public/emoji/1f3ac.svg
index 7e70040c5e5f8..1a91c024e4039 100644
--- a/public/emoji/1f3ac.svg
+++ b/public/emoji/1f3ac.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ad.png b/public/emoji/1f3ad.png
deleted file mode 100644
index 685441fdaa118..0000000000000
Binary files a/public/emoji/1f3ad.png and /dev/null differ
diff --git a/public/emoji/1f3ad.svg b/public/emoji/1f3ad.svg
index f94769858f4ac..de1ca17bb2b41 100644
--- a/public/emoji/1f3ad.svg
+++ b/public/emoji/1f3ad.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ae.png b/public/emoji/1f3ae.png
deleted file mode 100644
index 316a9106a5575..0000000000000
Binary files a/public/emoji/1f3ae.png and /dev/null differ
diff --git a/public/emoji/1f3ae.svg b/public/emoji/1f3ae.svg
index 534a483de13e3..c96c63589c955 100644
--- a/public/emoji/1f3ae.svg
+++ b/public/emoji/1f3ae.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3af.png b/public/emoji/1f3af.png
deleted file mode 100644
index f6704aeb8ba27..0000000000000
Binary files a/public/emoji/1f3af.png and /dev/null differ
diff --git a/public/emoji/1f3af.svg b/public/emoji/1f3af.svg
index fe4adfa486c11..fffbf85a5e093 100644
--- a/public/emoji/1f3af.svg
+++ b/public/emoji/1f3af.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3b0.png b/public/emoji/1f3b0.png
deleted file mode 100644
index ee71b6c268c60..0000000000000
Binary files a/public/emoji/1f3b0.png and /dev/null differ
diff --git a/public/emoji/1f3b0.svg b/public/emoji/1f3b0.svg
index bf844ef632527..94d62408f022e 100644
--- a/public/emoji/1f3b0.svg
+++ b/public/emoji/1f3b0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3b1.png b/public/emoji/1f3b1.png
deleted file mode 100644
index 38ca662edede5..0000000000000
Binary files a/public/emoji/1f3b1.png and /dev/null differ
diff --git a/public/emoji/1f3b1.svg b/public/emoji/1f3b1.svg
index c4dcbfe7f8f30..29ad50683131a 100644
--- a/public/emoji/1f3b1.svg
+++ b/public/emoji/1f3b1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3b2.png b/public/emoji/1f3b2.png
deleted file mode 100644
index ad3626fe5e5fa..0000000000000
Binary files a/public/emoji/1f3b2.png and /dev/null differ
diff --git a/public/emoji/1f3b2.svg b/public/emoji/1f3b2.svg
index 56434d024dfd1..036835dc78803 100644
--- a/public/emoji/1f3b2.svg
+++ b/public/emoji/1f3b2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3b3.png b/public/emoji/1f3b3.png
deleted file mode 100644
index 63add89e53b33..0000000000000
Binary files a/public/emoji/1f3b3.png and /dev/null differ
diff --git a/public/emoji/1f3b3.svg b/public/emoji/1f3b3.svg
index 3fe632fcbf551..997b5d3098761 100644
--- a/public/emoji/1f3b3.svg
+++ b/public/emoji/1f3b3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3b4.png b/public/emoji/1f3b4.png
deleted file mode 100644
index 6766b044d9599..0000000000000
Binary files a/public/emoji/1f3b4.png and /dev/null differ
diff --git a/public/emoji/1f3b4.svg b/public/emoji/1f3b4.svg
index 9618a3cb19907..e0dcba142d305 100644
--- a/public/emoji/1f3b4.svg
+++ b/public/emoji/1f3b4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3b5.png b/public/emoji/1f3b5.png
deleted file mode 100644
index 06691ef61bbfc..0000000000000
Binary files a/public/emoji/1f3b5.png and /dev/null differ
diff --git a/public/emoji/1f3b5.svg b/public/emoji/1f3b5.svg
index 7ce21dd8d194c..d748d57ac805f 100644
--- a/public/emoji/1f3b5.svg
+++ b/public/emoji/1f3b5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3b6.png b/public/emoji/1f3b6.png
deleted file mode 100644
index 57d499aa181a2..0000000000000
Binary files a/public/emoji/1f3b6.png and /dev/null differ
diff --git a/public/emoji/1f3b6.svg b/public/emoji/1f3b6.svg
index 9c0b8a81e88f9..f1e96a143844d 100644
--- a/public/emoji/1f3b6.svg
+++ b/public/emoji/1f3b6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3b7.png b/public/emoji/1f3b7.png
deleted file mode 100644
index a392faec29174..0000000000000
Binary files a/public/emoji/1f3b7.png and /dev/null differ
diff --git a/public/emoji/1f3b7.svg b/public/emoji/1f3b7.svg
index a3bf5ca27d51c..146331c5032a6 100644
--- a/public/emoji/1f3b7.svg
+++ b/public/emoji/1f3b7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3b8.png b/public/emoji/1f3b8.png
deleted file mode 100644
index 43d752f1e3d32..0000000000000
Binary files a/public/emoji/1f3b8.png and /dev/null differ
diff --git a/public/emoji/1f3b8.svg b/public/emoji/1f3b8.svg
index e31145b883c14..9253fa7122f24 100644
--- a/public/emoji/1f3b8.svg
+++ b/public/emoji/1f3b8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3b9.png b/public/emoji/1f3b9.png
deleted file mode 100644
index 442b745684257..0000000000000
Binary files a/public/emoji/1f3b9.png and /dev/null differ
diff --git a/public/emoji/1f3b9.svg b/public/emoji/1f3b9.svg
index 4605d3fbd5b10..f3dc5d6fbf7fc 100644
--- a/public/emoji/1f3b9.svg
+++ b/public/emoji/1f3b9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ba.png b/public/emoji/1f3ba.png
deleted file mode 100644
index 864ccbcd04a66..0000000000000
Binary files a/public/emoji/1f3ba.png and /dev/null differ
diff --git a/public/emoji/1f3ba.svg b/public/emoji/1f3ba.svg
index 248ae7d2aa2e0..69c96b2bcf192 100644
--- a/public/emoji/1f3ba.svg
+++ b/public/emoji/1f3ba.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3bb.png b/public/emoji/1f3bb.png
deleted file mode 100644
index e1e76cce24240..0000000000000
Binary files a/public/emoji/1f3bb.png and /dev/null differ
diff --git a/public/emoji/1f3bb.svg b/public/emoji/1f3bb.svg
index 3e9cf6e764d2f..bb41fa03adec6 100644
--- a/public/emoji/1f3bb.svg
+++ b/public/emoji/1f3bb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3bc.png b/public/emoji/1f3bc.png
deleted file mode 100644
index 47dc05a8ef518..0000000000000
Binary files a/public/emoji/1f3bc.png and /dev/null differ
diff --git a/public/emoji/1f3bc.svg b/public/emoji/1f3bc.svg
index c07402486c780..5a6b2c5432aa7 100644
--- a/public/emoji/1f3bc.svg
+++ b/public/emoji/1f3bc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3bd.png b/public/emoji/1f3bd.png
deleted file mode 100644
index 6d83c06b803bd..0000000000000
Binary files a/public/emoji/1f3bd.png and /dev/null differ
diff --git a/public/emoji/1f3bd.svg b/public/emoji/1f3bd.svg
index b612348f3fc3f..5afc205fc0939 100644
--- a/public/emoji/1f3bd.svg
+++ b/public/emoji/1f3bd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3be.png b/public/emoji/1f3be.png
deleted file mode 100644
index 7e68ba8f30191..0000000000000
Binary files a/public/emoji/1f3be.png and /dev/null differ
diff --git a/public/emoji/1f3be.svg b/public/emoji/1f3be.svg
index 25ead517e9fa8..a32596c85e26f 100644
--- a/public/emoji/1f3be.svg
+++ b/public/emoji/1f3be.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3bf.png b/public/emoji/1f3bf.png
deleted file mode 100644
index 4a2d2c123066e..0000000000000
Binary files a/public/emoji/1f3bf.png and /dev/null differ
diff --git a/public/emoji/1f3bf.svg b/public/emoji/1f3bf.svg
index c18b6706dd190..8fc9b173d8a4d 100644
--- a/public/emoji/1f3bf.svg
+++ b/public/emoji/1f3bf.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c0.png b/public/emoji/1f3c0.png
deleted file mode 100644
index 64c76b79c6dd0..0000000000000
Binary files a/public/emoji/1f3c0.png and /dev/null differ
diff --git a/public/emoji/1f3c0.svg b/public/emoji/1f3c0.svg
index 4c88cd07ed535..19fe48e475d02 100644
--- a/public/emoji/1f3c0.svg
+++ b/public/emoji/1f3c0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c1.png b/public/emoji/1f3c1.png
deleted file mode 100644
index 5a71eecb89be4..0000000000000
Binary files a/public/emoji/1f3c1.png and /dev/null differ
diff --git a/public/emoji/1f3c1.svg b/public/emoji/1f3c1.svg
index a57b1b0014399..a8b2718646b2e 100644
--- a/public/emoji/1f3c1.svg
+++ b/public/emoji/1f3c1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c2-1f3fb.svg b/public/emoji/1f3c2-1f3fb.svg
new file mode 100644
index 0000000000000..80f18eae43089
--- /dev/null
+++ b/public/emoji/1f3c2-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c2-1f3fc.svg b/public/emoji/1f3c2-1f3fc.svg
new file mode 100644
index 0000000000000..d9d27bd1b4ffe
--- /dev/null
+++ b/public/emoji/1f3c2-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c2-1f3fd.svg b/public/emoji/1f3c2-1f3fd.svg
new file mode 100644
index 0000000000000..93bdecc58b3e6
--- /dev/null
+++ b/public/emoji/1f3c2-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c2-1f3fe.svg b/public/emoji/1f3c2-1f3fe.svg
new file mode 100644
index 0000000000000..076c81b98b641
--- /dev/null
+++ b/public/emoji/1f3c2-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c2-1f3ff.svg b/public/emoji/1f3c2-1f3ff.svg
new file mode 100644
index 0000000000000..b2d6ad96e7c5c
--- /dev/null
+++ b/public/emoji/1f3c2-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c2.png b/public/emoji/1f3c2.png
deleted file mode 100644
index 6361c0f2c9d1a..0000000000000
Binary files a/public/emoji/1f3c2.png and /dev/null differ
diff --git a/public/emoji/1f3c2.svg b/public/emoji/1f3c2.svg
index 347e2d7f789e2..7239e125221b5 100644
--- a/public/emoji/1f3c2.svg
+++ b/public/emoji/1f3c2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f3c3-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..570fc7cc05bcf
--- /dev/null
+++ b/public/emoji/1f3c3-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f3c3-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..dfff62b71cc6c
--- /dev/null
+++ b/public/emoji/1f3c3-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3fb.png b/public/emoji/1f3c3-1f3fb.png
deleted file mode 100644
index 9355239a52d2c..0000000000000
Binary files a/public/emoji/1f3c3-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f3c3-1f3fb.svg b/public/emoji/1f3c3-1f3fb.svg
index 4b9b89b0687df..dfff62b71cc6c 100644
--- a/public/emoji/1f3c3-1f3fb.svg
+++ b/public/emoji/1f3c3-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f3c3-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..ab219949db93a
--- /dev/null
+++ b/public/emoji/1f3c3-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f3c3-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..093f4ba69cc60
--- /dev/null
+++ b/public/emoji/1f3c3-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3fc.png b/public/emoji/1f3c3-1f3fc.png
deleted file mode 100644
index 6112fd5c376bc..0000000000000
Binary files a/public/emoji/1f3c3-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f3c3-1f3fc.svg b/public/emoji/1f3c3-1f3fc.svg
index fd2a61abd92e8..093f4ba69cc60 100644
--- a/public/emoji/1f3c3-1f3fc.svg
+++ b/public/emoji/1f3c3-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f3c3-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..c7d77e2afd014
--- /dev/null
+++ b/public/emoji/1f3c3-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f3c3-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..fc486856e82ec
--- /dev/null
+++ b/public/emoji/1f3c3-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3fd.png b/public/emoji/1f3c3-1f3fd.png
deleted file mode 100644
index 625ec708f480b..0000000000000
Binary files a/public/emoji/1f3c3-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f3c3-1f3fd.svg b/public/emoji/1f3c3-1f3fd.svg
index 6e8a3ba0d9334..fc486856e82ec 100644
--- a/public/emoji/1f3c3-1f3fd.svg
+++ b/public/emoji/1f3c3-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f3c3-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..ec6cb8d7bd944
--- /dev/null
+++ b/public/emoji/1f3c3-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f3c3-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..ebf10ebdeb546
--- /dev/null
+++ b/public/emoji/1f3c3-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3fe.png b/public/emoji/1f3c3-1f3fe.png
deleted file mode 100644
index 242f1b5633734..0000000000000
Binary files a/public/emoji/1f3c3-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f3c3-1f3fe.svg b/public/emoji/1f3c3-1f3fe.svg
index 819f33c333bb4..ebf10ebdeb546 100644
--- a/public/emoji/1f3c3-1f3fe.svg
+++ b/public/emoji/1f3c3-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f3c3-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..6a6be6cb8e7e2
--- /dev/null
+++ b/public/emoji/1f3c3-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f3c3-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..870bf9f5bc237
--- /dev/null
+++ b/public/emoji/1f3c3-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c3-1f3ff.png b/public/emoji/1f3c3-1f3ff.png
deleted file mode 100644
index 2976c6f019f9a..0000000000000
Binary files a/public/emoji/1f3c3-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f3c3-1f3ff.svg b/public/emoji/1f3c3-1f3ff.svg
index 622c252e46428..870bf9f5bc237 100644
--- a/public/emoji/1f3c3-1f3ff.svg
+++ b/public/emoji/1f3c3-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c3-200d-2640-fe0f.svg b/public/emoji/1f3c3-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..267f23f2a2173
--- /dev/null
+++ b/public/emoji/1f3c3-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c3-200d-2642-fe0f.svg b/public/emoji/1f3c3-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..2916e589759af
--- /dev/null
+++ b/public/emoji/1f3c3-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c3.png b/public/emoji/1f3c3.png
deleted file mode 100644
index e914915976acc..0000000000000
Binary files a/public/emoji/1f3c3.png and /dev/null differ
diff --git a/public/emoji/1f3c3.svg b/public/emoji/1f3c3.svg
index e292a290c6913..2916e589759af 100644
--- a/public/emoji/1f3c3.svg
+++ b/public/emoji/1f3c3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f3c4-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..1e6a1bb30bbe0
--- /dev/null
+++ b/public/emoji/1f3c4-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f3c4-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..10680958ebc27
--- /dev/null
+++ b/public/emoji/1f3c4-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3fb.png b/public/emoji/1f3c4-1f3fb.png
deleted file mode 100644
index b5faaa524cceb..0000000000000
Binary files a/public/emoji/1f3c4-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f3c4-1f3fb.svg b/public/emoji/1f3c4-1f3fb.svg
index b76cc56bcda7e..10680958ebc27 100644
--- a/public/emoji/1f3c4-1f3fb.svg
+++ b/public/emoji/1f3c4-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f3c4-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..63730d1c09907
--- /dev/null
+++ b/public/emoji/1f3c4-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f3c4-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..02facb5ce7d8a
--- /dev/null
+++ b/public/emoji/1f3c4-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3fc.png b/public/emoji/1f3c4-1f3fc.png
deleted file mode 100644
index 6d92e412ff1d9..0000000000000
Binary files a/public/emoji/1f3c4-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f3c4-1f3fc.svg b/public/emoji/1f3c4-1f3fc.svg
index f595853c7a486..02facb5ce7d8a 100644
--- a/public/emoji/1f3c4-1f3fc.svg
+++ b/public/emoji/1f3c4-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f3c4-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..03e18b72d1eed
--- /dev/null
+++ b/public/emoji/1f3c4-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f3c4-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..bf3a8b32be050
--- /dev/null
+++ b/public/emoji/1f3c4-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3fd.png b/public/emoji/1f3c4-1f3fd.png
deleted file mode 100644
index f05ef59496ed4..0000000000000
Binary files a/public/emoji/1f3c4-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f3c4-1f3fd.svg b/public/emoji/1f3c4-1f3fd.svg
index 5ddcf250fea45..bf3a8b32be050 100644
--- a/public/emoji/1f3c4-1f3fd.svg
+++ b/public/emoji/1f3c4-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f3c4-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..866a81364a14f
--- /dev/null
+++ b/public/emoji/1f3c4-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f3c4-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..d3529de70d5c2
--- /dev/null
+++ b/public/emoji/1f3c4-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3fe.png b/public/emoji/1f3c4-1f3fe.png
deleted file mode 100644
index 35e143d19dcbc..0000000000000
Binary files a/public/emoji/1f3c4-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f3c4-1f3fe.svg b/public/emoji/1f3c4-1f3fe.svg
index bf0fa36f2c22c..d3529de70d5c2 100644
--- a/public/emoji/1f3c4-1f3fe.svg
+++ b/public/emoji/1f3c4-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f3c4-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..40c4e2605fe53
--- /dev/null
+++ b/public/emoji/1f3c4-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f3c4-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..5c4f2a5e46506
--- /dev/null
+++ b/public/emoji/1f3c4-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c4-1f3ff.png b/public/emoji/1f3c4-1f3ff.png
deleted file mode 100644
index 38917658eac47..0000000000000
Binary files a/public/emoji/1f3c4-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f3c4-1f3ff.svg b/public/emoji/1f3c4-1f3ff.svg
index 294226da2d07e..5c4f2a5e46506 100644
--- a/public/emoji/1f3c4-1f3ff.svg
+++ b/public/emoji/1f3c4-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c4-200d-2640-fe0f.svg b/public/emoji/1f3c4-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..ea334a12a6839
--- /dev/null
+++ b/public/emoji/1f3c4-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c4-200d-2642-fe0f.svg b/public/emoji/1f3c4-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..88bd36f1aab9a
--- /dev/null
+++ b/public/emoji/1f3c4-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3c4.png b/public/emoji/1f3c4.png
deleted file mode 100644
index 3ab017adf4bc8..0000000000000
Binary files a/public/emoji/1f3c4.png and /dev/null differ
diff --git a/public/emoji/1f3c4.svg b/public/emoji/1f3c4.svg
index 53b845c633e80..88bd36f1aab9a 100644
--- a/public/emoji/1f3c4.svg
+++ b/public/emoji/1f3c4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c5.png b/public/emoji/1f3c5.png
deleted file mode 100644
index b85896b14da28..0000000000000
Binary files a/public/emoji/1f3c5.png and /dev/null differ
diff --git a/public/emoji/1f3c5.svg b/public/emoji/1f3c5.svg
index 4862d3c6929bd..1514714dc5f03 100644
--- a/public/emoji/1f3c5.svg
+++ b/public/emoji/1f3c5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c6.png b/public/emoji/1f3c6.png
deleted file mode 100644
index ac2895c189659..0000000000000
Binary files a/public/emoji/1f3c6.png and /dev/null differ
diff --git a/public/emoji/1f3c6.svg b/public/emoji/1f3c6.svg
index 025592e6df65b..6ecc234afff53 100644
--- a/public/emoji/1f3c6.svg
+++ b/public/emoji/1f3c6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c7-1f3fb.png b/public/emoji/1f3c7-1f3fb.png
deleted file mode 100644
index e9bf4092e9850..0000000000000
Binary files a/public/emoji/1f3c7-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f3c7-1f3fb.svg b/public/emoji/1f3c7-1f3fb.svg
index 308dd7abefe42..47ac7e4180aed 100644
--- a/public/emoji/1f3c7-1f3fb.svg
+++ b/public/emoji/1f3c7-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c7-1f3fc.png b/public/emoji/1f3c7-1f3fc.png
deleted file mode 100644
index 031bbc3d867d9..0000000000000
Binary files a/public/emoji/1f3c7-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f3c7-1f3fc.svg b/public/emoji/1f3c7-1f3fc.svg
index f841b3e2d7e78..b8509d9d10519 100644
--- a/public/emoji/1f3c7-1f3fc.svg
+++ b/public/emoji/1f3c7-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c7-1f3fd.png b/public/emoji/1f3c7-1f3fd.png
deleted file mode 100644
index b40ef891f9bbc..0000000000000
Binary files a/public/emoji/1f3c7-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f3c7-1f3fd.svg b/public/emoji/1f3c7-1f3fd.svg
index ca972a62fcdc1..67944e2882711 100644
--- a/public/emoji/1f3c7-1f3fd.svg
+++ b/public/emoji/1f3c7-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c7-1f3fe.png b/public/emoji/1f3c7-1f3fe.png
deleted file mode 100644
index e286cb85065cb..0000000000000
Binary files a/public/emoji/1f3c7-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f3c7-1f3fe.svg b/public/emoji/1f3c7-1f3fe.svg
index c8f385084959e..5bea32d7c61bb 100644
--- a/public/emoji/1f3c7-1f3fe.svg
+++ b/public/emoji/1f3c7-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c7-1f3ff.png b/public/emoji/1f3c7-1f3ff.png
deleted file mode 100644
index 453c51c6007d4..0000000000000
Binary files a/public/emoji/1f3c7-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f3c7-1f3ff.svg b/public/emoji/1f3c7-1f3ff.svg
index 1ee4554df15cf..a6c6031f70692 100644
--- a/public/emoji/1f3c7-1f3ff.svg
+++ b/public/emoji/1f3c7-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c7.png b/public/emoji/1f3c7.png
deleted file mode 100644
index addf9edac56f5..0000000000000
Binary files a/public/emoji/1f3c7.png and /dev/null differ
diff --git a/public/emoji/1f3c7.svg b/public/emoji/1f3c7.svg
index f790b688592ec..b6b0ecc8ef785 100644
--- a/public/emoji/1f3c7.svg
+++ b/public/emoji/1f3c7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c8.png b/public/emoji/1f3c8.png
deleted file mode 100644
index 10366f41fce33..0000000000000
Binary files a/public/emoji/1f3c8.png and /dev/null differ
diff --git a/public/emoji/1f3c8.svg b/public/emoji/1f3c8.svg
index 85ecdbf9cba2e..3a7e9ea5ca075 100644
--- a/public/emoji/1f3c8.svg
+++ b/public/emoji/1f3c8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3c9.png b/public/emoji/1f3c9.png
deleted file mode 100644
index b187227343683..0000000000000
Binary files a/public/emoji/1f3c9.png and /dev/null differ
diff --git a/public/emoji/1f3c9.svg b/public/emoji/1f3c9.svg
index dca5f04935147..c61d5e10497c8 100644
--- a/public/emoji/1f3c9.svg
+++ b/public/emoji/1f3c9.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f3ca-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..b566b0b49532f
--- /dev/null
+++ b/public/emoji/1f3ca-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f3ca-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..4adae1bee6394
--- /dev/null
+++ b/public/emoji/1f3ca-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3fb.png b/public/emoji/1f3ca-1f3fb.png
deleted file mode 100644
index 38441c9ca9a7c..0000000000000
Binary files a/public/emoji/1f3ca-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f3ca-1f3fb.svg b/public/emoji/1f3ca-1f3fb.svg
index 8484a53049e32..4adae1bee6394 100644
--- a/public/emoji/1f3ca-1f3fb.svg
+++ b/public/emoji/1f3ca-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f3ca-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..938af613b4902
--- /dev/null
+++ b/public/emoji/1f3ca-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f3ca-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..b7bad319578f7
--- /dev/null
+++ b/public/emoji/1f3ca-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3fc.png b/public/emoji/1f3ca-1f3fc.png
deleted file mode 100644
index b0d4311244433..0000000000000
Binary files a/public/emoji/1f3ca-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f3ca-1f3fc.svg b/public/emoji/1f3ca-1f3fc.svg
index 456bee3b3955f..b7bad319578f7 100644
--- a/public/emoji/1f3ca-1f3fc.svg
+++ b/public/emoji/1f3ca-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f3ca-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..fb1f38e4b4610
--- /dev/null
+++ b/public/emoji/1f3ca-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f3ca-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..87d970d38bba0
--- /dev/null
+++ b/public/emoji/1f3ca-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3fd.png b/public/emoji/1f3ca-1f3fd.png
deleted file mode 100644
index 211e77e2aa00a..0000000000000
Binary files a/public/emoji/1f3ca-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f3ca-1f3fd.svg b/public/emoji/1f3ca-1f3fd.svg
index 57e0642245f44..87d970d38bba0 100644
--- a/public/emoji/1f3ca-1f3fd.svg
+++ b/public/emoji/1f3ca-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f3ca-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..c506400824a2b
--- /dev/null
+++ b/public/emoji/1f3ca-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f3ca-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..68084d89a1811
--- /dev/null
+++ b/public/emoji/1f3ca-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3fe.png b/public/emoji/1f3ca-1f3fe.png
deleted file mode 100644
index f34c34db9d24c..0000000000000
Binary files a/public/emoji/1f3ca-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f3ca-1f3fe.svg b/public/emoji/1f3ca-1f3fe.svg
index 12d607b4bb1cf..68084d89a1811 100644
--- a/public/emoji/1f3ca-1f3fe.svg
+++ b/public/emoji/1f3ca-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f3ca-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..7f97b5f07b7f9
--- /dev/null
+++ b/public/emoji/1f3ca-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f3ca-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..0e93a98c93b92
--- /dev/null
+++ b/public/emoji/1f3ca-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3ca-1f3ff.png b/public/emoji/1f3ca-1f3ff.png
deleted file mode 100644
index 3e9231ff86815..0000000000000
Binary files a/public/emoji/1f3ca-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f3ca-1f3ff.svg b/public/emoji/1f3ca-1f3ff.svg
index 99fe3f240e975..0e93a98c93b92 100644
--- a/public/emoji/1f3ca-1f3ff.svg
+++ b/public/emoji/1f3ca-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ca-200d-2640-fe0f.svg b/public/emoji/1f3ca-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..1d4abfd761c9e
--- /dev/null
+++ b/public/emoji/1f3ca-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3ca-200d-2642-fe0f.svg b/public/emoji/1f3ca-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..7611ea22ab555
--- /dev/null
+++ b/public/emoji/1f3ca-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3ca.png b/public/emoji/1f3ca.png
deleted file mode 100644
index 55b4d72f9a7e3..0000000000000
Binary files a/public/emoji/1f3ca.png and /dev/null differ
diff --git a/public/emoji/1f3ca.svg b/public/emoji/1f3ca.svg
index 5b62b5cc772c4..7611ea22ab555 100644
--- a/public/emoji/1f3ca.svg
+++ b/public/emoji/1f3ca.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f3cb-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..70fdc084fec0f
--- /dev/null
+++ b/public/emoji/1f3cb-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f3cb-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..3938ed9cc22ff
--- /dev/null
+++ b/public/emoji/1f3cb-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3fb.png b/public/emoji/1f3cb-1f3fb.png
deleted file mode 100644
index febaad123ece6..0000000000000
Binary files a/public/emoji/1f3cb-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f3cb-1f3fb.svg b/public/emoji/1f3cb-1f3fb.svg
index 1d993f5b36f24..3938ed9cc22ff 100644
--- a/public/emoji/1f3cb-1f3fb.svg
+++ b/public/emoji/1f3cb-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f3cb-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..5f84387930a23
--- /dev/null
+++ b/public/emoji/1f3cb-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f3cb-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..11f1a172805a6
--- /dev/null
+++ b/public/emoji/1f3cb-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3fc.png b/public/emoji/1f3cb-1f3fc.png
deleted file mode 100644
index 27ae794a18e88..0000000000000
Binary files a/public/emoji/1f3cb-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f3cb-1f3fc.svg b/public/emoji/1f3cb-1f3fc.svg
index 4b386c0119d94..11f1a172805a6 100644
--- a/public/emoji/1f3cb-1f3fc.svg
+++ b/public/emoji/1f3cb-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f3cb-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..310e48533807c
--- /dev/null
+++ b/public/emoji/1f3cb-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f3cb-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..8f7a557280bbb
--- /dev/null
+++ b/public/emoji/1f3cb-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3fd.png b/public/emoji/1f3cb-1f3fd.png
deleted file mode 100644
index 45c4c22c7098d..0000000000000
Binary files a/public/emoji/1f3cb-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f3cb-1f3fd.svg b/public/emoji/1f3cb-1f3fd.svg
index 06778330e182a..8f7a557280bbb 100644
--- a/public/emoji/1f3cb-1f3fd.svg
+++ b/public/emoji/1f3cb-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f3cb-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..7026af4e9fa35
--- /dev/null
+++ b/public/emoji/1f3cb-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f3cb-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..4e06d696b0cc8
--- /dev/null
+++ b/public/emoji/1f3cb-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3fe.png b/public/emoji/1f3cb-1f3fe.png
deleted file mode 100644
index 67dd21d2464e2..0000000000000
Binary files a/public/emoji/1f3cb-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f3cb-1f3fe.svg b/public/emoji/1f3cb-1f3fe.svg
index 7df96c44d2a02..4e06d696b0cc8 100644
--- a/public/emoji/1f3cb-1f3fe.svg
+++ b/public/emoji/1f3cb-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f3cb-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..27cfbeef629ae
--- /dev/null
+++ b/public/emoji/1f3cb-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f3cb-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..08e998ed92f8d
--- /dev/null
+++ b/public/emoji/1f3cb-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cb-1f3ff.png b/public/emoji/1f3cb-1f3ff.png
deleted file mode 100644
index fa0152038b6ca..0000000000000
Binary files a/public/emoji/1f3cb-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f3cb-1f3ff.svg b/public/emoji/1f3cb-1f3ff.svg
index 252bf0e4a8cbb..08e998ed92f8d 100644
--- a/public/emoji/1f3cb-1f3ff.svg
+++ b/public/emoji/1f3cb-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3cb-fe0f-200d-2640-fe0f.svg b/public/emoji/1f3cb-fe0f-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..3e6f21e92c270
--- /dev/null
+++ b/public/emoji/1f3cb-fe0f-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cb-fe0f-200d-2642-fe0f.svg b/public/emoji/1f3cb-fe0f-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..01306a75380f6
--- /dev/null
+++ b/public/emoji/1f3cb-fe0f-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cb.png b/public/emoji/1f3cb.png
deleted file mode 100644
index afdeaa476af88..0000000000000
Binary files a/public/emoji/1f3cb.png and /dev/null differ
diff --git a/public/emoji/1f3cb.svg b/public/emoji/1f3cb.svg
index 606b0076bcfb3..01306a75380f6 100644
--- a/public/emoji/1f3cb.svg
+++ b/public/emoji/1f3cb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f3cc-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..24b0ade2542bb
--- /dev/null
+++ b/public/emoji/1f3cc-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f3cc-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..ca733cb95588c
--- /dev/null
+++ b/public/emoji/1f3cc-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3fb.svg b/public/emoji/1f3cc-1f3fb.svg
new file mode 100644
index 0000000000000..ca733cb95588c
--- /dev/null
+++ b/public/emoji/1f3cc-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f3cc-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..e3379b1e3a32e
--- /dev/null
+++ b/public/emoji/1f3cc-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f3cc-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..c0c7941621f96
--- /dev/null
+++ b/public/emoji/1f3cc-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3fc.svg b/public/emoji/1f3cc-1f3fc.svg
new file mode 100644
index 0000000000000..c0c7941621f96
--- /dev/null
+++ b/public/emoji/1f3cc-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f3cc-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..0fb927c829d45
--- /dev/null
+++ b/public/emoji/1f3cc-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f3cc-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..6e67fa7ab0940
--- /dev/null
+++ b/public/emoji/1f3cc-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3fd.svg b/public/emoji/1f3cc-1f3fd.svg
new file mode 100644
index 0000000000000..6e67fa7ab0940
--- /dev/null
+++ b/public/emoji/1f3cc-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f3cc-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..150fc0e21267b
--- /dev/null
+++ b/public/emoji/1f3cc-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f3cc-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..c891ce67ae51b
--- /dev/null
+++ b/public/emoji/1f3cc-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3fe.svg b/public/emoji/1f3cc-1f3fe.svg
new file mode 100644
index 0000000000000..c891ce67ae51b
--- /dev/null
+++ b/public/emoji/1f3cc-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f3cc-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..78031ea8572dd
--- /dev/null
+++ b/public/emoji/1f3cc-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f3cc-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..703b6c66e5a60
--- /dev/null
+++ b/public/emoji/1f3cc-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-1f3ff.svg b/public/emoji/1f3cc-1f3ff.svg
new file mode 100644
index 0000000000000..703b6c66e5a60
--- /dev/null
+++ b/public/emoji/1f3cc-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-fe0f-200d-2640-fe0f.svg b/public/emoji/1f3cc-fe0f-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..a51cba2e1416a
--- /dev/null
+++ b/public/emoji/1f3cc-fe0f-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc-fe0f-200d-2642-fe0f.svg b/public/emoji/1f3cc-fe0f-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..23c4ae77ed89c
--- /dev/null
+++ b/public/emoji/1f3cc-fe0f-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3cc.png b/public/emoji/1f3cc.png
deleted file mode 100644
index 39c552de86da1..0000000000000
Binary files a/public/emoji/1f3cc.png and /dev/null differ
diff --git a/public/emoji/1f3cc.svg b/public/emoji/1f3cc.svg
index 25cce198a94b4..23c4ae77ed89c 100644
--- a/public/emoji/1f3cc.svg
+++ b/public/emoji/1f3cc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3cd.png b/public/emoji/1f3cd.png
deleted file mode 100644
index 3d1d567e8ec6e..0000000000000
Binary files a/public/emoji/1f3cd.png and /dev/null differ
diff --git a/public/emoji/1f3cd.svg b/public/emoji/1f3cd.svg
index ea58df55bed94..7384d6b0e7908 100644
--- a/public/emoji/1f3cd.svg
+++ b/public/emoji/1f3cd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ce.png b/public/emoji/1f3ce.png
deleted file mode 100644
index fe3f045f44662..0000000000000
Binary files a/public/emoji/1f3ce.png and /dev/null differ
diff --git a/public/emoji/1f3ce.svg b/public/emoji/1f3ce.svg
index f6bb1d8f9c17c..3fc893c907537 100644
--- a/public/emoji/1f3ce.svg
+++ b/public/emoji/1f3ce.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3cf.png b/public/emoji/1f3cf.png
deleted file mode 100644
index d602294a2cd1e..0000000000000
Binary files a/public/emoji/1f3cf.png and /dev/null differ
diff --git a/public/emoji/1f3cf.svg b/public/emoji/1f3cf.svg
index 1723dfe48f136..c9f934012eaba 100644
--- a/public/emoji/1f3cf.svg
+++ b/public/emoji/1f3cf.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3d0.png b/public/emoji/1f3d0.png
deleted file mode 100644
index 7a0e49d4b0745..0000000000000
Binary files a/public/emoji/1f3d0.png and /dev/null differ
diff --git a/public/emoji/1f3d0.svg b/public/emoji/1f3d0.svg
index bf0a6132390b6..6f3923c6aced2 100644
--- a/public/emoji/1f3d0.svg
+++ b/public/emoji/1f3d0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3d1.png b/public/emoji/1f3d1.png
deleted file mode 100644
index 839637716ee8b..0000000000000
Binary files a/public/emoji/1f3d1.png and /dev/null differ
diff --git a/public/emoji/1f3d1.svg b/public/emoji/1f3d1.svg
index 22278e5754f40..3cd95b29907cb 100644
--- a/public/emoji/1f3d1.svg
+++ b/public/emoji/1f3d1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3d2.png b/public/emoji/1f3d2.png
deleted file mode 100644
index be94e9cbf73ee..0000000000000
Binary files a/public/emoji/1f3d2.png and /dev/null differ
diff --git a/public/emoji/1f3d2.svg b/public/emoji/1f3d2.svg
index 84c1cd509915f..25513203cce93 100644
--- a/public/emoji/1f3d2.svg
+++ b/public/emoji/1f3d2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3d3.png b/public/emoji/1f3d3.png
deleted file mode 100644
index ff3c51727d186..0000000000000
Binary files a/public/emoji/1f3d3.png and /dev/null differ
diff --git a/public/emoji/1f3d3.svg b/public/emoji/1f3d3.svg
index f7ecc84613b2e..f9fe5dedb5e3f 100644
--- a/public/emoji/1f3d3.svg
+++ b/public/emoji/1f3d3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3d4.png b/public/emoji/1f3d4.png
deleted file mode 100644
index 76e1cfd831378..0000000000000
Binary files a/public/emoji/1f3d4.png and /dev/null differ
diff --git a/public/emoji/1f3d4.svg b/public/emoji/1f3d4.svg
index fad85a34ee2c0..06a703edb5a4f 100644
--- a/public/emoji/1f3d4.svg
+++ b/public/emoji/1f3d4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3d5.png b/public/emoji/1f3d5.png
deleted file mode 100644
index d589cc1f44bc7..0000000000000
Binary files a/public/emoji/1f3d5.png and /dev/null differ
diff --git a/public/emoji/1f3d5.svg b/public/emoji/1f3d5.svg
index 166f1a74f3d30..2aec636dcc696 100644
--- a/public/emoji/1f3d5.svg
+++ b/public/emoji/1f3d5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3d6.png b/public/emoji/1f3d6.png
deleted file mode 100644
index 69108c8ea109b..0000000000000
Binary files a/public/emoji/1f3d6.png and /dev/null differ
diff --git a/public/emoji/1f3d6.svg b/public/emoji/1f3d6.svg
index 7aa2ca8b9a763..0e9cc80767030 100644
--- a/public/emoji/1f3d6.svg
+++ b/public/emoji/1f3d6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3d7.png b/public/emoji/1f3d7.png
deleted file mode 100644
index 8206a20f63fb6..0000000000000
Binary files a/public/emoji/1f3d7.png and /dev/null differ
diff --git a/public/emoji/1f3d7.svg b/public/emoji/1f3d7.svg
index a29f1db270740..271e35a24078d 100644
--- a/public/emoji/1f3d7.svg
+++ b/public/emoji/1f3d7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3d8.png b/public/emoji/1f3d8.png
deleted file mode 100644
index 6ab4a2a265146..0000000000000
Binary files a/public/emoji/1f3d8.png and /dev/null differ
diff --git a/public/emoji/1f3d8.svg b/public/emoji/1f3d8.svg
index ba838e874f102..805e0aa1493d3 100644
--- a/public/emoji/1f3d8.svg
+++ b/public/emoji/1f3d8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3d9.png b/public/emoji/1f3d9.png
deleted file mode 100644
index d7b9844a0b481..0000000000000
Binary files a/public/emoji/1f3d9.png and /dev/null differ
diff --git a/public/emoji/1f3d9.svg b/public/emoji/1f3d9.svg
index 3deabda4524fd..b740e61a2ecf9 100644
--- a/public/emoji/1f3d9.svg
+++ b/public/emoji/1f3d9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3da.png b/public/emoji/1f3da.png
deleted file mode 100644
index c55e81de990e8..0000000000000
Binary files a/public/emoji/1f3da.png and /dev/null differ
diff --git a/public/emoji/1f3da.svg b/public/emoji/1f3da.svg
index bf6c30621f08f..df78c98e8eb71 100644
--- a/public/emoji/1f3da.svg
+++ b/public/emoji/1f3da.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3db.png b/public/emoji/1f3db.png
deleted file mode 100644
index de7b559daaf44..0000000000000
Binary files a/public/emoji/1f3db.png and /dev/null differ
diff --git a/public/emoji/1f3db.svg b/public/emoji/1f3db.svg
index 501ea5c8b678a..85a7984275f24 100644
--- a/public/emoji/1f3db.svg
+++ b/public/emoji/1f3db.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3dc.png b/public/emoji/1f3dc.png
deleted file mode 100644
index e9966ff8c65e4..0000000000000
Binary files a/public/emoji/1f3dc.png and /dev/null differ
diff --git a/public/emoji/1f3dc.svg b/public/emoji/1f3dc.svg
index f95f15ea754a7..5dd33f2b98716 100644
--- a/public/emoji/1f3dc.svg
+++ b/public/emoji/1f3dc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3dd.png b/public/emoji/1f3dd.png
deleted file mode 100644
index 7fd834389b7df..0000000000000
Binary files a/public/emoji/1f3dd.png and /dev/null differ
diff --git a/public/emoji/1f3dd.svg b/public/emoji/1f3dd.svg
index c9bf17012500a..ef5d06435e11a 100644
--- a/public/emoji/1f3dd.svg
+++ b/public/emoji/1f3dd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3de.png b/public/emoji/1f3de.png
deleted file mode 100644
index 63ec7016301a4..0000000000000
Binary files a/public/emoji/1f3de.png and /dev/null differ
diff --git a/public/emoji/1f3de.svg b/public/emoji/1f3de.svg
index c3c729a29d329..d0d38a8a1ef32 100644
--- a/public/emoji/1f3de.svg
+++ b/public/emoji/1f3de.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3df.png b/public/emoji/1f3df.png
deleted file mode 100644
index 00cd6db5e2936..0000000000000
Binary files a/public/emoji/1f3df.png and /dev/null differ
diff --git a/public/emoji/1f3df.svg b/public/emoji/1f3df.svg
index 579a720258bad..4b9818a8ee85e 100644
--- a/public/emoji/1f3df.svg
+++ b/public/emoji/1f3df.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3e0.png b/public/emoji/1f3e0.png
deleted file mode 100644
index 01c98a0ba9235..0000000000000
Binary files a/public/emoji/1f3e0.png and /dev/null differ
diff --git a/public/emoji/1f3e0.svg b/public/emoji/1f3e0.svg
index 5edbccef4d434..c6b274a315cd8 100644
--- a/public/emoji/1f3e0.svg
+++ b/public/emoji/1f3e0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3e1.png b/public/emoji/1f3e1.png
deleted file mode 100644
index 0aae41598ef72..0000000000000
Binary files a/public/emoji/1f3e1.png and /dev/null differ
diff --git a/public/emoji/1f3e1.svg b/public/emoji/1f3e1.svg
index 8c1751eefcaf2..b7fb3cc8a3e6a 100644
--- a/public/emoji/1f3e1.svg
+++ b/public/emoji/1f3e1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3e2.png b/public/emoji/1f3e2.png
deleted file mode 100644
index 7eee927d1b085..0000000000000
Binary files a/public/emoji/1f3e2.png and /dev/null differ
diff --git a/public/emoji/1f3e2.svg b/public/emoji/1f3e2.svg
index 0f38711e03958..71a4330611f04 100644
--- a/public/emoji/1f3e2.svg
+++ b/public/emoji/1f3e2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3e3.png b/public/emoji/1f3e3.png
deleted file mode 100644
index a23848f9aa0a6..0000000000000
Binary files a/public/emoji/1f3e3.png and /dev/null differ
diff --git a/public/emoji/1f3e3.svg b/public/emoji/1f3e3.svg
index db2004f55fda6..697b1bd85f473 100644
--- a/public/emoji/1f3e3.svg
+++ b/public/emoji/1f3e3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3e4.png b/public/emoji/1f3e4.png
deleted file mode 100644
index 3745aff8dd216..0000000000000
Binary files a/public/emoji/1f3e4.png and /dev/null differ
diff --git a/public/emoji/1f3e4.svg b/public/emoji/1f3e4.svg
index 8359ad4f103f8..62040366aafcb 100644
--- a/public/emoji/1f3e4.svg
+++ b/public/emoji/1f3e4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3e5.png b/public/emoji/1f3e5.png
deleted file mode 100644
index 1cbce4ae76705..0000000000000
Binary files a/public/emoji/1f3e5.png and /dev/null differ
diff --git a/public/emoji/1f3e5.svg b/public/emoji/1f3e5.svg
index 448460d267aa7..f115d2de4898a 100644
--- a/public/emoji/1f3e5.svg
+++ b/public/emoji/1f3e5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3e6.png b/public/emoji/1f3e6.png
deleted file mode 100644
index dffdcef36a1af..0000000000000
Binary files a/public/emoji/1f3e6.png and /dev/null differ
diff --git a/public/emoji/1f3e6.svg b/public/emoji/1f3e6.svg
index dee2c6fa7c33f..99f5f1ff0f639 100644
--- a/public/emoji/1f3e6.svg
+++ b/public/emoji/1f3e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3e7.png b/public/emoji/1f3e7.png
deleted file mode 100644
index 4d935307b94c8..0000000000000
Binary files a/public/emoji/1f3e7.png and /dev/null differ
diff --git a/public/emoji/1f3e7.svg b/public/emoji/1f3e7.svg
index 770f019591278..520b82114812f 100644
--- a/public/emoji/1f3e7.svg
+++ b/public/emoji/1f3e7.svg
@@ -1,3 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3e8.png b/public/emoji/1f3e8.png
deleted file mode 100644
index ea8f4c4979aeb..0000000000000
Binary files a/public/emoji/1f3e8.png and /dev/null differ
diff --git a/public/emoji/1f3e8.svg b/public/emoji/1f3e8.svg
index 6aaa7598864eb..667bffaf714ca 100644
--- a/public/emoji/1f3e8.svg
+++ b/public/emoji/1f3e8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3e9.png b/public/emoji/1f3e9.png
deleted file mode 100644
index 5e136be6f8b5b..0000000000000
Binary files a/public/emoji/1f3e9.png and /dev/null differ
diff --git a/public/emoji/1f3e9.svg b/public/emoji/1f3e9.svg
index 5842ed57f8af0..036f2cb6eed4b 100644
--- a/public/emoji/1f3e9.svg
+++ b/public/emoji/1f3e9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ea.png b/public/emoji/1f3ea.png
deleted file mode 100644
index 26b53b5669e17..0000000000000
Binary files a/public/emoji/1f3ea.png and /dev/null differ
diff --git a/public/emoji/1f3ea.svg b/public/emoji/1f3ea.svg
index c423a1ef7e6de..73b3620281810 100644
--- a/public/emoji/1f3ea.svg
+++ b/public/emoji/1f3ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3eb.png b/public/emoji/1f3eb.png
deleted file mode 100644
index 269759534f0ef..0000000000000
Binary files a/public/emoji/1f3eb.png and /dev/null differ
diff --git a/public/emoji/1f3eb.svg b/public/emoji/1f3eb.svg
index 67a04c9213b88..e02359f960d3a 100644
--- a/public/emoji/1f3eb.svg
+++ b/public/emoji/1f3eb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ec.png b/public/emoji/1f3ec.png
deleted file mode 100644
index 58867c7a6e151..0000000000000
Binary files a/public/emoji/1f3ec.png and /dev/null differ
diff --git a/public/emoji/1f3ec.svg b/public/emoji/1f3ec.svg
index d39eedf566b18..da4dac448850e 100644
--- a/public/emoji/1f3ec.svg
+++ b/public/emoji/1f3ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ed.png b/public/emoji/1f3ed.png
deleted file mode 100644
index e1d2ddf4a2789..0000000000000
Binary files a/public/emoji/1f3ed.png and /dev/null differ
diff --git a/public/emoji/1f3ed.svg b/public/emoji/1f3ed.svg
index 43aaa5a076853..2303b92e1ec8a 100644
--- a/public/emoji/1f3ed.svg
+++ b/public/emoji/1f3ed.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ee.png b/public/emoji/1f3ee.png
deleted file mode 100644
index dfd933f6f3609..0000000000000
Binary files a/public/emoji/1f3ee.png and /dev/null differ
diff --git a/public/emoji/1f3ee.svg b/public/emoji/1f3ee.svg
index 664a33340e5ad..3fa57346bafb7 100644
--- a/public/emoji/1f3ee.svg
+++ b/public/emoji/1f3ee.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ef.png b/public/emoji/1f3ef.png
deleted file mode 100644
index 64b4e33a1ae7b..0000000000000
Binary files a/public/emoji/1f3ef.png and /dev/null differ
diff --git a/public/emoji/1f3ef.svg b/public/emoji/1f3ef.svg
index f4ba33581fd18..19127e6ff4a91 100644
--- a/public/emoji/1f3ef.svg
+++ b/public/emoji/1f3ef.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3f0.png b/public/emoji/1f3f0.png
deleted file mode 100644
index 888d11332ce14..0000000000000
Binary files a/public/emoji/1f3f0.png and /dev/null differ
diff --git a/public/emoji/1f3f0.svg b/public/emoji/1f3f0.svg
index b0b4b12cc6981..a8a08cdc2d3d0 100644
--- a/public/emoji/1f3f0.svg
+++ b/public/emoji/1f3f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3f3-1f308.png b/public/emoji/1f3f3-1f308.png
deleted file mode 100644
index 1bec5f2ffd70b..0000000000000
Binary files a/public/emoji/1f3f3-1f308.png and /dev/null differ
diff --git a/public/emoji/1f3f3-1f308.svg b/public/emoji/1f3f3-1f308.svg
deleted file mode 100644
index e082546b2bbf2..0000000000000
--- a/public/emoji/1f3f3-1f308.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f3f3-fe0f-200d-1f308.svg b/public/emoji/1f3f3-fe0f-200d-1f308.svg
new file mode 100644
index 0000000000000..f3994d389a68e
--- /dev/null
+++ b/public/emoji/1f3f3-fe0f-200d-1f308.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3f3.png b/public/emoji/1f3f3.png
deleted file mode 100644
index 86d6e96d5e9ec..0000000000000
Binary files a/public/emoji/1f3f3.png and /dev/null differ
diff --git a/public/emoji/1f3f3.svg b/public/emoji/1f3f3.svg
index d1421b827d13a..2c792674e610d 100644
--- a/public/emoji/1f3f3.svg
+++ b/public/emoji/1f3f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3f4-200d-2620-fe0f.svg b/public/emoji/1f3f4-200d-2620-fe0f.svg
new file mode 100644
index 0000000000000..4c8a34344675d
--- /dev/null
+++ b/public/emoji/1f3f4-200d-2620-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.svg b/public/emoji/1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.svg
new file mode 100644
index 0000000000000..a929886b8b87e
--- /dev/null
+++ b/public/emoji/1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.svg b/public/emoji/1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.svg
new file mode 100644
index 0000000000000..f732be741f905
--- /dev/null
+++ b/public/emoji/1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.svg b/public/emoji/1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.svg
new file mode 100644
index 0000000000000..76ac4e04fb274
--- /dev/null
+++ b/public/emoji/1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f3f4.png b/public/emoji/1f3f4.png
deleted file mode 100644
index 0e28d05d5acac..0000000000000
Binary files a/public/emoji/1f3f4.png and /dev/null differ
diff --git a/public/emoji/1f3f4.svg b/public/emoji/1f3f4.svg
index 0e6202dc1682d..82a6942b3f01b 100644
--- a/public/emoji/1f3f4.svg
+++ b/public/emoji/1f3f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3f5.png b/public/emoji/1f3f5.png
deleted file mode 100644
index 8030e494bcfb1..0000000000000
Binary files a/public/emoji/1f3f5.png and /dev/null differ
diff --git a/public/emoji/1f3f5.svg b/public/emoji/1f3f5.svg
index b6576ae9991b2..624353dea5110 100644
--- a/public/emoji/1f3f5.svg
+++ b/public/emoji/1f3f5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3f7.png b/public/emoji/1f3f7.png
deleted file mode 100644
index d41c9b4f1e1f9..0000000000000
Binary files a/public/emoji/1f3f7.png and /dev/null differ
diff --git a/public/emoji/1f3f7.svg b/public/emoji/1f3f7.svg
index 372a35f5ef8fb..3851970f97ccd 100644
--- a/public/emoji/1f3f7.svg
+++ b/public/emoji/1f3f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3f8.png b/public/emoji/1f3f8.png
deleted file mode 100644
index 7ba1570899097..0000000000000
Binary files a/public/emoji/1f3f8.png and /dev/null differ
diff --git a/public/emoji/1f3f8.svg b/public/emoji/1f3f8.svg
index c9e2b401edcec..e4ade6338f6ac 100644
--- a/public/emoji/1f3f8.svg
+++ b/public/emoji/1f3f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3f9.png b/public/emoji/1f3f9.png
deleted file mode 100644
index 6a538bf475f1d..0000000000000
Binary files a/public/emoji/1f3f9.png and /dev/null differ
diff --git a/public/emoji/1f3f9.svg b/public/emoji/1f3f9.svg
index e73e45cc3a6f4..bc367fc4e5468 100644
--- a/public/emoji/1f3f9.svg
+++ b/public/emoji/1f3f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3fa.png b/public/emoji/1f3fa.png
deleted file mode 100644
index 96de50560599b..0000000000000
Binary files a/public/emoji/1f3fa.png and /dev/null differ
diff --git a/public/emoji/1f3fa.svg b/public/emoji/1f3fa.svg
index bf02dbddafb22..e2c6cd44f0339 100644
--- a/public/emoji/1f3fa.svg
+++ b/public/emoji/1f3fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3fb.png b/public/emoji/1f3fb.png
deleted file mode 100644
index 7c9d7cdc49a70..0000000000000
Binary files a/public/emoji/1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f3fb.svg b/public/emoji/1f3fb.svg
index 95d9113d7e205..dd5723819d7bb 100644
--- a/public/emoji/1f3fb.svg
+++ b/public/emoji/1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3fc.png b/public/emoji/1f3fc.png
deleted file mode 100644
index c0fc8338c5822..0000000000000
Binary files a/public/emoji/1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f3fc.svg b/public/emoji/1f3fc.svg
index 98674ab9a5933..635292095437b 100644
--- a/public/emoji/1f3fc.svg
+++ b/public/emoji/1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3fd.png b/public/emoji/1f3fd.png
deleted file mode 100644
index 4814822f23d35..0000000000000
Binary files a/public/emoji/1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f3fd.svg b/public/emoji/1f3fd.svg
index 3216c0c48effd..efeab639cab11 100644
--- a/public/emoji/1f3fd.svg
+++ b/public/emoji/1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3fe.png b/public/emoji/1f3fe.png
deleted file mode 100644
index 60599fa6b773d..0000000000000
Binary files a/public/emoji/1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f3fe.svg b/public/emoji/1f3fe.svg
index f4e86c3367b8e..ac82ddb0551fc 100644
--- a/public/emoji/1f3fe.svg
+++ b/public/emoji/1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f3ff.png b/public/emoji/1f3ff.png
deleted file mode 100644
index 4c528eaf6d236..0000000000000
Binary files a/public/emoji/1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f3ff.svg b/public/emoji/1f3ff.svg
index b99182a777809..d0683b42794c3 100644
--- a/public/emoji/1f3ff.svg
+++ b/public/emoji/1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f400.png b/public/emoji/1f400.png
deleted file mode 100644
index 86219144f1061..0000000000000
Binary files a/public/emoji/1f400.png and /dev/null differ
diff --git a/public/emoji/1f400.svg b/public/emoji/1f400.svg
index 8dcadea17b547..b3a80271c3ec2 100644
--- a/public/emoji/1f400.svg
+++ b/public/emoji/1f400.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f401.png b/public/emoji/1f401.png
deleted file mode 100644
index 20fb041f09f54..0000000000000
Binary files a/public/emoji/1f401.png and /dev/null differ
diff --git a/public/emoji/1f401.svg b/public/emoji/1f401.svg
index 944b4a2e58208..54852c8f43fc1 100644
--- a/public/emoji/1f401.svg
+++ b/public/emoji/1f401.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f402.png b/public/emoji/1f402.png
deleted file mode 100644
index badf5708f2fdb..0000000000000
Binary files a/public/emoji/1f402.png and /dev/null differ
diff --git a/public/emoji/1f402.svg b/public/emoji/1f402.svg
index 491e8d181b5e7..b06f60b19be49 100644
--- a/public/emoji/1f402.svg
+++ b/public/emoji/1f402.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f403.png b/public/emoji/1f403.png
deleted file mode 100644
index 80446615cafc1..0000000000000
Binary files a/public/emoji/1f403.png and /dev/null differ
diff --git a/public/emoji/1f403.svg b/public/emoji/1f403.svg
index 96982688c74ea..cc5483e9f2718 100644
--- a/public/emoji/1f403.svg
+++ b/public/emoji/1f403.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f404.png b/public/emoji/1f404.png
deleted file mode 100644
index 4d0ca534ff189..0000000000000
Binary files a/public/emoji/1f404.png and /dev/null differ
diff --git a/public/emoji/1f404.svg b/public/emoji/1f404.svg
index 1bf1728714d06..d0dca2b50736f 100644
--- a/public/emoji/1f404.svg
+++ b/public/emoji/1f404.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f405.png b/public/emoji/1f405.png
deleted file mode 100644
index 871a8b74d5638..0000000000000
Binary files a/public/emoji/1f405.png and /dev/null differ
diff --git a/public/emoji/1f405.svg b/public/emoji/1f405.svg
index 27db054c5bac1..383ee31f86fdd 100644
--- a/public/emoji/1f405.svg
+++ b/public/emoji/1f405.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f406.png b/public/emoji/1f406.png
deleted file mode 100644
index 8aac3d4944810..0000000000000
Binary files a/public/emoji/1f406.png and /dev/null differ
diff --git a/public/emoji/1f406.svg b/public/emoji/1f406.svg
index 7093fe41ffd8d..59a2e0585a474 100644
--- a/public/emoji/1f406.svg
+++ b/public/emoji/1f406.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f407.png b/public/emoji/1f407.png
deleted file mode 100644
index 2c8a29c642f48..0000000000000
Binary files a/public/emoji/1f407.png and /dev/null differ
diff --git a/public/emoji/1f407.svg b/public/emoji/1f407.svg
index f673e966dee1c..54f4d696547f5 100644
--- a/public/emoji/1f407.svg
+++ b/public/emoji/1f407.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f408.png b/public/emoji/1f408.png
deleted file mode 100644
index 46abe8cbc149c..0000000000000
Binary files a/public/emoji/1f408.png and /dev/null differ
diff --git a/public/emoji/1f408.svg b/public/emoji/1f408.svg
index 4eadb2c4162d8..68fe8f2a16321 100644
--- a/public/emoji/1f408.svg
+++ b/public/emoji/1f408.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f409.png b/public/emoji/1f409.png
deleted file mode 100644
index d6311cf54297a..0000000000000
Binary files a/public/emoji/1f409.png and /dev/null differ
diff --git a/public/emoji/1f409.svg b/public/emoji/1f409.svg
index aaf9cd252cee5..ab05374fb5438 100644
--- a/public/emoji/1f409.svg
+++ b/public/emoji/1f409.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f40a.png b/public/emoji/1f40a.png
deleted file mode 100644
index 3005c46f1764e..0000000000000
Binary files a/public/emoji/1f40a.png and /dev/null differ
diff --git a/public/emoji/1f40a.svg b/public/emoji/1f40a.svg
index d5dd7c6abcc4c..1d3f3be012753 100644
--- a/public/emoji/1f40a.svg
+++ b/public/emoji/1f40a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f40b.png b/public/emoji/1f40b.png
deleted file mode 100644
index 0df9d3c73a481..0000000000000
Binary files a/public/emoji/1f40b.png and /dev/null differ
diff --git a/public/emoji/1f40b.svg b/public/emoji/1f40b.svg
index 31bb7393f628d..b6d3c6032fc85 100644
--- a/public/emoji/1f40b.svg
+++ b/public/emoji/1f40b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f40c.png b/public/emoji/1f40c.png
deleted file mode 100644
index f4ea071e2d30d..0000000000000
Binary files a/public/emoji/1f40c.png and /dev/null differ
diff --git a/public/emoji/1f40c.svg b/public/emoji/1f40c.svg
index b4204fae0a2f0..75393adf4cbf4 100644
--- a/public/emoji/1f40c.svg
+++ b/public/emoji/1f40c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f40d.png b/public/emoji/1f40d.png
deleted file mode 100644
index d0278a28d8c83..0000000000000
Binary files a/public/emoji/1f40d.png and /dev/null differ
diff --git a/public/emoji/1f40d.svg b/public/emoji/1f40d.svg
index 6ad56b8d9b8a3..7e2fc51c23860 100644
--- a/public/emoji/1f40d.svg
+++ b/public/emoji/1f40d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f40e.png b/public/emoji/1f40e.png
deleted file mode 100644
index b3e73cc8903ac..0000000000000
Binary files a/public/emoji/1f40e.png and /dev/null differ
diff --git a/public/emoji/1f40e.svg b/public/emoji/1f40e.svg
index b7ba4df3fb45f..ac2eab05a2233 100644
--- a/public/emoji/1f40e.svg
+++ b/public/emoji/1f40e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f40f.png b/public/emoji/1f40f.png
deleted file mode 100644
index 52a44464c9bd7..0000000000000
Binary files a/public/emoji/1f40f.png and /dev/null differ
diff --git a/public/emoji/1f40f.svg b/public/emoji/1f40f.svg
index 2cf3e571551a4..5905609098ce4 100644
--- a/public/emoji/1f40f.svg
+++ b/public/emoji/1f40f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f410.png b/public/emoji/1f410.png
deleted file mode 100644
index f9d9e38a12872..0000000000000
Binary files a/public/emoji/1f410.png and /dev/null differ
diff --git a/public/emoji/1f410.svg b/public/emoji/1f410.svg
index 445e63f8c9e8c..056f6ba0613c4 100644
--- a/public/emoji/1f410.svg
+++ b/public/emoji/1f410.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f411.png b/public/emoji/1f411.png
deleted file mode 100644
index 102b8a52b2840..0000000000000
Binary files a/public/emoji/1f411.png and /dev/null differ
diff --git a/public/emoji/1f411.svg b/public/emoji/1f411.svg
index 19d8b9e770dba..58cf59a30a437 100644
--- a/public/emoji/1f411.svg
+++ b/public/emoji/1f411.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f412.png b/public/emoji/1f412.png
deleted file mode 100644
index 9fae29448e387..0000000000000
Binary files a/public/emoji/1f412.png and /dev/null differ
diff --git a/public/emoji/1f412.svg b/public/emoji/1f412.svg
index 713e48da8951d..f6335f367812e 100644
--- a/public/emoji/1f412.svg
+++ b/public/emoji/1f412.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f413.png b/public/emoji/1f413.png
deleted file mode 100644
index bbf2bbff97a3b..0000000000000
Binary files a/public/emoji/1f413.png and /dev/null differ
diff --git a/public/emoji/1f413.svg b/public/emoji/1f413.svg
index 349de8552180a..b952ce5be58b7 100644
--- a/public/emoji/1f413.svg
+++ b/public/emoji/1f413.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f414.png b/public/emoji/1f414.png
deleted file mode 100644
index 9a6992e55ba95..0000000000000
Binary files a/public/emoji/1f414.png and /dev/null differ
diff --git a/public/emoji/1f414.svg b/public/emoji/1f414.svg
index 34dfab57790db..1fd1333457f71 100644
--- a/public/emoji/1f414.svg
+++ b/public/emoji/1f414.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f415.png b/public/emoji/1f415.png
deleted file mode 100644
index 976143dbdbeba..0000000000000
Binary files a/public/emoji/1f415.png and /dev/null differ
diff --git a/public/emoji/1f415.svg b/public/emoji/1f415.svg
index 7fded5c112498..3626f8a363e09 100644
--- a/public/emoji/1f415.svg
+++ b/public/emoji/1f415.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f416.png b/public/emoji/1f416.png
deleted file mode 100644
index 5f31c1a2d757b..0000000000000
Binary files a/public/emoji/1f416.png and /dev/null differ
diff --git a/public/emoji/1f416.svg b/public/emoji/1f416.svg
index a3f0422a51e6c..d6fbe7c172556 100644
--- a/public/emoji/1f416.svg
+++ b/public/emoji/1f416.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f417.png b/public/emoji/1f417.png
deleted file mode 100644
index fead972633c26..0000000000000
Binary files a/public/emoji/1f417.png and /dev/null differ
diff --git a/public/emoji/1f417.svg b/public/emoji/1f417.svg
index d134de16ac37f..39715ce4eba99 100644
--- a/public/emoji/1f417.svg
+++ b/public/emoji/1f417.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f418.png b/public/emoji/1f418.png
deleted file mode 100644
index b8a6d1405958b..0000000000000
Binary files a/public/emoji/1f418.png and /dev/null differ
diff --git a/public/emoji/1f418.svg b/public/emoji/1f418.svg
index 80479aa3d7d04..595a808053ec3 100644
--- a/public/emoji/1f418.svg
+++ b/public/emoji/1f418.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f419.png b/public/emoji/1f419.png
deleted file mode 100644
index 72c84074aac77..0000000000000
Binary files a/public/emoji/1f419.png and /dev/null differ
diff --git a/public/emoji/1f419.svg b/public/emoji/1f419.svg
index fa59238e2e346..0f00d078e3bb5 100644
--- a/public/emoji/1f419.svg
+++ b/public/emoji/1f419.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f41a.png b/public/emoji/1f41a.png
deleted file mode 100644
index 55721629f626f..0000000000000
Binary files a/public/emoji/1f41a.png and /dev/null differ
diff --git a/public/emoji/1f41a.svg b/public/emoji/1f41a.svg
index fb691d49bfa0f..e4aef0416e8aa 100644
--- a/public/emoji/1f41a.svg
+++ b/public/emoji/1f41a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f41b.png b/public/emoji/1f41b.png
deleted file mode 100644
index e64e72f259a3d..0000000000000
Binary files a/public/emoji/1f41b.png and /dev/null differ
diff --git a/public/emoji/1f41b.svg b/public/emoji/1f41b.svg
index 64bcedb14da82..ddc70682e61b5 100644
--- a/public/emoji/1f41b.svg
+++ b/public/emoji/1f41b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f41c.png b/public/emoji/1f41c.png
deleted file mode 100644
index 994127ed6b336..0000000000000
Binary files a/public/emoji/1f41c.png and /dev/null differ
diff --git a/public/emoji/1f41c.svg b/public/emoji/1f41c.svg
index 2f90d0615a687..8d8d18afd45c6 100644
--- a/public/emoji/1f41c.svg
+++ b/public/emoji/1f41c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f41d.png b/public/emoji/1f41d.png
deleted file mode 100644
index 4615606009621..0000000000000
Binary files a/public/emoji/1f41d.png and /dev/null differ
diff --git a/public/emoji/1f41d.svg b/public/emoji/1f41d.svg
index eb1819b07504e..956227a51fa1f 100644
--- a/public/emoji/1f41d.svg
+++ b/public/emoji/1f41d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f41e.png b/public/emoji/1f41e.png
deleted file mode 100644
index 3d93174d7fc9d..0000000000000
Binary files a/public/emoji/1f41e.png and /dev/null differ
diff --git a/public/emoji/1f41e.svg b/public/emoji/1f41e.svg
index 0cbee7332c17e..179f097ddf82c 100644
--- a/public/emoji/1f41e.svg
+++ b/public/emoji/1f41e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f41f.png b/public/emoji/1f41f.png
deleted file mode 100644
index c2d2faaacd4fc..0000000000000
Binary files a/public/emoji/1f41f.png and /dev/null differ
diff --git a/public/emoji/1f41f.svg b/public/emoji/1f41f.svg
index d4ddc1a59fc10..4ad0515626329 100644
--- a/public/emoji/1f41f.svg
+++ b/public/emoji/1f41f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f420.png b/public/emoji/1f420.png
deleted file mode 100644
index 252105235a640..0000000000000
Binary files a/public/emoji/1f420.png and /dev/null differ
diff --git a/public/emoji/1f420.svg b/public/emoji/1f420.svg
index 339bfce51cdbd..0dc45ffe7507d 100644
--- a/public/emoji/1f420.svg
+++ b/public/emoji/1f420.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f421.png b/public/emoji/1f421.png
deleted file mode 100644
index a10f4f84e357f..0000000000000
Binary files a/public/emoji/1f421.png and /dev/null differ
diff --git a/public/emoji/1f421.svg b/public/emoji/1f421.svg
index 51e96024a121f..1c24b12d02db0 100644
--- a/public/emoji/1f421.svg
+++ b/public/emoji/1f421.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f422.png b/public/emoji/1f422.png
deleted file mode 100644
index c22f7519fe87f..0000000000000
Binary files a/public/emoji/1f422.png and /dev/null differ
diff --git a/public/emoji/1f422.svg b/public/emoji/1f422.svg
index 48be9dc54f3d4..4ad52f2ee2bc8 100644
--- a/public/emoji/1f422.svg
+++ b/public/emoji/1f422.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f423.png b/public/emoji/1f423.png
deleted file mode 100644
index c5b0e8f3bcccf..0000000000000
Binary files a/public/emoji/1f423.png and /dev/null differ
diff --git a/public/emoji/1f423.svg b/public/emoji/1f423.svg
index 7d8abff5fd783..b3635cdd0a246 100644
--- a/public/emoji/1f423.svg
+++ b/public/emoji/1f423.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f424.png b/public/emoji/1f424.png
deleted file mode 100644
index dccd96576eabe..0000000000000
Binary files a/public/emoji/1f424.png and /dev/null differ
diff --git a/public/emoji/1f424.svg b/public/emoji/1f424.svg
index f9269d14879da..97667928674f0 100644
--- a/public/emoji/1f424.svg
+++ b/public/emoji/1f424.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f425.png b/public/emoji/1f425.png
deleted file mode 100644
index 31dfb511e0ed2..0000000000000
Binary files a/public/emoji/1f425.png and /dev/null differ
diff --git a/public/emoji/1f425.svg b/public/emoji/1f425.svg
index fabfbf927c1e2..24dbec2aa522d 100644
--- a/public/emoji/1f425.svg
+++ b/public/emoji/1f425.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f426.png b/public/emoji/1f426.png
deleted file mode 100644
index e201c22be335c..0000000000000
Binary files a/public/emoji/1f426.png and /dev/null differ
diff --git a/public/emoji/1f426.svg b/public/emoji/1f426.svg
index 225d76777734a..2760fec59f09b 100644
--- a/public/emoji/1f426.svg
+++ b/public/emoji/1f426.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f427.png b/public/emoji/1f427.png
deleted file mode 100644
index c0064fb9734bf..0000000000000
Binary files a/public/emoji/1f427.png and /dev/null differ
diff --git a/public/emoji/1f427.svg b/public/emoji/1f427.svg
index ce85cadf29014..b83882c1273f7 100644
--- a/public/emoji/1f427.svg
+++ b/public/emoji/1f427.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f428.png b/public/emoji/1f428.png
deleted file mode 100644
index a0aa437a98c18..0000000000000
Binary files a/public/emoji/1f428.png and /dev/null differ
diff --git a/public/emoji/1f428.svg b/public/emoji/1f428.svg
index 88832b70222ed..9a54a0d2875d7 100644
--- a/public/emoji/1f428.svg
+++ b/public/emoji/1f428.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f429.png b/public/emoji/1f429.png
deleted file mode 100644
index 8ec39e396af95..0000000000000
Binary files a/public/emoji/1f429.png and /dev/null differ
diff --git a/public/emoji/1f429.svg b/public/emoji/1f429.svg
index 7b56afe0d703f..33c5b7ec09f32 100644
--- a/public/emoji/1f429.svg
+++ b/public/emoji/1f429.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f42a.png b/public/emoji/1f42a.png
deleted file mode 100644
index 5271637c7c400..0000000000000
Binary files a/public/emoji/1f42a.png and /dev/null differ
diff --git a/public/emoji/1f42a.svg b/public/emoji/1f42a.svg
index 63e30c13aea58..e7f97340d5e2b 100644
--- a/public/emoji/1f42a.svg
+++ b/public/emoji/1f42a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f42b.png b/public/emoji/1f42b.png
deleted file mode 100644
index b421d07a8055c..0000000000000
Binary files a/public/emoji/1f42b.png and /dev/null differ
diff --git a/public/emoji/1f42b.svg b/public/emoji/1f42b.svg
index fbd4b0e1b1194..a6b76e272f71b 100644
--- a/public/emoji/1f42b.svg
+++ b/public/emoji/1f42b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f42c.png b/public/emoji/1f42c.png
deleted file mode 100644
index 814348090031f..0000000000000
Binary files a/public/emoji/1f42c.png and /dev/null differ
diff --git a/public/emoji/1f42c.svg b/public/emoji/1f42c.svg
index abd84802ea772..dc57e89abb2e7 100644
--- a/public/emoji/1f42c.svg
+++ b/public/emoji/1f42c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f42d.png b/public/emoji/1f42d.png
deleted file mode 100644
index 50afcd3262e3c..0000000000000
Binary files a/public/emoji/1f42d.png and /dev/null differ
diff --git a/public/emoji/1f42d.svg b/public/emoji/1f42d.svg
index 0b215006dd717..60fec435e9348 100644
--- a/public/emoji/1f42d.svg
+++ b/public/emoji/1f42d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f42e.png b/public/emoji/1f42e.png
deleted file mode 100644
index 718a3986d647a..0000000000000
Binary files a/public/emoji/1f42e.png and /dev/null differ
diff --git a/public/emoji/1f42e.svg b/public/emoji/1f42e.svg
index f6d7c9a04ba50..a3d5d0305eac3 100644
--- a/public/emoji/1f42e.svg
+++ b/public/emoji/1f42e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f42f.png b/public/emoji/1f42f.png
deleted file mode 100644
index a4d3ef086d46d..0000000000000
Binary files a/public/emoji/1f42f.png and /dev/null differ
diff --git a/public/emoji/1f42f.svg b/public/emoji/1f42f.svg
index 834981944bdec..934ec15ecec75 100644
--- a/public/emoji/1f42f.svg
+++ b/public/emoji/1f42f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f430.png b/public/emoji/1f430.png
deleted file mode 100644
index ea75ab0426e67..0000000000000
Binary files a/public/emoji/1f430.png and /dev/null differ
diff --git a/public/emoji/1f430.svg b/public/emoji/1f430.svg
index ec8d17c081429..4d80f7cb5238b 100644
--- a/public/emoji/1f430.svg
+++ b/public/emoji/1f430.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f431.png b/public/emoji/1f431.png
deleted file mode 100644
index efd82c2abf374..0000000000000
Binary files a/public/emoji/1f431.png and /dev/null differ
diff --git a/public/emoji/1f431.svg b/public/emoji/1f431.svg
index bacd52c38800b..7576d6bf349ba 100644
--- a/public/emoji/1f431.svg
+++ b/public/emoji/1f431.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f432.png b/public/emoji/1f432.png
deleted file mode 100644
index 3c2720446c6f5..0000000000000
Binary files a/public/emoji/1f432.png and /dev/null differ
diff --git a/public/emoji/1f432.svg b/public/emoji/1f432.svg
index b4b36690923ef..4f099dc73684f 100644
--- a/public/emoji/1f432.svg
+++ b/public/emoji/1f432.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f433.png b/public/emoji/1f433.png
deleted file mode 100644
index 9f19b44257c1f..0000000000000
Binary files a/public/emoji/1f433.png and /dev/null differ
diff --git a/public/emoji/1f433.svg b/public/emoji/1f433.svg
index dc6f7f1ecbc80..6085b47936160 100644
--- a/public/emoji/1f433.svg
+++ b/public/emoji/1f433.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f434.png b/public/emoji/1f434.png
deleted file mode 100644
index 7cb1172f4e485..0000000000000
Binary files a/public/emoji/1f434.png and /dev/null differ
diff --git a/public/emoji/1f434.svg b/public/emoji/1f434.svg
index 5935149308487..ae01857998bf7 100644
--- a/public/emoji/1f434.svg
+++ b/public/emoji/1f434.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f435.png b/public/emoji/1f435.png
deleted file mode 100644
index 7cab9b91a82bf..0000000000000
Binary files a/public/emoji/1f435.png and /dev/null differ
diff --git a/public/emoji/1f435.svg b/public/emoji/1f435.svg
index 5e796ada85a6b..671de74ec7f29 100644
--- a/public/emoji/1f435.svg
+++ b/public/emoji/1f435.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f436.png b/public/emoji/1f436.png
deleted file mode 100644
index 281b81d58bd2f..0000000000000
Binary files a/public/emoji/1f436.png and /dev/null differ
diff --git a/public/emoji/1f436.svg b/public/emoji/1f436.svg
index b6af6c613ff7e..d30951d4e389c 100644
--- a/public/emoji/1f436.svg
+++ b/public/emoji/1f436.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f437.png b/public/emoji/1f437.png
deleted file mode 100644
index afe05ca167662..0000000000000
Binary files a/public/emoji/1f437.png and /dev/null differ
diff --git a/public/emoji/1f437.svg b/public/emoji/1f437.svg
index 30d534b0870a5..41fe6ff8a9523 100644
--- a/public/emoji/1f437.svg
+++ b/public/emoji/1f437.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f438.png b/public/emoji/1f438.png
deleted file mode 100644
index 8825d1ad5774b..0000000000000
Binary files a/public/emoji/1f438.png and /dev/null differ
diff --git a/public/emoji/1f438.svg b/public/emoji/1f438.svg
index a45c14aaa6ca3..4b2e5bbb8c3ae 100644
--- a/public/emoji/1f438.svg
+++ b/public/emoji/1f438.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f439.png b/public/emoji/1f439.png
deleted file mode 100644
index 9a04388e4e74b..0000000000000
Binary files a/public/emoji/1f439.png and /dev/null differ
diff --git a/public/emoji/1f439.svg b/public/emoji/1f439.svg
index 4027ed9b5bf24..a61817e293f29 100644
--- a/public/emoji/1f439.svg
+++ b/public/emoji/1f439.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f43a.png b/public/emoji/1f43a.png
deleted file mode 100644
index ba7220f2de9e6..0000000000000
Binary files a/public/emoji/1f43a.png and /dev/null differ
diff --git a/public/emoji/1f43a.svg b/public/emoji/1f43a.svg
index 7b2fd57512e59..5287eeea75545 100644
--- a/public/emoji/1f43a.svg
+++ b/public/emoji/1f43a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f43b.png b/public/emoji/1f43b.png
deleted file mode 100644
index 272d56bbbcc70..0000000000000
Binary files a/public/emoji/1f43b.png and /dev/null differ
diff --git a/public/emoji/1f43b.svg b/public/emoji/1f43b.svg
index 681e20a57531b..5b3c33d01d282 100644
--- a/public/emoji/1f43b.svg
+++ b/public/emoji/1f43b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f43c.png b/public/emoji/1f43c.png
deleted file mode 100644
index 978382775ceca..0000000000000
Binary files a/public/emoji/1f43c.png and /dev/null differ
diff --git a/public/emoji/1f43c.svg b/public/emoji/1f43c.svg
index 247aacc06c482..f8964d903b679 100644
--- a/public/emoji/1f43c.svg
+++ b/public/emoji/1f43c.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f43d.png b/public/emoji/1f43d.png
deleted file mode 100644
index 3610ae4a91033..0000000000000
Binary files a/public/emoji/1f43d.png and /dev/null differ
diff --git a/public/emoji/1f43d.svg b/public/emoji/1f43d.svg
index 6014a8b708724..57642b28aebcd 100644
--- a/public/emoji/1f43d.svg
+++ b/public/emoji/1f43d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f43e.png b/public/emoji/1f43e.png
deleted file mode 100644
index 5fe568cee9310..0000000000000
Binary files a/public/emoji/1f43e.png and /dev/null differ
diff --git a/public/emoji/1f43e.svg b/public/emoji/1f43e.svg
index c6b2b83af7e14..846abe58e09af 100644
--- a/public/emoji/1f43e.svg
+++ b/public/emoji/1f43e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f43f.png b/public/emoji/1f43f.png
deleted file mode 100644
index 2aac560cb2230..0000000000000
Binary files a/public/emoji/1f43f.png and /dev/null differ
diff --git a/public/emoji/1f43f.svg b/public/emoji/1f43f.svg
index 243ee8944177a..1363021ee51c3 100644
--- a/public/emoji/1f43f.svg
+++ b/public/emoji/1f43f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f440.png b/public/emoji/1f440.png
deleted file mode 100644
index 2102ada7e09b4..0000000000000
Binary files a/public/emoji/1f440.png and /dev/null differ
diff --git a/public/emoji/1f440.svg b/public/emoji/1f440.svg
index 8caf9aafe4703..b4f59a98b53f3 100644
--- a/public/emoji/1f440.svg
+++ b/public/emoji/1f440.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f441-1f5e8.png b/public/emoji/1f441-1f5e8.png
deleted file mode 100644
index 21bd22bbcced3..0000000000000
Binary files a/public/emoji/1f441-1f5e8.png and /dev/null differ
diff --git a/public/emoji/1f441-1f5e8.svg b/public/emoji/1f441-1f5e8.svg
deleted file mode 100644
index facc5a21aee05..0000000000000
--- a/public/emoji/1f441-1f5e8.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f441-200d-1f5e8.svg b/public/emoji/1f441-200d-1f5e8.svg
new file mode 100644
index 0000000000000..fd23adad74e1c
--- /dev/null
+++ b/public/emoji/1f441-200d-1f5e8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f441.png b/public/emoji/1f441.png
deleted file mode 100644
index 9d989cdd3753f..0000000000000
Binary files a/public/emoji/1f441.png and /dev/null differ
diff --git a/public/emoji/1f441.svg b/public/emoji/1f441.svg
index 3ce3327d16147..ae4257faac6ae 100644
--- a/public/emoji/1f441.svg
+++ b/public/emoji/1f441.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f442-1f3fb.png b/public/emoji/1f442-1f3fb.png
deleted file mode 100644
index d09e1e4199628..0000000000000
Binary files a/public/emoji/1f442-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f442-1f3fb.svg b/public/emoji/1f442-1f3fb.svg
index e203744eaf64f..fcbaf73536dd9 100644
--- a/public/emoji/1f442-1f3fb.svg
+++ b/public/emoji/1f442-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f442-1f3fc.png b/public/emoji/1f442-1f3fc.png
deleted file mode 100644
index 300d60a9948fa..0000000000000
Binary files a/public/emoji/1f442-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f442-1f3fc.svg b/public/emoji/1f442-1f3fc.svg
index e9b24783b94f5..103d6aca1ad08 100644
--- a/public/emoji/1f442-1f3fc.svg
+++ b/public/emoji/1f442-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f442-1f3fd.png b/public/emoji/1f442-1f3fd.png
deleted file mode 100644
index 2a56eebe445fe..0000000000000
Binary files a/public/emoji/1f442-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f442-1f3fd.svg b/public/emoji/1f442-1f3fd.svg
index 717877f319391..50708efd1d367 100644
--- a/public/emoji/1f442-1f3fd.svg
+++ b/public/emoji/1f442-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f442-1f3fe.png b/public/emoji/1f442-1f3fe.png
deleted file mode 100644
index bd270f7763e83..0000000000000
Binary files a/public/emoji/1f442-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f442-1f3fe.svg b/public/emoji/1f442-1f3fe.svg
index aaf77d80b3504..1099e8151048f 100644
--- a/public/emoji/1f442-1f3fe.svg
+++ b/public/emoji/1f442-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f442-1f3ff.png b/public/emoji/1f442-1f3ff.png
deleted file mode 100644
index b96bb441dff23..0000000000000
Binary files a/public/emoji/1f442-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f442-1f3ff.svg b/public/emoji/1f442-1f3ff.svg
index c8f653bba9bf6..7e451d62b9e8f 100644
--- a/public/emoji/1f442-1f3ff.svg
+++ b/public/emoji/1f442-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f442.png b/public/emoji/1f442.png
deleted file mode 100644
index f84f9ff154aa2..0000000000000
Binary files a/public/emoji/1f442.png and /dev/null differ
diff --git a/public/emoji/1f442.svg b/public/emoji/1f442.svg
index 3063df796cbbe..6af51d61dc1b4 100644
--- a/public/emoji/1f442.svg
+++ b/public/emoji/1f442.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f443-1f3fb.png b/public/emoji/1f443-1f3fb.png
deleted file mode 100644
index 8008d17506e3f..0000000000000
Binary files a/public/emoji/1f443-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f443-1f3fb.svg b/public/emoji/1f443-1f3fb.svg
index db943dbf4fe10..22d8710ab5181 100644
--- a/public/emoji/1f443-1f3fb.svg
+++ b/public/emoji/1f443-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f443-1f3fc.png b/public/emoji/1f443-1f3fc.png
deleted file mode 100644
index ac17f26e8277d..0000000000000
Binary files a/public/emoji/1f443-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f443-1f3fc.svg b/public/emoji/1f443-1f3fc.svg
index e909c446df398..dc165861c2b95 100644
--- a/public/emoji/1f443-1f3fc.svg
+++ b/public/emoji/1f443-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f443-1f3fd.png b/public/emoji/1f443-1f3fd.png
deleted file mode 100644
index d8b6cbe0f8ea3..0000000000000
Binary files a/public/emoji/1f443-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f443-1f3fd.svg b/public/emoji/1f443-1f3fd.svg
index 61fe537698e63..1fb7a658b5403 100644
--- a/public/emoji/1f443-1f3fd.svg
+++ b/public/emoji/1f443-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f443-1f3fe.png b/public/emoji/1f443-1f3fe.png
deleted file mode 100644
index 004b2631e2efc..0000000000000
Binary files a/public/emoji/1f443-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f443-1f3fe.svg b/public/emoji/1f443-1f3fe.svg
index 4b9d4661637e7..38bb79d05b029 100644
--- a/public/emoji/1f443-1f3fe.svg
+++ b/public/emoji/1f443-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f443-1f3ff.png b/public/emoji/1f443-1f3ff.png
deleted file mode 100644
index 7b33821f6c9bc..0000000000000
Binary files a/public/emoji/1f443-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f443-1f3ff.svg b/public/emoji/1f443-1f3ff.svg
index a1daed04fd0e7..c3d63811184c0 100644
--- a/public/emoji/1f443-1f3ff.svg
+++ b/public/emoji/1f443-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f443.png b/public/emoji/1f443.png
deleted file mode 100644
index 2f04ac5f98fdd..0000000000000
Binary files a/public/emoji/1f443.png and /dev/null differ
diff --git a/public/emoji/1f443.svg b/public/emoji/1f443.svg
index 6f1613804e9f3..6aa7857d49ce7 100644
--- a/public/emoji/1f443.svg
+++ b/public/emoji/1f443.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f444.png b/public/emoji/1f444.png
deleted file mode 100644
index 35f3cc2006f4e..0000000000000
Binary files a/public/emoji/1f444.png and /dev/null differ
diff --git a/public/emoji/1f444.svg b/public/emoji/1f444.svg
index 1bdb5440fa829..0d8e7cf6fd7d7 100644
--- a/public/emoji/1f444.svg
+++ b/public/emoji/1f444.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f445.png b/public/emoji/1f445.png
deleted file mode 100644
index 70ce9c1225f8a..0000000000000
Binary files a/public/emoji/1f445.png and /dev/null differ
diff --git a/public/emoji/1f445.svg b/public/emoji/1f445.svg
index 8a5af77fa8a76..86d4ea2007b9e 100644
--- a/public/emoji/1f445.svg
+++ b/public/emoji/1f445.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f446-1f3fb.png b/public/emoji/1f446-1f3fb.png
deleted file mode 100644
index a12a7e784301f..0000000000000
Binary files a/public/emoji/1f446-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f446-1f3fb.svg b/public/emoji/1f446-1f3fb.svg
index 0b774dd4dda11..d3797818f2b3f 100644
--- a/public/emoji/1f446-1f3fb.svg
+++ b/public/emoji/1f446-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f446-1f3fc.png b/public/emoji/1f446-1f3fc.png
deleted file mode 100644
index cdff40ceab03f..0000000000000
Binary files a/public/emoji/1f446-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f446-1f3fc.svg b/public/emoji/1f446-1f3fc.svg
index 8931e2428a8ae..478b8d0974ad9 100644
--- a/public/emoji/1f446-1f3fc.svg
+++ b/public/emoji/1f446-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f446-1f3fd.png b/public/emoji/1f446-1f3fd.png
deleted file mode 100644
index a07ce9e5ae8ce..0000000000000
Binary files a/public/emoji/1f446-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f446-1f3fd.svg b/public/emoji/1f446-1f3fd.svg
index 1bf90d52030c6..f3f5c4d62df4d 100644
--- a/public/emoji/1f446-1f3fd.svg
+++ b/public/emoji/1f446-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f446-1f3fe.png b/public/emoji/1f446-1f3fe.png
deleted file mode 100644
index 4f86c88ba42c5..0000000000000
Binary files a/public/emoji/1f446-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f446-1f3fe.svg b/public/emoji/1f446-1f3fe.svg
index cfeb3e0a5dc9c..75943fadf3ea3 100644
--- a/public/emoji/1f446-1f3fe.svg
+++ b/public/emoji/1f446-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f446-1f3ff.png b/public/emoji/1f446-1f3ff.png
deleted file mode 100644
index ed1b26c35d3f3..0000000000000
Binary files a/public/emoji/1f446-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f446-1f3ff.svg b/public/emoji/1f446-1f3ff.svg
index 845edc3301412..21289fae2d595 100644
--- a/public/emoji/1f446-1f3ff.svg
+++ b/public/emoji/1f446-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f446.png b/public/emoji/1f446.png
deleted file mode 100644
index bc496dfeae4e6..0000000000000
Binary files a/public/emoji/1f446.png and /dev/null differ
diff --git a/public/emoji/1f446.svg b/public/emoji/1f446.svg
index fc4d2b1fd48f7..73464961d9356 100644
--- a/public/emoji/1f446.svg
+++ b/public/emoji/1f446.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f447-1f3fb.png b/public/emoji/1f447-1f3fb.png
deleted file mode 100644
index 140f157d8c7ba..0000000000000
Binary files a/public/emoji/1f447-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f447-1f3fb.svg b/public/emoji/1f447-1f3fb.svg
index b6d347e66cdf1..942fadfdb572b 100644
--- a/public/emoji/1f447-1f3fb.svg
+++ b/public/emoji/1f447-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f447-1f3fc.png b/public/emoji/1f447-1f3fc.png
deleted file mode 100644
index d518544f7fafa..0000000000000
Binary files a/public/emoji/1f447-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f447-1f3fc.svg b/public/emoji/1f447-1f3fc.svg
index cd98682fb5e46..891ba708865b2 100644
--- a/public/emoji/1f447-1f3fc.svg
+++ b/public/emoji/1f447-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f447-1f3fd.png b/public/emoji/1f447-1f3fd.png
deleted file mode 100644
index 018b688b8b7d6..0000000000000
Binary files a/public/emoji/1f447-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f447-1f3fd.svg b/public/emoji/1f447-1f3fd.svg
index a63fe57414794..e363bcc3c6278 100644
--- a/public/emoji/1f447-1f3fd.svg
+++ b/public/emoji/1f447-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f447-1f3fe.png b/public/emoji/1f447-1f3fe.png
deleted file mode 100644
index 98845bf6f728a..0000000000000
Binary files a/public/emoji/1f447-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f447-1f3fe.svg b/public/emoji/1f447-1f3fe.svg
index cdb5c4a813c33..a61d203139cc7 100644
--- a/public/emoji/1f447-1f3fe.svg
+++ b/public/emoji/1f447-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f447-1f3ff.png b/public/emoji/1f447-1f3ff.png
deleted file mode 100644
index 9a9b039a9fc1c..0000000000000
Binary files a/public/emoji/1f447-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f447-1f3ff.svg b/public/emoji/1f447-1f3ff.svg
index 62fa98410032c..aca3691d91c46 100644
--- a/public/emoji/1f447-1f3ff.svg
+++ b/public/emoji/1f447-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f447.png b/public/emoji/1f447.png
deleted file mode 100644
index 00d3d13ab5c09..0000000000000
Binary files a/public/emoji/1f447.png and /dev/null differ
diff --git a/public/emoji/1f447.svg b/public/emoji/1f447.svg
index 25b2490a249de..9c0e52853394e 100644
--- a/public/emoji/1f447.svg
+++ b/public/emoji/1f447.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f448-1f3fb.png b/public/emoji/1f448-1f3fb.png
deleted file mode 100644
index 88e2c3060765d..0000000000000
Binary files a/public/emoji/1f448-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f448-1f3fb.svg b/public/emoji/1f448-1f3fb.svg
index 16ef6409e58ae..f3b7f99d30bd5 100644
--- a/public/emoji/1f448-1f3fb.svg
+++ b/public/emoji/1f448-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f448-1f3fc.png b/public/emoji/1f448-1f3fc.png
deleted file mode 100644
index d3c89d87c5f9c..0000000000000
Binary files a/public/emoji/1f448-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f448-1f3fc.svg b/public/emoji/1f448-1f3fc.svg
index e37282ab88644..cd2a2d02bdfe1 100644
--- a/public/emoji/1f448-1f3fc.svg
+++ b/public/emoji/1f448-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f448-1f3fd.png b/public/emoji/1f448-1f3fd.png
deleted file mode 100644
index b23b9167358d8..0000000000000
Binary files a/public/emoji/1f448-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f448-1f3fd.svg b/public/emoji/1f448-1f3fd.svg
index 09d730d4fe264..b00149aafd909 100644
--- a/public/emoji/1f448-1f3fd.svg
+++ b/public/emoji/1f448-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f448-1f3fe.png b/public/emoji/1f448-1f3fe.png
deleted file mode 100644
index 3093f325c272f..0000000000000
Binary files a/public/emoji/1f448-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f448-1f3fe.svg b/public/emoji/1f448-1f3fe.svg
index 07f16f2e936b7..970dcb2ce1566 100644
--- a/public/emoji/1f448-1f3fe.svg
+++ b/public/emoji/1f448-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f448-1f3ff.png b/public/emoji/1f448-1f3ff.png
deleted file mode 100644
index 2b4cbfa120c81..0000000000000
Binary files a/public/emoji/1f448-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f448-1f3ff.svg b/public/emoji/1f448-1f3ff.svg
index a382bfd7b0ca6..0c4851b8de04e 100644
--- a/public/emoji/1f448-1f3ff.svg
+++ b/public/emoji/1f448-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f448.png b/public/emoji/1f448.png
deleted file mode 100644
index 599fa2e3cf12f..0000000000000
Binary files a/public/emoji/1f448.png and /dev/null differ
diff --git a/public/emoji/1f448.svg b/public/emoji/1f448.svg
index 63e25672e31c8..800ff09aa3307 100644
--- a/public/emoji/1f448.svg
+++ b/public/emoji/1f448.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f449-1f3fb.png b/public/emoji/1f449-1f3fb.png
deleted file mode 100644
index 4a28c6bbc8998..0000000000000
Binary files a/public/emoji/1f449-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f449-1f3fb.svg b/public/emoji/1f449-1f3fb.svg
index 150e78be991b9..c810f2a897929 100644
--- a/public/emoji/1f449-1f3fb.svg
+++ b/public/emoji/1f449-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f449-1f3fc.png b/public/emoji/1f449-1f3fc.png
deleted file mode 100644
index 7cb1323173332..0000000000000
Binary files a/public/emoji/1f449-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f449-1f3fc.svg b/public/emoji/1f449-1f3fc.svg
index d30c03fe17282..049a07e34537b 100644
--- a/public/emoji/1f449-1f3fc.svg
+++ b/public/emoji/1f449-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f449-1f3fd.png b/public/emoji/1f449-1f3fd.png
deleted file mode 100644
index 5514807d71a2a..0000000000000
Binary files a/public/emoji/1f449-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f449-1f3fd.svg b/public/emoji/1f449-1f3fd.svg
index 421e7e5af34a2..d5b62df74923f 100644
--- a/public/emoji/1f449-1f3fd.svg
+++ b/public/emoji/1f449-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f449-1f3fe.png b/public/emoji/1f449-1f3fe.png
deleted file mode 100644
index b8541d6440dae..0000000000000
Binary files a/public/emoji/1f449-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f449-1f3fe.svg b/public/emoji/1f449-1f3fe.svg
index 43db2b7b2ee61..850a672de1607 100644
--- a/public/emoji/1f449-1f3fe.svg
+++ b/public/emoji/1f449-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f449-1f3ff.png b/public/emoji/1f449-1f3ff.png
deleted file mode 100644
index 1b7aab07bb12b..0000000000000
Binary files a/public/emoji/1f449-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f449-1f3ff.svg b/public/emoji/1f449-1f3ff.svg
index c3fde3f9d72de..a04f4c9e3ba61 100644
--- a/public/emoji/1f449-1f3ff.svg
+++ b/public/emoji/1f449-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f449.png b/public/emoji/1f449.png
deleted file mode 100644
index 93a3cd34aa5ba..0000000000000
Binary files a/public/emoji/1f449.png and /dev/null differ
diff --git a/public/emoji/1f449.svg b/public/emoji/1f449.svg
index 815e08efb5601..93f79ee85529b 100644
--- a/public/emoji/1f449.svg
+++ b/public/emoji/1f449.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44a-1f3fb.png b/public/emoji/1f44a-1f3fb.png
deleted file mode 100644
index 93c7d17fb4724..0000000000000
Binary files a/public/emoji/1f44a-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f44a-1f3fb.svg b/public/emoji/1f44a-1f3fb.svg
index 6b68ade7ea9c3..f4e937b74e126 100644
--- a/public/emoji/1f44a-1f3fb.svg
+++ b/public/emoji/1f44a-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44a-1f3fc.png b/public/emoji/1f44a-1f3fc.png
deleted file mode 100644
index c0a1af6e10a78..0000000000000
Binary files a/public/emoji/1f44a-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f44a-1f3fc.svg b/public/emoji/1f44a-1f3fc.svg
index 7bb10f2fa3d16..a24a0a1051a37 100644
--- a/public/emoji/1f44a-1f3fc.svg
+++ b/public/emoji/1f44a-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44a-1f3fd.png b/public/emoji/1f44a-1f3fd.png
deleted file mode 100644
index 1458b0212010f..0000000000000
Binary files a/public/emoji/1f44a-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f44a-1f3fd.svg b/public/emoji/1f44a-1f3fd.svg
index 1543e53a8bf20..5d0cb8ee9523a 100644
--- a/public/emoji/1f44a-1f3fd.svg
+++ b/public/emoji/1f44a-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44a-1f3fe.png b/public/emoji/1f44a-1f3fe.png
deleted file mode 100644
index c1466bfcdef22..0000000000000
Binary files a/public/emoji/1f44a-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f44a-1f3fe.svg b/public/emoji/1f44a-1f3fe.svg
index 6485deb721d2c..dabe7559b28a5 100644
--- a/public/emoji/1f44a-1f3fe.svg
+++ b/public/emoji/1f44a-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44a-1f3ff.png b/public/emoji/1f44a-1f3ff.png
deleted file mode 100644
index 00b4ddb895397..0000000000000
Binary files a/public/emoji/1f44a-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f44a-1f3ff.svg b/public/emoji/1f44a-1f3ff.svg
index 2eded30724aa2..e0641854629f2 100644
--- a/public/emoji/1f44a-1f3ff.svg
+++ b/public/emoji/1f44a-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44a.png b/public/emoji/1f44a.png
deleted file mode 100644
index b14ca5f5211a8..0000000000000
Binary files a/public/emoji/1f44a.png and /dev/null differ
diff --git a/public/emoji/1f44a.svg b/public/emoji/1f44a.svg
index 20b808db58564..6d8336dafab0a 100644
--- a/public/emoji/1f44a.svg
+++ b/public/emoji/1f44a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44b-1f3fb.png b/public/emoji/1f44b-1f3fb.png
deleted file mode 100644
index 6b2b34b106ea7..0000000000000
Binary files a/public/emoji/1f44b-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f44b-1f3fb.svg b/public/emoji/1f44b-1f3fb.svg
index 981d4d47492ca..86471187bfa5f 100644
--- a/public/emoji/1f44b-1f3fb.svg
+++ b/public/emoji/1f44b-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44b-1f3fc.png b/public/emoji/1f44b-1f3fc.png
deleted file mode 100644
index b857119732e91..0000000000000
Binary files a/public/emoji/1f44b-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f44b-1f3fc.svg b/public/emoji/1f44b-1f3fc.svg
index 0e3fb5f890e17..490e479a4c982 100644
--- a/public/emoji/1f44b-1f3fc.svg
+++ b/public/emoji/1f44b-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44b-1f3fd.png b/public/emoji/1f44b-1f3fd.png
deleted file mode 100644
index 6283b670f4327..0000000000000
Binary files a/public/emoji/1f44b-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f44b-1f3fd.svg b/public/emoji/1f44b-1f3fd.svg
index 801f13f4d7400..8988c6e17a1fb 100644
--- a/public/emoji/1f44b-1f3fd.svg
+++ b/public/emoji/1f44b-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44b-1f3fe.png b/public/emoji/1f44b-1f3fe.png
deleted file mode 100644
index fe6b2baa7477a..0000000000000
Binary files a/public/emoji/1f44b-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f44b-1f3fe.svg b/public/emoji/1f44b-1f3fe.svg
index 687ff445f9eec..6c35abe524387 100644
--- a/public/emoji/1f44b-1f3fe.svg
+++ b/public/emoji/1f44b-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44b-1f3ff.png b/public/emoji/1f44b-1f3ff.png
deleted file mode 100644
index 4bd168ebb7802..0000000000000
Binary files a/public/emoji/1f44b-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f44b-1f3ff.svg b/public/emoji/1f44b-1f3ff.svg
index 68636c28d471d..5ef6da63f0332 100644
--- a/public/emoji/1f44b-1f3ff.svg
+++ b/public/emoji/1f44b-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44b.png b/public/emoji/1f44b.png
deleted file mode 100644
index e0cd79b45f52b..0000000000000
Binary files a/public/emoji/1f44b.png and /dev/null differ
diff --git a/public/emoji/1f44b.svg b/public/emoji/1f44b.svg
index 2118c9b43d0a1..5860e8159959d 100644
--- a/public/emoji/1f44b.svg
+++ b/public/emoji/1f44b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44c-1f3fb.png b/public/emoji/1f44c-1f3fb.png
deleted file mode 100644
index cecf7b2ab5aa6..0000000000000
Binary files a/public/emoji/1f44c-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f44c-1f3fb.svg b/public/emoji/1f44c-1f3fb.svg
index 988b464e5365d..7c8564a1d817c 100644
--- a/public/emoji/1f44c-1f3fb.svg
+++ b/public/emoji/1f44c-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44c-1f3fc.png b/public/emoji/1f44c-1f3fc.png
deleted file mode 100644
index c19239bcd3d96..0000000000000
Binary files a/public/emoji/1f44c-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f44c-1f3fc.svg b/public/emoji/1f44c-1f3fc.svg
index c03cb353f113c..606e6a14a878d 100644
--- a/public/emoji/1f44c-1f3fc.svg
+++ b/public/emoji/1f44c-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44c-1f3fd.png b/public/emoji/1f44c-1f3fd.png
deleted file mode 100644
index 94b65b03ecd1c..0000000000000
Binary files a/public/emoji/1f44c-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f44c-1f3fd.svg b/public/emoji/1f44c-1f3fd.svg
index e6d0d54753407..0477988343af2 100644
--- a/public/emoji/1f44c-1f3fd.svg
+++ b/public/emoji/1f44c-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44c-1f3fe.png b/public/emoji/1f44c-1f3fe.png
deleted file mode 100644
index 03d26f08e6a85..0000000000000
Binary files a/public/emoji/1f44c-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f44c-1f3fe.svg b/public/emoji/1f44c-1f3fe.svg
index c28d64a332030..3136ab5a91ed9 100644
--- a/public/emoji/1f44c-1f3fe.svg
+++ b/public/emoji/1f44c-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44c-1f3ff.png b/public/emoji/1f44c-1f3ff.png
deleted file mode 100644
index d4b24086364c8..0000000000000
Binary files a/public/emoji/1f44c-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f44c-1f3ff.svg b/public/emoji/1f44c-1f3ff.svg
index 6d2a3a4370e23..6c60c5cce445a 100644
--- a/public/emoji/1f44c-1f3ff.svg
+++ b/public/emoji/1f44c-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44c.png b/public/emoji/1f44c.png
deleted file mode 100644
index 028d69b0de312..0000000000000
Binary files a/public/emoji/1f44c.png and /dev/null differ
diff --git a/public/emoji/1f44c.svg b/public/emoji/1f44c.svg
index bb3a06657a81d..3ccac8265160b 100644
--- a/public/emoji/1f44c.svg
+++ b/public/emoji/1f44c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44d-1f3fb.png b/public/emoji/1f44d-1f3fb.png
deleted file mode 100644
index 39684cd5cc71c..0000000000000
Binary files a/public/emoji/1f44d-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f44d-1f3fb.svg b/public/emoji/1f44d-1f3fb.svg
index c50c59f9ff6c9..f2ea302f93cf9 100644
--- a/public/emoji/1f44d-1f3fb.svg
+++ b/public/emoji/1f44d-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44d-1f3fc.png b/public/emoji/1f44d-1f3fc.png
deleted file mode 100644
index a9b597235739b..0000000000000
Binary files a/public/emoji/1f44d-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f44d-1f3fc.svg b/public/emoji/1f44d-1f3fc.svg
index 54d7d6a19eaa1..be40cb64232e7 100644
--- a/public/emoji/1f44d-1f3fc.svg
+++ b/public/emoji/1f44d-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44d-1f3fd.png b/public/emoji/1f44d-1f3fd.png
deleted file mode 100644
index c5e2916701560..0000000000000
Binary files a/public/emoji/1f44d-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f44d-1f3fd.svg b/public/emoji/1f44d-1f3fd.svg
index 1fc72ebe93bb7..534a37fb2dd71 100644
--- a/public/emoji/1f44d-1f3fd.svg
+++ b/public/emoji/1f44d-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44d-1f3fe.png b/public/emoji/1f44d-1f3fe.png
deleted file mode 100644
index 5bf4857a88423..0000000000000
Binary files a/public/emoji/1f44d-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f44d-1f3fe.svg b/public/emoji/1f44d-1f3fe.svg
index 4db4b58eff0dc..682fed7d4656d 100644
--- a/public/emoji/1f44d-1f3fe.svg
+++ b/public/emoji/1f44d-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44d-1f3ff.png b/public/emoji/1f44d-1f3ff.png
deleted file mode 100644
index d829f787c61a1..0000000000000
Binary files a/public/emoji/1f44d-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f44d-1f3ff.svg b/public/emoji/1f44d-1f3ff.svg
index e64edfb135908..280fed6acaf21 100644
--- a/public/emoji/1f44d-1f3ff.svg
+++ b/public/emoji/1f44d-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44d.png b/public/emoji/1f44d.png
deleted file mode 100644
index f9e6f13a34f3b..0000000000000
Binary files a/public/emoji/1f44d.png and /dev/null differ
diff --git a/public/emoji/1f44d.svg b/public/emoji/1f44d.svg
index 100df67076c1c..de2963f8b9606 100644
--- a/public/emoji/1f44d.svg
+++ b/public/emoji/1f44d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44e-1f3fb.png b/public/emoji/1f44e-1f3fb.png
deleted file mode 100644
index a1631af8e92ef..0000000000000
Binary files a/public/emoji/1f44e-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f44e-1f3fb.svg b/public/emoji/1f44e-1f3fb.svg
index 298cda3697974..98af17fe31643 100644
--- a/public/emoji/1f44e-1f3fb.svg
+++ b/public/emoji/1f44e-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44e-1f3fc.png b/public/emoji/1f44e-1f3fc.png
deleted file mode 100644
index 85fff82d59572..0000000000000
Binary files a/public/emoji/1f44e-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f44e-1f3fc.svg b/public/emoji/1f44e-1f3fc.svg
index 79398ad09006f..4504b3b671a89 100644
--- a/public/emoji/1f44e-1f3fc.svg
+++ b/public/emoji/1f44e-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44e-1f3fd.png b/public/emoji/1f44e-1f3fd.png
deleted file mode 100644
index eeba3be80fdb6..0000000000000
Binary files a/public/emoji/1f44e-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f44e-1f3fd.svg b/public/emoji/1f44e-1f3fd.svg
index e0bf3be99a58b..b25cfcfbcc924 100644
--- a/public/emoji/1f44e-1f3fd.svg
+++ b/public/emoji/1f44e-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44e-1f3fe.png b/public/emoji/1f44e-1f3fe.png
deleted file mode 100644
index 1addafdaed0d9..0000000000000
Binary files a/public/emoji/1f44e-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f44e-1f3fe.svg b/public/emoji/1f44e-1f3fe.svg
index 17fa30ceafe43..fb26a9e6d15db 100644
--- a/public/emoji/1f44e-1f3fe.svg
+++ b/public/emoji/1f44e-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44e-1f3ff.png b/public/emoji/1f44e-1f3ff.png
deleted file mode 100644
index 37ec07b57214a..0000000000000
Binary files a/public/emoji/1f44e-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f44e-1f3ff.svg b/public/emoji/1f44e-1f3ff.svg
index c58da806fcefe..9d064d53a5009 100644
--- a/public/emoji/1f44e-1f3ff.svg
+++ b/public/emoji/1f44e-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44e.png b/public/emoji/1f44e.png
deleted file mode 100644
index b63da2f20a837..0000000000000
Binary files a/public/emoji/1f44e.png and /dev/null differ
diff --git a/public/emoji/1f44e.svg b/public/emoji/1f44e.svg
index cd5ce20eeb671..05c5a1f97a9b1 100644
--- a/public/emoji/1f44e.svg
+++ b/public/emoji/1f44e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44f-1f3fb.png b/public/emoji/1f44f-1f3fb.png
deleted file mode 100644
index de4bc837b9681..0000000000000
Binary files a/public/emoji/1f44f-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f44f-1f3fb.svg b/public/emoji/1f44f-1f3fb.svg
index 4728186ef120e..d11ee40be3025 100644
--- a/public/emoji/1f44f-1f3fb.svg
+++ b/public/emoji/1f44f-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44f-1f3fc.png b/public/emoji/1f44f-1f3fc.png
deleted file mode 100644
index 1323de775bab6..0000000000000
Binary files a/public/emoji/1f44f-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f44f-1f3fc.svg b/public/emoji/1f44f-1f3fc.svg
index ffb3d7e717118..562ec079960c6 100644
--- a/public/emoji/1f44f-1f3fc.svg
+++ b/public/emoji/1f44f-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44f-1f3fd.png b/public/emoji/1f44f-1f3fd.png
deleted file mode 100644
index d448ca19ddeea..0000000000000
Binary files a/public/emoji/1f44f-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f44f-1f3fd.svg b/public/emoji/1f44f-1f3fd.svg
index 138e7bde1e39b..ca3e19e1c5c55 100644
--- a/public/emoji/1f44f-1f3fd.svg
+++ b/public/emoji/1f44f-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44f-1f3fe.png b/public/emoji/1f44f-1f3fe.png
deleted file mode 100644
index c49f44ee91d97..0000000000000
Binary files a/public/emoji/1f44f-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f44f-1f3fe.svg b/public/emoji/1f44f-1f3fe.svg
index 56107c4337f75..83b18c50e1a81 100644
--- a/public/emoji/1f44f-1f3fe.svg
+++ b/public/emoji/1f44f-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44f-1f3ff.png b/public/emoji/1f44f-1f3ff.png
deleted file mode 100644
index 29ee9bdf37c3a..0000000000000
Binary files a/public/emoji/1f44f-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f44f-1f3ff.svg b/public/emoji/1f44f-1f3ff.svg
index d4361ab361f01..c214a9b51d4ac 100644
--- a/public/emoji/1f44f-1f3ff.svg
+++ b/public/emoji/1f44f-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f44f.png b/public/emoji/1f44f.png
deleted file mode 100644
index b0ffe9289205e..0000000000000
Binary files a/public/emoji/1f44f.png and /dev/null differ
diff --git a/public/emoji/1f44f.svg b/public/emoji/1f44f.svg
index c611e5d3b1c20..d190887b758dd 100644
--- a/public/emoji/1f44f.svg
+++ b/public/emoji/1f44f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f450-1f3fb.png b/public/emoji/1f450-1f3fb.png
deleted file mode 100644
index 352d2614f11b5..0000000000000
Binary files a/public/emoji/1f450-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f450-1f3fb.svg b/public/emoji/1f450-1f3fb.svg
index 3da933cf3bc81..fc3e98804859b 100644
--- a/public/emoji/1f450-1f3fb.svg
+++ b/public/emoji/1f450-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f450-1f3fc.png b/public/emoji/1f450-1f3fc.png
deleted file mode 100644
index 70824a50c73da..0000000000000
Binary files a/public/emoji/1f450-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f450-1f3fc.svg b/public/emoji/1f450-1f3fc.svg
index 4463814f00ff0..da95cf19a5087 100644
--- a/public/emoji/1f450-1f3fc.svg
+++ b/public/emoji/1f450-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f450-1f3fd.png b/public/emoji/1f450-1f3fd.png
deleted file mode 100644
index d7d136bd3db15..0000000000000
Binary files a/public/emoji/1f450-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f450-1f3fd.svg b/public/emoji/1f450-1f3fd.svg
index 715fb59fc84f9..3dfa45374b2ff 100644
--- a/public/emoji/1f450-1f3fd.svg
+++ b/public/emoji/1f450-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f450-1f3fe.png b/public/emoji/1f450-1f3fe.png
deleted file mode 100644
index df4eaa711e700..0000000000000
Binary files a/public/emoji/1f450-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f450-1f3fe.svg b/public/emoji/1f450-1f3fe.svg
index d3c412ec001a3..f15104c5377b8 100644
--- a/public/emoji/1f450-1f3fe.svg
+++ b/public/emoji/1f450-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f450-1f3ff.png b/public/emoji/1f450-1f3ff.png
deleted file mode 100644
index 7dc04eaebd83d..0000000000000
Binary files a/public/emoji/1f450-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f450-1f3ff.svg b/public/emoji/1f450-1f3ff.svg
index d7dc9146f67ae..888cc644edf07 100644
--- a/public/emoji/1f450-1f3ff.svg
+++ b/public/emoji/1f450-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f450.png b/public/emoji/1f450.png
deleted file mode 100644
index 1cf75c9101ed9..0000000000000
Binary files a/public/emoji/1f450.png and /dev/null differ
diff --git a/public/emoji/1f450.svg b/public/emoji/1f450.svg
index d910626503a59..5f4edc4c00c14 100644
--- a/public/emoji/1f450.svg
+++ b/public/emoji/1f450.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f451.png b/public/emoji/1f451.png
deleted file mode 100644
index 93b82d92f0446..0000000000000
Binary files a/public/emoji/1f451.png and /dev/null differ
diff --git a/public/emoji/1f451.svg b/public/emoji/1f451.svg
index ce7da0aab7c25..c8e31dfd553c7 100644
--- a/public/emoji/1f451.svg
+++ b/public/emoji/1f451.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f452.png b/public/emoji/1f452.png
deleted file mode 100644
index b837b6a2e47a1..0000000000000
Binary files a/public/emoji/1f452.png and /dev/null differ
diff --git a/public/emoji/1f452.svg b/public/emoji/1f452.svg
index 0ef14ae7afa08..19c624995db88 100644
--- a/public/emoji/1f452.svg
+++ b/public/emoji/1f452.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f453.png b/public/emoji/1f453.png
deleted file mode 100644
index 865d8274acf9c..0000000000000
Binary files a/public/emoji/1f453.png and /dev/null differ
diff --git a/public/emoji/1f453.svg b/public/emoji/1f453.svg
index 0356c31efece4..0e0451ea2784c 100644
--- a/public/emoji/1f453.svg
+++ b/public/emoji/1f453.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f454.png b/public/emoji/1f454.png
deleted file mode 100644
index 1804e7f3ff334..0000000000000
Binary files a/public/emoji/1f454.png and /dev/null differ
diff --git a/public/emoji/1f454.svg b/public/emoji/1f454.svg
index b72e4dc9e2bfc..de9f10fee0b62 100644
--- a/public/emoji/1f454.svg
+++ b/public/emoji/1f454.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f455.png b/public/emoji/1f455.png
deleted file mode 100644
index af08dec8b59c9..0000000000000
Binary files a/public/emoji/1f455.png and /dev/null differ
diff --git a/public/emoji/1f455.svg b/public/emoji/1f455.svg
index 33900afbbb22d..13581c7b6d3e5 100644
--- a/public/emoji/1f455.svg
+++ b/public/emoji/1f455.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f456.png b/public/emoji/1f456.png
deleted file mode 100644
index 2a6869d674c57..0000000000000
Binary files a/public/emoji/1f456.png and /dev/null differ
diff --git a/public/emoji/1f456.svg b/public/emoji/1f456.svg
index eed2f86df7ec5..8f07c20785674 100644
--- a/public/emoji/1f456.svg
+++ b/public/emoji/1f456.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f457.png b/public/emoji/1f457.png
deleted file mode 100644
index a697ca5c57d5c..0000000000000
Binary files a/public/emoji/1f457.png and /dev/null differ
diff --git a/public/emoji/1f457.svg b/public/emoji/1f457.svg
index 2a20f802b9274..c00c84a045a9d 100644
--- a/public/emoji/1f457.svg
+++ b/public/emoji/1f457.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f458.png b/public/emoji/1f458.png
deleted file mode 100644
index abe851115d1a4..0000000000000
Binary files a/public/emoji/1f458.png and /dev/null differ
diff --git a/public/emoji/1f458.svg b/public/emoji/1f458.svg
index 7f7bed9af8502..6917bbc77903f 100644
--- a/public/emoji/1f458.svg
+++ b/public/emoji/1f458.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f459.png b/public/emoji/1f459.png
deleted file mode 100644
index 77a8a0aae5b3d..0000000000000
Binary files a/public/emoji/1f459.png and /dev/null differ
diff --git a/public/emoji/1f459.svg b/public/emoji/1f459.svg
index e0a1ca75df3cd..6480f8f855412 100644
--- a/public/emoji/1f459.svg
+++ b/public/emoji/1f459.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f45a.png b/public/emoji/1f45a.png
deleted file mode 100644
index 01410dc8107fe..0000000000000
Binary files a/public/emoji/1f45a.png and /dev/null differ
diff --git a/public/emoji/1f45a.svg b/public/emoji/1f45a.svg
index 294d86ef6f407..4312f4ca5e108 100644
--- a/public/emoji/1f45a.svg
+++ b/public/emoji/1f45a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f45b.png b/public/emoji/1f45b.png
deleted file mode 100644
index 981346193c5e8..0000000000000
Binary files a/public/emoji/1f45b.png and /dev/null differ
diff --git a/public/emoji/1f45b.svg b/public/emoji/1f45b.svg
index 2bb632f3ed103..615cb606c33a4 100644
--- a/public/emoji/1f45b.svg
+++ b/public/emoji/1f45b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f45c.png b/public/emoji/1f45c.png
deleted file mode 100644
index cbf75c5d25e7e..0000000000000
Binary files a/public/emoji/1f45c.png and /dev/null differ
diff --git a/public/emoji/1f45c.svg b/public/emoji/1f45c.svg
index 39165931c8815..ffa83ff1576ff 100644
--- a/public/emoji/1f45c.svg
+++ b/public/emoji/1f45c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f45d.png b/public/emoji/1f45d.png
deleted file mode 100644
index 8795c6c66ff3d..0000000000000
Binary files a/public/emoji/1f45d.png and /dev/null differ
diff --git a/public/emoji/1f45d.svg b/public/emoji/1f45d.svg
index b877d3ed886a8..4cadb52c7ab4b 100644
--- a/public/emoji/1f45d.svg
+++ b/public/emoji/1f45d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f45e.png b/public/emoji/1f45e.png
deleted file mode 100644
index 4bf7541032c6a..0000000000000
Binary files a/public/emoji/1f45e.png and /dev/null differ
diff --git a/public/emoji/1f45e.svg b/public/emoji/1f45e.svg
index 7dbe5d8bf1eed..5b71d31ff7756 100644
--- a/public/emoji/1f45e.svg
+++ b/public/emoji/1f45e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f45f.png b/public/emoji/1f45f.png
deleted file mode 100644
index 423fa07dd5d75..0000000000000
Binary files a/public/emoji/1f45f.png and /dev/null differ
diff --git a/public/emoji/1f45f.svg b/public/emoji/1f45f.svg
index a54733edcdf3a..3b94ca3ce06ce 100644
--- a/public/emoji/1f45f.svg
+++ b/public/emoji/1f45f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f460.png b/public/emoji/1f460.png
deleted file mode 100644
index b331cbccc9df9..0000000000000
Binary files a/public/emoji/1f460.png and /dev/null differ
diff --git a/public/emoji/1f460.svg b/public/emoji/1f460.svg
index 57b7e17fb99ee..334ea75ecd3b3 100644
--- a/public/emoji/1f460.svg
+++ b/public/emoji/1f460.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f461.png b/public/emoji/1f461.png
deleted file mode 100644
index 9d9f5122b7aeb..0000000000000
Binary files a/public/emoji/1f461.png and /dev/null differ
diff --git a/public/emoji/1f461.svg b/public/emoji/1f461.svg
index e17e173db884b..4da080d37e0e3 100644
--- a/public/emoji/1f461.svg
+++ b/public/emoji/1f461.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f462.png b/public/emoji/1f462.png
deleted file mode 100644
index 11f1065ed07e7..0000000000000
Binary files a/public/emoji/1f462.png and /dev/null differ
diff --git a/public/emoji/1f462.svg b/public/emoji/1f462.svg
index 72c94f379f6db..47948a93195db 100644
--- a/public/emoji/1f462.svg
+++ b/public/emoji/1f462.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f463.png b/public/emoji/1f463.png
deleted file mode 100644
index b2673c5a1a8f1..0000000000000
Binary files a/public/emoji/1f463.png and /dev/null differ
diff --git a/public/emoji/1f463.svg b/public/emoji/1f463.svg
index 2330610517154..c4ee494e6b003 100644
--- a/public/emoji/1f463.svg
+++ b/public/emoji/1f463.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f464.png b/public/emoji/1f464.png
deleted file mode 100644
index 123b2cbe1fbf7..0000000000000
Binary files a/public/emoji/1f464.png and /dev/null differ
diff --git a/public/emoji/1f464.svg b/public/emoji/1f464.svg
index 9c0e92dadbbe5..515da2c5774ee 100644
--- a/public/emoji/1f464.svg
+++ b/public/emoji/1f464.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f465.png b/public/emoji/1f465.png
deleted file mode 100644
index d7656860a1c0f..0000000000000
Binary files a/public/emoji/1f465.png and /dev/null differ
diff --git a/public/emoji/1f465.svg b/public/emoji/1f465.svg
index 4ca629e3dc186..9ac02e6dc0f00 100644
--- a/public/emoji/1f465.svg
+++ b/public/emoji/1f465.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f466-1f3fb.png b/public/emoji/1f466-1f3fb.png
deleted file mode 100644
index 2fc436ea512bf..0000000000000
Binary files a/public/emoji/1f466-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f466-1f3fb.svg b/public/emoji/1f466-1f3fb.svg
index f0c2365dd313a..ae20d77b54b44 100644
--- a/public/emoji/1f466-1f3fb.svg
+++ b/public/emoji/1f466-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f466-1f3fc.png b/public/emoji/1f466-1f3fc.png
deleted file mode 100644
index 09a5f18d36093..0000000000000
Binary files a/public/emoji/1f466-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f466-1f3fc.svg b/public/emoji/1f466-1f3fc.svg
index 296576e85b80b..380488720d926 100644
--- a/public/emoji/1f466-1f3fc.svg
+++ b/public/emoji/1f466-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f466-1f3fd.png b/public/emoji/1f466-1f3fd.png
deleted file mode 100644
index 3cfe675dd3a6a..0000000000000
Binary files a/public/emoji/1f466-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f466-1f3fd.svg b/public/emoji/1f466-1f3fd.svg
index eafb2511db68d..12d0d0f067635 100644
--- a/public/emoji/1f466-1f3fd.svg
+++ b/public/emoji/1f466-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f466-1f3fe.png b/public/emoji/1f466-1f3fe.png
deleted file mode 100644
index 780be0ace3661..0000000000000
Binary files a/public/emoji/1f466-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f466-1f3fe.svg b/public/emoji/1f466-1f3fe.svg
index 1623d305eb531..5c9c55d97dac7 100644
--- a/public/emoji/1f466-1f3fe.svg
+++ b/public/emoji/1f466-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f466-1f3ff.png b/public/emoji/1f466-1f3ff.png
deleted file mode 100644
index f32fe22e35c24..0000000000000
Binary files a/public/emoji/1f466-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f466-1f3ff.svg b/public/emoji/1f466-1f3ff.svg
index 051400b1c6a10..d0e4deca1c793 100644
--- a/public/emoji/1f466-1f3ff.svg
+++ b/public/emoji/1f466-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f466.png b/public/emoji/1f466.png
deleted file mode 100644
index 8ecfb0a4e92a1..0000000000000
Binary files a/public/emoji/1f466.png and /dev/null differ
diff --git a/public/emoji/1f466.svg b/public/emoji/1f466.svg
index 5e233fc8b6e31..3ef0fcc58ad26 100644
--- a/public/emoji/1f466.svg
+++ b/public/emoji/1f466.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f467-1f3fb.png b/public/emoji/1f467-1f3fb.png
deleted file mode 100644
index bb667e886515f..0000000000000
Binary files a/public/emoji/1f467-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f467-1f3fb.svg b/public/emoji/1f467-1f3fb.svg
index eeb7738dac6bc..1836aaa6713e3 100644
--- a/public/emoji/1f467-1f3fb.svg
+++ b/public/emoji/1f467-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f467-1f3fc.png b/public/emoji/1f467-1f3fc.png
deleted file mode 100644
index a59ed4a3f0d79..0000000000000
Binary files a/public/emoji/1f467-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f467-1f3fc.svg b/public/emoji/1f467-1f3fc.svg
index 4088b48a762e0..08eae438e7544 100644
--- a/public/emoji/1f467-1f3fc.svg
+++ b/public/emoji/1f467-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f467-1f3fd.png b/public/emoji/1f467-1f3fd.png
deleted file mode 100644
index 517e7f2a7b0d5..0000000000000
Binary files a/public/emoji/1f467-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f467-1f3fd.svg b/public/emoji/1f467-1f3fd.svg
index 18a76f65de6d1..477ffe9ee7d74 100644
--- a/public/emoji/1f467-1f3fd.svg
+++ b/public/emoji/1f467-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f467-1f3fe.png b/public/emoji/1f467-1f3fe.png
deleted file mode 100644
index 542d96c848757..0000000000000
Binary files a/public/emoji/1f467-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f467-1f3fe.svg b/public/emoji/1f467-1f3fe.svg
index dbb0f5fc60045..190ba22292128 100644
--- a/public/emoji/1f467-1f3fe.svg
+++ b/public/emoji/1f467-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f467-1f3ff.png b/public/emoji/1f467-1f3ff.png
deleted file mode 100644
index 66b7c28c2dfe8..0000000000000
Binary files a/public/emoji/1f467-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f467-1f3ff.svg b/public/emoji/1f467-1f3ff.svg
index 80e424ed2bb5c..8d2ca5636714a 100644
--- a/public/emoji/1f467-1f3ff.svg
+++ b/public/emoji/1f467-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f467.png b/public/emoji/1f467.png
deleted file mode 100644
index dc1d4d08b390e..0000000000000
Binary files a/public/emoji/1f467.png and /dev/null differ
diff --git a/public/emoji/1f467.svg b/public/emoji/1f467.svg
index 1cb7f67a65afd..a3bc670640494 100644
--- a/public/emoji/1f467.svg
+++ b/public/emoji/1f467.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-1f33e.svg b/public/emoji/1f468-1f3fb-200d-1f33e.svg
new file mode 100644
index 0000000000000..2b4b3e2dd9b59
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-1f33e.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-1f373.svg b/public/emoji/1f468-1f3fb-200d-1f373.svg
new file mode 100644
index 0000000000000..80e793c79dd85
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-1f373.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-1f393.svg b/public/emoji/1f468-1f3fb-200d-1f393.svg
new file mode 100644
index 0000000000000..1b9ca687a17e3
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-1f393.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-1f3a4.svg b/public/emoji/1f468-1f3fb-200d-1f3a4.svg
new file mode 100644
index 0000000000000..3c51ea9595069
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-1f3a4.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-1f3a8.svg b/public/emoji/1f468-1f3fb-200d-1f3a8.svg
new file mode 100644
index 0000000000000..b884ed15d527e
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-1f3a8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-1f3eb.svg b/public/emoji/1f468-1f3fb-200d-1f3eb.svg
new file mode 100644
index 0000000000000..e33cca230a9a8
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-1f3eb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-1f3ed.svg b/public/emoji/1f468-1f3fb-200d-1f3ed.svg
new file mode 100644
index 0000000000000..53b9e25b460f6
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-1f3ed.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-1f4bb.svg b/public/emoji/1f468-1f3fb-200d-1f4bb.svg
new file mode 100644
index 0000000000000..15601f70c881f
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-1f4bb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-1f4bc.svg b/public/emoji/1f468-1f3fb-200d-1f4bc.svg
new file mode 100644
index 0000000000000..f5987b48e07bb
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-1f4bc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-1f527.svg b/public/emoji/1f468-1f3fb-200d-1f527.svg
new file mode 100644
index 0000000000000..7b44dc17371a5
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-1f527.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-1f52c.svg b/public/emoji/1f468-1f3fb-200d-1f52c.svg
new file mode 100644
index 0000000000000..f14434d22844b
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-1f52c.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-1f680.svg b/public/emoji/1f468-1f3fb-200d-1f680.svg
new file mode 100644
index 0000000000000..eab6f4e66215d
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-1f680.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-1f692.svg b/public/emoji/1f468-1f3fb-200d-1f692.svg
new file mode 100644
index 0000000000000..e562eadeef461
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-1f692.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-2695-fe0f.svg b/public/emoji/1f468-1f3fb-200d-2695-fe0f.svg
new file mode 100644
index 0000000000000..73027bb8643a1
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-2695-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-2696-fe0f.svg b/public/emoji/1f468-1f3fb-200d-2696-fe0f.svg
new file mode 100644
index 0000000000000..9418cad3166dd
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-2696-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb-200d-2708-fe0f.svg b/public/emoji/1f468-1f3fb-200d-2708-fe0f.svg
new file mode 100644
index 0000000000000..119142aec72b9
--- /dev/null
+++ b/public/emoji/1f468-1f3fb-200d-2708-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fb.png b/public/emoji/1f468-1f3fb.png
deleted file mode 100644
index bb86e963a800b..0000000000000
Binary files a/public/emoji/1f468-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f468-1f3fb.svg b/public/emoji/1f468-1f3fb.svg
index 9ffc40139f3ca..6c3bfe333de44 100644
--- a/public/emoji/1f468-1f3fb.svg
+++ b/public/emoji/1f468-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-1f33e.svg b/public/emoji/1f468-1f3fc-200d-1f33e.svg
new file mode 100644
index 0000000000000..6b9dff148bffe
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-1f33e.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-1f373.svg b/public/emoji/1f468-1f3fc-200d-1f373.svg
new file mode 100644
index 0000000000000..3834a6fcac691
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-1f373.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-1f393.svg b/public/emoji/1f468-1f3fc-200d-1f393.svg
new file mode 100644
index 0000000000000..4c665c307387f
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-1f393.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-1f3a4.svg b/public/emoji/1f468-1f3fc-200d-1f3a4.svg
new file mode 100644
index 0000000000000..924e63cbb43c0
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-1f3a4.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-1f3a8.svg b/public/emoji/1f468-1f3fc-200d-1f3a8.svg
new file mode 100644
index 0000000000000..340b2c74c19cf
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-1f3a8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-1f3eb.svg b/public/emoji/1f468-1f3fc-200d-1f3eb.svg
new file mode 100644
index 0000000000000..891c080bc1a8c
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-1f3eb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-1f3ed.svg b/public/emoji/1f468-1f3fc-200d-1f3ed.svg
new file mode 100644
index 0000000000000..1e65941de411d
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-1f3ed.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-1f4bb.svg b/public/emoji/1f468-1f3fc-200d-1f4bb.svg
new file mode 100644
index 0000000000000..916faf9244434
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-1f4bb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-1f4bc.svg b/public/emoji/1f468-1f3fc-200d-1f4bc.svg
new file mode 100644
index 0000000000000..68a41459064d5
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-1f4bc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-1f527.svg b/public/emoji/1f468-1f3fc-200d-1f527.svg
new file mode 100644
index 0000000000000..6ce9580f858cb
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-1f527.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-1f52c.svg b/public/emoji/1f468-1f3fc-200d-1f52c.svg
new file mode 100644
index 0000000000000..054ab00962988
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-1f52c.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-1f680.svg b/public/emoji/1f468-1f3fc-200d-1f680.svg
new file mode 100644
index 0000000000000..523fe1c985a72
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-1f680.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-1f692.svg b/public/emoji/1f468-1f3fc-200d-1f692.svg
new file mode 100644
index 0000000000000..4f05f832f39fb
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-1f692.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-2695-fe0f.svg b/public/emoji/1f468-1f3fc-200d-2695-fe0f.svg
new file mode 100644
index 0000000000000..16625d45798a3
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-2695-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-2696-fe0f.svg b/public/emoji/1f468-1f3fc-200d-2696-fe0f.svg
new file mode 100644
index 0000000000000..f2d87d2d70fe2
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-2696-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc-200d-2708-fe0f.svg b/public/emoji/1f468-1f3fc-200d-2708-fe0f.svg
new file mode 100644
index 0000000000000..e2496e389ec7c
--- /dev/null
+++ b/public/emoji/1f468-1f3fc-200d-2708-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fc.png b/public/emoji/1f468-1f3fc.png
deleted file mode 100644
index fdeeaff46f51a..0000000000000
Binary files a/public/emoji/1f468-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f468-1f3fc.svg b/public/emoji/1f468-1f3fc.svg
index e0e8d5fd3003e..19a37a432847e 100644
--- a/public/emoji/1f468-1f3fc.svg
+++ b/public/emoji/1f468-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-1f33e.svg b/public/emoji/1f468-1f3fd-200d-1f33e.svg
new file mode 100644
index 0000000000000..9eb2585981add
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-1f33e.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-1f373.svg b/public/emoji/1f468-1f3fd-200d-1f373.svg
new file mode 100644
index 0000000000000..5e723978b13e8
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-1f373.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-1f393.svg b/public/emoji/1f468-1f3fd-200d-1f393.svg
new file mode 100644
index 0000000000000..15aa6ce23a302
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-1f393.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-1f3a4.svg b/public/emoji/1f468-1f3fd-200d-1f3a4.svg
new file mode 100644
index 0000000000000..9fec6513007a4
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-1f3a4.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-1f3a8.svg b/public/emoji/1f468-1f3fd-200d-1f3a8.svg
new file mode 100644
index 0000000000000..979e5bc52e523
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-1f3a8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-1f3eb.svg b/public/emoji/1f468-1f3fd-200d-1f3eb.svg
new file mode 100644
index 0000000000000..0ccca9bdef192
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-1f3eb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-1f3ed.svg b/public/emoji/1f468-1f3fd-200d-1f3ed.svg
new file mode 100644
index 0000000000000..b8d6cacae9bbe
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-1f3ed.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-1f4bb.svg b/public/emoji/1f468-1f3fd-200d-1f4bb.svg
new file mode 100644
index 0000000000000..d26aa9ae2b16a
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-1f4bb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-1f4bc.svg b/public/emoji/1f468-1f3fd-200d-1f4bc.svg
new file mode 100644
index 0000000000000..3f59dbcbff8f6
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-1f4bc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-1f527.svg b/public/emoji/1f468-1f3fd-200d-1f527.svg
new file mode 100644
index 0000000000000..06b41a20c8d03
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-1f527.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-1f52c.svg b/public/emoji/1f468-1f3fd-200d-1f52c.svg
new file mode 100644
index 0000000000000..98f161a81fecf
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-1f52c.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-1f680.svg b/public/emoji/1f468-1f3fd-200d-1f680.svg
new file mode 100644
index 0000000000000..fd0843423556b
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-1f680.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-1f692.svg b/public/emoji/1f468-1f3fd-200d-1f692.svg
new file mode 100644
index 0000000000000..5d9619e153067
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-1f692.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-2695-fe0f.svg b/public/emoji/1f468-1f3fd-200d-2695-fe0f.svg
new file mode 100644
index 0000000000000..4a53e82bd24a1
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-2695-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-2696-fe0f.svg b/public/emoji/1f468-1f3fd-200d-2696-fe0f.svg
new file mode 100644
index 0000000000000..7815ddb92afc8
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-2696-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd-200d-2708-fe0f.svg b/public/emoji/1f468-1f3fd-200d-2708-fe0f.svg
new file mode 100644
index 0000000000000..caf7f3dfd47ff
--- /dev/null
+++ b/public/emoji/1f468-1f3fd-200d-2708-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fd.png b/public/emoji/1f468-1f3fd.png
deleted file mode 100644
index 7ae0b5df9cff7..0000000000000
Binary files a/public/emoji/1f468-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f468-1f3fd.svg b/public/emoji/1f468-1f3fd.svg
index 4fc71c6d81b53..42f34b8b0d454 100644
--- a/public/emoji/1f468-1f3fd.svg
+++ b/public/emoji/1f468-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-1f33e.svg b/public/emoji/1f468-1f3fe-200d-1f33e.svg
new file mode 100644
index 0000000000000..96a2bf5bf1ea4
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-1f33e.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-1f373.svg b/public/emoji/1f468-1f3fe-200d-1f373.svg
new file mode 100644
index 0000000000000..e608c4e26c737
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-1f373.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-1f393.svg b/public/emoji/1f468-1f3fe-200d-1f393.svg
new file mode 100644
index 0000000000000..da6f2b100325f
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-1f393.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-1f3a4.svg b/public/emoji/1f468-1f3fe-200d-1f3a4.svg
new file mode 100644
index 0000000000000..4eb5cd9c567ea
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-1f3a4.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-1f3a8.svg b/public/emoji/1f468-1f3fe-200d-1f3a8.svg
new file mode 100644
index 0000000000000..d01f1b275e841
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-1f3a8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-1f3eb.svg b/public/emoji/1f468-1f3fe-200d-1f3eb.svg
new file mode 100644
index 0000000000000..ae70e8a4a0e13
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-1f3eb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-1f3ed.svg b/public/emoji/1f468-1f3fe-200d-1f3ed.svg
new file mode 100644
index 0000000000000..1663a9c959f99
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-1f3ed.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-1f4bb.svg b/public/emoji/1f468-1f3fe-200d-1f4bb.svg
new file mode 100644
index 0000000000000..7bcc7ecf43fed
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-1f4bb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-1f4bc.svg b/public/emoji/1f468-1f3fe-200d-1f4bc.svg
new file mode 100644
index 0000000000000..094ce5d7e7f67
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-1f4bc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-1f527.svg b/public/emoji/1f468-1f3fe-200d-1f527.svg
new file mode 100644
index 0000000000000..176da65b134ea
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-1f527.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-1f52c.svg b/public/emoji/1f468-1f3fe-200d-1f52c.svg
new file mode 100644
index 0000000000000..ef4187208be00
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-1f52c.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-1f680.svg b/public/emoji/1f468-1f3fe-200d-1f680.svg
new file mode 100644
index 0000000000000..56fc2b18b09d7
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-1f680.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-1f692.svg b/public/emoji/1f468-1f3fe-200d-1f692.svg
new file mode 100644
index 0000000000000..0408f4d359f46
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-1f692.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-2695-fe0f.svg b/public/emoji/1f468-1f3fe-200d-2695-fe0f.svg
new file mode 100644
index 0000000000000..385369bf5e7f7
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-2695-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-2696-fe0f.svg b/public/emoji/1f468-1f3fe-200d-2696-fe0f.svg
new file mode 100644
index 0000000000000..ceb83559f5d26
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-2696-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe-200d-2708-fe0f.svg b/public/emoji/1f468-1f3fe-200d-2708-fe0f.svg
new file mode 100644
index 0000000000000..799fd409b1bae
--- /dev/null
+++ b/public/emoji/1f468-1f3fe-200d-2708-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3fe.png b/public/emoji/1f468-1f3fe.png
deleted file mode 100644
index db14cde99b813..0000000000000
Binary files a/public/emoji/1f468-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f468-1f3fe.svg b/public/emoji/1f468-1f3fe.svg
index 9dc4c6df70000..62054625af6aa 100644
--- a/public/emoji/1f468-1f3fe.svg
+++ b/public/emoji/1f468-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-1f33e.svg b/public/emoji/1f468-1f3ff-200d-1f33e.svg
new file mode 100644
index 0000000000000..e5edce814945d
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-1f33e.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-1f373.svg b/public/emoji/1f468-1f3ff-200d-1f373.svg
new file mode 100644
index 0000000000000..30eba86edb925
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-1f373.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-1f393.svg b/public/emoji/1f468-1f3ff-200d-1f393.svg
new file mode 100644
index 0000000000000..7d5672e850ee3
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-1f393.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-1f3a4.svg b/public/emoji/1f468-1f3ff-200d-1f3a4.svg
new file mode 100644
index 0000000000000..28d5059edd3e1
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-1f3a4.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-1f3a8.svg b/public/emoji/1f468-1f3ff-200d-1f3a8.svg
new file mode 100644
index 0000000000000..e63e974c66f37
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-1f3a8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-1f3eb.svg b/public/emoji/1f468-1f3ff-200d-1f3eb.svg
new file mode 100644
index 0000000000000..2565b202fba1c
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-1f3eb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-1f3ed.svg b/public/emoji/1f468-1f3ff-200d-1f3ed.svg
new file mode 100644
index 0000000000000..a3de0981d94c8
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-1f3ed.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-1f4bb.svg b/public/emoji/1f468-1f3ff-200d-1f4bb.svg
new file mode 100644
index 0000000000000..401bfb9eb7e9d
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-1f4bb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-1f4bc.svg b/public/emoji/1f468-1f3ff-200d-1f4bc.svg
new file mode 100644
index 0000000000000..6e48ee3532986
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-1f4bc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-1f527.svg b/public/emoji/1f468-1f3ff-200d-1f527.svg
new file mode 100644
index 0000000000000..b188a3d21e9d7
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-1f527.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-1f52c.svg b/public/emoji/1f468-1f3ff-200d-1f52c.svg
new file mode 100644
index 0000000000000..e0eccb44bdf9a
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-1f52c.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-1f680.svg b/public/emoji/1f468-1f3ff-200d-1f680.svg
new file mode 100644
index 0000000000000..21f0babefb3fb
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-1f680.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-1f692.svg b/public/emoji/1f468-1f3ff-200d-1f692.svg
new file mode 100644
index 0000000000000..e99af4b65b6df
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-1f692.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-2695-fe0f.svg b/public/emoji/1f468-1f3ff-200d-2695-fe0f.svg
new file mode 100644
index 0000000000000..515da8684d703
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-2695-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-2696-fe0f.svg b/public/emoji/1f468-1f3ff-200d-2696-fe0f.svg
new file mode 100644
index 0000000000000..96f7b0b85e534
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-2696-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff-200d-2708-fe0f.svg b/public/emoji/1f468-1f3ff-200d-2708-fe0f.svg
new file mode 100644
index 0000000000000..713423a789742
--- /dev/null
+++ b/public/emoji/1f468-1f3ff-200d-2708-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-1f3ff.png b/public/emoji/1f468-1f3ff.png
deleted file mode 100644
index 7c67a70529c45..0000000000000
Binary files a/public/emoji/1f468-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f468-1f3ff.svg b/public/emoji/1f468-1f3ff.svg
index fab2b434926fd..f8f629a42f60e 100644
--- a/public/emoji/1f468-1f3ff.svg
+++ b/public/emoji/1f468-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f468-1f468-1f466-1f466.png b/public/emoji/1f468-1f468-1f466-1f466.png
deleted file mode 100644
index 81e6c0fc0ee24..0000000000000
Binary files a/public/emoji/1f468-1f468-1f466-1f466.png and /dev/null differ
diff --git a/public/emoji/1f468-1f468-1f466-1f466.svg b/public/emoji/1f468-1f468-1f466-1f466.svg
deleted file mode 100644
index 5c348147b6711..0000000000000
--- a/public/emoji/1f468-1f468-1f466-1f466.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f468-1f468-1f466.png b/public/emoji/1f468-1f468-1f466.png
deleted file mode 100644
index 7a2e4e2c49100..0000000000000
Binary files a/public/emoji/1f468-1f468-1f466.png and /dev/null differ
diff --git a/public/emoji/1f468-1f468-1f466.svg b/public/emoji/1f468-1f468-1f466.svg
deleted file mode 100644
index 7f5946500fe3b..0000000000000
--- a/public/emoji/1f468-1f468-1f466.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f468-1f468-1f467-1f466.png b/public/emoji/1f468-1f468-1f467-1f466.png
deleted file mode 100644
index 41e35166670b1..0000000000000
Binary files a/public/emoji/1f468-1f468-1f467-1f466.png and /dev/null differ
diff --git a/public/emoji/1f468-1f468-1f467-1f466.svg b/public/emoji/1f468-1f468-1f467-1f466.svg
deleted file mode 100644
index 555c8bd84b7f8..0000000000000
--- a/public/emoji/1f468-1f468-1f467-1f466.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f468-1f468-1f467-1f467.png b/public/emoji/1f468-1f468-1f467-1f467.png
deleted file mode 100644
index 8e8ccfe6c7f0a..0000000000000
Binary files a/public/emoji/1f468-1f468-1f467-1f467.png and /dev/null differ
diff --git a/public/emoji/1f468-1f468-1f467-1f467.svg b/public/emoji/1f468-1f468-1f467-1f467.svg
deleted file mode 100644
index 1e35ca4eb1e53..0000000000000
--- a/public/emoji/1f468-1f468-1f467-1f467.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f468-1f468-1f467.png b/public/emoji/1f468-1f468-1f467.png
deleted file mode 100644
index 932a85e1fe5d1..0000000000000
Binary files a/public/emoji/1f468-1f468-1f467.png and /dev/null differ
diff --git a/public/emoji/1f468-1f468-1f467.svg b/public/emoji/1f468-1f468-1f467.svg
deleted file mode 100644
index 6dfa7e98eb90d..0000000000000
--- a/public/emoji/1f468-1f468-1f467.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f468-1f469-1f466-1f466.png b/public/emoji/1f468-1f469-1f466-1f466.png
deleted file mode 100644
index b544fbe573fa2..0000000000000
Binary files a/public/emoji/1f468-1f469-1f466-1f466.png and /dev/null differ
diff --git a/public/emoji/1f468-1f469-1f466-1f466.svg b/public/emoji/1f468-1f469-1f466-1f466.svg
deleted file mode 100644
index f877a886c9381..0000000000000
--- a/public/emoji/1f468-1f469-1f466-1f466.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f468-1f469-1f467-1f466.png b/public/emoji/1f468-1f469-1f467-1f466.png
deleted file mode 100644
index 40dbf1f7a18e6..0000000000000
Binary files a/public/emoji/1f468-1f469-1f467-1f466.png and /dev/null differ
diff --git a/public/emoji/1f468-1f469-1f467-1f466.svg b/public/emoji/1f468-1f469-1f467-1f466.svg
deleted file mode 100644
index 0ab0a6b2bc228..0000000000000
--- a/public/emoji/1f468-1f469-1f467-1f466.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f468-1f469-1f467-1f467.png b/public/emoji/1f468-1f469-1f467-1f467.png
deleted file mode 100644
index bfefa4879cb24..0000000000000
Binary files a/public/emoji/1f468-1f469-1f467-1f467.png and /dev/null differ
diff --git a/public/emoji/1f468-1f469-1f467-1f467.svg b/public/emoji/1f468-1f469-1f467-1f467.svg
deleted file mode 100644
index ca1285f9be2dc..0000000000000
--- a/public/emoji/1f468-1f469-1f467-1f467.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f468-1f469-1f467.png b/public/emoji/1f468-1f469-1f467.png
deleted file mode 100644
index 71d2681c32a20..0000000000000
Binary files a/public/emoji/1f468-1f469-1f467.png and /dev/null differ
diff --git a/public/emoji/1f468-1f469-1f467.svg b/public/emoji/1f468-1f469-1f467.svg
deleted file mode 100644
index 0afec9c1b9821..0000000000000
--- a/public/emoji/1f468-1f469-1f467.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f468-200d-1f33e.svg b/public/emoji/1f468-200d-1f33e.svg
new file mode 100644
index 0000000000000..315a53f07b0ae
--- /dev/null
+++ b/public/emoji/1f468-200d-1f33e.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f373.svg b/public/emoji/1f468-200d-1f373.svg
new file mode 100644
index 0000000000000..e999b54938cf3
--- /dev/null
+++ b/public/emoji/1f468-200d-1f373.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f393.svg b/public/emoji/1f468-200d-1f393.svg
new file mode 100644
index 0000000000000..701bc5f3aab27
--- /dev/null
+++ b/public/emoji/1f468-200d-1f393.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f3a4.svg b/public/emoji/1f468-200d-1f3a4.svg
new file mode 100644
index 0000000000000..48bbd13e8ea1e
--- /dev/null
+++ b/public/emoji/1f468-200d-1f3a4.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f3a8.svg b/public/emoji/1f468-200d-1f3a8.svg
new file mode 100644
index 0000000000000..861521d275c44
--- /dev/null
+++ b/public/emoji/1f468-200d-1f3a8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f3eb.svg b/public/emoji/1f468-200d-1f3eb.svg
new file mode 100644
index 0000000000000..ff49105fc44a9
--- /dev/null
+++ b/public/emoji/1f468-200d-1f3eb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f3ed.svg b/public/emoji/1f468-200d-1f3ed.svg
new file mode 100644
index 0000000000000..178acc73aaa21
--- /dev/null
+++ b/public/emoji/1f468-200d-1f3ed.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f466-200d-1f466.svg b/public/emoji/1f468-200d-1f466-200d-1f466.svg
new file mode 100644
index 0000000000000..8edd3a9c56ddb
--- /dev/null
+++ b/public/emoji/1f468-200d-1f466-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f466.svg b/public/emoji/1f468-200d-1f466.svg
new file mode 100644
index 0000000000000..6ef28200c0145
--- /dev/null
+++ b/public/emoji/1f468-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f467-200d-1f466.svg b/public/emoji/1f468-200d-1f467-200d-1f466.svg
new file mode 100644
index 0000000000000..a12e1379f8ea8
--- /dev/null
+++ b/public/emoji/1f468-200d-1f467-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f467-200d-1f467.svg b/public/emoji/1f468-200d-1f467-200d-1f467.svg
new file mode 100644
index 0000000000000..b9b029f59aa4e
--- /dev/null
+++ b/public/emoji/1f468-200d-1f467-200d-1f467.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f467.svg b/public/emoji/1f468-200d-1f467.svg
new file mode 100644
index 0000000000000..9b0ded754ae01
--- /dev/null
+++ b/public/emoji/1f468-200d-1f467.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f468-200d-1f466-200d-1f466.svg b/public/emoji/1f468-200d-1f468-200d-1f466-200d-1f466.svg
new file mode 100644
index 0000000000000..621d66ec971a6
--- /dev/null
+++ b/public/emoji/1f468-200d-1f468-200d-1f466-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f468-200d-1f466.svg b/public/emoji/1f468-200d-1f468-200d-1f466.svg
new file mode 100644
index 0000000000000..b44243a4801bb
--- /dev/null
+++ b/public/emoji/1f468-200d-1f468-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f466.svg b/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f466.svg
new file mode 100644
index 0000000000000..613d824d380d6
--- /dev/null
+++ b/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f467.svg b/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f467.svg
new file mode 100644
index 0000000000000..8dcf9c6348e8d
--- /dev/null
+++ b/public/emoji/1f468-200d-1f468-200d-1f467-200d-1f467.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f468-200d-1f467.svg b/public/emoji/1f468-200d-1f468-200d-1f467.svg
new file mode 100644
index 0000000000000..f5395db98dbdc
--- /dev/null
+++ b/public/emoji/1f468-200d-1f468-200d-1f467.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f469-200d-1f466-200d-1f466.svg b/public/emoji/1f468-200d-1f469-200d-1f466-200d-1f466.svg
new file mode 100644
index 0000000000000..4146ccc4f79ac
--- /dev/null
+++ b/public/emoji/1f468-200d-1f469-200d-1f466-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f469-200d-1f466.svg b/public/emoji/1f468-200d-1f469-200d-1f466.svg
new file mode 100644
index 0000000000000..ce5ccdd204347
--- /dev/null
+++ b/public/emoji/1f468-200d-1f469-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f466.svg b/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f466.svg
new file mode 100644
index 0000000000000..de683b2563083
--- /dev/null
+++ b/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f467.svg b/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f467.svg
new file mode 100644
index 0000000000000..bbc2e5b4044e6
--- /dev/null
+++ b/public/emoji/1f468-200d-1f469-200d-1f467-200d-1f467.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f469-200d-1f467.svg b/public/emoji/1f468-200d-1f469-200d-1f467.svg
new file mode 100644
index 0000000000000..6eecb56bbca20
--- /dev/null
+++ b/public/emoji/1f468-200d-1f469-200d-1f467.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f4bb.svg b/public/emoji/1f468-200d-1f4bb.svg
new file mode 100644
index 0000000000000..d5721aa9cd497
--- /dev/null
+++ b/public/emoji/1f468-200d-1f4bb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f4bc.svg b/public/emoji/1f468-200d-1f4bc.svg
new file mode 100644
index 0000000000000..62b3870a9df3e
--- /dev/null
+++ b/public/emoji/1f468-200d-1f4bc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f527.svg b/public/emoji/1f468-200d-1f527.svg
new file mode 100644
index 0000000000000..22e44a25b99cb
--- /dev/null
+++ b/public/emoji/1f468-200d-1f527.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f52c.svg b/public/emoji/1f468-200d-1f52c.svg
new file mode 100644
index 0000000000000..084d54a684aca
--- /dev/null
+++ b/public/emoji/1f468-200d-1f52c.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f680.svg b/public/emoji/1f468-200d-1f680.svg
new file mode 100644
index 0000000000000..5a5e3c84b2c93
--- /dev/null
+++ b/public/emoji/1f468-200d-1f680.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-1f692.svg b/public/emoji/1f468-200d-1f692.svg
new file mode 100644
index 0000000000000..134d977222ae2
--- /dev/null
+++ b/public/emoji/1f468-200d-1f692.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-2695-fe0f.svg b/public/emoji/1f468-200d-2695-fe0f.svg
new file mode 100644
index 0000000000000..4c83450a2f686
--- /dev/null
+++ b/public/emoji/1f468-200d-2695-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-2696-fe0f.svg b/public/emoji/1f468-200d-2696-fe0f.svg
new file mode 100644
index 0000000000000..01dc234b65e59
--- /dev/null
+++ b/public/emoji/1f468-200d-2696-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-2708-fe0f.svg b/public/emoji/1f468-200d-2708-fe0f.svg
new file mode 100644
index 0000000000000..e787f827518c1
--- /dev/null
+++ b/public/emoji/1f468-200d-2708-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-2764-fe0f-200d-1f468.svg b/public/emoji/1f468-200d-2764-fe0f-200d-1f468.svg
new file mode 100644
index 0000000000000..42220fc2e0182
--- /dev/null
+++ b/public/emoji/1f468-200d-2764-fe0f-200d-1f468.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.svg b/public/emoji/1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.svg
new file mode 100644
index 0000000000000..0a0955d14ebaa
--- /dev/null
+++ b/public/emoji/1f468-200d-2764-fe0f-200d-1f48b-200d-1f468.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f468-2764-1f468.png b/public/emoji/1f468-2764-1f468.png
deleted file mode 100644
index 8759fa5db87da..0000000000000
Binary files a/public/emoji/1f468-2764-1f468.png and /dev/null differ
diff --git a/public/emoji/1f468-2764-1f468.svg b/public/emoji/1f468-2764-1f468.svg
deleted file mode 100644
index 727c3fc949186..0000000000000
--- a/public/emoji/1f468-2764-1f468.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f468-2764-1f48b-1f468.png b/public/emoji/1f468-2764-1f48b-1f468.png
deleted file mode 100644
index a9a0edae17c64..0000000000000
Binary files a/public/emoji/1f468-2764-1f48b-1f468.png and /dev/null differ
diff --git a/public/emoji/1f468-2764-1f48b-1f468.svg b/public/emoji/1f468-2764-1f48b-1f468.svg
deleted file mode 100644
index 5e845068246e8..0000000000000
--- a/public/emoji/1f468-2764-1f48b-1f468.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f468.png b/public/emoji/1f468.png
deleted file mode 100644
index 857a02e514624..0000000000000
Binary files a/public/emoji/1f468.png and /dev/null differ
diff --git a/public/emoji/1f468.svg b/public/emoji/1f468.svg
index 0f27a28365c00..9148131936aa8 100644
--- a/public/emoji/1f468.svg
+++ b/public/emoji/1f468.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-1f33e.svg b/public/emoji/1f469-1f3fb-200d-1f33e.svg
new file mode 100644
index 0000000000000..a393ab23e6632
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-1f33e.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-1f373.svg b/public/emoji/1f469-1f3fb-200d-1f373.svg
new file mode 100644
index 0000000000000..49513c95f5501
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-1f373.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-1f393.svg b/public/emoji/1f469-1f3fb-200d-1f393.svg
new file mode 100644
index 0000000000000..15b12616797fc
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-1f393.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-1f3a4.svg b/public/emoji/1f469-1f3fb-200d-1f3a4.svg
new file mode 100644
index 0000000000000..a0648002f79de
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-1f3a4.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-1f3a8.svg b/public/emoji/1f469-1f3fb-200d-1f3a8.svg
new file mode 100644
index 0000000000000..ab5179434700c
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-1f3a8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-1f3eb.svg b/public/emoji/1f469-1f3fb-200d-1f3eb.svg
new file mode 100644
index 0000000000000..68f3a9e4e7dc6
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-1f3eb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-1f3ed.svg b/public/emoji/1f469-1f3fb-200d-1f3ed.svg
new file mode 100644
index 0000000000000..3586f5448cc79
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-1f3ed.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-1f4bb.svg b/public/emoji/1f469-1f3fb-200d-1f4bb.svg
new file mode 100644
index 0000000000000..01efc523f6b47
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-1f4bb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-1f4bc.svg b/public/emoji/1f469-1f3fb-200d-1f4bc.svg
new file mode 100644
index 0000000000000..60bf352906658
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-1f4bc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-1f527.svg b/public/emoji/1f469-1f3fb-200d-1f527.svg
new file mode 100644
index 0000000000000..db0ba00c299ce
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-1f527.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-1f52c.svg b/public/emoji/1f469-1f3fb-200d-1f52c.svg
new file mode 100644
index 0000000000000..95fbcb49b4a56
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-1f52c.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-1f680.svg b/public/emoji/1f469-1f3fb-200d-1f680.svg
new file mode 100644
index 0000000000000..5913cc9b60f52
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-1f680.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-1f692.svg b/public/emoji/1f469-1f3fb-200d-1f692.svg
new file mode 100644
index 0000000000000..c3442f9551e35
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-1f692.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-2695-fe0f.svg b/public/emoji/1f469-1f3fb-200d-2695-fe0f.svg
new file mode 100644
index 0000000000000..1873ac8c3d2fe
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-2695-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-2696-fe0f.svg b/public/emoji/1f469-1f3fb-200d-2696-fe0f.svg
new file mode 100644
index 0000000000000..92cf6553e86ce
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-2696-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb-200d-2708-fe0f.svg b/public/emoji/1f469-1f3fb-200d-2708-fe0f.svg
new file mode 100644
index 0000000000000..3d9d0cecad3df
--- /dev/null
+++ b/public/emoji/1f469-1f3fb-200d-2708-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fb.png b/public/emoji/1f469-1f3fb.png
deleted file mode 100644
index ff089b8889bd0..0000000000000
Binary files a/public/emoji/1f469-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f469-1f3fb.svg b/public/emoji/1f469-1f3fb.svg
index 62b4b63227ac0..7866eff41f855 100644
--- a/public/emoji/1f469-1f3fb.svg
+++ b/public/emoji/1f469-1f3fb.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-1f33e.svg b/public/emoji/1f469-1f3fc-200d-1f33e.svg
new file mode 100644
index 0000000000000..442deaec1f24d
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-1f33e.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-1f373.svg b/public/emoji/1f469-1f3fc-200d-1f373.svg
new file mode 100644
index 0000000000000..a4161eaca4d01
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-1f373.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-1f393.svg b/public/emoji/1f469-1f3fc-200d-1f393.svg
new file mode 100644
index 0000000000000..5aa6c0ec0e475
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-1f393.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-1f3a4.svg b/public/emoji/1f469-1f3fc-200d-1f3a4.svg
new file mode 100644
index 0000000000000..9f26f9fda7393
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-1f3a4.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-1f3a8.svg b/public/emoji/1f469-1f3fc-200d-1f3a8.svg
new file mode 100644
index 0000000000000..11017c8002b10
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-1f3a8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-1f3eb.svg b/public/emoji/1f469-1f3fc-200d-1f3eb.svg
new file mode 100644
index 0000000000000..e0f456b98ab8c
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-1f3eb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-1f3ed.svg b/public/emoji/1f469-1f3fc-200d-1f3ed.svg
new file mode 100644
index 0000000000000..0cef02e69dfaa
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-1f3ed.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-1f4bb.svg b/public/emoji/1f469-1f3fc-200d-1f4bb.svg
new file mode 100644
index 0000000000000..37c0eb59c7f1a
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-1f4bb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-1f4bc.svg b/public/emoji/1f469-1f3fc-200d-1f4bc.svg
new file mode 100644
index 0000000000000..3daf9c47bb521
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-1f4bc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-1f527.svg b/public/emoji/1f469-1f3fc-200d-1f527.svg
new file mode 100644
index 0000000000000..3b6fc5c200f60
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-1f527.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-1f52c.svg b/public/emoji/1f469-1f3fc-200d-1f52c.svg
new file mode 100644
index 0000000000000..47d03225af4f6
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-1f52c.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-1f680.svg b/public/emoji/1f469-1f3fc-200d-1f680.svg
new file mode 100644
index 0000000000000..11378acaef4ce
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-1f680.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-1f692.svg b/public/emoji/1f469-1f3fc-200d-1f692.svg
new file mode 100644
index 0000000000000..35e271ba47794
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-1f692.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-2695-fe0f.svg b/public/emoji/1f469-1f3fc-200d-2695-fe0f.svg
new file mode 100644
index 0000000000000..dabd93e1ddfa7
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-2695-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-2696-fe0f.svg b/public/emoji/1f469-1f3fc-200d-2696-fe0f.svg
new file mode 100644
index 0000000000000..f0a3ea40c0a4b
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-2696-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc-200d-2708-fe0f.svg b/public/emoji/1f469-1f3fc-200d-2708-fe0f.svg
new file mode 100644
index 0000000000000..81c041eebe1d6
--- /dev/null
+++ b/public/emoji/1f469-1f3fc-200d-2708-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fc.png b/public/emoji/1f469-1f3fc.png
deleted file mode 100644
index 0719c378016c5..0000000000000
Binary files a/public/emoji/1f469-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f469-1f3fc.svg b/public/emoji/1f469-1f3fc.svg
index 2556b3a2d3a2e..8328828e1e989 100644
--- a/public/emoji/1f469-1f3fc.svg
+++ b/public/emoji/1f469-1f3fc.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-1f33e.svg b/public/emoji/1f469-1f3fd-200d-1f33e.svg
new file mode 100644
index 0000000000000..31787ece2649c
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-1f33e.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-1f373.svg b/public/emoji/1f469-1f3fd-200d-1f373.svg
new file mode 100644
index 0000000000000..9abc408961715
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-1f373.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-1f393.svg b/public/emoji/1f469-1f3fd-200d-1f393.svg
new file mode 100644
index 0000000000000..25fd3caaa1c32
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-1f393.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-1f3a4.svg b/public/emoji/1f469-1f3fd-200d-1f3a4.svg
new file mode 100644
index 0000000000000..ad6deb4d019aa
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-1f3a4.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-1f3a8.svg b/public/emoji/1f469-1f3fd-200d-1f3a8.svg
new file mode 100644
index 0000000000000..c6233010eaec8
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-1f3a8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-1f3eb.svg b/public/emoji/1f469-1f3fd-200d-1f3eb.svg
new file mode 100644
index 0000000000000..d059eb64a6f08
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-1f3eb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-1f3ed.svg b/public/emoji/1f469-1f3fd-200d-1f3ed.svg
new file mode 100644
index 0000000000000..d242300ab79a8
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-1f3ed.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-1f4bb.svg b/public/emoji/1f469-1f3fd-200d-1f4bb.svg
new file mode 100644
index 0000000000000..3f16d298a8908
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-1f4bb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-1f4bc.svg b/public/emoji/1f469-1f3fd-200d-1f4bc.svg
new file mode 100644
index 0000000000000..b9cb8782d01f1
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-1f4bc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-1f527.svg b/public/emoji/1f469-1f3fd-200d-1f527.svg
new file mode 100644
index 0000000000000..01b65f1e10b94
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-1f527.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-1f52c.svg b/public/emoji/1f469-1f3fd-200d-1f52c.svg
new file mode 100644
index 0000000000000..89158a2333cc9
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-1f52c.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-1f680.svg b/public/emoji/1f469-1f3fd-200d-1f680.svg
new file mode 100644
index 0000000000000..df8627aacbcfe
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-1f680.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-1f692.svg b/public/emoji/1f469-1f3fd-200d-1f692.svg
new file mode 100644
index 0000000000000..bbc2e7cad60cf
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-1f692.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-2695-fe0f.svg b/public/emoji/1f469-1f3fd-200d-2695-fe0f.svg
new file mode 100644
index 0000000000000..5c96c15c3ce72
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-2695-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-2696-fe0f.svg b/public/emoji/1f469-1f3fd-200d-2696-fe0f.svg
new file mode 100644
index 0000000000000..5c34de7b88dc8
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-2696-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd-200d-2708-fe0f.svg b/public/emoji/1f469-1f3fd-200d-2708-fe0f.svg
new file mode 100644
index 0000000000000..e149723f0c262
--- /dev/null
+++ b/public/emoji/1f469-1f3fd-200d-2708-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fd.png b/public/emoji/1f469-1f3fd.png
deleted file mode 100644
index 5672e2fd52dc5..0000000000000
Binary files a/public/emoji/1f469-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f469-1f3fd.svg b/public/emoji/1f469-1f3fd.svg
index c0269856640fe..0c25028ae74ec 100644
--- a/public/emoji/1f469-1f3fd.svg
+++ b/public/emoji/1f469-1f3fd.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-1f33e.svg b/public/emoji/1f469-1f3fe-200d-1f33e.svg
new file mode 100644
index 0000000000000..ee03115ffa141
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-1f33e.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-1f373.svg b/public/emoji/1f469-1f3fe-200d-1f373.svg
new file mode 100644
index 0000000000000..ca0215f9c4d16
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-1f373.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-1f393.svg b/public/emoji/1f469-1f3fe-200d-1f393.svg
new file mode 100644
index 0000000000000..2998bbc9b871f
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-1f393.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-1f3a4.svg b/public/emoji/1f469-1f3fe-200d-1f3a4.svg
new file mode 100644
index 0000000000000..f1d48b1d8f83f
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-1f3a4.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-1f3a8.svg b/public/emoji/1f469-1f3fe-200d-1f3a8.svg
new file mode 100644
index 0000000000000..5e7049c806bba
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-1f3a8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-1f3eb.svg b/public/emoji/1f469-1f3fe-200d-1f3eb.svg
new file mode 100644
index 0000000000000..70e1044b0fc48
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-1f3eb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-1f3ed.svg b/public/emoji/1f469-1f3fe-200d-1f3ed.svg
new file mode 100644
index 0000000000000..a8a3c3479d72c
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-1f3ed.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-1f4bb.svg b/public/emoji/1f469-1f3fe-200d-1f4bb.svg
new file mode 100644
index 0000000000000..51fb3f47da533
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-1f4bb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-1f4bc.svg b/public/emoji/1f469-1f3fe-200d-1f4bc.svg
new file mode 100644
index 0000000000000..61aef5724066f
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-1f4bc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-1f527.svg b/public/emoji/1f469-1f3fe-200d-1f527.svg
new file mode 100644
index 0000000000000..fe47e22fab8bc
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-1f527.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-1f52c.svg b/public/emoji/1f469-1f3fe-200d-1f52c.svg
new file mode 100644
index 0000000000000..ba7c0e68d0b24
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-1f52c.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-1f680.svg b/public/emoji/1f469-1f3fe-200d-1f680.svg
new file mode 100644
index 0000000000000..e2734a3553308
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-1f680.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-1f692.svg b/public/emoji/1f469-1f3fe-200d-1f692.svg
new file mode 100644
index 0000000000000..6ad50f74017c7
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-1f692.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-2695-fe0f.svg b/public/emoji/1f469-1f3fe-200d-2695-fe0f.svg
new file mode 100644
index 0000000000000..1f1492f76b799
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-2695-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-2696-fe0f.svg b/public/emoji/1f469-1f3fe-200d-2696-fe0f.svg
new file mode 100644
index 0000000000000..021c287232ecc
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-2696-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe-200d-2708-fe0f.svg b/public/emoji/1f469-1f3fe-200d-2708-fe0f.svg
new file mode 100644
index 0000000000000..c82832cb5feb9
--- /dev/null
+++ b/public/emoji/1f469-1f3fe-200d-2708-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3fe.png b/public/emoji/1f469-1f3fe.png
deleted file mode 100644
index 5754aab558b87..0000000000000
Binary files a/public/emoji/1f469-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f469-1f3fe.svg b/public/emoji/1f469-1f3fe.svg
index 8c977082ddda6..2aa3fef23df71 100644
--- a/public/emoji/1f469-1f3fe.svg
+++ b/public/emoji/1f469-1f3fe.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-1f33e.svg b/public/emoji/1f469-1f3ff-200d-1f33e.svg
new file mode 100644
index 0000000000000..36db97cc3f402
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-1f33e.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-1f373.svg b/public/emoji/1f469-1f3ff-200d-1f373.svg
new file mode 100644
index 0000000000000..02cd40205ee8b
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-1f373.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-1f393.svg b/public/emoji/1f469-1f3ff-200d-1f393.svg
new file mode 100644
index 0000000000000..6822832bab2a2
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-1f393.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-1f3a4.svg b/public/emoji/1f469-1f3ff-200d-1f3a4.svg
new file mode 100644
index 0000000000000..b23847530a340
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-1f3a4.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-1f3a8.svg b/public/emoji/1f469-1f3ff-200d-1f3a8.svg
new file mode 100644
index 0000000000000..930d5ed5d0f5d
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-1f3a8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-1f3eb.svg b/public/emoji/1f469-1f3ff-200d-1f3eb.svg
new file mode 100644
index 0000000000000..925977b39528f
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-1f3eb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-1f3ed.svg b/public/emoji/1f469-1f3ff-200d-1f3ed.svg
new file mode 100644
index 0000000000000..cde71c216e308
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-1f3ed.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-1f4bb.svg b/public/emoji/1f469-1f3ff-200d-1f4bb.svg
new file mode 100644
index 0000000000000..a41064af8de8c
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-1f4bb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-1f4bc.svg b/public/emoji/1f469-1f3ff-200d-1f4bc.svg
new file mode 100644
index 0000000000000..eea06ae801d53
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-1f4bc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-1f527.svg b/public/emoji/1f469-1f3ff-200d-1f527.svg
new file mode 100644
index 0000000000000..cf2c4e31068ab
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-1f527.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-1f52c.svg b/public/emoji/1f469-1f3ff-200d-1f52c.svg
new file mode 100644
index 0000000000000..06e8d253d1866
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-1f52c.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-1f680.svg b/public/emoji/1f469-1f3ff-200d-1f680.svg
new file mode 100644
index 0000000000000..35fe42f5f3fcc
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-1f680.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-1f692.svg b/public/emoji/1f469-1f3ff-200d-1f692.svg
new file mode 100644
index 0000000000000..861b1ff043c16
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-1f692.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-2695-fe0f.svg b/public/emoji/1f469-1f3ff-200d-2695-fe0f.svg
new file mode 100644
index 0000000000000..40fe1cb157049
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-2695-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-2696-fe0f.svg b/public/emoji/1f469-1f3ff-200d-2696-fe0f.svg
new file mode 100644
index 0000000000000..2385f231a3c38
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-2696-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff-200d-2708-fe0f.svg b/public/emoji/1f469-1f3ff-200d-2708-fe0f.svg
new file mode 100644
index 0000000000000..273621927bccf
--- /dev/null
+++ b/public/emoji/1f469-1f3ff-200d-2708-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-1f3ff.png b/public/emoji/1f469-1f3ff.png
deleted file mode 100644
index fc252af3a3964..0000000000000
Binary files a/public/emoji/1f469-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f469-1f3ff.svg b/public/emoji/1f469-1f3ff.svg
index 3078858cd0bfa..523ac98cc89be 100644
--- a/public/emoji/1f469-1f3ff.svg
+++ b/public/emoji/1f469-1f3ff.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f469-1f469-1f466-1f466.png b/public/emoji/1f469-1f469-1f466-1f466.png
deleted file mode 100644
index 6c6ba45e7bb68..0000000000000
Binary files a/public/emoji/1f469-1f469-1f466-1f466.png and /dev/null differ
diff --git a/public/emoji/1f469-1f469-1f466-1f466.svg b/public/emoji/1f469-1f469-1f466-1f466.svg
deleted file mode 100644
index 8bd5911037dc6..0000000000000
--- a/public/emoji/1f469-1f469-1f466-1f466.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f469-1f469-1f466.png b/public/emoji/1f469-1f469-1f466.png
deleted file mode 100644
index 836feae7c7865..0000000000000
Binary files a/public/emoji/1f469-1f469-1f466.png and /dev/null differ
diff --git a/public/emoji/1f469-1f469-1f466.svg b/public/emoji/1f469-1f469-1f466.svg
deleted file mode 100644
index ece9c72c43668..0000000000000
--- a/public/emoji/1f469-1f469-1f466.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f469-1f469-1f467-1f466.png b/public/emoji/1f469-1f469-1f467-1f466.png
deleted file mode 100644
index 284d29ab5da60..0000000000000
Binary files a/public/emoji/1f469-1f469-1f467-1f466.png and /dev/null differ
diff --git a/public/emoji/1f469-1f469-1f467-1f466.svg b/public/emoji/1f469-1f469-1f467-1f466.svg
deleted file mode 100644
index 2f4951e980bd0..0000000000000
--- a/public/emoji/1f469-1f469-1f467-1f466.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f469-1f469-1f467-1f467.png b/public/emoji/1f469-1f469-1f467-1f467.png
deleted file mode 100644
index d8d3f49b85fe8..0000000000000
Binary files a/public/emoji/1f469-1f469-1f467-1f467.png and /dev/null differ
diff --git a/public/emoji/1f469-1f469-1f467-1f467.svg b/public/emoji/1f469-1f469-1f467-1f467.svg
deleted file mode 100644
index 73760fbb4da2e..0000000000000
--- a/public/emoji/1f469-1f469-1f467-1f467.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f469-1f469-1f467.png b/public/emoji/1f469-1f469-1f467.png
deleted file mode 100644
index 41225c6fa5a0b..0000000000000
Binary files a/public/emoji/1f469-1f469-1f467.png and /dev/null differ
diff --git a/public/emoji/1f469-1f469-1f467.svg b/public/emoji/1f469-1f469-1f467.svg
deleted file mode 100644
index bbc72da228c45..0000000000000
--- a/public/emoji/1f469-1f469-1f467.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f469-200d-1f33e.svg b/public/emoji/1f469-200d-1f33e.svg
new file mode 100644
index 0000000000000..e1a146570b923
--- /dev/null
+++ b/public/emoji/1f469-200d-1f33e.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f373.svg b/public/emoji/1f469-200d-1f373.svg
new file mode 100644
index 0000000000000..4883fffcba452
--- /dev/null
+++ b/public/emoji/1f469-200d-1f373.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f393.svg b/public/emoji/1f469-200d-1f393.svg
new file mode 100644
index 0000000000000..0edec9c295d3c
--- /dev/null
+++ b/public/emoji/1f469-200d-1f393.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f3a4.svg b/public/emoji/1f469-200d-1f3a4.svg
new file mode 100644
index 0000000000000..b8da6c8d3e4bf
--- /dev/null
+++ b/public/emoji/1f469-200d-1f3a4.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f3a8.svg b/public/emoji/1f469-200d-1f3a8.svg
new file mode 100644
index 0000000000000..2db8c4a3173cf
--- /dev/null
+++ b/public/emoji/1f469-200d-1f3a8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f3eb.svg b/public/emoji/1f469-200d-1f3eb.svg
new file mode 100644
index 0000000000000..fe46827cc2f9d
--- /dev/null
+++ b/public/emoji/1f469-200d-1f3eb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f3ed.svg b/public/emoji/1f469-200d-1f3ed.svg
new file mode 100644
index 0000000000000..450cf4496e033
--- /dev/null
+++ b/public/emoji/1f469-200d-1f3ed.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f466-200d-1f466.svg b/public/emoji/1f469-200d-1f466-200d-1f466.svg
new file mode 100644
index 0000000000000..2f20655efdd64
--- /dev/null
+++ b/public/emoji/1f469-200d-1f466-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f466.svg b/public/emoji/1f469-200d-1f466.svg
new file mode 100644
index 0000000000000..df6d988201b9a
--- /dev/null
+++ b/public/emoji/1f469-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f467-200d-1f466.svg b/public/emoji/1f469-200d-1f467-200d-1f466.svg
new file mode 100644
index 0000000000000..7c02a27bd5091
--- /dev/null
+++ b/public/emoji/1f469-200d-1f467-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f467-200d-1f467.svg b/public/emoji/1f469-200d-1f467-200d-1f467.svg
new file mode 100644
index 0000000000000..f016ce89c8df7
--- /dev/null
+++ b/public/emoji/1f469-200d-1f467-200d-1f467.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f467.svg b/public/emoji/1f469-200d-1f467.svg
new file mode 100644
index 0000000000000..1c5d811eef14b
--- /dev/null
+++ b/public/emoji/1f469-200d-1f467.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f469-200d-1f466-200d-1f466.svg b/public/emoji/1f469-200d-1f469-200d-1f466-200d-1f466.svg
new file mode 100644
index 0000000000000..38198b363b7b9
--- /dev/null
+++ b/public/emoji/1f469-200d-1f469-200d-1f466-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f469-200d-1f466.svg b/public/emoji/1f469-200d-1f469-200d-1f466.svg
new file mode 100644
index 0000000000000..eeb0c80e1472b
--- /dev/null
+++ b/public/emoji/1f469-200d-1f469-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f466.svg b/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f466.svg
new file mode 100644
index 0000000000000..1e84cdd35450c
--- /dev/null
+++ b/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f466.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f467.svg b/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f467.svg
new file mode 100644
index 0000000000000..689084de1c037
--- /dev/null
+++ b/public/emoji/1f469-200d-1f469-200d-1f467-200d-1f467.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f469-200d-1f467.svg b/public/emoji/1f469-200d-1f469-200d-1f467.svg
new file mode 100644
index 0000000000000..ac18f5515cefb
--- /dev/null
+++ b/public/emoji/1f469-200d-1f469-200d-1f467.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f4bb.svg b/public/emoji/1f469-200d-1f4bb.svg
new file mode 100644
index 0000000000000..bc0eda085b386
--- /dev/null
+++ b/public/emoji/1f469-200d-1f4bb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f4bc.svg b/public/emoji/1f469-200d-1f4bc.svg
new file mode 100644
index 0000000000000..e84decf7afea7
--- /dev/null
+++ b/public/emoji/1f469-200d-1f4bc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f527.svg b/public/emoji/1f469-200d-1f527.svg
new file mode 100644
index 0000000000000..c020914a9353c
--- /dev/null
+++ b/public/emoji/1f469-200d-1f527.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f52c.svg b/public/emoji/1f469-200d-1f52c.svg
new file mode 100644
index 0000000000000..6a05dde12cdb1
--- /dev/null
+++ b/public/emoji/1f469-200d-1f52c.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f680.svg b/public/emoji/1f469-200d-1f680.svg
new file mode 100644
index 0000000000000..54b41f7dc7ad4
--- /dev/null
+++ b/public/emoji/1f469-200d-1f680.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-1f692.svg b/public/emoji/1f469-200d-1f692.svg
new file mode 100644
index 0000000000000..e95a70cf9cf83
--- /dev/null
+++ b/public/emoji/1f469-200d-1f692.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-2695-fe0f.svg b/public/emoji/1f469-200d-2695-fe0f.svg
new file mode 100644
index 0000000000000..a24749665fce8
--- /dev/null
+++ b/public/emoji/1f469-200d-2695-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-2696-fe0f.svg b/public/emoji/1f469-200d-2696-fe0f.svg
new file mode 100644
index 0000000000000..69eb8c537ac0d
--- /dev/null
+++ b/public/emoji/1f469-200d-2696-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-2708-fe0f.svg b/public/emoji/1f469-200d-2708-fe0f.svg
new file mode 100644
index 0000000000000..25ab72a34bd4b
--- /dev/null
+++ b/public/emoji/1f469-200d-2708-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-2764-fe0f-200d-1f468.svg b/public/emoji/1f469-200d-2764-fe0f-200d-1f468.svg
new file mode 100644
index 0000000000000..9f42ccee84438
--- /dev/null
+++ b/public/emoji/1f469-200d-2764-fe0f-200d-1f468.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-2764-fe0f-200d-1f469.svg b/public/emoji/1f469-200d-2764-fe0f-200d-1f469.svg
new file mode 100644
index 0000000000000..804903c75cf21
--- /dev/null
+++ b/public/emoji/1f469-200d-2764-fe0f-200d-1f469.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-2764-fe0f-200d-1f48b-200d-1f468.svg b/public/emoji/1f469-200d-2764-fe0f-200d-1f48b-200d-1f468.svg
new file mode 100644
index 0000000000000..0bae3004bc113
--- /dev/null
+++ b/public/emoji/1f469-200d-2764-fe0f-200d-1f48b-200d-1f468.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.svg b/public/emoji/1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.svg
new file mode 100644
index 0000000000000..529eff4d1579f
--- /dev/null
+++ b/public/emoji/1f469-200d-2764-fe0f-200d-1f48b-200d-1f469.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f469-2764-1f469.png b/public/emoji/1f469-2764-1f469.png
deleted file mode 100644
index 08fdabcdc5c06..0000000000000
Binary files a/public/emoji/1f469-2764-1f469.png and /dev/null differ
diff --git a/public/emoji/1f469-2764-1f469.svg b/public/emoji/1f469-2764-1f469.svg
deleted file mode 100644
index 5f188ca18c8db..0000000000000
--- a/public/emoji/1f469-2764-1f469.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f469-2764-1f48b-1f469.png b/public/emoji/1f469-2764-1f48b-1f469.png
deleted file mode 100644
index fdac73cbb1daa..0000000000000
Binary files a/public/emoji/1f469-2764-1f48b-1f469.png and /dev/null differ
diff --git a/public/emoji/1f469-2764-1f48b-1f469.svg b/public/emoji/1f469-2764-1f48b-1f469.svg
deleted file mode 100644
index c2369061957e5..0000000000000
--- a/public/emoji/1f469-2764-1f48b-1f469.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f469.png b/public/emoji/1f469.png
deleted file mode 100644
index ece440e7a6140..0000000000000
Binary files a/public/emoji/1f469.png and /dev/null differ
diff --git a/public/emoji/1f469.svg b/public/emoji/1f469.svg
index 8a7fada151909..6f7dde41f71ed 100644
--- a/public/emoji/1f469.svg
+++ b/public/emoji/1f469.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f46a.png b/public/emoji/1f46a.png
deleted file mode 100644
index 2642196579189..0000000000000
Binary files a/public/emoji/1f46a.png and /dev/null differ
diff --git a/public/emoji/1f46a.svg b/public/emoji/1f46a.svg
index e0fc9893bcad2..ab47f4abc704f 100644
--- a/public/emoji/1f46a.svg
+++ b/public/emoji/1f46a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f46b.png b/public/emoji/1f46b.png
deleted file mode 100644
index 960323f3c1610..0000000000000
Binary files a/public/emoji/1f46b.png and /dev/null differ
diff --git a/public/emoji/1f46b.svg b/public/emoji/1f46b.svg
index 4e7dcce0fd9c8..8115fe984c2b0 100644
--- a/public/emoji/1f46b.svg
+++ b/public/emoji/1f46b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f46c.png b/public/emoji/1f46c.png
deleted file mode 100644
index a511fda822ab1..0000000000000
Binary files a/public/emoji/1f46c.png and /dev/null differ
diff --git a/public/emoji/1f46c.svg b/public/emoji/1f46c.svg
index 376a18dddc67a..7feab42c0c1d6 100644
--- a/public/emoji/1f46c.svg
+++ b/public/emoji/1f46c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f46d.png b/public/emoji/1f46d.png
deleted file mode 100644
index b077cd3e40f0f..0000000000000
Binary files a/public/emoji/1f46d.png and /dev/null differ
diff --git a/public/emoji/1f46d.svg b/public/emoji/1f46d.svg
index ed12b05e151b0..fae1da2d4b3b1 100644
--- a/public/emoji/1f46d.svg
+++ b/public/emoji/1f46d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f46e-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..58bcfd77a7e30
--- /dev/null
+++ b/public/emoji/1f46e-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f46e-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..2bff6d5727bc8
--- /dev/null
+++ b/public/emoji/1f46e-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3fb.png b/public/emoji/1f46e-1f3fb.png
deleted file mode 100644
index 6ccba3879dcb9..0000000000000
Binary files a/public/emoji/1f46e-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f46e-1f3fb.svg b/public/emoji/1f46e-1f3fb.svg
index 98a019fff470c..2bff6d5727bc8 100644
--- a/public/emoji/1f46e-1f3fb.svg
+++ b/public/emoji/1f46e-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f46e-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..d3d127b3bf4e5
--- /dev/null
+++ b/public/emoji/1f46e-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f46e-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..873359cd27b62
--- /dev/null
+++ b/public/emoji/1f46e-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3fc.png b/public/emoji/1f46e-1f3fc.png
deleted file mode 100644
index 7814ea9f52dec..0000000000000
Binary files a/public/emoji/1f46e-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f46e-1f3fc.svg b/public/emoji/1f46e-1f3fc.svg
index 9e44350629529..873359cd27b62 100644
--- a/public/emoji/1f46e-1f3fc.svg
+++ b/public/emoji/1f46e-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f46e-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..b94c792bd3745
--- /dev/null
+++ b/public/emoji/1f46e-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f46e-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..b0d9e6ae19b91
--- /dev/null
+++ b/public/emoji/1f46e-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3fd.png b/public/emoji/1f46e-1f3fd.png
deleted file mode 100644
index d78e88ec8728c..0000000000000
Binary files a/public/emoji/1f46e-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f46e-1f3fd.svg b/public/emoji/1f46e-1f3fd.svg
index fe8b6f4513f83..b0d9e6ae19b91 100644
--- a/public/emoji/1f46e-1f3fd.svg
+++ b/public/emoji/1f46e-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f46e-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..3e6a0c7ccb8ad
--- /dev/null
+++ b/public/emoji/1f46e-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f46e-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..1fdabb297f20d
--- /dev/null
+++ b/public/emoji/1f46e-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3fe.png b/public/emoji/1f46e-1f3fe.png
deleted file mode 100644
index 2e13c50831574..0000000000000
Binary files a/public/emoji/1f46e-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f46e-1f3fe.svg b/public/emoji/1f46e-1f3fe.svg
index d880766e580c9..1fdabb297f20d 100644
--- a/public/emoji/1f46e-1f3fe.svg
+++ b/public/emoji/1f46e-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f46e-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..1b1ffa1075493
--- /dev/null
+++ b/public/emoji/1f46e-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f46e-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..f6c19165aacd6
--- /dev/null
+++ b/public/emoji/1f46e-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f46e-1f3ff.png b/public/emoji/1f46e-1f3ff.png
deleted file mode 100644
index 2980d61cc2e23..0000000000000
Binary files a/public/emoji/1f46e-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f46e-1f3ff.svg b/public/emoji/1f46e-1f3ff.svg
index 9ec2135b5ea0e..f6c19165aacd6 100644
--- a/public/emoji/1f46e-1f3ff.svg
+++ b/public/emoji/1f46e-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f46e-200d-2640-fe0f.svg b/public/emoji/1f46e-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..79963b5e6b968
--- /dev/null
+++ b/public/emoji/1f46e-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f46e-200d-2642-fe0f.svg b/public/emoji/1f46e-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..f38c573d01af6
--- /dev/null
+++ b/public/emoji/1f46e-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f46e.png b/public/emoji/1f46e.png
deleted file mode 100644
index 0b16d7c17b7bf..0000000000000
Binary files a/public/emoji/1f46e.png and /dev/null differ
diff --git a/public/emoji/1f46e.svg b/public/emoji/1f46e.svg
index 3631cdd540e3d..f38c573d01af6 100644
--- a/public/emoji/1f46e.svg
+++ b/public/emoji/1f46e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f46f-200d-2640-fe0f.svg b/public/emoji/1f46f-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..e3d470d6fef94
--- /dev/null
+++ b/public/emoji/1f46f-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f46f-200d-2642-fe0f.svg b/public/emoji/1f46f-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..d58f55fae0cfe
--- /dev/null
+++ b/public/emoji/1f46f-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f46f.png b/public/emoji/1f46f.png
deleted file mode 100644
index 67e6ffacb76e7..0000000000000
Binary files a/public/emoji/1f46f.png and /dev/null differ
diff --git a/public/emoji/1f46f.svg b/public/emoji/1f46f.svg
index 32985cc36b576..e3d470d6fef94 100644
--- a/public/emoji/1f46f.svg
+++ b/public/emoji/1f46f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f470-1f3fb.png b/public/emoji/1f470-1f3fb.png
deleted file mode 100644
index c4fb141ae8f5b..0000000000000
Binary files a/public/emoji/1f470-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f470-1f3fb.svg b/public/emoji/1f470-1f3fb.svg
index cb221eee12a1c..b1eeedb6d7767 100644
--- a/public/emoji/1f470-1f3fb.svg
+++ b/public/emoji/1f470-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f470-1f3fc.png b/public/emoji/1f470-1f3fc.png
deleted file mode 100644
index c248769fc0645..0000000000000
Binary files a/public/emoji/1f470-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f470-1f3fc.svg b/public/emoji/1f470-1f3fc.svg
index b5718397135a6..09a8ed7e369da 100644
--- a/public/emoji/1f470-1f3fc.svg
+++ b/public/emoji/1f470-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f470-1f3fd.png b/public/emoji/1f470-1f3fd.png
deleted file mode 100644
index 962c0a6eedb77..0000000000000
Binary files a/public/emoji/1f470-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f470-1f3fd.svg b/public/emoji/1f470-1f3fd.svg
index 6c9874f778b02..e5b73e6af495d 100644
--- a/public/emoji/1f470-1f3fd.svg
+++ b/public/emoji/1f470-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f470-1f3fe.png b/public/emoji/1f470-1f3fe.png
deleted file mode 100644
index 740ca208cd45c..0000000000000
Binary files a/public/emoji/1f470-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f470-1f3fe.svg b/public/emoji/1f470-1f3fe.svg
index e4ff8c92d83fb..6fe5fe6076b10 100644
--- a/public/emoji/1f470-1f3fe.svg
+++ b/public/emoji/1f470-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f470-1f3ff.png b/public/emoji/1f470-1f3ff.png
deleted file mode 100644
index 5cc5598587dcb..0000000000000
Binary files a/public/emoji/1f470-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f470-1f3ff.svg b/public/emoji/1f470-1f3ff.svg
index 29633af92dbc2..149a6fc2426ca 100644
--- a/public/emoji/1f470-1f3ff.svg
+++ b/public/emoji/1f470-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f470.png b/public/emoji/1f470.png
deleted file mode 100644
index eaf4bd97890ac..0000000000000
Binary files a/public/emoji/1f470.png and /dev/null differ
diff --git a/public/emoji/1f470.svg b/public/emoji/1f470.svg
index dc9e6c7301c08..3445fc8d6a278 100644
--- a/public/emoji/1f470.svg
+++ b/public/emoji/1f470.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f471-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f471-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..b112f6a4edfa0
--- /dev/null
+++ b/public/emoji/1f471-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f471-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f471-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..b3b6a74d70d3b
--- /dev/null
+++ b/public/emoji/1f471-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f471-1f3fb.png b/public/emoji/1f471-1f3fb.png
deleted file mode 100644
index 7d18ef24445e4..0000000000000
Binary files a/public/emoji/1f471-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f471-1f3fb.svg b/public/emoji/1f471-1f3fb.svg
index eee7e7a2c9a7e..b3b6a74d70d3b 100644
--- a/public/emoji/1f471-1f3fb.svg
+++ b/public/emoji/1f471-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f471-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f471-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..8328828e1e989
--- /dev/null
+++ b/public/emoji/1f471-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f471-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f471-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..9f0eceb39734e
--- /dev/null
+++ b/public/emoji/1f471-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f471-1f3fc.png b/public/emoji/1f471-1f3fc.png
deleted file mode 100644
index dae1307315ccb..0000000000000
Binary files a/public/emoji/1f471-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f471-1f3fc.svg b/public/emoji/1f471-1f3fc.svg
index 6bdf8588636d8..9f0eceb39734e 100644
--- a/public/emoji/1f471-1f3fc.svg
+++ b/public/emoji/1f471-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f471-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f471-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..259f8ccbd518d
--- /dev/null
+++ b/public/emoji/1f471-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f471-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f471-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..e1431d851e152
--- /dev/null
+++ b/public/emoji/1f471-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f471-1f3fd.png b/public/emoji/1f471-1f3fd.png
deleted file mode 100644
index 684677e8e5a86..0000000000000
Binary files a/public/emoji/1f471-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f471-1f3fd.svg b/public/emoji/1f471-1f3fd.svg
index b08ba668482c0..e1431d851e152 100644
--- a/public/emoji/1f471-1f3fd.svg
+++ b/public/emoji/1f471-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f471-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f471-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..b4ff0c9916e18
--- /dev/null
+++ b/public/emoji/1f471-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f471-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f471-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..994afaf962f79
--- /dev/null
+++ b/public/emoji/1f471-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f471-1f3fe.png b/public/emoji/1f471-1f3fe.png
deleted file mode 100644
index 012be0b51f816..0000000000000
Binary files a/public/emoji/1f471-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f471-1f3fe.svg b/public/emoji/1f471-1f3fe.svg
index 72a38d21889f7..994afaf962f79 100644
--- a/public/emoji/1f471-1f3fe.svg
+++ b/public/emoji/1f471-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f471-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f471-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..b28b077d2a2ab
--- /dev/null
+++ b/public/emoji/1f471-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f471-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f471-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..151970867abcb
--- /dev/null
+++ b/public/emoji/1f471-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f471-1f3ff.png b/public/emoji/1f471-1f3ff.png
deleted file mode 100644
index d4ecc4cf44ba0..0000000000000
Binary files a/public/emoji/1f471-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f471-1f3ff.svg b/public/emoji/1f471-1f3ff.svg
index dcfd094c80593..151970867abcb 100644
--- a/public/emoji/1f471-1f3ff.svg
+++ b/public/emoji/1f471-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f471-200d-2640-fe0f.svg b/public/emoji/1f471-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..a3f7c19988362
--- /dev/null
+++ b/public/emoji/1f471-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f471-200d-2642-fe0f.svg b/public/emoji/1f471-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..2c49aa3d5a3d7
--- /dev/null
+++ b/public/emoji/1f471-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f471.png b/public/emoji/1f471.png
deleted file mode 100644
index ad6f01a7ddae2..0000000000000
Binary files a/public/emoji/1f471.png and /dev/null differ
diff --git a/public/emoji/1f471.svg b/public/emoji/1f471.svg
index 2f56b379c9658..2c49aa3d5a3d7 100644
--- a/public/emoji/1f471.svg
+++ b/public/emoji/1f471.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f472-1f3fb.png b/public/emoji/1f472-1f3fb.png
deleted file mode 100644
index 5b7b3def19c60..0000000000000
Binary files a/public/emoji/1f472-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f472-1f3fb.svg b/public/emoji/1f472-1f3fb.svg
index f02094dcbe0dd..d3c168207f6d2 100644
--- a/public/emoji/1f472-1f3fb.svg
+++ b/public/emoji/1f472-1f3fb.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f472-1f3fc.png b/public/emoji/1f472-1f3fc.png
deleted file mode 100644
index c8b9cf87f4bb6..0000000000000
Binary files a/public/emoji/1f472-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f472-1f3fc.svg b/public/emoji/1f472-1f3fc.svg
index 9933af021d4fa..652c0041270b2 100644
--- a/public/emoji/1f472-1f3fc.svg
+++ b/public/emoji/1f472-1f3fc.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f472-1f3fd.png b/public/emoji/1f472-1f3fd.png
deleted file mode 100644
index effdd0c4c84c9..0000000000000
Binary files a/public/emoji/1f472-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f472-1f3fd.svg b/public/emoji/1f472-1f3fd.svg
index f2884ff0a8beb..9c8e135cecb81 100644
--- a/public/emoji/1f472-1f3fd.svg
+++ b/public/emoji/1f472-1f3fd.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f472-1f3fe.png b/public/emoji/1f472-1f3fe.png
deleted file mode 100644
index f885ff46fa18e..0000000000000
Binary files a/public/emoji/1f472-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f472-1f3fe.svg b/public/emoji/1f472-1f3fe.svg
index 6bb5fad55e004..2a80ac6263ffc 100644
--- a/public/emoji/1f472-1f3fe.svg
+++ b/public/emoji/1f472-1f3fe.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f472-1f3ff.png b/public/emoji/1f472-1f3ff.png
deleted file mode 100644
index a6d55ca1380b0..0000000000000
Binary files a/public/emoji/1f472-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f472-1f3ff.svg b/public/emoji/1f472-1f3ff.svg
index c28a77da85e56..122e20c2b4c28 100644
--- a/public/emoji/1f472-1f3ff.svg
+++ b/public/emoji/1f472-1f3ff.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f472.png b/public/emoji/1f472.png
deleted file mode 100644
index 7841e13608df3..0000000000000
Binary files a/public/emoji/1f472.png and /dev/null differ
diff --git a/public/emoji/1f472.svg b/public/emoji/1f472.svg
index 8274a23037f50..3f059078c0acd 100644
--- a/public/emoji/1f472.svg
+++ b/public/emoji/1f472.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f473-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f473-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..ffe17f1681c4b
--- /dev/null
+++ b/public/emoji/1f473-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f473-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f473-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..9d8c68772713f
--- /dev/null
+++ b/public/emoji/1f473-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f473-1f3fb.png b/public/emoji/1f473-1f3fb.png
deleted file mode 100644
index 1e12ee4b231d2..0000000000000
Binary files a/public/emoji/1f473-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f473-1f3fb.svg b/public/emoji/1f473-1f3fb.svg
index 43c2e9d581d96..9d8c68772713f 100644
--- a/public/emoji/1f473-1f3fb.svg
+++ b/public/emoji/1f473-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f473-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f473-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..1487c58f38993
--- /dev/null
+++ b/public/emoji/1f473-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f473-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f473-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..d08a57f69e5f1
--- /dev/null
+++ b/public/emoji/1f473-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f473-1f3fc.png b/public/emoji/1f473-1f3fc.png
deleted file mode 100644
index 37de4cceb23a4..0000000000000
Binary files a/public/emoji/1f473-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f473-1f3fc.svg b/public/emoji/1f473-1f3fc.svg
index 86edb085ff5c7..d08a57f69e5f1 100644
--- a/public/emoji/1f473-1f3fc.svg
+++ b/public/emoji/1f473-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f473-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f473-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..8a5a251465a96
--- /dev/null
+++ b/public/emoji/1f473-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f473-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f473-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..1a2a155a35f0e
--- /dev/null
+++ b/public/emoji/1f473-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f473-1f3fd.png b/public/emoji/1f473-1f3fd.png
deleted file mode 100644
index f607afd345075..0000000000000
Binary files a/public/emoji/1f473-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f473-1f3fd.svg b/public/emoji/1f473-1f3fd.svg
index 4567f58000f7d..1a2a155a35f0e 100644
--- a/public/emoji/1f473-1f3fd.svg
+++ b/public/emoji/1f473-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f473-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f473-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..be875ee3766c0
--- /dev/null
+++ b/public/emoji/1f473-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f473-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f473-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..bca472d816b85
--- /dev/null
+++ b/public/emoji/1f473-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f473-1f3fe.png b/public/emoji/1f473-1f3fe.png
deleted file mode 100644
index c05695888af1a..0000000000000
Binary files a/public/emoji/1f473-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f473-1f3fe.svg b/public/emoji/1f473-1f3fe.svg
index ddb3d5beb6ca1..bca472d816b85 100644
--- a/public/emoji/1f473-1f3fe.svg
+++ b/public/emoji/1f473-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f473-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f473-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..a01f89ddad378
--- /dev/null
+++ b/public/emoji/1f473-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f473-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f473-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..ca21b96511b6e
--- /dev/null
+++ b/public/emoji/1f473-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f473-1f3ff.png b/public/emoji/1f473-1f3ff.png
deleted file mode 100644
index 4b4ff64720b50..0000000000000
Binary files a/public/emoji/1f473-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f473-1f3ff.svg b/public/emoji/1f473-1f3ff.svg
index 19b2e728f87ed..ca21b96511b6e 100644
--- a/public/emoji/1f473-1f3ff.svg
+++ b/public/emoji/1f473-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f473-200d-2640-fe0f.svg b/public/emoji/1f473-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..ecd3fb021c6e5
--- /dev/null
+++ b/public/emoji/1f473-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f473-200d-2642-fe0f.svg b/public/emoji/1f473-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..627d7732141bf
--- /dev/null
+++ b/public/emoji/1f473-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f473.png b/public/emoji/1f473.png
deleted file mode 100644
index 51cf047f96663..0000000000000
Binary files a/public/emoji/1f473.png and /dev/null differ
diff --git a/public/emoji/1f473.svg b/public/emoji/1f473.svg
index 5112808128b2e..627d7732141bf 100644
--- a/public/emoji/1f473.svg
+++ b/public/emoji/1f473.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f474-1f3fb.png b/public/emoji/1f474-1f3fb.png
deleted file mode 100644
index ab459baace85a..0000000000000
Binary files a/public/emoji/1f474-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f474-1f3fb.svg b/public/emoji/1f474-1f3fb.svg
index 77aacc5a93499..fd2ff9dcf938c 100644
--- a/public/emoji/1f474-1f3fb.svg
+++ b/public/emoji/1f474-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f474-1f3fc.png b/public/emoji/1f474-1f3fc.png
deleted file mode 100644
index f4dfc7694eac7..0000000000000
Binary files a/public/emoji/1f474-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f474-1f3fc.svg b/public/emoji/1f474-1f3fc.svg
index 03c13c515a8ab..c4f43282b8f41 100644
--- a/public/emoji/1f474-1f3fc.svg
+++ b/public/emoji/1f474-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f474-1f3fd.png b/public/emoji/1f474-1f3fd.png
deleted file mode 100644
index 5ffd11792f471..0000000000000
Binary files a/public/emoji/1f474-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f474-1f3fd.svg b/public/emoji/1f474-1f3fd.svg
index 2a73bef9191b3..4e532e6e253d6 100644
--- a/public/emoji/1f474-1f3fd.svg
+++ b/public/emoji/1f474-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f474-1f3fe.png b/public/emoji/1f474-1f3fe.png
deleted file mode 100644
index b350a764bfdc8..0000000000000
Binary files a/public/emoji/1f474-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f474-1f3fe.svg b/public/emoji/1f474-1f3fe.svg
index 0c9133ecee0ea..1f19763a2948b 100644
--- a/public/emoji/1f474-1f3fe.svg
+++ b/public/emoji/1f474-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f474-1f3ff.png b/public/emoji/1f474-1f3ff.png
deleted file mode 100644
index 05fe24a17083c..0000000000000
Binary files a/public/emoji/1f474-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f474-1f3ff.svg b/public/emoji/1f474-1f3ff.svg
index 14a6554c36193..8d8bc092895ba 100644
--- a/public/emoji/1f474-1f3ff.svg
+++ b/public/emoji/1f474-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f474.png b/public/emoji/1f474.png
deleted file mode 100644
index 4ace4e6f308f9..0000000000000
Binary files a/public/emoji/1f474.png and /dev/null differ
diff --git a/public/emoji/1f474.svg b/public/emoji/1f474.svg
index 79bd197e15afc..5f1c83bbc1967 100644
--- a/public/emoji/1f474.svg
+++ b/public/emoji/1f474.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f475-1f3fb.png b/public/emoji/1f475-1f3fb.png
deleted file mode 100644
index b49e821402cfa..0000000000000
Binary files a/public/emoji/1f475-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f475-1f3fb.svg b/public/emoji/1f475-1f3fb.svg
index 1e1c55669a5fa..86c69bae9240a 100644
--- a/public/emoji/1f475-1f3fb.svg
+++ b/public/emoji/1f475-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f475-1f3fc.png b/public/emoji/1f475-1f3fc.png
deleted file mode 100644
index e86bf5ab3b786..0000000000000
Binary files a/public/emoji/1f475-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f475-1f3fc.svg b/public/emoji/1f475-1f3fc.svg
index fd7cea0fc175d..7207298c8535e 100644
--- a/public/emoji/1f475-1f3fc.svg
+++ b/public/emoji/1f475-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f475-1f3fd.png b/public/emoji/1f475-1f3fd.png
deleted file mode 100644
index 83fc14b08749a..0000000000000
Binary files a/public/emoji/1f475-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f475-1f3fd.svg b/public/emoji/1f475-1f3fd.svg
index 121b50ba09589..15c14c1447c09 100644
--- a/public/emoji/1f475-1f3fd.svg
+++ b/public/emoji/1f475-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f475-1f3fe.png b/public/emoji/1f475-1f3fe.png
deleted file mode 100644
index e4aa8a424d45a..0000000000000
Binary files a/public/emoji/1f475-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f475-1f3fe.svg b/public/emoji/1f475-1f3fe.svg
index c1246e568a2d1..e9950c3857bed 100644
--- a/public/emoji/1f475-1f3fe.svg
+++ b/public/emoji/1f475-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f475-1f3ff.png b/public/emoji/1f475-1f3ff.png
deleted file mode 100644
index 4009012bb0ad7..0000000000000
Binary files a/public/emoji/1f475-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f475-1f3ff.svg b/public/emoji/1f475-1f3ff.svg
index b1ae7cd6c5aa5..31cb9f003b2df 100644
--- a/public/emoji/1f475-1f3ff.svg
+++ b/public/emoji/1f475-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f475.png b/public/emoji/1f475.png
deleted file mode 100644
index 52dc4987143a7..0000000000000
Binary files a/public/emoji/1f475.png and /dev/null differ
diff --git a/public/emoji/1f475.svg b/public/emoji/1f475.svg
index a2ac6131e0197..a2d61af950089 100644
--- a/public/emoji/1f475.svg
+++ b/public/emoji/1f475.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f476-1f3fb.png b/public/emoji/1f476-1f3fb.png
deleted file mode 100644
index d20911d40dbd1..0000000000000
Binary files a/public/emoji/1f476-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f476-1f3fb.svg b/public/emoji/1f476-1f3fb.svg
index aa85b9bd059c4..38e1aa8f68431 100644
--- a/public/emoji/1f476-1f3fb.svg
+++ b/public/emoji/1f476-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f476-1f3fc.png b/public/emoji/1f476-1f3fc.png
deleted file mode 100644
index b0a9b30ed1789..0000000000000
Binary files a/public/emoji/1f476-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f476-1f3fc.svg b/public/emoji/1f476-1f3fc.svg
index 50f5f8c94d7b9..d1fc49a2ca224 100644
--- a/public/emoji/1f476-1f3fc.svg
+++ b/public/emoji/1f476-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f476-1f3fd.png b/public/emoji/1f476-1f3fd.png
deleted file mode 100644
index 7de5286fac155..0000000000000
Binary files a/public/emoji/1f476-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f476-1f3fd.svg b/public/emoji/1f476-1f3fd.svg
index 9d3946dcd5104..85b9fa85cdada 100644
--- a/public/emoji/1f476-1f3fd.svg
+++ b/public/emoji/1f476-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f476-1f3fe.png b/public/emoji/1f476-1f3fe.png
deleted file mode 100644
index 9b7a86ac6156c..0000000000000
Binary files a/public/emoji/1f476-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f476-1f3fe.svg b/public/emoji/1f476-1f3fe.svg
index 75c1a67471f3a..3905353f8ab2b 100644
--- a/public/emoji/1f476-1f3fe.svg
+++ b/public/emoji/1f476-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f476-1f3ff.png b/public/emoji/1f476-1f3ff.png
deleted file mode 100644
index fe1be34cb884c..0000000000000
Binary files a/public/emoji/1f476-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f476-1f3ff.svg b/public/emoji/1f476-1f3ff.svg
index 27a4a6d7f9b8d..e4807abad5ce3 100644
--- a/public/emoji/1f476-1f3ff.svg
+++ b/public/emoji/1f476-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f476.png b/public/emoji/1f476.png
deleted file mode 100644
index a4af92c63c70a..0000000000000
Binary files a/public/emoji/1f476.png and /dev/null differ
diff --git a/public/emoji/1f476.svg b/public/emoji/1f476.svg
index 6bbcb0c2eec96..1d66193889076 100644
--- a/public/emoji/1f476.svg
+++ b/public/emoji/1f476.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f477-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f477-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..46f7d64021502
--- /dev/null
+++ b/public/emoji/1f477-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f477-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f477-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..759fd81ba0697
--- /dev/null
+++ b/public/emoji/1f477-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f477-1f3fb.png b/public/emoji/1f477-1f3fb.png
deleted file mode 100644
index 2f24a2bab2445..0000000000000
Binary files a/public/emoji/1f477-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f477-1f3fb.svg b/public/emoji/1f477-1f3fb.svg
index 1c078948d01d3..759fd81ba0697 100644
--- a/public/emoji/1f477-1f3fb.svg
+++ b/public/emoji/1f477-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f477-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f477-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..12173b62d2190
--- /dev/null
+++ b/public/emoji/1f477-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f477-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f477-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..6cbec13d82cce
--- /dev/null
+++ b/public/emoji/1f477-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f477-1f3fc.png b/public/emoji/1f477-1f3fc.png
deleted file mode 100644
index 93c8fec5a750e..0000000000000
Binary files a/public/emoji/1f477-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f477-1f3fc.svg b/public/emoji/1f477-1f3fc.svg
index 2baad9283834f..6cbec13d82cce 100644
--- a/public/emoji/1f477-1f3fc.svg
+++ b/public/emoji/1f477-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f477-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f477-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..cef8bb79ca1bb
--- /dev/null
+++ b/public/emoji/1f477-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f477-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f477-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..5634fa7e1ce4e
--- /dev/null
+++ b/public/emoji/1f477-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f477-1f3fd.png b/public/emoji/1f477-1f3fd.png
deleted file mode 100644
index abc1f2af2e0a6..0000000000000
Binary files a/public/emoji/1f477-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f477-1f3fd.svg b/public/emoji/1f477-1f3fd.svg
index 9bd5a803fe082..5634fa7e1ce4e 100644
--- a/public/emoji/1f477-1f3fd.svg
+++ b/public/emoji/1f477-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f477-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f477-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..13ef34ba5e30e
--- /dev/null
+++ b/public/emoji/1f477-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f477-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f477-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..902261cc25ffc
--- /dev/null
+++ b/public/emoji/1f477-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f477-1f3fe.png b/public/emoji/1f477-1f3fe.png
deleted file mode 100644
index eed83289aeb5c..0000000000000
Binary files a/public/emoji/1f477-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f477-1f3fe.svg b/public/emoji/1f477-1f3fe.svg
index ee7b228237de4..902261cc25ffc 100644
--- a/public/emoji/1f477-1f3fe.svg
+++ b/public/emoji/1f477-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f477-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f477-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..6e9b84dfab829
--- /dev/null
+++ b/public/emoji/1f477-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f477-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f477-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..1fc22a6a889f8
--- /dev/null
+++ b/public/emoji/1f477-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f477-1f3ff.png b/public/emoji/1f477-1f3ff.png
deleted file mode 100644
index acbb220b8bb04..0000000000000
Binary files a/public/emoji/1f477-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f477-1f3ff.svg b/public/emoji/1f477-1f3ff.svg
index 2cfb7cf1b9e96..1fc22a6a889f8 100644
--- a/public/emoji/1f477-1f3ff.svg
+++ b/public/emoji/1f477-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f477-200d-2640-fe0f.svg b/public/emoji/1f477-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..1d9d18d314fbe
--- /dev/null
+++ b/public/emoji/1f477-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f477-200d-2642-fe0f.svg b/public/emoji/1f477-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..cb161f83aa1dd
--- /dev/null
+++ b/public/emoji/1f477-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f477.png b/public/emoji/1f477.png
deleted file mode 100644
index a9970a8900519..0000000000000
Binary files a/public/emoji/1f477.png and /dev/null differ
diff --git a/public/emoji/1f477.svg b/public/emoji/1f477.svg
index 56ae64c82c7a0..cb161f83aa1dd 100644
--- a/public/emoji/1f477.svg
+++ b/public/emoji/1f477.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f478-1f3fb.png b/public/emoji/1f478-1f3fb.png
deleted file mode 100644
index c28078cdc36bd..0000000000000
Binary files a/public/emoji/1f478-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f478-1f3fb.svg b/public/emoji/1f478-1f3fb.svg
index ded39faa2e35b..88cc313912bb9 100644
--- a/public/emoji/1f478-1f3fb.svg
+++ b/public/emoji/1f478-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f478-1f3fc.png b/public/emoji/1f478-1f3fc.png
deleted file mode 100644
index dcd20e6ecd481..0000000000000
Binary files a/public/emoji/1f478-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f478-1f3fc.svg b/public/emoji/1f478-1f3fc.svg
index e815e485a65d3..8aed00f8039e4 100644
--- a/public/emoji/1f478-1f3fc.svg
+++ b/public/emoji/1f478-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f478-1f3fd.png b/public/emoji/1f478-1f3fd.png
deleted file mode 100644
index cde6f315c56a5..0000000000000
Binary files a/public/emoji/1f478-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f478-1f3fd.svg b/public/emoji/1f478-1f3fd.svg
index 7d5b77783f548..6fdfb919b67af 100644
--- a/public/emoji/1f478-1f3fd.svg
+++ b/public/emoji/1f478-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f478-1f3fe.png b/public/emoji/1f478-1f3fe.png
deleted file mode 100644
index c71e69caaef99..0000000000000
Binary files a/public/emoji/1f478-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f478-1f3fe.svg b/public/emoji/1f478-1f3fe.svg
index 18edf0cbc0220..f88d49e9f4933 100644
--- a/public/emoji/1f478-1f3fe.svg
+++ b/public/emoji/1f478-1f3fe.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f478-1f3ff.png b/public/emoji/1f478-1f3ff.png
deleted file mode 100644
index 063e264591054..0000000000000
Binary files a/public/emoji/1f478-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f478-1f3ff.svg b/public/emoji/1f478-1f3ff.svg
index 6b8053df1b44f..19f06ed2f747b 100644
--- a/public/emoji/1f478-1f3ff.svg
+++ b/public/emoji/1f478-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f478.png b/public/emoji/1f478.png
deleted file mode 100644
index 879e9fa8c5d29..0000000000000
Binary files a/public/emoji/1f478.png and /dev/null differ
diff --git a/public/emoji/1f478.svg b/public/emoji/1f478.svg
index 939f660d4af8a..06d437fa6d84b 100644
--- a/public/emoji/1f478.svg
+++ b/public/emoji/1f478.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f479.png b/public/emoji/1f479.png
deleted file mode 100644
index fe8670fdaf1d7..0000000000000
Binary files a/public/emoji/1f479.png and /dev/null differ
diff --git a/public/emoji/1f479.svg b/public/emoji/1f479.svg
index 4aa1df93b5163..d085499955daf 100644
--- a/public/emoji/1f479.svg
+++ b/public/emoji/1f479.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f47a.png b/public/emoji/1f47a.png
deleted file mode 100644
index 515c6a2250e19..0000000000000
Binary files a/public/emoji/1f47a.png and /dev/null differ
diff --git a/public/emoji/1f47a.svg b/public/emoji/1f47a.svg
index a20c6c44e41af..81c1ef39da4ac 100644
--- a/public/emoji/1f47a.svg
+++ b/public/emoji/1f47a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f47b.png b/public/emoji/1f47b.png
deleted file mode 100644
index 5650bc0ed180f..0000000000000
Binary files a/public/emoji/1f47b.png and /dev/null differ
diff --git a/public/emoji/1f47b.svg b/public/emoji/1f47b.svg
index 37f0680391afd..e5a2ee7394a30 100644
--- a/public/emoji/1f47b.svg
+++ b/public/emoji/1f47b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f47c-1f3fb.png b/public/emoji/1f47c-1f3fb.png
deleted file mode 100644
index 391694dc07ef7..0000000000000
Binary files a/public/emoji/1f47c-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f47c-1f3fb.svg b/public/emoji/1f47c-1f3fb.svg
index b33f37c471be6..58a4fe2da4a30 100644
--- a/public/emoji/1f47c-1f3fb.svg
+++ b/public/emoji/1f47c-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f47c-1f3fc.png b/public/emoji/1f47c-1f3fc.png
deleted file mode 100644
index 700cbe6ed2c75..0000000000000
Binary files a/public/emoji/1f47c-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f47c-1f3fc.svg b/public/emoji/1f47c-1f3fc.svg
index 0095920c439e8..4618465f79949 100644
--- a/public/emoji/1f47c-1f3fc.svg
+++ b/public/emoji/1f47c-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f47c-1f3fd.png b/public/emoji/1f47c-1f3fd.png
deleted file mode 100644
index be597437d2549..0000000000000
Binary files a/public/emoji/1f47c-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f47c-1f3fd.svg b/public/emoji/1f47c-1f3fd.svg
index ce453f4b7c173..d6c44bf629ca3 100644
--- a/public/emoji/1f47c-1f3fd.svg
+++ b/public/emoji/1f47c-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f47c-1f3fe.png b/public/emoji/1f47c-1f3fe.png
deleted file mode 100644
index b06d3c853efd4..0000000000000
Binary files a/public/emoji/1f47c-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f47c-1f3fe.svg b/public/emoji/1f47c-1f3fe.svg
index bbff87d41343e..3b861ff0422fd 100644
--- a/public/emoji/1f47c-1f3fe.svg
+++ b/public/emoji/1f47c-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f47c-1f3ff.png b/public/emoji/1f47c-1f3ff.png
deleted file mode 100644
index 17bd677e33432..0000000000000
Binary files a/public/emoji/1f47c-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f47c-1f3ff.svg b/public/emoji/1f47c-1f3ff.svg
index 5e7bb9f044a61..1be099a01f6f4 100644
--- a/public/emoji/1f47c-1f3ff.svg
+++ b/public/emoji/1f47c-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f47c.png b/public/emoji/1f47c.png
deleted file mode 100644
index 66ea97a3b9960..0000000000000
Binary files a/public/emoji/1f47c.png and /dev/null differ
diff --git a/public/emoji/1f47c.svg b/public/emoji/1f47c.svg
index fd6002a209ffc..f83cb77043094 100644
--- a/public/emoji/1f47c.svg
+++ b/public/emoji/1f47c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f47d.png b/public/emoji/1f47d.png
deleted file mode 100644
index 3b90e97433b9c..0000000000000
Binary files a/public/emoji/1f47d.png and /dev/null differ
diff --git a/public/emoji/1f47d.svg b/public/emoji/1f47d.svg
index fff8d2f2bb8bb..d58d8191203cb 100644
--- a/public/emoji/1f47d.svg
+++ b/public/emoji/1f47d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f47e.png b/public/emoji/1f47e.png
deleted file mode 100644
index 2e73f5f32e591..0000000000000
Binary files a/public/emoji/1f47e.png and /dev/null differ
diff --git a/public/emoji/1f47e.svg b/public/emoji/1f47e.svg
index 0d4c47cfeaad2..2ac86c206ff5f 100644
--- a/public/emoji/1f47e.svg
+++ b/public/emoji/1f47e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f47f.png b/public/emoji/1f47f.png
deleted file mode 100644
index 9f9a96055394c..0000000000000
Binary files a/public/emoji/1f47f.png and /dev/null differ
diff --git a/public/emoji/1f47f.svg b/public/emoji/1f47f.svg
index a2bf45a63260f..3ceaefa4d3579 100644
--- a/public/emoji/1f47f.svg
+++ b/public/emoji/1f47f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f480.png b/public/emoji/1f480.png
deleted file mode 100644
index 26abb17296a21..0000000000000
Binary files a/public/emoji/1f480.png and /dev/null differ
diff --git a/public/emoji/1f480.svg b/public/emoji/1f480.svg
index 300fed8885129..7097d6ee03a57 100644
--- a/public/emoji/1f480.svg
+++ b/public/emoji/1f480.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f481-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f481-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..579847c43a404
--- /dev/null
+++ b/public/emoji/1f481-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f481-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f481-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..9fce17c57eecc
--- /dev/null
+++ b/public/emoji/1f481-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f481-1f3fb.png b/public/emoji/1f481-1f3fb.png
deleted file mode 100644
index 3d9e224794056..0000000000000
Binary files a/public/emoji/1f481-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f481-1f3fb.svg b/public/emoji/1f481-1f3fb.svg
index 94f0d9fa835e7..579847c43a404 100644
--- a/public/emoji/1f481-1f3fb.svg
+++ b/public/emoji/1f481-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f481-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f481-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..873f4dc5df329
--- /dev/null
+++ b/public/emoji/1f481-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f481-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f481-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..bcf9e0cd9f595
--- /dev/null
+++ b/public/emoji/1f481-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f481-1f3fc.png b/public/emoji/1f481-1f3fc.png
deleted file mode 100644
index 879e8b7966d79..0000000000000
Binary files a/public/emoji/1f481-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f481-1f3fc.svg b/public/emoji/1f481-1f3fc.svg
index 4094b088f53dd..873f4dc5df329 100644
--- a/public/emoji/1f481-1f3fc.svg
+++ b/public/emoji/1f481-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f481-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f481-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..f22657d8ac1cc
--- /dev/null
+++ b/public/emoji/1f481-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f481-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f481-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..ef182a4bdd922
--- /dev/null
+++ b/public/emoji/1f481-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f481-1f3fd.png b/public/emoji/1f481-1f3fd.png
deleted file mode 100644
index 307514eab6797..0000000000000
Binary files a/public/emoji/1f481-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f481-1f3fd.svg b/public/emoji/1f481-1f3fd.svg
index 502cf7baae0ad..f22657d8ac1cc 100644
--- a/public/emoji/1f481-1f3fd.svg
+++ b/public/emoji/1f481-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f481-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f481-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..c836fb1d52122
--- /dev/null
+++ b/public/emoji/1f481-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f481-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f481-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..48e59176e902f
--- /dev/null
+++ b/public/emoji/1f481-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f481-1f3fe.png b/public/emoji/1f481-1f3fe.png
deleted file mode 100644
index 297395dcb3f8b..0000000000000
Binary files a/public/emoji/1f481-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f481-1f3fe.svg b/public/emoji/1f481-1f3fe.svg
index d2338320842ef..c836fb1d52122 100644
--- a/public/emoji/1f481-1f3fe.svg
+++ b/public/emoji/1f481-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f481-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f481-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..c93ce31f5ade4
--- /dev/null
+++ b/public/emoji/1f481-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f481-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f481-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..1dcc0745c2357
--- /dev/null
+++ b/public/emoji/1f481-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f481-1f3ff.png b/public/emoji/1f481-1f3ff.png
deleted file mode 100644
index 26f8f22b28be8..0000000000000
Binary files a/public/emoji/1f481-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f481-1f3ff.svg b/public/emoji/1f481-1f3ff.svg
index 64f4c49695149..c93ce31f5ade4 100644
--- a/public/emoji/1f481-1f3ff.svg
+++ b/public/emoji/1f481-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f481-200d-2640-fe0f.svg b/public/emoji/1f481-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..a06e256ad8cb7
--- /dev/null
+++ b/public/emoji/1f481-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f481-200d-2642-fe0f.svg b/public/emoji/1f481-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..e97a32a39101d
--- /dev/null
+++ b/public/emoji/1f481-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f481.png b/public/emoji/1f481.png
deleted file mode 100644
index 55fc6294d25bf..0000000000000
Binary files a/public/emoji/1f481.png and /dev/null differ
diff --git a/public/emoji/1f481.svg b/public/emoji/1f481.svg
index 324606f2638d9..a06e256ad8cb7 100644
--- a/public/emoji/1f481.svg
+++ b/public/emoji/1f481.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f482-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f482-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..2662a46e24b52
--- /dev/null
+++ b/public/emoji/1f482-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f482-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f482-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..95a2c5bdcccb1
--- /dev/null
+++ b/public/emoji/1f482-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f482-1f3fb.png b/public/emoji/1f482-1f3fb.png
deleted file mode 100644
index cea9ba27468b6..0000000000000
Binary files a/public/emoji/1f482-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f482-1f3fb.svg b/public/emoji/1f482-1f3fb.svg
index 12ecea3c44dc2..95a2c5bdcccb1 100644
--- a/public/emoji/1f482-1f3fb.svg
+++ b/public/emoji/1f482-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f482-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f482-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..1d07ec5af3b57
--- /dev/null
+++ b/public/emoji/1f482-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f482-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f482-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..9459a537bdcb1
--- /dev/null
+++ b/public/emoji/1f482-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f482-1f3fc.png b/public/emoji/1f482-1f3fc.png
deleted file mode 100644
index 037464e4028e9..0000000000000
Binary files a/public/emoji/1f482-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f482-1f3fc.svg b/public/emoji/1f482-1f3fc.svg
index 0a822b81e6cf9..9459a537bdcb1 100644
--- a/public/emoji/1f482-1f3fc.svg
+++ b/public/emoji/1f482-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f482-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f482-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..21368fe456f39
--- /dev/null
+++ b/public/emoji/1f482-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f482-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f482-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..48eef95564336
--- /dev/null
+++ b/public/emoji/1f482-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f482-1f3fd.png b/public/emoji/1f482-1f3fd.png
deleted file mode 100644
index 0f6726fbe878b..0000000000000
Binary files a/public/emoji/1f482-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f482-1f3fd.svg b/public/emoji/1f482-1f3fd.svg
index 3048f05b89dbc..48eef95564336 100644
--- a/public/emoji/1f482-1f3fd.svg
+++ b/public/emoji/1f482-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f482-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f482-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..93f02ff998c07
--- /dev/null
+++ b/public/emoji/1f482-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f482-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f482-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..6def55dcf9fa2
--- /dev/null
+++ b/public/emoji/1f482-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f482-1f3fe.png b/public/emoji/1f482-1f3fe.png
deleted file mode 100644
index 85fcf9a3b9764..0000000000000
Binary files a/public/emoji/1f482-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f482-1f3fe.svg b/public/emoji/1f482-1f3fe.svg
index ece9fd37d91dd..6def55dcf9fa2 100644
--- a/public/emoji/1f482-1f3fe.svg
+++ b/public/emoji/1f482-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f482-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f482-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..9251000275186
--- /dev/null
+++ b/public/emoji/1f482-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f482-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f482-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..41e80851c87c0
--- /dev/null
+++ b/public/emoji/1f482-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f482-1f3ff.png b/public/emoji/1f482-1f3ff.png
deleted file mode 100644
index e5f9ca7d5a29c..0000000000000
Binary files a/public/emoji/1f482-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f482-1f3ff.svg b/public/emoji/1f482-1f3ff.svg
index c59625be539de..41e80851c87c0 100644
--- a/public/emoji/1f482-1f3ff.svg
+++ b/public/emoji/1f482-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f482-200d-2640-fe0f.svg b/public/emoji/1f482-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..11be3310a6700
--- /dev/null
+++ b/public/emoji/1f482-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f482-200d-2642-fe0f.svg b/public/emoji/1f482-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..349a3c03ccd87
--- /dev/null
+++ b/public/emoji/1f482-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f482.png b/public/emoji/1f482.png
deleted file mode 100644
index 8d7ab3c473cef..0000000000000
Binary files a/public/emoji/1f482.png and /dev/null differ
diff --git a/public/emoji/1f482.svg b/public/emoji/1f482.svg
index a2828629eeaac..349a3c03ccd87 100644
--- a/public/emoji/1f482.svg
+++ b/public/emoji/1f482.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f483-1f3fb.png b/public/emoji/1f483-1f3fb.png
deleted file mode 100644
index 2c7b11c3a6eac..0000000000000
Binary files a/public/emoji/1f483-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f483-1f3fb.svg b/public/emoji/1f483-1f3fb.svg
index 23026b5a5e07f..5e28fb0f362e5 100644
--- a/public/emoji/1f483-1f3fb.svg
+++ b/public/emoji/1f483-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f483-1f3fc.png b/public/emoji/1f483-1f3fc.png
deleted file mode 100644
index cb04b1f907e4c..0000000000000
Binary files a/public/emoji/1f483-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f483-1f3fc.svg b/public/emoji/1f483-1f3fc.svg
index df65e02a364a3..57ded552836c2 100644
--- a/public/emoji/1f483-1f3fc.svg
+++ b/public/emoji/1f483-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f483-1f3fd.png b/public/emoji/1f483-1f3fd.png
deleted file mode 100644
index 98c5bca7b648c..0000000000000
Binary files a/public/emoji/1f483-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f483-1f3fd.svg b/public/emoji/1f483-1f3fd.svg
index e4c1d7b9dd874..dc1ff5363a6e9 100644
--- a/public/emoji/1f483-1f3fd.svg
+++ b/public/emoji/1f483-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f483-1f3fe.png b/public/emoji/1f483-1f3fe.png
deleted file mode 100644
index fdb1e00cbba76..0000000000000
Binary files a/public/emoji/1f483-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f483-1f3fe.svg b/public/emoji/1f483-1f3fe.svg
index e163cfbc5b896..b80348375a444 100644
--- a/public/emoji/1f483-1f3fe.svg
+++ b/public/emoji/1f483-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f483-1f3ff.png b/public/emoji/1f483-1f3ff.png
deleted file mode 100644
index 0e34e0e23f057..0000000000000
Binary files a/public/emoji/1f483-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f483-1f3ff.svg b/public/emoji/1f483-1f3ff.svg
index bb4dcfe494183..80f37167d71fb 100644
--- a/public/emoji/1f483-1f3ff.svg
+++ b/public/emoji/1f483-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f483.png b/public/emoji/1f483.png
deleted file mode 100644
index 04b166991cb10..0000000000000
Binary files a/public/emoji/1f483.png and /dev/null differ
diff --git a/public/emoji/1f483.svg b/public/emoji/1f483.svg
index 25ff89a2cd543..436f9ae58af81 100644
--- a/public/emoji/1f483.svg
+++ b/public/emoji/1f483.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f484.png b/public/emoji/1f484.png
deleted file mode 100644
index 61a0c084c9904..0000000000000
Binary files a/public/emoji/1f484.png and /dev/null differ
diff --git a/public/emoji/1f484.svg b/public/emoji/1f484.svg
index 99bc7908bae31..86892d2f298a2 100644
--- a/public/emoji/1f484.svg
+++ b/public/emoji/1f484.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f485-1f3fb.png b/public/emoji/1f485-1f3fb.png
deleted file mode 100644
index 26e883dd244bd..0000000000000
Binary files a/public/emoji/1f485-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f485-1f3fb.svg b/public/emoji/1f485-1f3fb.svg
index f31a7a2984521..0ca21402e48a8 100644
--- a/public/emoji/1f485-1f3fb.svg
+++ b/public/emoji/1f485-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f485-1f3fc.png b/public/emoji/1f485-1f3fc.png
deleted file mode 100644
index 61257b47ea323..0000000000000
Binary files a/public/emoji/1f485-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f485-1f3fc.svg b/public/emoji/1f485-1f3fc.svg
index 442102a4bd61f..e20634f6c3c41 100644
--- a/public/emoji/1f485-1f3fc.svg
+++ b/public/emoji/1f485-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f485-1f3fd.png b/public/emoji/1f485-1f3fd.png
deleted file mode 100644
index 29871b05f625b..0000000000000
Binary files a/public/emoji/1f485-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f485-1f3fd.svg b/public/emoji/1f485-1f3fd.svg
index daa1db1997d88..c2d3ade12bd87 100644
--- a/public/emoji/1f485-1f3fd.svg
+++ b/public/emoji/1f485-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f485-1f3fe.png b/public/emoji/1f485-1f3fe.png
deleted file mode 100644
index 2881de0b17d67..0000000000000
Binary files a/public/emoji/1f485-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f485-1f3fe.svg b/public/emoji/1f485-1f3fe.svg
index 759366904f2c5..a47022a922649 100644
--- a/public/emoji/1f485-1f3fe.svg
+++ b/public/emoji/1f485-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f485-1f3ff.png b/public/emoji/1f485-1f3ff.png
deleted file mode 100644
index a0b7c0a45a6da..0000000000000
Binary files a/public/emoji/1f485-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f485-1f3ff.svg b/public/emoji/1f485-1f3ff.svg
index 36a0f84030c10..3c6a2a135ab49 100644
--- a/public/emoji/1f485-1f3ff.svg
+++ b/public/emoji/1f485-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f485.png b/public/emoji/1f485.png
deleted file mode 100644
index aa52af7050d66..0000000000000
Binary files a/public/emoji/1f485.png and /dev/null differ
diff --git a/public/emoji/1f485.svg b/public/emoji/1f485.svg
index 91fd2c51f39d4..3f956cbd3069e 100644
--- a/public/emoji/1f485.svg
+++ b/public/emoji/1f485.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f486-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f486-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..9a67284b5add4
--- /dev/null
+++ b/public/emoji/1f486-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f486-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f486-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..68b072cfcd128
--- /dev/null
+++ b/public/emoji/1f486-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f486-1f3fb.png b/public/emoji/1f486-1f3fb.png
deleted file mode 100644
index e0f415d318631..0000000000000
Binary files a/public/emoji/1f486-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f486-1f3fb.svg b/public/emoji/1f486-1f3fb.svg
index dc1aef549a791..9a67284b5add4 100644
--- a/public/emoji/1f486-1f3fb.svg
+++ b/public/emoji/1f486-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f486-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f486-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..9ebc012da5782
--- /dev/null
+++ b/public/emoji/1f486-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f486-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f486-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..1eaa098c1c795
--- /dev/null
+++ b/public/emoji/1f486-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f486-1f3fc.png b/public/emoji/1f486-1f3fc.png
deleted file mode 100644
index 0bb244a270b3c..0000000000000
Binary files a/public/emoji/1f486-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f486-1f3fc.svg b/public/emoji/1f486-1f3fc.svg
index ccea5085ed83f..9ebc012da5782 100644
--- a/public/emoji/1f486-1f3fc.svg
+++ b/public/emoji/1f486-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f486-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f486-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..52e52636c9871
--- /dev/null
+++ b/public/emoji/1f486-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f486-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f486-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..8852a1efc3890
--- /dev/null
+++ b/public/emoji/1f486-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f486-1f3fd.png b/public/emoji/1f486-1f3fd.png
deleted file mode 100644
index a117ee81a2226..0000000000000
Binary files a/public/emoji/1f486-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f486-1f3fd.svg b/public/emoji/1f486-1f3fd.svg
index 245ca4b6d90ed..52e52636c9871 100644
--- a/public/emoji/1f486-1f3fd.svg
+++ b/public/emoji/1f486-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f486-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f486-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..ad9c254bd89c9
--- /dev/null
+++ b/public/emoji/1f486-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f486-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f486-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..caa12c4796535
--- /dev/null
+++ b/public/emoji/1f486-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f486-1f3fe.png b/public/emoji/1f486-1f3fe.png
deleted file mode 100644
index 6f42ab017f4e4..0000000000000
Binary files a/public/emoji/1f486-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f486-1f3fe.svg b/public/emoji/1f486-1f3fe.svg
index a56ff48dd716d..ad9c254bd89c9 100644
--- a/public/emoji/1f486-1f3fe.svg
+++ b/public/emoji/1f486-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f486-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f486-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..3fb4f842082e5
--- /dev/null
+++ b/public/emoji/1f486-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f486-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f486-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..2242f1b8afb1f
--- /dev/null
+++ b/public/emoji/1f486-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f486-1f3ff.png b/public/emoji/1f486-1f3ff.png
deleted file mode 100644
index 6a388c0d0b5f3..0000000000000
Binary files a/public/emoji/1f486-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f486-1f3ff.svg b/public/emoji/1f486-1f3ff.svg
index bf24cb0684a8b..3fb4f842082e5 100644
--- a/public/emoji/1f486-1f3ff.svg
+++ b/public/emoji/1f486-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f486-200d-2640-fe0f.svg b/public/emoji/1f486-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..39ffd8bdcbb2b
--- /dev/null
+++ b/public/emoji/1f486-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f486-200d-2642-fe0f.svg b/public/emoji/1f486-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..e9d1cff1d14f0
--- /dev/null
+++ b/public/emoji/1f486-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f486.png b/public/emoji/1f486.png
deleted file mode 100644
index b91d845e3741e..0000000000000
Binary files a/public/emoji/1f486.png and /dev/null differ
diff --git a/public/emoji/1f486.svg b/public/emoji/1f486.svg
index 04a27271383af..39ffd8bdcbb2b 100644
--- a/public/emoji/1f486.svg
+++ b/public/emoji/1f486.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f487-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f487-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..0625e084cfbf2
--- /dev/null
+++ b/public/emoji/1f487-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f487-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f487-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..9325536687662
--- /dev/null
+++ b/public/emoji/1f487-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f487-1f3fb.png b/public/emoji/1f487-1f3fb.png
deleted file mode 100644
index c743b74abeb1b..0000000000000
Binary files a/public/emoji/1f487-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f487-1f3fb.svg b/public/emoji/1f487-1f3fb.svg
index 793781e7ee174..0625e084cfbf2 100644
--- a/public/emoji/1f487-1f3fb.svg
+++ b/public/emoji/1f487-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f487-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f487-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..9457987a0dcfd
--- /dev/null
+++ b/public/emoji/1f487-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f487-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f487-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..1e91c663a9e06
--- /dev/null
+++ b/public/emoji/1f487-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f487-1f3fc.png b/public/emoji/1f487-1f3fc.png
deleted file mode 100644
index f144f8e55ceb1..0000000000000
Binary files a/public/emoji/1f487-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f487-1f3fc.svg b/public/emoji/1f487-1f3fc.svg
index ac7e41cfc1c14..9457987a0dcfd 100644
--- a/public/emoji/1f487-1f3fc.svg
+++ b/public/emoji/1f487-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f487-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f487-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..607df1e22a970
--- /dev/null
+++ b/public/emoji/1f487-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f487-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f487-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..5f32e63385c60
--- /dev/null
+++ b/public/emoji/1f487-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f487-1f3fd.png b/public/emoji/1f487-1f3fd.png
deleted file mode 100644
index d5ad19563acd7..0000000000000
Binary files a/public/emoji/1f487-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f487-1f3fd.svg b/public/emoji/1f487-1f3fd.svg
index b581fe54ab23f..607df1e22a970 100644
--- a/public/emoji/1f487-1f3fd.svg
+++ b/public/emoji/1f487-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f487-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f487-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..d0cccfc8fac7f
--- /dev/null
+++ b/public/emoji/1f487-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f487-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f487-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..6f4de3161abb3
--- /dev/null
+++ b/public/emoji/1f487-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f487-1f3fe.png b/public/emoji/1f487-1f3fe.png
deleted file mode 100644
index 244fd3af008d9..0000000000000
Binary files a/public/emoji/1f487-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f487-1f3fe.svg b/public/emoji/1f487-1f3fe.svg
index 2c2be850cd7c0..d0cccfc8fac7f 100644
--- a/public/emoji/1f487-1f3fe.svg
+++ b/public/emoji/1f487-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f487-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f487-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..8edd33e3f3c60
--- /dev/null
+++ b/public/emoji/1f487-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f487-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f487-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..4246251e85b0a
--- /dev/null
+++ b/public/emoji/1f487-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f487-1f3ff.png b/public/emoji/1f487-1f3ff.png
deleted file mode 100644
index 20a94a88623b3..0000000000000
Binary files a/public/emoji/1f487-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f487-1f3ff.svg b/public/emoji/1f487-1f3ff.svg
index 0d4ee4cb52819..8edd33e3f3c60 100644
--- a/public/emoji/1f487-1f3ff.svg
+++ b/public/emoji/1f487-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f487-200d-2640-fe0f.svg b/public/emoji/1f487-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..f6c2fd7d46d45
--- /dev/null
+++ b/public/emoji/1f487-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f487-200d-2642-fe0f.svg b/public/emoji/1f487-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..257d6d08ce3aa
--- /dev/null
+++ b/public/emoji/1f487-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f487.png b/public/emoji/1f487.png
deleted file mode 100644
index 91266b129308c..0000000000000
Binary files a/public/emoji/1f487.png and /dev/null differ
diff --git a/public/emoji/1f487.svg b/public/emoji/1f487.svg
index 0d345e70b76bf..f6c2fd7d46d45 100644
--- a/public/emoji/1f487.svg
+++ b/public/emoji/1f487.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f488.png b/public/emoji/1f488.png
deleted file mode 100644
index 896f4d716cf19..0000000000000
Binary files a/public/emoji/1f488.png and /dev/null differ
diff --git a/public/emoji/1f488.svg b/public/emoji/1f488.svg
index 8db2bdc7d864e..e9ae2255ca475 100644
--- a/public/emoji/1f488.svg
+++ b/public/emoji/1f488.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f489.png b/public/emoji/1f489.png
deleted file mode 100644
index 71c1a9528d585..0000000000000
Binary files a/public/emoji/1f489.png and /dev/null differ
diff --git a/public/emoji/1f489.svg b/public/emoji/1f489.svg
index 0a2fe9667519f..9c4caf5c1dd8c 100644
--- a/public/emoji/1f489.svg
+++ b/public/emoji/1f489.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f48a.png b/public/emoji/1f48a.png
deleted file mode 100644
index 1d4530e77a327..0000000000000
Binary files a/public/emoji/1f48a.png and /dev/null differ
diff --git a/public/emoji/1f48a.svg b/public/emoji/1f48a.svg
index ea0a9a8cc8158..c7bd66801879a 100644
--- a/public/emoji/1f48a.svg
+++ b/public/emoji/1f48a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f48b.png b/public/emoji/1f48b.png
deleted file mode 100644
index 85e6dcfc4e8d9..0000000000000
Binary files a/public/emoji/1f48b.png and /dev/null differ
diff --git a/public/emoji/1f48b.svg b/public/emoji/1f48b.svg
index a2d76f20de2d4..492398c52ba9e 100644
--- a/public/emoji/1f48b.svg
+++ b/public/emoji/1f48b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f48c.png b/public/emoji/1f48c.png
deleted file mode 100644
index 3c3c767e784b6..0000000000000
Binary files a/public/emoji/1f48c.png and /dev/null differ
diff --git a/public/emoji/1f48c.svg b/public/emoji/1f48c.svg
index ae73beac1f9ee..b2f85697a15a3 100644
--- a/public/emoji/1f48c.svg
+++ b/public/emoji/1f48c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f48d.png b/public/emoji/1f48d.png
deleted file mode 100644
index 87d227adb745c..0000000000000
Binary files a/public/emoji/1f48d.png and /dev/null differ
diff --git a/public/emoji/1f48d.svg b/public/emoji/1f48d.svg
index 51da1763cb2ae..8bbab8ac61895 100644
--- a/public/emoji/1f48d.svg
+++ b/public/emoji/1f48d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f48e.png b/public/emoji/1f48e.png
deleted file mode 100644
index db122d26a19a4..0000000000000
Binary files a/public/emoji/1f48e.png and /dev/null differ
diff --git a/public/emoji/1f48e.svg b/public/emoji/1f48e.svg
index c7a3719a28f4c..d89d981903dec 100644
--- a/public/emoji/1f48e.svg
+++ b/public/emoji/1f48e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f48f.png b/public/emoji/1f48f.png
deleted file mode 100644
index 9aa519da9e83a..0000000000000
Binary files a/public/emoji/1f48f.png and /dev/null differ
diff --git a/public/emoji/1f48f.svg b/public/emoji/1f48f.svg
index cd4f66f04d576..0bae3004bc113 100644
--- a/public/emoji/1f48f.svg
+++ b/public/emoji/1f48f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f490.png b/public/emoji/1f490.png
deleted file mode 100644
index 11455af6df49d..0000000000000
Binary files a/public/emoji/1f490.png and /dev/null differ
diff --git a/public/emoji/1f490.svg b/public/emoji/1f490.svg
index 8f15a96523c25..79b996eedd0d6 100644
--- a/public/emoji/1f490.svg
+++ b/public/emoji/1f490.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f491.png b/public/emoji/1f491.png
deleted file mode 100644
index 62111601b36fa..0000000000000
Binary files a/public/emoji/1f491.png and /dev/null differ
diff --git a/public/emoji/1f491.svg b/public/emoji/1f491.svg
index 38085503c01ee..9ec3083f4d725 100644
--- a/public/emoji/1f491.svg
+++ b/public/emoji/1f491.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f492.png b/public/emoji/1f492.png
deleted file mode 100644
index d0d8aa0bfae2e..0000000000000
Binary files a/public/emoji/1f492.png and /dev/null differ
diff --git a/public/emoji/1f492.svg b/public/emoji/1f492.svg
index e7008d4232edc..e2873f71e6db4 100644
--- a/public/emoji/1f492.svg
+++ b/public/emoji/1f492.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f493.png b/public/emoji/1f493.png
deleted file mode 100644
index 0bcf2d1d56705..0000000000000
Binary files a/public/emoji/1f493.png and /dev/null differ
diff --git a/public/emoji/1f493.svg b/public/emoji/1f493.svg
index 41388626b9a9c..1a0a8a054b6bf 100644
--- a/public/emoji/1f493.svg
+++ b/public/emoji/1f493.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f494.png b/public/emoji/1f494.png
deleted file mode 100644
index 718e26ee12230..0000000000000
Binary files a/public/emoji/1f494.png and /dev/null differ
diff --git a/public/emoji/1f494.svg b/public/emoji/1f494.svg
index a8b9e1b05f9f7..5236cebce6cd6 100644
--- a/public/emoji/1f494.svg
+++ b/public/emoji/1f494.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f495.png b/public/emoji/1f495.png
deleted file mode 100644
index 4d8c3386042e7..0000000000000
Binary files a/public/emoji/1f495.png and /dev/null differ
diff --git a/public/emoji/1f495.svg b/public/emoji/1f495.svg
index 6f51fbd1ffc00..b8e0e292be266 100644
--- a/public/emoji/1f495.svg
+++ b/public/emoji/1f495.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f496.png b/public/emoji/1f496.png
deleted file mode 100644
index 6709269454ea3..0000000000000
Binary files a/public/emoji/1f496.png and /dev/null differ
diff --git a/public/emoji/1f496.svg b/public/emoji/1f496.svg
index 27457d5b78d16..75a875b3a959c 100644
--- a/public/emoji/1f496.svg
+++ b/public/emoji/1f496.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f497.png b/public/emoji/1f497.png
deleted file mode 100644
index d6e694e972f12..0000000000000
Binary files a/public/emoji/1f497.png and /dev/null differ
diff --git a/public/emoji/1f497.svg b/public/emoji/1f497.svg
index a3da17e1f1249..1f586cd4572ed 100644
--- a/public/emoji/1f497.svg
+++ b/public/emoji/1f497.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f498.png b/public/emoji/1f498.png
deleted file mode 100644
index 2df0078ddd157..0000000000000
Binary files a/public/emoji/1f498.png and /dev/null differ
diff --git a/public/emoji/1f498.svg b/public/emoji/1f498.svg
index 66b99f3304bed..619c6aa24e82c 100644
--- a/public/emoji/1f498.svg
+++ b/public/emoji/1f498.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f499.png b/public/emoji/1f499.png
deleted file mode 100644
index bdf1287e55e91..0000000000000
Binary files a/public/emoji/1f499.png and /dev/null differ
diff --git a/public/emoji/1f499.svg b/public/emoji/1f499.svg
index 6db134a92d636..9d48cbf8920f4 100644
--- a/public/emoji/1f499.svg
+++ b/public/emoji/1f499.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f49a.png b/public/emoji/1f49a.png
deleted file mode 100644
index c52d60a58be84..0000000000000
Binary files a/public/emoji/1f49a.png and /dev/null differ
diff --git a/public/emoji/1f49a.svg b/public/emoji/1f49a.svg
index 2d718b516b8f2..41990800e525f 100644
--- a/public/emoji/1f49a.svg
+++ b/public/emoji/1f49a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f49b.png b/public/emoji/1f49b.png
deleted file mode 100644
index 7901a9d0103f4..0000000000000
Binary files a/public/emoji/1f49b.png and /dev/null differ
diff --git a/public/emoji/1f49b.svg b/public/emoji/1f49b.svg
index c642502054c9a..b6e1978628909 100644
--- a/public/emoji/1f49b.svg
+++ b/public/emoji/1f49b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f49c.png b/public/emoji/1f49c.png
deleted file mode 100644
index 95c53a9ade6db..0000000000000
Binary files a/public/emoji/1f49c.png and /dev/null differ
diff --git a/public/emoji/1f49c.svg b/public/emoji/1f49c.svg
index 7adf079397915..29c430046206b 100644
--- a/public/emoji/1f49c.svg
+++ b/public/emoji/1f49c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f49d.png b/public/emoji/1f49d.png
deleted file mode 100644
index 902ceafe4d1e4..0000000000000
Binary files a/public/emoji/1f49d.png and /dev/null differ
diff --git a/public/emoji/1f49d.svg b/public/emoji/1f49d.svg
index 2e8a4968808aa..aab714aaf2c6e 100644
--- a/public/emoji/1f49d.svg
+++ b/public/emoji/1f49d.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f49e.png b/public/emoji/1f49e.png
deleted file mode 100644
index 7b9d1948f7361..0000000000000
Binary files a/public/emoji/1f49e.png and /dev/null differ
diff --git a/public/emoji/1f49e.svg b/public/emoji/1f49e.svg
index f90aae90f7759..d25ef6ba9ca62 100644
--- a/public/emoji/1f49e.svg
+++ b/public/emoji/1f49e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f49f.png b/public/emoji/1f49f.png
deleted file mode 100644
index 5443f60bc6389..0000000000000
Binary files a/public/emoji/1f49f.png and /dev/null differ
diff --git a/public/emoji/1f49f.svg b/public/emoji/1f49f.svg
index 2c1c7d2701de8..0276b32a89a44 100644
--- a/public/emoji/1f49f.svg
+++ b/public/emoji/1f49f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4a0.png b/public/emoji/1f4a0.png
deleted file mode 100644
index 2a22a26d1e2a3..0000000000000
Binary files a/public/emoji/1f4a0.png and /dev/null differ
diff --git a/public/emoji/1f4a0.svg b/public/emoji/1f4a0.svg
index 77363d199876c..37291c912e2b3 100644
--- a/public/emoji/1f4a0.svg
+++ b/public/emoji/1f4a0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4a1.png b/public/emoji/1f4a1.png
deleted file mode 100644
index 38e32e02d9f5c..0000000000000
Binary files a/public/emoji/1f4a1.png and /dev/null differ
diff --git a/public/emoji/1f4a1.svg b/public/emoji/1f4a1.svg
index 7e44d418a667b..dc2aa4d218995 100644
--- a/public/emoji/1f4a1.svg
+++ b/public/emoji/1f4a1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4a2.png b/public/emoji/1f4a2.png
deleted file mode 100644
index d63c2e000e4f8..0000000000000
Binary files a/public/emoji/1f4a2.png and /dev/null differ
diff --git a/public/emoji/1f4a2.svg b/public/emoji/1f4a2.svg
index d816b493466e7..6ba7cd3a0123d 100644
--- a/public/emoji/1f4a2.svg
+++ b/public/emoji/1f4a2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4a3.png b/public/emoji/1f4a3.png
deleted file mode 100644
index c7f8f81c939f2..0000000000000
Binary files a/public/emoji/1f4a3.png and /dev/null differ
diff --git a/public/emoji/1f4a3.svg b/public/emoji/1f4a3.svg
index b9a7e0f74743f..803d57e9e713e 100644
--- a/public/emoji/1f4a3.svg
+++ b/public/emoji/1f4a3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4a4.png b/public/emoji/1f4a4.png
deleted file mode 100644
index 9bc72b4469f95..0000000000000
Binary files a/public/emoji/1f4a4.png and /dev/null differ
diff --git a/public/emoji/1f4a4.svg b/public/emoji/1f4a4.svg
index 625c724827a19..83df1a48d19d8 100644
--- a/public/emoji/1f4a4.svg
+++ b/public/emoji/1f4a4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4a5.png b/public/emoji/1f4a5.png
deleted file mode 100644
index 9b0f027b1a8e2..0000000000000
Binary files a/public/emoji/1f4a5.png and /dev/null differ
diff --git a/public/emoji/1f4a5.svg b/public/emoji/1f4a5.svg
index 5ae4d00dbaaf7..f7d71d3eaeabc 100644
--- a/public/emoji/1f4a5.svg
+++ b/public/emoji/1f4a5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4a6.png b/public/emoji/1f4a6.png
deleted file mode 100644
index 4106117ebc85a..0000000000000
Binary files a/public/emoji/1f4a6.png and /dev/null differ
diff --git a/public/emoji/1f4a6.svg b/public/emoji/1f4a6.svg
index d33061edc1e0c..c57213860a72f 100644
--- a/public/emoji/1f4a6.svg
+++ b/public/emoji/1f4a6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4a7.png b/public/emoji/1f4a7.png
deleted file mode 100644
index 71241ec3061bd..0000000000000
Binary files a/public/emoji/1f4a7.png and /dev/null differ
diff --git a/public/emoji/1f4a7.svg b/public/emoji/1f4a7.svg
index e56136fe517cd..99699f6f0bd4d 100644
--- a/public/emoji/1f4a7.svg
+++ b/public/emoji/1f4a7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4a8.png b/public/emoji/1f4a8.png
deleted file mode 100644
index 064b8525c12fc..0000000000000
Binary files a/public/emoji/1f4a8.png and /dev/null differ
diff --git a/public/emoji/1f4a8.svg b/public/emoji/1f4a8.svg
index 5807909d14e01..13a086ec5c0fc 100644
--- a/public/emoji/1f4a8.svg
+++ b/public/emoji/1f4a8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4a9.png b/public/emoji/1f4a9.png
deleted file mode 100644
index 10b15e72d5657..0000000000000
Binary files a/public/emoji/1f4a9.png and /dev/null differ
diff --git a/public/emoji/1f4a9.svg b/public/emoji/1f4a9.svg
index 342ac404bcd0e..ef0d55c1f70a8 100644
--- a/public/emoji/1f4a9.svg
+++ b/public/emoji/1f4a9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4aa-1f3fb.png b/public/emoji/1f4aa-1f3fb.png
deleted file mode 100644
index 1522942ce517b..0000000000000
Binary files a/public/emoji/1f4aa-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f4aa-1f3fb.svg b/public/emoji/1f4aa-1f3fb.svg
index 174dc99d270ee..9781796896140 100644
--- a/public/emoji/1f4aa-1f3fb.svg
+++ b/public/emoji/1f4aa-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4aa-1f3fc.png b/public/emoji/1f4aa-1f3fc.png
deleted file mode 100644
index 569c6e832caa1..0000000000000
Binary files a/public/emoji/1f4aa-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f4aa-1f3fc.svg b/public/emoji/1f4aa-1f3fc.svg
index be0b9c70b0fcc..f572f93a02aad 100644
--- a/public/emoji/1f4aa-1f3fc.svg
+++ b/public/emoji/1f4aa-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4aa-1f3fd.png b/public/emoji/1f4aa-1f3fd.png
deleted file mode 100644
index 0a76b00fa8914..0000000000000
Binary files a/public/emoji/1f4aa-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f4aa-1f3fd.svg b/public/emoji/1f4aa-1f3fd.svg
index fa50395b98b1d..1d0ca6d95e740 100644
--- a/public/emoji/1f4aa-1f3fd.svg
+++ b/public/emoji/1f4aa-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4aa-1f3fe.png b/public/emoji/1f4aa-1f3fe.png
deleted file mode 100644
index f0cf31328e025..0000000000000
Binary files a/public/emoji/1f4aa-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f4aa-1f3fe.svg b/public/emoji/1f4aa-1f3fe.svg
index 820211811bd64..ae067f1c42f52 100644
--- a/public/emoji/1f4aa-1f3fe.svg
+++ b/public/emoji/1f4aa-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4aa-1f3ff.png b/public/emoji/1f4aa-1f3ff.png
deleted file mode 100644
index 4fda92460e836..0000000000000
Binary files a/public/emoji/1f4aa-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f4aa-1f3ff.svg b/public/emoji/1f4aa-1f3ff.svg
index 109ded67dc07b..30b3fa626233e 100644
--- a/public/emoji/1f4aa-1f3ff.svg
+++ b/public/emoji/1f4aa-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4aa.png b/public/emoji/1f4aa.png
deleted file mode 100644
index 7e67c1880f790..0000000000000
Binary files a/public/emoji/1f4aa.png and /dev/null differ
diff --git a/public/emoji/1f4aa.svg b/public/emoji/1f4aa.svg
index 772927cc41690..dcf6e9ede1ba4 100644
--- a/public/emoji/1f4aa.svg
+++ b/public/emoji/1f4aa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4ab.png b/public/emoji/1f4ab.png
deleted file mode 100644
index 85f52efad2494..0000000000000
Binary files a/public/emoji/1f4ab.png and /dev/null differ
diff --git a/public/emoji/1f4ab.svg b/public/emoji/1f4ab.svg
index 6f4ba8a7b2956..9df115d2c2ab8 100644
--- a/public/emoji/1f4ab.svg
+++ b/public/emoji/1f4ab.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4ac.png b/public/emoji/1f4ac.png
deleted file mode 100644
index a34ef741733a0..0000000000000
Binary files a/public/emoji/1f4ac.png and /dev/null differ
diff --git a/public/emoji/1f4ac.svg b/public/emoji/1f4ac.svg
index 663533c822f5a..fa87690187878 100644
--- a/public/emoji/1f4ac.svg
+++ b/public/emoji/1f4ac.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4ad.png b/public/emoji/1f4ad.png
deleted file mode 100644
index 72fe8fa7022dc..0000000000000
Binary files a/public/emoji/1f4ad.png and /dev/null differ
diff --git a/public/emoji/1f4ad.svg b/public/emoji/1f4ad.svg
index b9883d63aa368..6ff056df19f8c 100644
--- a/public/emoji/1f4ad.svg
+++ b/public/emoji/1f4ad.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4ae.png b/public/emoji/1f4ae.png
deleted file mode 100644
index d6af8b6007748..0000000000000
Binary files a/public/emoji/1f4ae.png and /dev/null differ
diff --git a/public/emoji/1f4ae.svg b/public/emoji/1f4ae.svg
index 3703f53e2e810..be4d941926305 100644
--- a/public/emoji/1f4ae.svg
+++ b/public/emoji/1f4ae.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4af.png b/public/emoji/1f4af.png
deleted file mode 100644
index 6903ff0304adb..0000000000000
Binary files a/public/emoji/1f4af.png and /dev/null differ
diff --git a/public/emoji/1f4af.svg b/public/emoji/1f4af.svg
index 8bb5a8027dd9a..80a08e01667ba 100644
--- a/public/emoji/1f4af.svg
+++ b/public/emoji/1f4af.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4b0.png b/public/emoji/1f4b0.png
deleted file mode 100644
index b9296be0902ea..0000000000000
Binary files a/public/emoji/1f4b0.png and /dev/null differ
diff --git a/public/emoji/1f4b0.svg b/public/emoji/1f4b0.svg
index 5dcbf7d1cd85c..a2325873283e9 100644
--- a/public/emoji/1f4b0.svg
+++ b/public/emoji/1f4b0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4b1.png b/public/emoji/1f4b1.png
deleted file mode 100644
index 4d46c6050e7da..0000000000000
Binary files a/public/emoji/1f4b1.png and /dev/null differ
diff --git a/public/emoji/1f4b1.svg b/public/emoji/1f4b1.svg
index 350402b9d6800..66cee5e038bd2 100644
--- a/public/emoji/1f4b1.svg
+++ b/public/emoji/1f4b1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4b2.png b/public/emoji/1f4b2.png
deleted file mode 100644
index ef2c2e205902b..0000000000000
Binary files a/public/emoji/1f4b2.png and /dev/null differ
diff --git a/public/emoji/1f4b2.svg b/public/emoji/1f4b2.svg
index 12419774cbca2..12abc53234e54 100644
--- a/public/emoji/1f4b2.svg
+++ b/public/emoji/1f4b2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4b3.png b/public/emoji/1f4b3.png
deleted file mode 100644
index 372777d5c6193..0000000000000
Binary files a/public/emoji/1f4b3.png and /dev/null differ
diff --git a/public/emoji/1f4b3.svg b/public/emoji/1f4b3.svg
index 289be20ad4c12..2a7941970e778 100644
--- a/public/emoji/1f4b3.svg
+++ b/public/emoji/1f4b3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4b4.png b/public/emoji/1f4b4.png
deleted file mode 100644
index 63ee4799d66f6..0000000000000
Binary files a/public/emoji/1f4b4.png and /dev/null differ
diff --git a/public/emoji/1f4b4.svg b/public/emoji/1f4b4.svg
index 73ada09a2f0ad..6d9d73854d732 100644
--- a/public/emoji/1f4b4.svg
+++ b/public/emoji/1f4b4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4b5.png b/public/emoji/1f4b5.png
deleted file mode 100644
index a9904c2829377..0000000000000
Binary files a/public/emoji/1f4b5.png and /dev/null differ
diff --git a/public/emoji/1f4b5.svg b/public/emoji/1f4b5.svg
index a6723a2be5ad8..1288e2638a63a 100644
--- a/public/emoji/1f4b5.svg
+++ b/public/emoji/1f4b5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4b6.png b/public/emoji/1f4b6.png
deleted file mode 100644
index a49020820e1d7..0000000000000
Binary files a/public/emoji/1f4b6.png and /dev/null differ
diff --git a/public/emoji/1f4b6.svg b/public/emoji/1f4b6.svg
index 4ab37625bfb9e..54ca3194d4b0f 100644
--- a/public/emoji/1f4b6.svg
+++ b/public/emoji/1f4b6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4b7.png b/public/emoji/1f4b7.png
deleted file mode 100644
index a0d4c4099e911..0000000000000
Binary files a/public/emoji/1f4b7.png and /dev/null differ
diff --git a/public/emoji/1f4b7.svg b/public/emoji/1f4b7.svg
index 59a5f522aca43..c619edaad82ad 100644
--- a/public/emoji/1f4b7.svg
+++ b/public/emoji/1f4b7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4b8.png b/public/emoji/1f4b8.png
deleted file mode 100644
index f022b04b3c2f0..0000000000000
Binary files a/public/emoji/1f4b8.png and /dev/null differ
diff --git a/public/emoji/1f4b8.svg b/public/emoji/1f4b8.svg
index 8e90f8e501e6a..f51e8fbb3a61f 100644
--- a/public/emoji/1f4b8.svg
+++ b/public/emoji/1f4b8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4b9.png b/public/emoji/1f4b9.png
deleted file mode 100644
index 9773f03be2282..0000000000000
Binary files a/public/emoji/1f4b9.png and /dev/null differ
diff --git a/public/emoji/1f4b9.svg b/public/emoji/1f4b9.svg
index b794bad1cd176..eff7d7351abc8 100644
--- a/public/emoji/1f4b9.svg
+++ b/public/emoji/1f4b9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4ba.png b/public/emoji/1f4ba.png
deleted file mode 100644
index a6d72d95adb68..0000000000000
Binary files a/public/emoji/1f4ba.png and /dev/null differ
diff --git a/public/emoji/1f4ba.svg b/public/emoji/1f4ba.svg
index a961080f2657b..1ae3854de13df 100644
--- a/public/emoji/1f4ba.svg
+++ b/public/emoji/1f4ba.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4bb.png b/public/emoji/1f4bb.png
deleted file mode 100644
index c1fee27e3a9f5..0000000000000
Binary files a/public/emoji/1f4bb.png and /dev/null differ
diff --git a/public/emoji/1f4bb.svg b/public/emoji/1f4bb.svg
index de2b1388a81f8..e995d485610b1 100644
--- a/public/emoji/1f4bb.svg
+++ b/public/emoji/1f4bb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4bc.png b/public/emoji/1f4bc.png
deleted file mode 100644
index b9912ba2148eb..0000000000000
Binary files a/public/emoji/1f4bc.png and /dev/null differ
diff --git a/public/emoji/1f4bc.svg b/public/emoji/1f4bc.svg
index 16fd4d5722175..9556a69ecc7fa 100644
--- a/public/emoji/1f4bc.svg
+++ b/public/emoji/1f4bc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4bd.png b/public/emoji/1f4bd.png
deleted file mode 100644
index 9fa94cfbe746b..0000000000000
Binary files a/public/emoji/1f4bd.png and /dev/null differ
diff --git a/public/emoji/1f4bd.svg b/public/emoji/1f4bd.svg
index f37c1636ceb09..e02677feeb0f6 100644
--- a/public/emoji/1f4bd.svg
+++ b/public/emoji/1f4bd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4be.png b/public/emoji/1f4be.png
deleted file mode 100644
index 072a76d3c138b..0000000000000
Binary files a/public/emoji/1f4be.png and /dev/null differ
diff --git a/public/emoji/1f4be.svg b/public/emoji/1f4be.svg
index 9eba4f910afdf..4a2be4b03b222 100644
--- a/public/emoji/1f4be.svg
+++ b/public/emoji/1f4be.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4bf.png b/public/emoji/1f4bf.png
deleted file mode 100644
index e6b01449cd9a2..0000000000000
Binary files a/public/emoji/1f4bf.png and /dev/null differ
diff --git a/public/emoji/1f4bf.svg b/public/emoji/1f4bf.svg
index eac0a2aabe2e4..78c4bdafd5bf8 100644
--- a/public/emoji/1f4bf.svg
+++ b/public/emoji/1f4bf.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4c0.png b/public/emoji/1f4c0.png
deleted file mode 100644
index 045a6f7a08d3e..0000000000000
Binary files a/public/emoji/1f4c0.png and /dev/null differ
diff --git a/public/emoji/1f4c0.svg b/public/emoji/1f4c0.svg
index 2547f71c1be9b..341784d8e2904 100644
--- a/public/emoji/1f4c0.svg
+++ b/public/emoji/1f4c0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4c1.png b/public/emoji/1f4c1.png
deleted file mode 100644
index addedaf087061..0000000000000
Binary files a/public/emoji/1f4c1.png and /dev/null differ
diff --git a/public/emoji/1f4c1.svg b/public/emoji/1f4c1.svg
index 8eaf3c99c3709..1fd3ac19c6ad0 100644
--- a/public/emoji/1f4c1.svg
+++ b/public/emoji/1f4c1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4c2.png b/public/emoji/1f4c2.png
deleted file mode 100644
index 3993b09222f3d..0000000000000
Binary files a/public/emoji/1f4c2.png and /dev/null differ
diff --git a/public/emoji/1f4c2.svg b/public/emoji/1f4c2.svg
index 85fc741489a26..74498396df25b 100644
--- a/public/emoji/1f4c2.svg
+++ b/public/emoji/1f4c2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4c3.png b/public/emoji/1f4c3.png
deleted file mode 100644
index 06355319c7432..0000000000000
Binary files a/public/emoji/1f4c3.png and /dev/null differ
diff --git a/public/emoji/1f4c3.svg b/public/emoji/1f4c3.svg
index 46b14fcc86570..a275b2735204a 100644
--- a/public/emoji/1f4c3.svg
+++ b/public/emoji/1f4c3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4c4.png b/public/emoji/1f4c4.png
deleted file mode 100644
index ba4ed757e01f3..0000000000000
Binary files a/public/emoji/1f4c4.png and /dev/null differ
diff --git a/public/emoji/1f4c4.svg b/public/emoji/1f4c4.svg
index b782c6146150d..3b2d58b31a96b 100644
--- a/public/emoji/1f4c4.svg
+++ b/public/emoji/1f4c4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4c5.png b/public/emoji/1f4c5.png
deleted file mode 100644
index f05b3da97b8a0..0000000000000
Binary files a/public/emoji/1f4c5.png and /dev/null differ
diff --git a/public/emoji/1f4c5.svg b/public/emoji/1f4c5.svg
index 5b18759b06bd2..2defa94058891 100644
--- a/public/emoji/1f4c5.svg
+++ b/public/emoji/1f4c5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4c6.png b/public/emoji/1f4c6.png
deleted file mode 100644
index 47353b744471c..0000000000000
Binary files a/public/emoji/1f4c6.png and /dev/null differ
diff --git a/public/emoji/1f4c6.svg b/public/emoji/1f4c6.svg
index a82a59085604b..1356a920e0325 100644
--- a/public/emoji/1f4c6.svg
+++ b/public/emoji/1f4c6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4c7.png b/public/emoji/1f4c7.png
deleted file mode 100644
index 151e11cb3b46c..0000000000000
Binary files a/public/emoji/1f4c7.png and /dev/null differ
diff --git a/public/emoji/1f4c7.svg b/public/emoji/1f4c7.svg
index 21c4b7730fae4..d8f8fb4470f6f 100644
--- a/public/emoji/1f4c7.svg
+++ b/public/emoji/1f4c7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4c8.png b/public/emoji/1f4c8.png
deleted file mode 100644
index f13cfcf995689..0000000000000
Binary files a/public/emoji/1f4c8.png and /dev/null differ
diff --git a/public/emoji/1f4c8.svg b/public/emoji/1f4c8.svg
index 69c80f6b8f522..6500ccbb7cd93 100644
--- a/public/emoji/1f4c8.svg
+++ b/public/emoji/1f4c8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4c9.png b/public/emoji/1f4c9.png
deleted file mode 100644
index 5222ec72d8540..0000000000000
Binary files a/public/emoji/1f4c9.png and /dev/null differ
diff --git a/public/emoji/1f4c9.svg b/public/emoji/1f4c9.svg
index 621097002060d..1989d48fafc36 100644
--- a/public/emoji/1f4c9.svg
+++ b/public/emoji/1f4c9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4ca.png b/public/emoji/1f4ca.png
deleted file mode 100644
index 53c89455008d9..0000000000000
Binary files a/public/emoji/1f4ca.png and /dev/null differ
diff --git a/public/emoji/1f4ca.svg b/public/emoji/1f4ca.svg
index 619ce84e4d159..b7aee13b66150 100644
--- a/public/emoji/1f4ca.svg
+++ b/public/emoji/1f4ca.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4cb.png b/public/emoji/1f4cb.png
deleted file mode 100644
index 7edcfc52509b2..0000000000000
Binary files a/public/emoji/1f4cb.png and /dev/null differ
diff --git a/public/emoji/1f4cb.svg b/public/emoji/1f4cb.svg
index 29f1ef7fbfb4f..b2577d99a1637 100644
--- a/public/emoji/1f4cb.svg
+++ b/public/emoji/1f4cb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4cc.png b/public/emoji/1f4cc.png
deleted file mode 100644
index 57e07d7f4ccac..0000000000000
Binary files a/public/emoji/1f4cc.png and /dev/null differ
diff --git a/public/emoji/1f4cc.svg b/public/emoji/1f4cc.svg
index 5403772287838..ebc2187e4574f 100644
--- a/public/emoji/1f4cc.svg
+++ b/public/emoji/1f4cc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4cd.png b/public/emoji/1f4cd.png
deleted file mode 100644
index 28b9d72866e28..0000000000000
Binary files a/public/emoji/1f4cd.png and /dev/null differ
diff --git a/public/emoji/1f4cd.svg b/public/emoji/1f4cd.svg
index fa9f105cf8a04..e86e5d8edba4e 100644
--- a/public/emoji/1f4cd.svg
+++ b/public/emoji/1f4cd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4ce.png b/public/emoji/1f4ce.png
deleted file mode 100644
index 8cd8d4f87506f..0000000000000
Binary files a/public/emoji/1f4ce.png and /dev/null differ
diff --git a/public/emoji/1f4ce.svg b/public/emoji/1f4ce.svg
index 47c8d2c6a0ff0..7d2e463ec271c 100644
--- a/public/emoji/1f4ce.svg
+++ b/public/emoji/1f4ce.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4cf.png b/public/emoji/1f4cf.png
deleted file mode 100644
index 1017b7433a1d9..0000000000000
Binary files a/public/emoji/1f4cf.png and /dev/null differ
diff --git a/public/emoji/1f4cf.svg b/public/emoji/1f4cf.svg
index 3d66c06746d32..50062de145c5f 100644
--- a/public/emoji/1f4cf.svg
+++ b/public/emoji/1f4cf.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4d0.png b/public/emoji/1f4d0.png
deleted file mode 100644
index 77dee9ee8435d..0000000000000
Binary files a/public/emoji/1f4d0.png and /dev/null differ
diff --git a/public/emoji/1f4d0.svg b/public/emoji/1f4d0.svg
index 5d4c52db9fca2..08704eacf1761 100644
--- a/public/emoji/1f4d0.svg
+++ b/public/emoji/1f4d0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4d1.png b/public/emoji/1f4d1.png
deleted file mode 100644
index f8d9e01b42860..0000000000000
Binary files a/public/emoji/1f4d1.png and /dev/null differ
diff --git a/public/emoji/1f4d1.svg b/public/emoji/1f4d1.svg
index b0ff5864364d4..573134838ee65 100644
--- a/public/emoji/1f4d1.svg
+++ b/public/emoji/1f4d1.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4d2.png b/public/emoji/1f4d2.png
deleted file mode 100644
index 13e7561a4bd0d..0000000000000
Binary files a/public/emoji/1f4d2.png and /dev/null differ
diff --git a/public/emoji/1f4d2.svg b/public/emoji/1f4d2.svg
index 93fecc88c6870..32f4570648b82 100644
--- a/public/emoji/1f4d2.svg
+++ b/public/emoji/1f4d2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4d3.png b/public/emoji/1f4d3.png
deleted file mode 100644
index f6c28b4915d5f..0000000000000
Binary files a/public/emoji/1f4d3.png and /dev/null differ
diff --git a/public/emoji/1f4d3.svg b/public/emoji/1f4d3.svg
index 604ba14e9fcde..65c7642c2e338 100644
--- a/public/emoji/1f4d3.svg
+++ b/public/emoji/1f4d3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4d4.png b/public/emoji/1f4d4.png
deleted file mode 100644
index 03f566b6d2c43..0000000000000
Binary files a/public/emoji/1f4d4.png and /dev/null differ
diff --git a/public/emoji/1f4d4.svg b/public/emoji/1f4d4.svg
index 211f080c97d6b..9f269a7e41fb0 100644
--- a/public/emoji/1f4d4.svg
+++ b/public/emoji/1f4d4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4d5.png b/public/emoji/1f4d5.png
deleted file mode 100644
index 6395cf2151e55..0000000000000
Binary files a/public/emoji/1f4d5.png and /dev/null differ
diff --git a/public/emoji/1f4d5.svg b/public/emoji/1f4d5.svg
index be6b7fa3ccf01..821ba5743215b 100644
--- a/public/emoji/1f4d5.svg
+++ b/public/emoji/1f4d5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4d6.png b/public/emoji/1f4d6.png
deleted file mode 100644
index 0f4447ed3960e..0000000000000
Binary files a/public/emoji/1f4d6.png and /dev/null differ
diff --git a/public/emoji/1f4d6.svg b/public/emoji/1f4d6.svg
index 40a387e31f38e..47e6ccb63f4fe 100644
--- a/public/emoji/1f4d6.svg
+++ b/public/emoji/1f4d6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4d7.png b/public/emoji/1f4d7.png
deleted file mode 100644
index e5e411cf3b55f..0000000000000
Binary files a/public/emoji/1f4d7.png and /dev/null differ
diff --git a/public/emoji/1f4d7.svg b/public/emoji/1f4d7.svg
index 5ef4524b9af58..8c5f2c7f788eb 100644
--- a/public/emoji/1f4d7.svg
+++ b/public/emoji/1f4d7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4d8.png b/public/emoji/1f4d8.png
deleted file mode 100644
index e1e455401ccda..0000000000000
Binary files a/public/emoji/1f4d8.png and /dev/null differ
diff --git a/public/emoji/1f4d8.svg b/public/emoji/1f4d8.svg
index 3e1ba1c8fa0bb..e20be569c91f2 100644
--- a/public/emoji/1f4d8.svg
+++ b/public/emoji/1f4d8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4d9.png b/public/emoji/1f4d9.png
deleted file mode 100644
index ab40e6ae6a246..0000000000000
Binary files a/public/emoji/1f4d9.png and /dev/null differ
diff --git a/public/emoji/1f4d9.svg b/public/emoji/1f4d9.svg
index 0758e63e0bb8a..aa9ac8ac7ed64 100644
--- a/public/emoji/1f4d9.svg
+++ b/public/emoji/1f4d9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4da.png b/public/emoji/1f4da.png
deleted file mode 100644
index 59a8bafeb0d1d..0000000000000
Binary files a/public/emoji/1f4da.png and /dev/null differ
diff --git a/public/emoji/1f4da.svg b/public/emoji/1f4da.svg
index 8469d334ed4a9..fd830ccbab23d 100644
--- a/public/emoji/1f4da.svg
+++ b/public/emoji/1f4da.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4db.png b/public/emoji/1f4db.png
deleted file mode 100644
index ec5ee213e20f1..0000000000000
Binary files a/public/emoji/1f4db.png and /dev/null differ
diff --git a/public/emoji/1f4db.svg b/public/emoji/1f4db.svg
index 616945d2ddeed..ad86629b7956f 100644
--- a/public/emoji/1f4db.svg
+++ b/public/emoji/1f4db.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4dc.png b/public/emoji/1f4dc.png
deleted file mode 100644
index 50ee5dcd4b9e2..0000000000000
Binary files a/public/emoji/1f4dc.png and /dev/null differ
diff --git a/public/emoji/1f4dc.svg b/public/emoji/1f4dc.svg
index 6b1d35971c63a..b29dfd1d58540 100644
--- a/public/emoji/1f4dc.svg
+++ b/public/emoji/1f4dc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4dd.png b/public/emoji/1f4dd.png
deleted file mode 100644
index edc6155e168b8..0000000000000
Binary files a/public/emoji/1f4dd.png and /dev/null differ
diff --git a/public/emoji/1f4dd.svg b/public/emoji/1f4dd.svg
index 5e6f46c8b1223..583017b87d9cf 100644
--- a/public/emoji/1f4dd.svg
+++ b/public/emoji/1f4dd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4de.png b/public/emoji/1f4de.png
deleted file mode 100644
index 69388316c3559..0000000000000
Binary files a/public/emoji/1f4de.png and /dev/null differ
diff --git a/public/emoji/1f4de.svg b/public/emoji/1f4de.svg
index a4039435d62ec..e253cab80f3fe 100644
--- a/public/emoji/1f4de.svg
+++ b/public/emoji/1f4de.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4df.png b/public/emoji/1f4df.png
deleted file mode 100644
index b24b99306a243..0000000000000
Binary files a/public/emoji/1f4df.png and /dev/null differ
diff --git a/public/emoji/1f4df.svg b/public/emoji/1f4df.svg
index a46aa37d0d367..f8a0609f8d14e 100644
--- a/public/emoji/1f4df.svg
+++ b/public/emoji/1f4df.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4e0.png b/public/emoji/1f4e0.png
deleted file mode 100644
index 6f929e294c262..0000000000000
Binary files a/public/emoji/1f4e0.png and /dev/null differ
diff --git a/public/emoji/1f4e0.svg b/public/emoji/1f4e0.svg
index 7e52dbfd0ea3a..cf9dfd4f14d12 100644
--- a/public/emoji/1f4e0.svg
+++ b/public/emoji/1f4e0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4e1.png b/public/emoji/1f4e1.png
deleted file mode 100644
index db0372795f4c0..0000000000000
Binary files a/public/emoji/1f4e1.png and /dev/null differ
diff --git a/public/emoji/1f4e1.svg b/public/emoji/1f4e1.svg
index f15cb8a0e39be..e345be12dbb4a 100644
--- a/public/emoji/1f4e1.svg
+++ b/public/emoji/1f4e1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4e2.png b/public/emoji/1f4e2.png
deleted file mode 100644
index 5fd76a95b8203..0000000000000
Binary files a/public/emoji/1f4e2.png and /dev/null differ
diff --git a/public/emoji/1f4e2.svg b/public/emoji/1f4e2.svg
index 44179fefca4dd..e6250d2bf344c 100644
--- a/public/emoji/1f4e2.svg
+++ b/public/emoji/1f4e2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4e3.png b/public/emoji/1f4e3.png
deleted file mode 100644
index 4e6735188e382..0000000000000
Binary files a/public/emoji/1f4e3.png and /dev/null differ
diff --git a/public/emoji/1f4e3.svg b/public/emoji/1f4e3.svg
index 0967abab91c63..e217cdaf279a8 100644
--- a/public/emoji/1f4e3.svg
+++ b/public/emoji/1f4e3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4e4.png b/public/emoji/1f4e4.png
deleted file mode 100644
index 46493ed5b2ce8..0000000000000
Binary files a/public/emoji/1f4e4.png and /dev/null differ
diff --git a/public/emoji/1f4e4.svg b/public/emoji/1f4e4.svg
index b7b006630a347..69fce0a9ba7c6 100644
--- a/public/emoji/1f4e4.svg
+++ b/public/emoji/1f4e4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4e5.png b/public/emoji/1f4e5.png
deleted file mode 100644
index 41a6be2b0ee48..0000000000000
Binary files a/public/emoji/1f4e5.png and /dev/null differ
diff --git a/public/emoji/1f4e5.svg b/public/emoji/1f4e5.svg
index 75df61a63bf79..10c940b95d04a 100644
--- a/public/emoji/1f4e5.svg
+++ b/public/emoji/1f4e5.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4e6.png b/public/emoji/1f4e6.png
deleted file mode 100644
index 85431756ad8c5..0000000000000
Binary files a/public/emoji/1f4e6.png and /dev/null differ
diff --git a/public/emoji/1f4e6.svg b/public/emoji/1f4e6.svg
index 95182fd1bfa42..d0b8d6d1d4209 100644
--- a/public/emoji/1f4e6.svg
+++ b/public/emoji/1f4e6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4e7.png b/public/emoji/1f4e7.png
deleted file mode 100644
index d22e654a20bc7..0000000000000
Binary files a/public/emoji/1f4e7.png and /dev/null differ
diff --git a/public/emoji/1f4e7.svg b/public/emoji/1f4e7.svg
index c296f507041fe..60b6967621b6b 100644
--- a/public/emoji/1f4e7.svg
+++ b/public/emoji/1f4e7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4e8.png b/public/emoji/1f4e8.png
deleted file mode 100644
index fd22e88182e6b..0000000000000
Binary files a/public/emoji/1f4e8.png and /dev/null differ
diff --git a/public/emoji/1f4e8.svg b/public/emoji/1f4e8.svg
index 694c04ee9405d..d2379e22afa7f 100644
--- a/public/emoji/1f4e8.svg
+++ b/public/emoji/1f4e8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4e9.png b/public/emoji/1f4e9.png
deleted file mode 100644
index 7448a6b76735c..0000000000000
Binary files a/public/emoji/1f4e9.png and /dev/null differ
diff --git a/public/emoji/1f4e9.svg b/public/emoji/1f4e9.svg
index 2e5dd66c454d8..bde5374d4251e 100644
--- a/public/emoji/1f4e9.svg
+++ b/public/emoji/1f4e9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4ea.png b/public/emoji/1f4ea.png
deleted file mode 100644
index ddc705db0d83c..0000000000000
Binary files a/public/emoji/1f4ea.png and /dev/null differ
diff --git a/public/emoji/1f4ea.svg b/public/emoji/1f4ea.svg
index b825c02f22694..6c7e0d1145325 100644
--- a/public/emoji/1f4ea.svg
+++ b/public/emoji/1f4ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4eb.png b/public/emoji/1f4eb.png
deleted file mode 100644
index ef5174e40dd8e..0000000000000
Binary files a/public/emoji/1f4eb.png and /dev/null differ
diff --git a/public/emoji/1f4eb.svg b/public/emoji/1f4eb.svg
index fcd20da49927a..a48e2210e575c 100644
--- a/public/emoji/1f4eb.svg
+++ b/public/emoji/1f4eb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4ec.png b/public/emoji/1f4ec.png
deleted file mode 100644
index 5460616a5b1dc..0000000000000
Binary files a/public/emoji/1f4ec.png and /dev/null differ
diff --git a/public/emoji/1f4ec.svg b/public/emoji/1f4ec.svg
index 2393774c73351..0ebfec4c59686 100644
--- a/public/emoji/1f4ec.svg
+++ b/public/emoji/1f4ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4ed.png b/public/emoji/1f4ed.png
deleted file mode 100644
index f9aeee6b15a71..0000000000000
Binary files a/public/emoji/1f4ed.png and /dev/null differ
diff --git a/public/emoji/1f4ed.svg b/public/emoji/1f4ed.svg
index c4fddbace29be..ebecab75e0adf 100644
--- a/public/emoji/1f4ed.svg
+++ b/public/emoji/1f4ed.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4ee.png b/public/emoji/1f4ee.png
deleted file mode 100644
index 07c9c4ab3d6e3..0000000000000
Binary files a/public/emoji/1f4ee.png and /dev/null differ
diff --git a/public/emoji/1f4ee.svg b/public/emoji/1f4ee.svg
index 2c53c56e2b637..4806b51ff80b3 100644
--- a/public/emoji/1f4ee.svg
+++ b/public/emoji/1f4ee.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4ef.png b/public/emoji/1f4ef.png
deleted file mode 100644
index c173b8dbd67d0..0000000000000
Binary files a/public/emoji/1f4ef.png and /dev/null differ
diff --git a/public/emoji/1f4ef.svg b/public/emoji/1f4ef.svg
index 6ead0b07b407c..e60c3067e47b3 100644
--- a/public/emoji/1f4ef.svg
+++ b/public/emoji/1f4ef.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4f0.png b/public/emoji/1f4f0.png
deleted file mode 100644
index 2aa8f060bdef5..0000000000000
Binary files a/public/emoji/1f4f0.png and /dev/null differ
diff --git a/public/emoji/1f4f0.svg b/public/emoji/1f4f0.svg
index 51f9f85a07d06..d5a70ea3c8d58 100644
--- a/public/emoji/1f4f0.svg
+++ b/public/emoji/1f4f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4f1.png b/public/emoji/1f4f1.png
deleted file mode 100644
index fd377acf87203..0000000000000
Binary files a/public/emoji/1f4f1.png and /dev/null differ
diff --git a/public/emoji/1f4f1.svg b/public/emoji/1f4f1.svg
index bbb0684ac5364..e0387a1c4aed0 100644
--- a/public/emoji/1f4f1.svg
+++ b/public/emoji/1f4f1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4f2.png b/public/emoji/1f4f2.png
deleted file mode 100644
index e2f308f8e461b..0000000000000
Binary files a/public/emoji/1f4f2.png and /dev/null differ
diff --git a/public/emoji/1f4f2.svg b/public/emoji/1f4f2.svg
index 9f323e496fc17..95437b263d3f0 100644
--- a/public/emoji/1f4f2.svg
+++ b/public/emoji/1f4f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4f3.png b/public/emoji/1f4f3.png
deleted file mode 100644
index cc46510e48eeb..0000000000000
Binary files a/public/emoji/1f4f3.png and /dev/null differ
diff --git a/public/emoji/1f4f3.svg b/public/emoji/1f4f3.svg
index 7f2e947b18c13..5c2e1a4f500b1 100644
--- a/public/emoji/1f4f3.svg
+++ b/public/emoji/1f4f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4f4.png b/public/emoji/1f4f4.png
deleted file mode 100644
index 8b661ec1c94a7..0000000000000
Binary files a/public/emoji/1f4f4.png and /dev/null differ
diff --git a/public/emoji/1f4f4.svg b/public/emoji/1f4f4.svg
index 3f7fd7f1520fd..5dc3755689b14 100644
--- a/public/emoji/1f4f4.svg
+++ b/public/emoji/1f4f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4f5.png b/public/emoji/1f4f5.png
deleted file mode 100644
index 7b1ae6ea579cc..0000000000000
Binary files a/public/emoji/1f4f5.png and /dev/null differ
diff --git a/public/emoji/1f4f5.svg b/public/emoji/1f4f5.svg
index dfeb0985c857c..86b5a5df38033 100644
--- a/public/emoji/1f4f5.svg
+++ b/public/emoji/1f4f5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4f6.png b/public/emoji/1f4f6.png
deleted file mode 100644
index ee2b5a4b5193b..0000000000000
Binary files a/public/emoji/1f4f6.png and /dev/null differ
diff --git a/public/emoji/1f4f6.svg b/public/emoji/1f4f6.svg
index f6033621b08f6..b9eee1d413941 100644
--- a/public/emoji/1f4f6.svg
+++ b/public/emoji/1f4f6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4f7.png b/public/emoji/1f4f7.png
deleted file mode 100644
index 0a3429f72eff3..0000000000000
Binary files a/public/emoji/1f4f7.png and /dev/null differ
diff --git a/public/emoji/1f4f7.svg b/public/emoji/1f4f7.svg
index ed7884b41599f..6cc2096beeb53 100644
--- a/public/emoji/1f4f7.svg
+++ b/public/emoji/1f4f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4f8.png b/public/emoji/1f4f8.png
deleted file mode 100644
index 27471da2029d8..0000000000000
Binary files a/public/emoji/1f4f8.png and /dev/null differ
diff --git a/public/emoji/1f4f8.svg b/public/emoji/1f4f8.svg
index 7814bdd9293cd..e9f242d9e68e5 100644
--- a/public/emoji/1f4f8.svg
+++ b/public/emoji/1f4f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4f9.png b/public/emoji/1f4f9.png
deleted file mode 100644
index 85b300d425c3d..0000000000000
Binary files a/public/emoji/1f4f9.png and /dev/null differ
diff --git a/public/emoji/1f4f9.svg b/public/emoji/1f4f9.svg
index 8c71d01a14a37..c279f12e938c3 100644
--- a/public/emoji/1f4f9.svg
+++ b/public/emoji/1f4f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4fa.png b/public/emoji/1f4fa.png
deleted file mode 100644
index 999f1fb5c6dde..0000000000000
Binary files a/public/emoji/1f4fa.png and /dev/null differ
diff --git a/public/emoji/1f4fa.svg b/public/emoji/1f4fa.svg
index 3d446fd6e7d4e..b967aef26ace8 100644
--- a/public/emoji/1f4fa.svg
+++ b/public/emoji/1f4fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4fb.png b/public/emoji/1f4fb.png
deleted file mode 100644
index dec381fa2427f..0000000000000
Binary files a/public/emoji/1f4fb.png and /dev/null differ
diff --git a/public/emoji/1f4fb.svg b/public/emoji/1f4fb.svg
index 4a7bff1725aed..88b7b95181e5c 100644
--- a/public/emoji/1f4fb.svg
+++ b/public/emoji/1f4fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4fc.png b/public/emoji/1f4fc.png
deleted file mode 100644
index b9eb78ecd92e9..0000000000000
Binary files a/public/emoji/1f4fc.png and /dev/null differ
diff --git a/public/emoji/1f4fc.svg b/public/emoji/1f4fc.svg
index 6b1e3d0c26a3b..991e95f54b665 100644
--- a/public/emoji/1f4fc.svg
+++ b/public/emoji/1f4fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4fd.png b/public/emoji/1f4fd.png
deleted file mode 100644
index ce9ab0daa28ed..0000000000000
Binary files a/public/emoji/1f4fd.png and /dev/null differ
diff --git a/public/emoji/1f4fd.svg b/public/emoji/1f4fd.svg
index a440cbfe4951f..922c71b8d1b57 100644
--- a/public/emoji/1f4fd.svg
+++ b/public/emoji/1f4fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f4ff.png b/public/emoji/1f4ff.png
deleted file mode 100644
index a4b6dfcc62ef4..0000000000000
Binary files a/public/emoji/1f4ff.png and /dev/null differ
diff --git a/public/emoji/1f4ff.svg b/public/emoji/1f4ff.svg
index 1fa2a4abf0250..b5adfabe4b7f3 100644
--- a/public/emoji/1f4ff.svg
+++ b/public/emoji/1f4ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f500.png b/public/emoji/1f500.png
deleted file mode 100644
index 5904badde65ed..0000000000000
Binary files a/public/emoji/1f500.png and /dev/null differ
diff --git a/public/emoji/1f500.svg b/public/emoji/1f500.svg
index 81a5389c750c5..25b1bf27b5d22 100644
--- a/public/emoji/1f500.svg
+++ b/public/emoji/1f500.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f501.png b/public/emoji/1f501.png
deleted file mode 100644
index 540ce4e0fbaf9..0000000000000
Binary files a/public/emoji/1f501.png and /dev/null differ
diff --git a/public/emoji/1f501.svg b/public/emoji/1f501.svg
index fccd8243cf8ae..2b59af7c2fbca 100644
--- a/public/emoji/1f501.svg
+++ b/public/emoji/1f501.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f502.png b/public/emoji/1f502.png
deleted file mode 100644
index 9567e83337ff8..0000000000000
Binary files a/public/emoji/1f502.png and /dev/null differ
diff --git a/public/emoji/1f502.svg b/public/emoji/1f502.svg
index 3372590bd8c27..7ab33b25f22cb 100644
--- a/public/emoji/1f502.svg
+++ b/public/emoji/1f502.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f503.png b/public/emoji/1f503.png
deleted file mode 100644
index 26e49c38388db..0000000000000
Binary files a/public/emoji/1f503.png and /dev/null differ
diff --git a/public/emoji/1f503.svg b/public/emoji/1f503.svg
index 3aa0d63ba655e..716355f635179 100644
--- a/public/emoji/1f503.svg
+++ b/public/emoji/1f503.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f504.png b/public/emoji/1f504.png
deleted file mode 100644
index 8d06d8e091226..0000000000000
Binary files a/public/emoji/1f504.png and /dev/null differ
diff --git a/public/emoji/1f504.svg b/public/emoji/1f504.svg
index 2eefda0d3f2cd..61b0c0459fa70 100644
--- a/public/emoji/1f504.svg
+++ b/public/emoji/1f504.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f505.png b/public/emoji/1f505.png
deleted file mode 100644
index 543011d3961c5..0000000000000
Binary files a/public/emoji/1f505.png and /dev/null differ
diff --git a/public/emoji/1f505.svg b/public/emoji/1f505.svg
index 206610ecf249a..060996279428e 100644
--- a/public/emoji/1f505.svg
+++ b/public/emoji/1f505.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f506.png b/public/emoji/1f506.png
deleted file mode 100644
index c41f2d5fd5031..0000000000000
Binary files a/public/emoji/1f506.png and /dev/null differ
diff --git a/public/emoji/1f506.svg b/public/emoji/1f506.svg
index dc65b9a6d632b..251d4ffa7a44a 100644
--- a/public/emoji/1f506.svg
+++ b/public/emoji/1f506.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f507.png b/public/emoji/1f507.png
deleted file mode 100644
index 7c1788e5075a2..0000000000000
Binary files a/public/emoji/1f507.png and /dev/null differ
diff --git a/public/emoji/1f507.svg b/public/emoji/1f507.svg
index 4d10ceb248561..9dc1fe9037e96 100644
--- a/public/emoji/1f507.svg
+++ b/public/emoji/1f507.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f508.png b/public/emoji/1f508.png
deleted file mode 100644
index 7bcffb8fc4374..0000000000000
Binary files a/public/emoji/1f508.png and /dev/null differ
diff --git a/public/emoji/1f508.svg b/public/emoji/1f508.svg
index 9eac4a0d00513..33b12bddad3f7 100644
--- a/public/emoji/1f508.svg
+++ b/public/emoji/1f508.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f509.png b/public/emoji/1f509.png
deleted file mode 100644
index e75ddca53ba13..0000000000000
Binary files a/public/emoji/1f509.png and /dev/null differ
diff --git a/public/emoji/1f509.svg b/public/emoji/1f509.svg
index 5460d8e9860ae..7566b83e8dba5 100644
--- a/public/emoji/1f509.svg
+++ b/public/emoji/1f509.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f50a.png b/public/emoji/1f50a.png
deleted file mode 100644
index 8370033a53995..0000000000000
Binary files a/public/emoji/1f50a.png and /dev/null differ
diff --git a/public/emoji/1f50a.svg b/public/emoji/1f50a.svg
index eb2e94c838bd8..8614d3e92af9a 100644
--- a/public/emoji/1f50a.svg
+++ b/public/emoji/1f50a.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f50b.png b/public/emoji/1f50b.png
deleted file mode 100644
index f593e2bdb65b3..0000000000000
Binary files a/public/emoji/1f50b.png and /dev/null differ
diff --git a/public/emoji/1f50b.svg b/public/emoji/1f50b.svg
index 370d5cfe0b84a..d8b375c150fd4 100644
--- a/public/emoji/1f50b.svg
+++ b/public/emoji/1f50b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f50c.png b/public/emoji/1f50c.png
deleted file mode 100644
index 31d1eb215b481..0000000000000
Binary files a/public/emoji/1f50c.png and /dev/null differ
diff --git a/public/emoji/1f50c.svg b/public/emoji/1f50c.svg
index bbbcf0a5a5105..d3ecea9ab832e 100644
--- a/public/emoji/1f50c.svg
+++ b/public/emoji/1f50c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f50d.png b/public/emoji/1f50d.png
deleted file mode 100644
index 55487156ac62b..0000000000000
Binary files a/public/emoji/1f50d.png and /dev/null differ
diff --git a/public/emoji/1f50d.svg b/public/emoji/1f50d.svg
index 7f1758d676149..098d5e0818c9b 100644
--- a/public/emoji/1f50d.svg
+++ b/public/emoji/1f50d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f50e.png b/public/emoji/1f50e.png
deleted file mode 100644
index 0f4b1bca876d8..0000000000000
Binary files a/public/emoji/1f50e.png and /dev/null differ
diff --git a/public/emoji/1f50e.svg b/public/emoji/1f50e.svg
index a60c2aa11361e..22c9309059d62 100644
--- a/public/emoji/1f50e.svg
+++ b/public/emoji/1f50e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f50f.png b/public/emoji/1f50f.png
deleted file mode 100644
index 19a07d162fb4d..0000000000000
Binary files a/public/emoji/1f50f.png and /dev/null differ
diff --git a/public/emoji/1f50f.svg b/public/emoji/1f50f.svg
index eb3c3fb47709e..a6fbfdbf1405e 100644
--- a/public/emoji/1f50f.svg
+++ b/public/emoji/1f50f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f510.png b/public/emoji/1f510.png
deleted file mode 100644
index 1c1cd5d074175..0000000000000
Binary files a/public/emoji/1f510.png and /dev/null differ
diff --git a/public/emoji/1f510.svg b/public/emoji/1f510.svg
index 2d9a97df66210..0f9f441bfbbea 100644
--- a/public/emoji/1f510.svg
+++ b/public/emoji/1f510.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f511.png b/public/emoji/1f511.png
deleted file mode 100644
index 319cd1b884cfa..0000000000000
Binary files a/public/emoji/1f511.png and /dev/null differ
diff --git a/public/emoji/1f511.svg b/public/emoji/1f511.svg
index 74b38d18c4058..9a720cdf4c9a3 100644
--- a/public/emoji/1f511.svg
+++ b/public/emoji/1f511.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f512.png b/public/emoji/1f512.png
deleted file mode 100644
index 5a739c46644b4..0000000000000
Binary files a/public/emoji/1f512.png and /dev/null differ
diff --git a/public/emoji/1f512.svg b/public/emoji/1f512.svg
index fac55a2f0bcbf..f0f1bb1534c11 100644
--- a/public/emoji/1f512.svg
+++ b/public/emoji/1f512.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f513.png b/public/emoji/1f513.png
deleted file mode 100644
index 4a74a693911ec..0000000000000
Binary files a/public/emoji/1f513.png and /dev/null differ
diff --git a/public/emoji/1f513.svg b/public/emoji/1f513.svg
index 4d650b67e494e..43332372205ec 100644
--- a/public/emoji/1f513.svg
+++ b/public/emoji/1f513.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f514.png b/public/emoji/1f514.png
deleted file mode 100644
index 5b3b0461999ac..0000000000000
Binary files a/public/emoji/1f514.png and /dev/null differ
diff --git a/public/emoji/1f514.svg b/public/emoji/1f514.svg
index e64706564cb83..5210eece67501 100644
--- a/public/emoji/1f514.svg
+++ b/public/emoji/1f514.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f515.png b/public/emoji/1f515.png
deleted file mode 100644
index 15cb38dd1e7b0..0000000000000
Binary files a/public/emoji/1f515.png and /dev/null differ
diff --git a/public/emoji/1f515.svg b/public/emoji/1f515.svg
index a37acaff3b54d..f9cd1368bd485 100644
--- a/public/emoji/1f515.svg
+++ b/public/emoji/1f515.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f516.png b/public/emoji/1f516.png
deleted file mode 100644
index bbb444611f06d..0000000000000
Binary files a/public/emoji/1f516.png and /dev/null differ
diff --git a/public/emoji/1f516.svg b/public/emoji/1f516.svg
index 555079664e64a..a8baaeb5c6a8b 100644
--- a/public/emoji/1f516.svg
+++ b/public/emoji/1f516.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f517.png b/public/emoji/1f517.png
deleted file mode 100644
index ae20f0f8eecdf..0000000000000
Binary files a/public/emoji/1f517.png and /dev/null differ
diff --git a/public/emoji/1f517.svg b/public/emoji/1f517.svg
index 777545a1724fc..f34d20258318f 100644
--- a/public/emoji/1f517.svg
+++ b/public/emoji/1f517.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f518.png b/public/emoji/1f518.png
deleted file mode 100644
index 3a23449d917fd..0000000000000
Binary files a/public/emoji/1f518.png and /dev/null differ
diff --git a/public/emoji/1f518.svg b/public/emoji/1f518.svg
index a894198e860bb..aa5d9a4290879 100644
--- a/public/emoji/1f518.svg
+++ b/public/emoji/1f518.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f519.png b/public/emoji/1f519.png
deleted file mode 100644
index d32c5d4f17f82..0000000000000
Binary files a/public/emoji/1f519.png and /dev/null differ
diff --git a/public/emoji/1f519.svg b/public/emoji/1f519.svg
index b8fe574e26ad9..d723bae402a8b 100644
--- a/public/emoji/1f519.svg
+++ b/public/emoji/1f519.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f51a.png b/public/emoji/1f51a.png
deleted file mode 100644
index ef3ccd5f367b7..0000000000000
Binary files a/public/emoji/1f51a.png and /dev/null differ
diff --git a/public/emoji/1f51a.svg b/public/emoji/1f51a.svg
index 1925646d18cab..27825d360c3fe 100644
--- a/public/emoji/1f51a.svg
+++ b/public/emoji/1f51a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f51b.png b/public/emoji/1f51b.png
deleted file mode 100644
index a0c371ae21e1e..0000000000000
Binary files a/public/emoji/1f51b.png and /dev/null differ
diff --git a/public/emoji/1f51b.svg b/public/emoji/1f51b.svg
index f9bb3d833253c..8e41094fef64a 100644
--- a/public/emoji/1f51b.svg
+++ b/public/emoji/1f51b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f51c.png b/public/emoji/1f51c.png
deleted file mode 100644
index 8cdfd86690d76..0000000000000
Binary files a/public/emoji/1f51c.png and /dev/null differ
diff --git a/public/emoji/1f51c.svg b/public/emoji/1f51c.svg
index 62c2ffb2f71a7..9e308a466815d 100644
--- a/public/emoji/1f51c.svg
+++ b/public/emoji/1f51c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f51d.png b/public/emoji/1f51d.png
deleted file mode 100644
index 49dea8c08b574..0000000000000
Binary files a/public/emoji/1f51d.png and /dev/null differ
diff --git a/public/emoji/1f51d.svg b/public/emoji/1f51d.svg
index cc4db6763df24..0fc2ed653ab54 100644
--- a/public/emoji/1f51d.svg
+++ b/public/emoji/1f51d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f51e.png b/public/emoji/1f51e.png
deleted file mode 100644
index 6dfe6da51e203..0000000000000
Binary files a/public/emoji/1f51e.png and /dev/null differ
diff --git a/public/emoji/1f51e.svg b/public/emoji/1f51e.svg
index 19ac9d2bd2c7a..8a7bd20173b20 100644
--- a/public/emoji/1f51e.svg
+++ b/public/emoji/1f51e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f51f.png b/public/emoji/1f51f.png
deleted file mode 100644
index 782d4004962b4..0000000000000
Binary files a/public/emoji/1f51f.png and /dev/null differ
diff --git a/public/emoji/1f51f.svg b/public/emoji/1f51f.svg
index f717fa7f06a76..40d2560e355c5 100644
--- a/public/emoji/1f51f.svg
+++ b/public/emoji/1f51f.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f520.png b/public/emoji/1f520.png
deleted file mode 100644
index fe9482d2d8a79..0000000000000
Binary files a/public/emoji/1f520.png and /dev/null differ
diff --git a/public/emoji/1f520.svg b/public/emoji/1f520.svg
index 04d626dcd0e20..6771c232850eb 100644
--- a/public/emoji/1f520.svg
+++ b/public/emoji/1f520.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f521.png b/public/emoji/1f521.png
deleted file mode 100644
index 0996a87057065..0000000000000
Binary files a/public/emoji/1f521.png and /dev/null differ
diff --git a/public/emoji/1f521.svg b/public/emoji/1f521.svg
index a127d19343309..4cc64b9e7bb95 100644
--- a/public/emoji/1f521.svg
+++ b/public/emoji/1f521.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f522.png b/public/emoji/1f522.png
deleted file mode 100644
index 248dc7e55b69a..0000000000000
Binary files a/public/emoji/1f522.png and /dev/null differ
diff --git a/public/emoji/1f522.svg b/public/emoji/1f522.svg
index 5710ed97181ae..75de7d6daae87 100644
--- a/public/emoji/1f522.svg
+++ b/public/emoji/1f522.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f523.png b/public/emoji/1f523.png
deleted file mode 100644
index ac2fc1f358fab..0000000000000
Binary files a/public/emoji/1f523.png and /dev/null differ
diff --git a/public/emoji/1f523.svg b/public/emoji/1f523.svg
index 7de6af1d7d8ce..c30182b501ba2 100644
--- a/public/emoji/1f523.svg
+++ b/public/emoji/1f523.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f524.png b/public/emoji/1f524.png
deleted file mode 100644
index 7688de692a91d..0000000000000
Binary files a/public/emoji/1f524.png and /dev/null differ
diff --git a/public/emoji/1f524.svg b/public/emoji/1f524.svg
index 236a41ce9bb56..6f9f763f022d1 100644
--- a/public/emoji/1f524.svg
+++ b/public/emoji/1f524.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f525.png b/public/emoji/1f525.png
deleted file mode 100644
index bd3775a460bb0..0000000000000
Binary files a/public/emoji/1f525.png and /dev/null differ
diff --git a/public/emoji/1f525.svg b/public/emoji/1f525.svg
index 23dd30a75d4d7..4c5a36a6f13ec 100644
--- a/public/emoji/1f525.svg
+++ b/public/emoji/1f525.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f526.png b/public/emoji/1f526.png
deleted file mode 100644
index eee36c250673f..0000000000000
Binary files a/public/emoji/1f526.png and /dev/null differ
diff --git a/public/emoji/1f526.svg b/public/emoji/1f526.svg
index 1d9dcdfdf940f..f934e9d5cce4b 100644
--- a/public/emoji/1f526.svg
+++ b/public/emoji/1f526.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f527.png b/public/emoji/1f527.png
deleted file mode 100644
index c16b743969752..0000000000000
Binary files a/public/emoji/1f527.png and /dev/null differ
diff --git a/public/emoji/1f527.svg b/public/emoji/1f527.svg
index 5ca5cf38e25bb..26775fd0a5f41 100644
--- a/public/emoji/1f527.svg
+++ b/public/emoji/1f527.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f528.png b/public/emoji/1f528.png
deleted file mode 100644
index 00736cce47dda..0000000000000
Binary files a/public/emoji/1f528.png and /dev/null differ
diff --git a/public/emoji/1f528.svg b/public/emoji/1f528.svg
index 0285e2d1a5ee4..d506977e1cb01 100644
--- a/public/emoji/1f528.svg
+++ b/public/emoji/1f528.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f529.png b/public/emoji/1f529.png
deleted file mode 100644
index 4b9ae1553191f..0000000000000
Binary files a/public/emoji/1f529.png and /dev/null differ
diff --git a/public/emoji/1f529.svg b/public/emoji/1f529.svg
index b43444715b78a..3da1ee738193b 100644
--- a/public/emoji/1f529.svg
+++ b/public/emoji/1f529.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f52a.png b/public/emoji/1f52a.png
deleted file mode 100644
index 1acb9f3077b32..0000000000000
Binary files a/public/emoji/1f52a.png and /dev/null differ
diff --git a/public/emoji/1f52a.svg b/public/emoji/1f52a.svg
index cbf23194912ca..d260eaf875968 100644
--- a/public/emoji/1f52a.svg
+++ b/public/emoji/1f52a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f52b.png b/public/emoji/1f52b.png
deleted file mode 100644
index 89c5c244c7b5f..0000000000000
Binary files a/public/emoji/1f52b.png and /dev/null differ
diff --git a/public/emoji/1f52b.svg b/public/emoji/1f52b.svg
index 7ce6a43f1d5bf..fa4e11d882317 100644
--- a/public/emoji/1f52b.svg
+++ b/public/emoji/1f52b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f52c.png b/public/emoji/1f52c.png
deleted file mode 100644
index 90f5acf6a7827..0000000000000
Binary files a/public/emoji/1f52c.png and /dev/null differ
diff --git a/public/emoji/1f52c.svg b/public/emoji/1f52c.svg
index 149eb3797bd99..511a102e26d28 100644
--- a/public/emoji/1f52c.svg
+++ b/public/emoji/1f52c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f52d.png b/public/emoji/1f52d.png
deleted file mode 100644
index d63154614b511..0000000000000
Binary files a/public/emoji/1f52d.png and /dev/null differ
diff --git a/public/emoji/1f52d.svg b/public/emoji/1f52d.svg
index e4dc0106ebca2..67df6ece7d6ea 100644
--- a/public/emoji/1f52d.svg
+++ b/public/emoji/1f52d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f52e.png b/public/emoji/1f52e.png
deleted file mode 100644
index 485d5c888f1df..0000000000000
Binary files a/public/emoji/1f52e.png and /dev/null differ
diff --git a/public/emoji/1f52e.svg b/public/emoji/1f52e.svg
index 72eff081e11c9..1fbcefcb9f168 100644
--- a/public/emoji/1f52e.svg
+++ b/public/emoji/1f52e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f52f.png b/public/emoji/1f52f.png
deleted file mode 100644
index 2eb1707458ba2..0000000000000
Binary files a/public/emoji/1f52f.png and /dev/null differ
diff --git a/public/emoji/1f52f.svg b/public/emoji/1f52f.svg
index 5783decc39421..e31b3e04c42ad 100644
--- a/public/emoji/1f52f.svg
+++ b/public/emoji/1f52f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f530.png b/public/emoji/1f530.png
deleted file mode 100644
index bc434fb7cb54d..0000000000000
Binary files a/public/emoji/1f530.png and /dev/null differ
diff --git a/public/emoji/1f530.svg b/public/emoji/1f530.svg
index b0677aae78bc7..8ed169ae588a4 100644
--- a/public/emoji/1f530.svg
+++ b/public/emoji/1f530.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f531.png b/public/emoji/1f531.png
deleted file mode 100644
index 777a1dad12164..0000000000000
Binary files a/public/emoji/1f531.png and /dev/null differ
diff --git a/public/emoji/1f531.svg b/public/emoji/1f531.svg
index 09cb93cd89cfd..ded2962712483 100644
--- a/public/emoji/1f531.svg
+++ b/public/emoji/1f531.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f532.png b/public/emoji/1f532.png
deleted file mode 100644
index a78fc2f6b635e..0000000000000
Binary files a/public/emoji/1f532.png and /dev/null differ
diff --git a/public/emoji/1f532.svg b/public/emoji/1f532.svg
index 4234050bae84f..8d17e1757628f 100644
--- a/public/emoji/1f532.svg
+++ b/public/emoji/1f532.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f533.png b/public/emoji/1f533.png
deleted file mode 100644
index 934b1cedfd271..0000000000000
Binary files a/public/emoji/1f533.png and /dev/null differ
diff --git a/public/emoji/1f533.svg b/public/emoji/1f533.svg
index 478b8cde77955..485afa9208112 100644
--- a/public/emoji/1f533.svg
+++ b/public/emoji/1f533.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f534.png b/public/emoji/1f534.png
deleted file mode 100644
index 4bef930d92f1e..0000000000000
Binary files a/public/emoji/1f534.png and /dev/null differ
diff --git a/public/emoji/1f534.svg b/public/emoji/1f534.svg
index a8ac9f77dce9c..fe221ca0048ba 100644
--- a/public/emoji/1f534.svg
+++ b/public/emoji/1f534.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f535.png b/public/emoji/1f535.png
deleted file mode 100644
index 84078ef312716..0000000000000
Binary files a/public/emoji/1f535.png and /dev/null differ
diff --git a/public/emoji/1f535.svg b/public/emoji/1f535.svg
index 3df8731d3b3e3..fc3f6e9a001d6 100644
--- a/public/emoji/1f535.svg
+++ b/public/emoji/1f535.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f536.png b/public/emoji/1f536.png
deleted file mode 100644
index 73ff0ac36c800..0000000000000
Binary files a/public/emoji/1f536.png and /dev/null differ
diff --git a/public/emoji/1f536.svg b/public/emoji/1f536.svg
index 351f0db4e52a8..fdcbdce96f793 100644
--- a/public/emoji/1f536.svg
+++ b/public/emoji/1f536.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f537.png b/public/emoji/1f537.png
deleted file mode 100644
index 416a58bd5a894..0000000000000
Binary files a/public/emoji/1f537.png and /dev/null differ
diff --git a/public/emoji/1f537.svg b/public/emoji/1f537.svg
index 2d351444865c1..3ef69732f412f 100644
--- a/public/emoji/1f537.svg
+++ b/public/emoji/1f537.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f538.png b/public/emoji/1f538.png
deleted file mode 100644
index e1c6ed9b2f8f7..0000000000000
Binary files a/public/emoji/1f538.png and /dev/null differ
diff --git a/public/emoji/1f538.svg b/public/emoji/1f538.svg
index 10ba0449aa573..7b78e0bd82942 100644
--- a/public/emoji/1f538.svg
+++ b/public/emoji/1f538.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f539.png b/public/emoji/1f539.png
deleted file mode 100644
index b86b5bc4db3f6..0000000000000
Binary files a/public/emoji/1f539.png and /dev/null differ
diff --git a/public/emoji/1f539.svg b/public/emoji/1f539.svg
index 344ca595602eb..9798bdd6242b3 100644
--- a/public/emoji/1f539.svg
+++ b/public/emoji/1f539.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f53a.png b/public/emoji/1f53a.png
deleted file mode 100644
index 785887c195a10..0000000000000
Binary files a/public/emoji/1f53a.png and /dev/null differ
diff --git a/public/emoji/1f53a.svg b/public/emoji/1f53a.svg
index 321041237a8ee..11a872d9e45f0 100644
--- a/public/emoji/1f53a.svg
+++ b/public/emoji/1f53a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f53b.png b/public/emoji/1f53b.png
deleted file mode 100644
index a83beff1914e3..0000000000000
Binary files a/public/emoji/1f53b.png and /dev/null differ
diff --git a/public/emoji/1f53b.svg b/public/emoji/1f53b.svg
index 57d6ad46768e0..2e6655267efc1 100644
--- a/public/emoji/1f53b.svg
+++ b/public/emoji/1f53b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f53c.png b/public/emoji/1f53c.png
deleted file mode 100644
index 20a13dcd5cd47..0000000000000
Binary files a/public/emoji/1f53c.png and /dev/null differ
diff --git a/public/emoji/1f53c.svg b/public/emoji/1f53c.svg
index 6836e6e049ba8..08d218b67e0ed 100644
--- a/public/emoji/1f53c.svg
+++ b/public/emoji/1f53c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f53d.png b/public/emoji/1f53d.png
deleted file mode 100644
index 5870b9a224186..0000000000000
Binary files a/public/emoji/1f53d.png and /dev/null differ
diff --git a/public/emoji/1f53d.svg b/public/emoji/1f53d.svg
index a624cea78e3a3..47ef8e021a630 100644
--- a/public/emoji/1f53d.svg
+++ b/public/emoji/1f53d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f549.png b/public/emoji/1f549.png
deleted file mode 100644
index a35c63c459cb2..0000000000000
Binary files a/public/emoji/1f549.png and /dev/null differ
diff --git a/public/emoji/1f549.svg b/public/emoji/1f549.svg
index f068cd7397c3f..cb310e36279fc 100644
--- a/public/emoji/1f549.svg
+++ b/public/emoji/1f549.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f54a.png b/public/emoji/1f54a.png
deleted file mode 100644
index 9580c4917d70b..0000000000000
Binary files a/public/emoji/1f54a.png and /dev/null differ
diff --git a/public/emoji/1f54a.svg b/public/emoji/1f54a.svg
index 37fa3aaf1b330..ac560ea66231c 100644
--- a/public/emoji/1f54a.svg
+++ b/public/emoji/1f54a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f54b.png b/public/emoji/1f54b.png
deleted file mode 100644
index 1778c1138e4c4..0000000000000
Binary files a/public/emoji/1f54b.png and /dev/null differ
diff --git a/public/emoji/1f54b.svg b/public/emoji/1f54b.svg
index 687e4d776a18c..92bc70f83a747 100644
--- a/public/emoji/1f54b.svg
+++ b/public/emoji/1f54b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f54c.png b/public/emoji/1f54c.png
deleted file mode 100644
index ef770b26d96e8..0000000000000
Binary files a/public/emoji/1f54c.png and /dev/null differ
diff --git a/public/emoji/1f54c.svg b/public/emoji/1f54c.svg
index 071b498d39b74..446c3c6f11484 100644
--- a/public/emoji/1f54c.svg
+++ b/public/emoji/1f54c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f54d.png b/public/emoji/1f54d.png
deleted file mode 100644
index ee347904c8024..0000000000000
Binary files a/public/emoji/1f54d.png and /dev/null differ
diff --git a/public/emoji/1f54d.svg b/public/emoji/1f54d.svg
index e3348550707d4..5f33b368b0494 100644
--- a/public/emoji/1f54d.svg
+++ b/public/emoji/1f54d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f54e.png b/public/emoji/1f54e.png
deleted file mode 100644
index b429736286984..0000000000000
Binary files a/public/emoji/1f54e.png and /dev/null differ
diff --git a/public/emoji/1f54e.svg b/public/emoji/1f54e.svg
index 82e1ca3385619..aa69dd7e1ef0d 100644
--- a/public/emoji/1f54e.svg
+++ b/public/emoji/1f54e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f550.png b/public/emoji/1f550.png
deleted file mode 100644
index d6e34941f232f..0000000000000
Binary files a/public/emoji/1f550.png and /dev/null differ
diff --git a/public/emoji/1f550.svg b/public/emoji/1f550.svg
index bd5bb075bd876..3b8391d079e18 100644
--- a/public/emoji/1f550.svg
+++ b/public/emoji/1f550.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f551.png b/public/emoji/1f551.png
deleted file mode 100644
index a54253d7d570e..0000000000000
Binary files a/public/emoji/1f551.png and /dev/null differ
diff --git a/public/emoji/1f551.svg b/public/emoji/1f551.svg
index 2e55177120250..9094bf4ff14b7 100644
--- a/public/emoji/1f551.svg
+++ b/public/emoji/1f551.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f552.png b/public/emoji/1f552.png
deleted file mode 100644
index 27ec4b1f514c3..0000000000000
Binary files a/public/emoji/1f552.png and /dev/null differ
diff --git a/public/emoji/1f552.svg b/public/emoji/1f552.svg
index 834d2ddc5bbf7..d7627919efe64 100644
--- a/public/emoji/1f552.svg
+++ b/public/emoji/1f552.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f553.png b/public/emoji/1f553.png
deleted file mode 100644
index 60a1ef4cc1300..0000000000000
Binary files a/public/emoji/1f553.png and /dev/null differ
diff --git a/public/emoji/1f553.svg b/public/emoji/1f553.svg
index 9f67b695812f0..c8825cbab0c83 100644
--- a/public/emoji/1f553.svg
+++ b/public/emoji/1f553.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f554.png b/public/emoji/1f554.png
deleted file mode 100644
index c9382d1e0941c..0000000000000
Binary files a/public/emoji/1f554.png and /dev/null differ
diff --git a/public/emoji/1f554.svg b/public/emoji/1f554.svg
index 073f85721ae7b..1002512b49eda 100644
--- a/public/emoji/1f554.svg
+++ b/public/emoji/1f554.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f555.png b/public/emoji/1f555.png
deleted file mode 100644
index 8fd5d3f5bd766..0000000000000
Binary files a/public/emoji/1f555.png and /dev/null differ
diff --git a/public/emoji/1f555.svg b/public/emoji/1f555.svg
index 0fc34642b94d0..8f4cf5d8a912b 100644
--- a/public/emoji/1f555.svg
+++ b/public/emoji/1f555.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f556.png b/public/emoji/1f556.png
deleted file mode 100644
index 8c7084036f22f..0000000000000
Binary files a/public/emoji/1f556.png and /dev/null differ
diff --git a/public/emoji/1f556.svg b/public/emoji/1f556.svg
index 52891906725d7..b160ba8dee064 100644
--- a/public/emoji/1f556.svg
+++ b/public/emoji/1f556.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f557.png b/public/emoji/1f557.png
deleted file mode 100644
index fcddf722e95bd..0000000000000
Binary files a/public/emoji/1f557.png and /dev/null differ
diff --git a/public/emoji/1f557.svg b/public/emoji/1f557.svg
index f5bc3aff5ae68..bf351fd08183e 100644
--- a/public/emoji/1f557.svg
+++ b/public/emoji/1f557.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f558.png b/public/emoji/1f558.png
deleted file mode 100644
index dfbe011798131..0000000000000
Binary files a/public/emoji/1f558.png and /dev/null differ
diff --git a/public/emoji/1f558.svg b/public/emoji/1f558.svg
index 7e4eda3865882..ff38ea75b9f33 100644
--- a/public/emoji/1f558.svg
+++ b/public/emoji/1f558.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f559.png b/public/emoji/1f559.png
deleted file mode 100644
index e62b245cdbe97..0000000000000
Binary files a/public/emoji/1f559.png and /dev/null differ
diff --git a/public/emoji/1f559.svg b/public/emoji/1f559.svg
index 21e380e6259cb..e341eb5cc1fda 100644
--- a/public/emoji/1f559.svg
+++ b/public/emoji/1f559.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f55a.png b/public/emoji/1f55a.png
deleted file mode 100644
index 0983345273b6c..0000000000000
Binary files a/public/emoji/1f55a.png and /dev/null differ
diff --git a/public/emoji/1f55a.svg b/public/emoji/1f55a.svg
index 6d7a3531c8aaa..0f916d26d026e 100644
--- a/public/emoji/1f55a.svg
+++ b/public/emoji/1f55a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f55b.png b/public/emoji/1f55b.png
deleted file mode 100644
index e61caa4b3e296..0000000000000
Binary files a/public/emoji/1f55b.png and /dev/null differ
diff --git a/public/emoji/1f55b.svg b/public/emoji/1f55b.svg
index 1381b3bc679f5..1e99036069876 100644
--- a/public/emoji/1f55b.svg
+++ b/public/emoji/1f55b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f55c.png b/public/emoji/1f55c.png
deleted file mode 100644
index 86b7689b84e12..0000000000000
Binary files a/public/emoji/1f55c.png and /dev/null differ
diff --git a/public/emoji/1f55c.svg b/public/emoji/1f55c.svg
index 9972f542ddb4e..d98c288848340 100644
--- a/public/emoji/1f55c.svg
+++ b/public/emoji/1f55c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f55d.png b/public/emoji/1f55d.png
deleted file mode 100644
index 7a787e018e618..0000000000000
Binary files a/public/emoji/1f55d.png and /dev/null differ
diff --git a/public/emoji/1f55d.svg b/public/emoji/1f55d.svg
index 86f24116ec63c..efdbe5ca451e8 100644
--- a/public/emoji/1f55d.svg
+++ b/public/emoji/1f55d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f55e.png b/public/emoji/1f55e.png
deleted file mode 100644
index c6860395cec44..0000000000000
Binary files a/public/emoji/1f55e.png and /dev/null differ
diff --git a/public/emoji/1f55e.svg b/public/emoji/1f55e.svg
index da97799684809..e8a5b47a8481d 100644
--- a/public/emoji/1f55e.svg
+++ b/public/emoji/1f55e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f55f.png b/public/emoji/1f55f.png
deleted file mode 100644
index 3c05b362122fb..0000000000000
Binary files a/public/emoji/1f55f.png and /dev/null differ
diff --git a/public/emoji/1f55f.svg b/public/emoji/1f55f.svg
index 8185d206be6e6..46d2f6098d735 100644
--- a/public/emoji/1f55f.svg
+++ b/public/emoji/1f55f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f560.png b/public/emoji/1f560.png
deleted file mode 100644
index c21fa926db238..0000000000000
Binary files a/public/emoji/1f560.png and /dev/null differ
diff --git a/public/emoji/1f560.svg b/public/emoji/1f560.svg
index 54ef72628be4c..6b1eeabaa721d 100644
--- a/public/emoji/1f560.svg
+++ b/public/emoji/1f560.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f561.png b/public/emoji/1f561.png
deleted file mode 100644
index 2aec87fefcfc5..0000000000000
Binary files a/public/emoji/1f561.png and /dev/null differ
diff --git a/public/emoji/1f561.svg b/public/emoji/1f561.svg
index fea0cde951025..5510c23754a1e 100644
--- a/public/emoji/1f561.svg
+++ b/public/emoji/1f561.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f562.png b/public/emoji/1f562.png
deleted file mode 100644
index f7a1135e03fe5..0000000000000
Binary files a/public/emoji/1f562.png and /dev/null differ
diff --git a/public/emoji/1f562.svg b/public/emoji/1f562.svg
index 5cf968fb8c472..d600d0e195458 100644
--- a/public/emoji/1f562.svg
+++ b/public/emoji/1f562.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f563.png b/public/emoji/1f563.png
deleted file mode 100644
index 799b4aebc08bf..0000000000000
Binary files a/public/emoji/1f563.png and /dev/null differ
diff --git a/public/emoji/1f563.svg b/public/emoji/1f563.svg
index ce973153f5c19..7b1bf93598ec6 100644
--- a/public/emoji/1f563.svg
+++ b/public/emoji/1f563.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f564.png b/public/emoji/1f564.png
deleted file mode 100644
index 4a2092ee6f05b..0000000000000
Binary files a/public/emoji/1f564.png and /dev/null differ
diff --git a/public/emoji/1f564.svg b/public/emoji/1f564.svg
index d7d214fa1cab4..1ee190a632068 100644
--- a/public/emoji/1f564.svg
+++ b/public/emoji/1f564.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f565.png b/public/emoji/1f565.png
deleted file mode 100644
index 0802b3c65b931..0000000000000
Binary files a/public/emoji/1f565.png and /dev/null differ
diff --git a/public/emoji/1f565.svg b/public/emoji/1f565.svg
index d7d8b48d1417f..e68c2eb3ab9a1 100644
--- a/public/emoji/1f565.svg
+++ b/public/emoji/1f565.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f566.png b/public/emoji/1f566.png
deleted file mode 100644
index d970d03b8095c..0000000000000
Binary files a/public/emoji/1f566.png and /dev/null differ
diff --git a/public/emoji/1f566.svg b/public/emoji/1f566.svg
index 77030c048a291..67e850cbf8cf3 100644
--- a/public/emoji/1f566.svg
+++ b/public/emoji/1f566.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f567.png b/public/emoji/1f567.png
deleted file mode 100644
index f2b1d261721f2..0000000000000
Binary files a/public/emoji/1f567.png and /dev/null differ
diff --git a/public/emoji/1f567.svg b/public/emoji/1f567.svg
index 02e81326a3599..b5bb0e0a69435 100644
--- a/public/emoji/1f567.svg
+++ b/public/emoji/1f567.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f56f.png b/public/emoji/1f56f.png
deleted file mode 100644
index 0b56444e35535..0000000000000
Binary files a/public/emoji/1f56f.png and /dev/null differ
diff --git a/public/emoji/1f56f.svg b/public/emoji/1f56f.svg
index af4c60634a243..8264304352c87 100644
--- a/public/emoji/1f56f.svg
+++ b/public/emoji/1f56f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f570.png b/public/emoji/1f570.png
deleted file mode 100644
index ffdb451e3a8cf..0000000000000
Binary files a/public/emoji/1f570.png and /dev/null differ
diff --git a/public/emoji/1f570.svg b/public/emoji/1f570.svg
index c2808cbacc5dc..40863345989ea 100644
--- a/public/emoji/1f570.svg
+++ b/public/emoji/1f570.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f573.png b/public/emoji/1f573.png
deleted file mode 100644
index 517d2ae0debf6..0000000000000
Binary files a/public/emoji/1f573.png and /dev/null differ
diff --git a/public/emoji/1f573.svg b/public/emoji/1f573.svg
index 4ccc4369f4a73..d45030a303837 100644
--- a/public/emoji/1f573.svg
+++ b/public/emoji/1f573.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f574-1f3fb.svg b/public/emoji/1f574-1f3fb.svg
new file mode 100644
index 0000000000000..557e7da46e9b9
--- /dev/null
+++ b/public/emoji/1f574-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f574-1f3fc.svg b/public/emoji/1f574-1f3fc.svg
new file mode 100644
index 0000000000000..e7934589d1e10
--- /dev/null
+++ b/public/emoji/1f574-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f574-1f3fd.svg b/public/emoji/1f574-1f3fd.svg
new file mode 100644
index 0000000000000..e0fc839fa6917
--- /dev/null
+++ b/public/emoji/1f574-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f574-1f3fe.svg b/public/emoji/1f574-1f3fe.svg
new file mode 100644
index 0000000000000..ea17439972a68
--- /dev/null
+++ b/public/emoji/1f574-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f574-1f3ff.svg b/public/emoji/1f574-1f3ff.svg
new file mode 100644
index 0000000000000..bae73e20502b4
--- /dev/null
+++ b/public/emoji/1f574-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f574.png b/public/emoji/1f574.png
deleted file mode 100644
index 3dc315a3d91f0..0000000000000
Binary files a/public/emoji/1f574.png and /dev/null differ
diff --git a/public/emoji/1f574.svg b/public/emoji/1f574.svg
index cfaf2a78964f6..cf6aa4b7ee023 100644
--- a/public/emoji/1f574.svg
+++ b/public/emoji/1f574.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f575-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f575-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..22d2265a6bf57
--- /dev/null
+++ b/public/emoji/1f575-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f575-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f575-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..87429276e76c3
--- /dev/null
+++ b/public/emoji/1f575-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f575-1f3fb.png b/public/emoji/1f575-1f3fb.png
deleted file mode 100644
index 2d1c022caeeba..0000000000000
Binary files a/public/emoji/1f575-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f575-1f3fb.svg b/public/emoji/1f575-1f3fb.svg
index 9e0d53872e6a1..87429276e76c3 100644
--- a/public/emoji/1f575-1f3fb.svg
+++ b/public/emoji/1f575-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f575-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f575-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..110603c479177
--- /dev/null
+++ b/public/emoji/1f575-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f575-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f575-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..a76aeba518366
--- /dev/null
+++ b/public/emoji/1f575-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f575-1f3fc.png b/public/emoji/1f575-1f3fc.png
deleted file mode 100644
index 548b9c26f5d93..0000000000000
Binary files a/public/emoji/1f575-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f575-1f3fc.svg b/public/emoji/1f575-1f3fc.svg
index 1eb13a65ecccc..a76aeba518366 100644
--- a/public/emoji/1f575-1f3fc.svg
+++ b/public/emoji/1f575-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f575-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f575-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..5ed697977a3b4
--- /dev/null
+++ b/public/emoji/1f575-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f575-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f575-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..85821083d5553
--- /dev/null
+++ b/public/emoji/1f575-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f575-1f3fd.png b/public/emoji/1f575-1f3fd.png
deleted file mode 100644
index b023f4b18e184..0000000000000
Binary files a/public/emoji/1f575-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f575-1f3fd.svg b/public/emoji/1f575-1f3fd.svg
index 6eaa233c32db2..85821083d5553 100644
--- a/public/emoji/1f575-1f3fd.svg
+++ b/public/emoji/1f575-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f575-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f575-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..4099bdc92aa7c
--- /dev/null
+++ b/public/emoji/1f575-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f575-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f575-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..917dc17774f58
--- /dev/null
+++ b/public/emoji/1f575-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f575-1f3fe.png b/public/emoji/1f575-1f3fe.png
deleted file mode 100644
index d8300af492db9..0000000000000
Binary files a/public/emoji/1f575-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f575-1f3fe.svg b/public/emoji/1f575-1f3fe.svg
index f3f11e430fa2b..917dc17774f58 100644
--- a/public/emoji/1f575-1f3fe.svg
+++ b/public/emoji/1f575-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f575-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f575-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..f1e2b8c5e140e
--- /dev/null
+++ b/public/emoji/1f575-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f575-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f575-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..04dc79582a162
--- /dev/null
+++ b/public/emoji/1f575-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f575-1f3ff.png b/public/emoji/1f575-1f3ff.png
deleted file mode 100644
index ca1462595faf7..0000000000000
Binary files a/public/emoji/1f575-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f575-1f3ff.svg b/public/emoji/1f575-1f3ff.svg
index 5fc557546953f..04dc79582a162 100644
--- a/public/emoji/1f575-1f3ff.svg
+++ b/public/emoji/1f575-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f575-fe0f-200d-2640-fe0f.svg b/public/emoji/1f575-fe0f-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..625c83007bfe6
--- /dev/null
+++ b/public/emoji/1f575-fe0f-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f575-fe0f-200d-2642-fe0f.svg b/public/emoji/1f575-fe0f-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..89e86fd2c680f
--- /dev/null
+++ b/public/emoji/1f575-fe0f-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f575.png b/public/emoji/1f575.png
deleted file mode 100644
index a729e9584d6d7..0000000000000
Binary files a/public/emoji/1f575.png and /dev/null differ
diff --git a/public/emoji/1f575.svg b/public/emoji/1f575.svg
index 9612edafbcbf5..89e86fd2c680f 100644
--- a/public/emoji/1f575.svg
+++ b/public/emoji/1f575.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f576.png b/public/emoji/1f576.png
deleted file mode 100644
index b1b6db0acff17..0000000000000
Binary files a/public/emoji/1f576.png and /dev/null differ
diff --git a/public/emoji/1f576.svg b/public/emoji/1f576.svg
index 3f1075ec4326c..07dfcf0458379 100644
--- a/public/emoji/1f576.svg
+++ b/public/emoji/1f576.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f577.png b/public/emoji/1f577.png
deleted file mode 100644
index 3849fa90b9495..0000000000000
Binary files a/public/emoji/1f577.png and /dev/null differ
diff --git a/public/emoji/1f577.svg b/public/emoji/1f577.svg
index 21bb089013597..35c53883bf98a 100644
--- a/public/emoji/1f577.svg
+++ b/public/emoji/1f577.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f578.png b/public/emoji/1f578.png
deleted file mode 100644
index ba448ee7fba5c..0000000000000
Binary files a/public/emoji/1f578.png and /dev/null differ
diff --git a/public/emoji/1f578.svg b/public/emoji/1f578.svg
index 8a5a419592300..a09fb444aad17 100644
--- a/public/emoji/1f578.svg
+++ b/public/emoji/1f578.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f579.png b/public/emoji/1f579.png
deleted file mode 100644
index 1ee1905434e84..0000000000000
Binary files a/public/emoji/1f579.png and /dev/null differ
diff --git a/public/emoji/1f579.svg b/public/emoji/1f579.svg
index b2e6440130c9e..a8290299beb04 100644
--- a/public/emoji/1f579.svg
+++ b/public/emoji/1f579.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f57a-1f3fb.png b/public/emoji/1f57a-1f3fb.png
deleted file mode 100644
index e0b9f82d90563..0000000000000
Binary files a/public/emoji/1f57a-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f57a-1f3fb.svg b/public/emoji/1f57a-1f3fb.svg
index fc47b48f688b7..4e375b9f1d6f5 100644
--- a/public/emoji/1f57a-1f3fb.svg
+++ b/public/emoji/1f57a-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f57a-1f3fc.png b/public/emoji/1f57a-1f3fc.png
deleted file mode 100644
index a5beed56e2e00..0000000000000
Binary files a/public/emoji/1f57a-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f57a-1f3fc.svg b/public/emoji/1f57a-1f3fc.svg
index 289dcb68af7c1..f88efc7512452 100644
--- a/public/emoji/1f57a-1f3fc.svg
+++ b/public/emoji/1f57a-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f57a-1f3fd.png b/public/emoji/1f57a-1f3fd.png
deleted file mode 100644
index 2fa20180a6ee5..0000000000000
Binary files a/public/emoji/1f57a-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f57a-1f3fd.svg b/public/emoji/1f57a-1f3fd.svg
index 0356c2ac96aca..b2e430355b2a0 100644
--- a/public/emoji/1f57a-1f3fd.svg
+++ b/public/emoji/1f57a-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f57a-1f3fe.png b/public/emoji/1f57a-1f3fe.png
deleted file mode 100644
index bd3528c83bab0..0000000000000
Binary files a/public/emoji/1f57a-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f57a-1f3fe.svg b/public/emoji/1f57a-1f3fe.svg
index 70bb51fb95f37..efec3c0e4a8d8 100644
--- a/public/emoji/1f57a-1f3fe.svg
+++ b/public/emoji/1f57a-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f57a-1f3ff.png b/public/emoji/1f57a-1f3ff.png
deleted file mode 100644
index 41fd4f880c9cf..0000000000000
Binary files a/public/emoji/1f57a-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f57a-1f3ff.svg b/public/emoji/1f57a-1f3ff.svg
index 61633d21d7de2..f8b9c9c0fcd95 100644
--- a/public/emoji/1f57a-1f3ff.svg
+++ b/public/emoji/1f57a-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f57a.png b/public/emoji/1f57a.png
deleted file mode 100644
index ccff3bede5a0f..0000000000000
Binary files a/public/emoji/1f57a.png and /dev/null differ
diff --git a/public/emoji/1f57a.svg b/public/emoji/1f57a.svg
index 11d2247c7de74..6dd7710058040 100644
--- a/public/emoji/1f57a.svg
+++ b/public/emoji/1f57a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f587.png b/public/emoji/1f587.png
deleted file mode 100644
index 76021e8c70599..0000000000000
Binary files a/public/emoji/1f587.png and /dev/null differ
diff --git a/public/emoji/1f587.svg b/public/emoji/1f587.svg
index b2dafc18b59f7..8f33de38d6435 100644
--- a/public/emoji/1f587.svg
+++ b/public/emoji/1f587.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f58a.png b/public/emoji/1f58a.png
deleted file mode 100644
index 6ef7a3424338e..0000000000000
Binary files a/public/emoji/1f58a.png and /dev/null differ
diff --git a/public/emoji/1f58a.svg b/public/emoji/1f58a.svg
index 1b61284ce002c..88dafbf5cb944 100644
--- a/public/emoji/1f58a.svg
+++ b/public/emoji/1f58a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f58b.png b/public/emoji/1f58b.png
deleted file mode 100644
index 3ca4bd2c231a5..0000000000000
Binary files a/public/emoji/1f58b.png and /dev/null differ
diff --git a/public/emoji/1f58b.svg b/public/emoji/1f58b.svg
index a15d1aa50ee91..a73b058839bd3 100644
--- a/public/emoji/1f58b.svg
+++ b/public/emoji/1f58b.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f58c.png b/public/emoji/1f58c.png
deleted file mode 100644
index 28bffbaa3c92f..0000000000000
Binary files a/public/emoji/1f58c.png and /dev/null differ
diff --git a/public/emoji/1f58c.svg b/public/emoji/1f58c.svg
index 25a69166012d8..ccff7f8f6148e 100644
--- a/public/emoji/1f58c.svg
+++ b/public/emoji/1f58c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f58d.png b/public/emoji/1f58d.png
deleted file mode 100644
index 8d7b427aaa364..0000000000000
Binary files a/public/emoji/1f58d.png and /dev/null differ
diff --git a/public/emoji/1f58d.svg b/public/emoji/1f58d.svg
index 5a76528b55dd3..69bc06e7594e3 100644
--- a/public/emoji/1f58d.svg
+++ b/public/emoji/1f58d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f590-1f3fb.png b/public/emoji/1f590-1f3fb.png
deleted file mode 100644
index a7888e6bd23a3..0000000000000
Binary files a/public/emoji/1f590-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f590-1f3fb.svg b/public/emoji/1f590-1f3fb.svg
index 5154c0bb03dea..bd1bf5aaebff2 100644
--- a/public/emoji/1f590-1f3fb.svg
+++ b/public/emoji/1f590-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f590-1f3fc.png b/public/emoji/1f590-1f3fc.png
deleted file mode 100644
index cc10fbc272d84..0000000000000
Binary files a/public/emoji/1f590-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f590-1f3fc.svg b/public/emoji/1f590-1f3fc.svg
index 00e624a29e022..9082d2b684891 100644
--- a/public/emoji/1f590-1f3fc.svg
+++ b/public/emoji/1f590-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f590-1f3fd.png b/public/emoji/1f590-1f3fd.png
deleted file mode 100644
index 707236ae8a4c6..0000000000000
Binary files a/public/emoji/1f590-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f590-1f3fd.svg b/public/emoji/1f590-1f3fd.svg
index 79c9644089736..1eaeadc293686 100644
--- a/public/emoji/1f590-1f3fd.svg
+++ b/public/emoji/1f590-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f590-1f3fe.png b/public/emoji/1f590-1f3fe.png
deleted file mode 100644
index 1430df9c61f21..0000000000000
Binary files a/public/emoji/1f590-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f590-1f3fe.svg b/public/emoji/1f590-1f3fe.svg
index 1e01c773baae1..1fe6d0be70fbe 100644
--- a/public/emoji/1f590-1f3fe.svg
+++ b/public/emoji/1f590-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f590-1f3ff.png b/public/emoji/1f590-1f3ff.png
deleted file mode 100644
index 80bec971b6b75..0000000000000
Binary files a/public/emoji/1f590-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f590-1f3ff.svg b/public/emoji/1f590-1f3ff.svg
index feae919776dfc..5a2ece62cad35 100644
--- a/public/emoji/1f590-1f3ff.svg
+++ b/public/emoji/1f590-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f590.png b/public/emoji/1f590.png
deleted file mode 100644
index fb5ae8ebb5acc..0000000000000
Binary files a/public/emoji/1f590.png and /dev/null differ
diff --git a/public/emoji/1f590.svg b/public/emoji/1f590.svg
index daefb13e62604..5d7b83f464461 100644
--- a/public/emoji/1f590.svg
+++ b/public/emoji/1f590.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f595-1f3fb.png b/public/emoji/1f595-1f3fb.png
deleted file mode 100644
index 61ef12a154845..0000000000000
Binary files a/public/emoji/1f595-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f595-1f3fb.svg b/public/emoji/1f595-1f3fb.svg
index 74a6b8c401788..29cb0ad89c099 100644
--- a/public/emoji/1f595-1f3fb.svg
+++ b/public/emoji/1f595-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f595-1f3fc.png b/public/emoji/1f595-1f3fc.png
deleted file mode 100644
index c31a69be9af9e..0000000000000
Binary files a/public/emoji/1f595-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f595-1f3fc.svg b/public/emoji/1f595-1f3fc.svg
index 57bccaa789821..b8a18628edfb9 100644
--- a/public/emoji/1f595-1f3fc.svg
+++ b/public/emoji/1f595-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f595-1f3fd.png b/public/emoji/1f595-1f3fd.png
deleted file mode 100644
index 73ac216ce63c1..0000000000000
Binary files a/public/emoji/1f595-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f595-1f3fd.svg b/public/emoji/1f595-1f3fd.svg
index 8ae95508b382a..35a676a204243 100644
--- a/public/emoji/1f595-1f3fd.svg
+++ b/public/emoji/1f595-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f595-1f3fe.png b/public/emoji/1f595-1f3fe.png
deleted file mode 100644
index 80b8ab7706d42..0000000000000
Binary files a/public/emoji/1f595-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f595-1f3fe.svg b/public/emoji/1f595-1f3fe.svg
index b571c155329fd..0f3c877bc8a98 100644
--- a/public/emoji/1f595-1f3fe.svg
+++ b/public/emoji/1f595-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f595-1f3ff.png b/public/emoji/1f595-1f3ff.png
deleted file mode 100644
index a8826b196e881..0000000000000
Binary files a/public/emoji/1f595-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f595-1f3ff.svg b/public/emoji/1f595-1f3ff.svg
index 63062da9a4712..a5592dda933ae 100644
--- a/public/emoji/1f595-1f3ff.svg
+++ b/public/emoji/1f595-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f595.png b/public/emoji/1f595.png
deleted file mode 100644
index 697f7a25eb219..0000000000000
Binary files a/public/emoji/1f595.png and /dev/null differ
diff --git a/public/emoji/1f595.svg b/public/emoji/1f595.svg
index a4247910c955b..2ca84e3bae4c6 100644
--- a/public/emoji/1f595.svg
+++ b/public/emoji/1f595.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f596-1f3fb.png b/public/emoji/1f596-1f3fb.png
deleted file mode 100644
index 8aff5d8fa16b5..0000000000000
Binary files a/public/emoji/1f596-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f596-1f3fb.svg b/public/emoji/1f596-1f3fb.svg
index 73de3c32db1d6..1a7d5d6d5741e 100644
--- a/public/emoji/1f596-1f3fb.svg
+++ b/public/emoji/1f596-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f596-1f3fc.png b/public/emoji/1f596-1f3fc.png
deleted file mode 100644
index 82b7ad519b427..0000000000000
Binary files a/public/emoji/1f596-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f596-1f3fc.svg b/public/emoji/1f596-1f3fc.svg
index acd4f53b640ed..da22363826a0e 100644
--- a/public/emoji/1f596-1f3fc.svg
+++ b/public/emoji/1f596-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f596-1f3fd.png b/public/emoji/1f596-1f3fd.png
deleted file mode 100644
index d1400e1dd28f6..0000000000000
Binary files a/public/emoji/1f596-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f596-1f3fd.svg b/public/emoji/1f596-1f3fd.svg
index ab308598efd09..c688db96acf7e 100644
--- a/public/emoji/1f596-1f3fd.svg
+++ b/public/emoji/1f596-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f596-1f3fe.png b/public/emoji/1f596-1f3fe.png
deleted file mode 100644
index 47e2b28014886..0000000000000
Binary files a/public/emoji/1f596-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f596-1f3fe.svg b/public/emoji/1f596-1f3fe.svg
index 6104d999dfd7c..2fc051573ec59 100644
--- a/public/emoji/1f596-1f3fe.svg
+++ b/public/emoji/1f596-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f596-1f3ff.png b/public/emoji/1f596-1f3ff.png
deleted file mode 100644
index 60b5c6077be48..0000000000000
Binary files a/public/emoji/1f596-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f596-1f3ff.svg b/public/emoji/1f596-1f3ff.svg
index e936d88aaa75f..8819883971571 100644
--- a/public/emoji/1f596-1f3ff.svg
+++ b/public/emoji/1f596-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f596.png b/public/emoji/1f596.png
deleted file mode 100644
index 54728bcaf5cd1..0000000000000
Binary files a/public/emoji/1f596.png and /dev/null differ
diff --git a/public/emoji/1f596.svg b/public/emoji/1f596.svg
index b2fb218f74184..8126598d258c6 100644
--- a/public/emoji/1f596.svg
+++ b/public/emoji/1f596.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5a4.png b/public/emoji/1f5a4.png
deleted file mode 100644
index b4068c3e6e80b..0000000000000
Binary files a/public/emoji/1f5a4.png and /dev/null differ
diff --git a/public/emoji/1f5a4.svg b/public/emoji/1f5a4.svg
index 5cedc5fb2f735..8d3556c4eba60 100644
--- a/public/emoji/1f5a4.svg
+++ b/public/emoji/1f5a4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5a5.png b/public/emoji/1f5a5.png
deleted file mode 100644
index 909bd42b5e140..0000000000000
Binary files a/public/emoji/1f5a5.png and /dev/null differ
diff --git a/public/emoji/1f5a5.svg b/public/emoji/1f5a5.svg
index 852287cf99a6b..36b9da1feb537 100644
--- a/public/emoji/1f5a5.svg
+++ b/public/emoji/1f5a5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5a8.png b/public/emoji/1f5a8.png
deleted file mode 100644
index 027c830f0fe21..0000000000000
Binary files a/public/emoji/1f5a8.png and /dev/null differ
diff --git a/public/emoji/1f5a8.svg b/public/emoji/1f5a8.svg
index 4eb491f2e32b8..a34359e13fb2c 100644
--- a/public/emoji/1f5a8.svg
+++ b/public/emoji/1f5a8.svg
@@ -1,3 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5b1.png b/public/emoji/1f5b1.png
deleted file mode 100644
index e84e96ff6e856..0000000000000
Binary files a/public/emoji/1f5b1.png and /dev/null differ
diff --git a/public/emoji/1f5b1.svg b/public/emoji/1f5b1.svg
index ed83ffe0fa33a..cbad4fd06cae5 100644
--- a/public/emoji/1f5b1.svg
+++ b/public/emoji/1f5b1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5b2.png b/public/emoji/1f5b2.png
deleted file mode 100644
index 3bea84ad7ceeb..0000000000000
Binary files a/public/emoji/1f5b2.png and /dev/null differ
diff --git a/public/emoji/1f5b2.svg b/public/emoji/1f5b2.svg
index 35468b2c8d36d..fd464c096478d 100644
--- a/public/emoji/1f5b2.svg
+++ b/public/emoji/1f5b2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5bc.png b/public/emoji/1f5bc.png
deleted file mode 100644
index 9fe84607bfdb7..0000000000000
Binary files a/public/emoji/1f5bc.png and /dev/null differ
diff --git a/public/emoji/1f5bc.svg b/public/emoji/1f5bc.svg
index a0f89d0d62cbf..8d935157a7552 100644
--- a/public/emoji/1f5bc.svg
+++ b/public/emoji/1f5bc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5c2.png b/public/emoji/1f5c2.png
deleted file mode 100644
index 46a7e403f9d56..0000000000000
Binary files a/public/emoji/1f5c2.png and /dev/null differ
diff --git a/public/emoji/1f5c2.svg b/public/emoji/1f5c2.svg
index d2046e806fd65..b63f3914cf2da 100644
--- a/public/emoji/1f5c2.svg
+++ b/public/emoji/1f5c2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5c3.png b/public/emoji/1f5c3.png
deleted file mode 100644
index f2e764ce59de8..0000000000000
Binary files a/public/emoji/1f5c3.png and /dev/null differ
diff --git a/public/emoji/1f5c3.svg b/public/emoji/1f5c3.svg
index 4ab8e1b1cf06b..743f964e64cbf 100644
--- a/public/emoji/1f5c3.svg
+++ b/public/emoji/1f5c3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5c4.png b/public/emoji/1f5c4.png
deleted file mode 100644
index fddc65dde9680..0000000000000
Binary files a/public/emoji/1f5c4.png and /dev/null differ
diff --git a/public/emoji/1f5c4.svg b/public/emoji/1f5c4.svg
index e27bdf1b3d326..d3986817f0c54 100644
--- a/public/emoji/1f5c4.svg
+++ b/public/emoji/1f5c4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5d1.png b/public/emoji/1f5d1.png
deleted file mode 100644
index 2b3c484b49879..0000000000000
Binary files a/public/emoji/1f5d1.png and /dev/null differ
diff --git a/public/emoji/1f5d1.svg b/public/emoji/1f5d1.svg
index a83f728e25d08..d9ea71a060633 100644
--- a/public/emoji/1f5d1.svg
+++ b/public/emoji/1f5d1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5d2.png b/public/emoji/1f5d2.png
deleted file mode 100644
index 85faa10d8eaa9..0000000000000
Binary files a/public/emoji/1f5d2.png and /dev/null differ
diff --git a/public/emoji/1f5d2.svg b/public/emoji/1f5d2.svg
index edfd8d0e63d4f..61e735eb94f58 100644
--- a/public/emoji/1f5d2.svg
+++ b/public/emoji/1f5d2.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5d3.png b/public/emoji/1f5d3.png
deleted file mode 100644
index dec8d49bfa8c3..0000000000000
Binary files a/public/emoji/1f5d3.png and /dev/null differ
diff --git a/public/emoji/1f5d3.svg b/public/emoji/1f5d3.svg
index abe8a941037a4..cd3ce275774c8 100644
--- a/public/emoji/1f5d3.svg
+++ b/public/emoji/1f5d3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5dc.png b/public/emoji/1f5dc.png
deleted file mode 100644
index d7eda7f362a04..0000000000000
Binary files a/public/emoji/1f5dc.png and /dev/null differ
diff --git a/public/emoji/1f5dc.svg b/public/emoji/1f5dc.svg
index 7d7fcab04f812..412bf6bf70881 100644
--- a/public/emoji/1f5dc.svg
+++ b/public/emoji/1f5dc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5dd.png b/public/emoji/1f5dd.png
deleted file mode 100644
index e11d706c6c8e7..0000000000000
Binary files a/public/emoji/1f5dd.png and /dev/null differ
diff --git a/public/emoji/1f5dd.svg b/public/emoji/1f5dd.svg
index 9bbf4f2acdd15..bd1d995814bb7 100644
--- a/public/emoji/1f5dd.svg
+++ b/public/emoji/1f5dd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5de.png b/public/emoji/1f5de.png
deleted file mode 100644
index f64748df2b28b..0000000000000
Binary files a/public/emoji/1f5de.png and /dev/null differ
diff --git a/public/emoji/1f5de.svg b/public/emoji/1f5de.svg
index fc378863367f9..f99430638d5a3 100644
--- a/public/emoji/1f5de.svg
+++ b/public/emoji/1f5de.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5e1.png b/public/emoji/1f5e1.png
deleted file mode 100644
index 66e97b0aa25a2..0000000000000
Binary files a/public/emoji/1f5e1.png and /dev/null differ
diff --git a/public/emoji/1f5e1.svg b/public/emoji/1f5e1.svg
index 8802fe08c1e4a..9f4d1b5da16a7 100644
--- a/public/emoji/1f5e1.svg
+++ b/public/emoji/1f5e1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5e3.png b/public/emoji/1f5e3.png
deleted file mode 100644
index 2df93aaae09bf..0000000000000
Binary files a/public/emoji/1f5e3.png and /dev/null differ
diff --git a/public/emoji/1f5e3.svg b/public/emoji/1f5e3.svg
index 9ba8a6ca6a92f..ded1caa6130b8 100644
--- a/public/emoji/1f5e3.svg
+++ b/public/emoji/1f5e3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5e8.png b/public/emoji/1f5e8.png
deleted file mode 100644
index 00c05959bcd9a..0000000000000
Binary files a/public/emoji/1f5e8.png and /dev/null differ
diff --git a/public/emoji/1f5e8.svg b/public/emoji/1f5e8.svg
index b8c77e4115086..d158c6e251d53 100644
--- a/public/emoji/1f5e8.svg
+++ b/public/emoji/1f5e8.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5ef.png b/public/emoji/1f5ef.png
deleted file mode 100644
index f5c97c4d29726..0000000000000
Binary files a/public/emoji/1f5ef.png and /dev/null differ
diff --git a/public/emoji/1f5ef.svg b/public/emoji/1f5ef.svg
index ed829009882e9..f9f4c9be12743 100644
--- a/public/emoji/1f5ef.svg
+++ b/public/emoji/1f5ef.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5f3.png b/public/emoji/1f5f3.png
deleted file mode 100644
index 9b6767aea9e42..0000000000000
Binary files a/public/emoji/1f5f3.png and /dev/null differ
diff --git a/public/emoji/1f5f3.svg b/public/emoji/1f5f3.svg
index c0cfc8307420b..4aa277eb0a41b 100644
--- a/public/emoji/1f5f3.svg
+++ b/public/emoji/1f5f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5fa.png b/public/emoji/1f5fa.png
deleted file mode 100644
index 15efe32c7987f..0000000000000
Binary files a/public/emoji/1f5fa.png and /dev/null differ
diff --git a/public/emoji/1f5fa.svg b/public/emoji/1f5fa.svg
index 182a68f7f54d9..b6e48a7c17788 100644
--- a/public/emoji/1f5fa.svg
+++ b/public/emoji/1f5fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5fb.png b/public/emoji/1f5fb.png
deleted file mode 100644
index 88a547524581d..0000000000000
Binary files a/public/emoji/1f5fb.png and /dev/null differ
diff --git a/public/emoji/1f5fb.svg b/public/emoji/1f5fb.svg
index 17545f8cc30f8..68b542bc1e769 100644
--- a/public/emoji/1f5fb.svg
+++ b/public/emoji/1f5fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5fc.png b/public/emoji/1f5fc.png
deleted file mode 100644
index 37df7fc65b170..0000000000000
Binary files a/public/emoji/1f5fc.png and /dev/null differ
diff --git a/public/emoji/1f5fc.svg b/public/emoji/1f5fc.svg
index cb64daa5f24c5..40ee1e93bf1f4 100644
--- a/public/emoji/1f5fc.svg
+++ b/public/emoji/1f5fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5fd.png b/public/emoji/1f5fd.png
deleted file mode 100644
index 05df8289b5905..0000000000000
Binary files a/public/emoji/1f5fd.png and /dev/null differ
diff --git a/public/emoji/1f5fd.svg b/public/emoji/1f5fd.svg
index fc4d83459603b..bbdd9f727c6ba 100644
--- a/public/emoji/1f5fd.svg
+++ b/public/emoji/1f5fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5fe.png b/public/emoji/1f5fe.png
deleted file mode 100644
index d86d0a59e1226..0000000000000
Binary files a/public/emoji/1f5fe.png and /dev/null differ
diff --git a/public/emoji/1f5fe.svg b/public/emoji/1f5fe.svg
index 2b86ffcad1b16..02b5e88d60f62 100644
--- a/public/emoji/1f5fe.svg
+++ b/public/emoji/1f5fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f5ff.png b/public/emoji/1f5ff.png
deleted file mode 100644
index e6a7779c45bab..0000000000000
Binary files a/public/emoji/1f5ff.png and /dev/null differ
diff --git a/public/emoji/1f5ff.svg b/public/emoji/1f5ff.svg
index 3b6c02afd59e2..ebe17919294ec 100644
--- a/public/emoji/1f5ff.svg
+++ b/public/emoji/1f5ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f600.png b/public/emoji/1f600.png
deleted file mode 100644
index 3e8e0dab78cd6..0000000000000
Binary files a/public/emoji/1f600.png and /dev/null differ
diff --git a/public/emoji/1f600.svg b/public/emoji/1f600.svg
index 33a476929cd7a..d7e74f2d72610 100644
--- a/public/emoji/1f600.svg
+++ b/public/emoji/1f600.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f601.png b/public/emoji/1f601.png
deleted file mode 100644
index 418d94c811b8b..0000000000000
Binary files a/public/emoji/1f601.png and /dev/null differ
diff --git a/public/emoji/1f601.svg b/public/emoji/1f601.svg
index e3939db53cef4..5f3b93ea05ddd 100644
--- a/public/emoji/1f601.svg
+++ b/public/emoji/1f601.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f602.png b/public/emoji/1f602.png
deleted file mode 100644
index 0ba3b1859d82a..0000000000000
Binary files a/public/emoji/1f602.png and /dev/null differ
diff --git a/public/emoji/1f602.svg b/public/emoji/1f602.svg
index ad3522a9d6a47..09650895a8b13 100644
--- a/public/emoji/1f602.svg
+++ b/public/emoji/1f602.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f603.png b/public/emoji/1f603.png
deleted file mode 100644
index 30957a65968a4..0000000000000
Binary files a/public/emoji/1f603.png and /dev/null differ
diff --git a/public/emoji/1f603.svg b/public/emoji/1f603.svg
index a526b1541bc19..3b0f5413f1b72 100644
--- a/public/emoji/1f603.svg
+++ b/public/emoji/1f603.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f604.png b/public/emoji/1f604.png
deleted file mode 100644
index aa47ffe978cf4..0000000000000
Binary files a/public/emoji/1f604.png and /dev/null differ
diff --git a/public/emoji/1f604.svg b/public/emoji/1f604.svg
index 9d3a8409e1d9f..c0d62c68da374 100644
--- a/public/emoji/1f604.svg
+++ b/public/emoji/1f604.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f605.png b/public/emoji/1f605.png
deleted file mode 100644
index cb18d9c899b8b..0000000000000
Binary files a/public/emoji/1f605.png and /dev/null differ
diff --git a/public/emoji/1f605.svg b/public/emoji/1f605.svg
index da20875452288..2d9c1104c7f2a 100644
--- a/public/emoji/1f605.svg
+++ b/public/emoji/1f605.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f606.png b/public/emoji/1f606.png
deleted file mode 100644
index d94e9505ba176..0000000000000
Binary files a/public/emoji/1f606.png and /dev/null differ
diff --git a/public/emoji/1f606.svg b/public/emoji/1f606.svg
index a16e007eb487a..b802bce3e0e15 100644
--- a/public/emoji/1f606.svg
+++ b/public/emoji/1f606.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f607.png b/public/emoji/1f607.png
deleted file mode 100644
index 57f5151124fbb..0000000000000
Binary files a/public/emoji/1f607.png and /dev/null differ
diff --git a/public/emoji/1f607.svg b/public/emoji/1f607.svg
index 7109c83712247..c5139cb9de284 100644
--- a/public/emoji/1f607.svg
+++ b/public/emoji/1f607.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f608.png b/public/emoji/1f608.png
deleted file mode 100644
index cc2c5f1ec72a5..0000000000000
Binary files a/public/emoji/1f608.png and /dev/null differ
diff --git a/public/emoji/1f608.svg b/public/emoji/1f608.svg
index bdf4236168e75..770f118d9278d 100644
--- a/public/emoji/1f608.svg
+++ b/public/emoji/1f608.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f609.png b/public/emoji/1f609.png
deleted file mode 100644
index 7ea7810a37db4..0000000000000
Binary files a/public/emoji/1f609.png and /dev/null differ
diff --git a/public/emoji/1f609.svg b/public/emoji/1f609.svg
index 2e4509e57eac3..0a7bf7fb8160d 100644
--- a/public/emoji/1f609.svg
+++ b/public/emoji/1f609.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f60a.png b/public/emoji/1f60a.png
deleted file mode 100644
index aac1a424ad4e8..0000000000000
Binary files a/public/emoji/1f60a.png and /dev/null differ
diff --git a/public/emoji/1f60a.svg b/public/emoji/1f60a.svg
index 797c06386d894..ad888b5811437 100644
--- a/public/emoji/1f60a.svg
+++ b/public/emoji/1f60a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f60b.png b/public/emoji/1f60b.png
deleted file mode 100644
index 2df15753ca158..0000000000000
Binary files a/public/emoji/1f60b.png and /dev/null differ
diff --git a/public/emoji/1f60b.svg b/public/emoji/1f60b.svg
index 932ca7d7ce580..1439ed01e31f9 100644
--- a/public/emoji/1f60b.svg
+++ b/public/emoji/1f60b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f60c.png b/public/emoji/1f60c.png
deleted file mode 100644
index 715ad0bf53f70..0000000000000
Binary files a/public/emoji/1f60c.png and /dev/null differ
diff --git a/public/emoji/1f60c.svg b/public/emoji/1f60c.svg
index 4af17f14409ed..bad14b74ffbf5 100644
--- a/public/emoji/1f60c.svg
+++ b/public/emoji/1f60c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f60d.png b/public/emoji/1f60d.png
deleted file mode 100644
index 73fbee29d4eef..0000000000000
Binary files a/public/emoji/1f60d.png and /dev/null differ
diff --git a/public/emoji/1f60d.svg b/public/emoji/1f60d.svg
index 4237d7e3f6111..ea5dce36a6a73 100644
--- a/public/emoji/1f60d.svg
+++ b/public/emoji/1f60d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f60e.png b/public/emoji/1f60e.png
deleted file mode 100644
index 2001173511099..0000000000000
Binary files a/public/emoji/1f60e.png and /dev/null differ
diff --git a/public/emoji/1f60e.svg b/public/emoji/1f60e.svg
index 945ae68db65e8..4dfb1d675e196 100644
--- a/public/emoji/1f60e.svg
+++ b/public/emoji/1f60e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f60f.png b/public/emoji/1f60f.png
deleted file mode 100644
index 87852109988ca..0000000000000
Binary files a/public/emoji/1f60f.png and /dev/null differ
diff --git a/public/emoji/1f60f.svg b/public/emoji/1f60f.svg
index 68a3db63b7891..886ea2e1b4f70 100644
--- a/public/emoji/1f60f.svg
+++ b/public/emoji/1f60f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f610.png b/public/emoji/1f610.png
deleted file mode 100644
index 065d193afe495..0000000000000
Binary files a/public/emoji/1f610.png and /dev/null differ
diff --git a/public/emoji/1f610.svg b/public/emoji/1f610.svg
index 23a11f7c55e85..69a7a3816fbb6 100644
--- a/public/emoji/1f610.svg
+++ b/public/emoji/1f610.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f611.png b/public/emoji/1f611.png
deleted file mode 100644
index 2954017f6c2a7..0000000000000
Binary files a/public/emoji/1f611.png and /dev/null differ
diff --git a/public/emoji/1f611.svg b/public/emoji/1f611.svg
index 7938d2c1d855b..71a6155a5b0bc 100644
--- a/public/emoji/1f611.svg
+++ b/public/emoji/1f611.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f612.png b/public/emoji/1f612.png
deleted file mode 100644
index 25e3677f2ebe8..0000000000000
Binary files a/public/emoji/1f612.png and /dev/null differ
diff --git a/public/emoji/1f612.svg b/public/emoji/1f612.svg
index e557627484c43..bc67b3aa0b692 100644
--- a/public/emoji/1f612.svg
+++ b/public/emoji/1f612.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f613.png b/public/emoji/1f613.png
deleted file mode 100644
index f0dae7b789344..0000000000000
Binary files a/public/emoji/1f613.png and /dev/null differ
diff --git a/public/emoji/1f613.svg b/public/emoji/1f613.svg
index 607726762c376..82838f4198031 100644
--- a/public/emoji/1f613.svg
+++ b/public/emoji/1f613.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f614.png b/public/emoji/1f614.png
deleted file mode 100644
index 490fb5669549c..0000000000000
Binary files a/public/emoji/1f614.png and /dev/null differ
diff --git a/public/emoji/1f614.svg b/public/emoji/1f614.svg
index 28de02f2482f4..5125d919a32c6 100644
--- a/public/emoji/1f614.svg
+++ b/public/emoji/1f614.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f615.png b/public/emoji/1f615.png
deleted file mode 100644
index 502b6bf0e0b42..0000000000000
Binary files a/public/emoji/1f615.png and /dev/null differ
diff --git a/public/emoji/1f615.svg b/public/emoji/1f615.svg
index 534330c3b24c8..0c29da5c27100 100644
--- a/public/emoji/1f615.svg
+++ b/public/emoji/1f615.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f616.png b/public/emoji/1f616.png
deleted file mode 100644
index aa4b29e9375e2..0000000000000
Binary files a/public/emoji/1f616.png and /dev/null differ
diff --git a/public/emoji/1f616.svg b/public/emoji/1f616.svg
index 5f038264f7a6f..cbdeaa055d6c9 100644
--- a/public/emoji/1f616.svg
+++ b/public/emoji/1f616.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f617.png b/public/emoji/1f617.png
deleted file mode 100644
index 39d325fd8e3ec..0000000000000
Binary files a/public/emoji/1f617.png and /dev/null differ
diff --git a/public/emoji/1f617.svg b/public/emoji/1f617.svg
index be878012b8cb5..4b0b62d8bab82 100644
--- a/public/emoji/1f617.svg
+++ b/public/emoji/1f617.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f618.png b/public/emoji/1f618.png
deleted file mode 100644
index 0ff808fd6143a..0000000000000
Binary files a/public/emoji/1f618.png and /dev/null differ
diff --git a/public/emoji/1f618.svg b/public/emoji/1f618.svg
index 983b37b47e59c..2d920d99f1f0c 100644
--- a/public/emoji/1f618.svg
+++ b/public/emoji/1f618.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f619.png b/public/emoji/1f619.png
deleted file mode 100644
index e181f17099d4c..0000000000000
Binary files a/public/emoji/1f619.png and /dev/null differ
diff --git a/public/emoji/1f619.svg b/public/emoji/1f619.svg
index 1ac00e32f915e..e265c02f19357 100644
--- a/public/emoji/1f619.svg
+++ b/public/emoji/1f619.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f61a.png b/public/emoji/1f61a.png
deleted file mode 100644
index b684d7d4d6c06..0000000000000
Binary files a/public/emoji/1f61a.png and /dev/null differ
diff --git a/public/emoji/1f61a.svg b/public/emoji/1f61a.svg
index 7a3cf76044fd6..414193a78c27a 100644
--- a/public/emoji/1f61a.svg
+++ b/public/emoji/1f61a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f61b.png b/public/emoji/1f61b.png
deleted file mode 100644
index 25757341f9604..0000000000000
Binary files a/public/emoji/1f61b.png and /dev/null differ
diff --git a/public/emoji/1f61b.svg b/public/emoji/1f61b.svg
index ccef634ecb475..eb39b5526136f 100644
--- a/public/emoji/1f61b.svg
+++ b/public/emoji/1f61b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f61c.png b/public/emoji/1f61c.png
deleted file mode 100644
index 4817eaa3dc67c..0000000000000
Binary files a/public/emoji/1f61c.png and /dev/null differ
diff --git a/public/emoji/1f61c.svg b/public/emoji/1f61c.svg
index 413c3d2a8cb89..20dd42d426601 100644
--- a/public/emoji/1f61c.svg
+++ b/public/emoji/1f61c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f61d.png b/public/emoji/1f61d.png
deleted file mode 100644
index 5c0401e9b1d3d..0000000000000
Binary files a/public/emoji/1f61d.png and /dev/null differ
diff --git a/public/emoji/1f61d.svg b/public/emoji/1f61d.svg
index 5157da937723b..8d5e50cc79711 100644
--- a/public/emoji/1f61d.svg
+++ b/public/emoji/1f61d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f61e.png b/public/emoji/1f61e.png
deleted file mode 100644
index efe4e67e23cc6..0000000000000
Binary files a/public/emoji/1f61e.png and /dev/null differ
diff --git a/public/emoji/1f61e.svg b/public/emoji/1f61e.svg
index 143c2f431946e..8ebcdf39831e2 100644
--- a/public/emoji/1f61e.svg
+++ b/public/emoji/1f61e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f61f.png b/public/emoji/1f61f.png
deleted file mode 100644
index 7074afcf5b7b3..0000000000000
Binary files a/public/emoji/1f61f.png and /dev/null differ
diff --git a/public/emoji/1f61f.svg b/public/emoji/1f61f.svg
index a1eec054ec987..0ac3e37e1e9a5 100644
--- a/public/emoji/1f61f.svg
+++ b/public/emoji/1f61f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f620.png b/public/emoji/1f620.png
deleted file mode 100644
index cfc4a6ecde529..0000000000000
Binary files a/public/emoji/1f620.png and /dev/null differ
diff --git a/public/emoji/1f620.svg b/public/emoji/1f620.svg
index a32acbcdd071c..70cc96a73001b 100644
--- a/public/emoji/1f620.svg
+++ b/public/emoji/1f620.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f621.png b/public/emoji/1f621.png
deleted file mode 100644
index 9d739bd40adbb..0000000000000
Binary files a/public/emoji/1f621.png and /dev/null differ
diff --git a/public/emoji/1f621.svg b/public/emoji/1f621.svg
index f7c72270fae30..8913846df29f6 100644
--- a/public/emoji/1f621.svg
+++ b/public/emoji/1f621.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f622.png b/public/emoji/1f622.png
deleted file mode 100644
index b7877f8a17379..0000000000000
Binary files a/public/emoji/1f622.png and /dev/null differ
diff --git a/public/emoji/1f622.svg b/public/emoji/1f622.svg
index e39209c80e042..2d960b5695ed4 100644
--- a/public/emoji/1f622.svg
+++ b/public/emoji/1f622.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f623.png b/public/emoji/1f623.png
deleted file mode 100644
index 646a05fe908a3..0000000000000
Binary files a/public/emoji/1f623.png and /dev/null differ
diff --git a/public/emoji/1f623.svg b/public/emoji/1f623.svg
index 94826839a8081..69e670b15a457 100644
--- a/public/emoji/1f623.svg
+++ b/public/emoji/1f623.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f624.png b/public/emoji/1f624.png
deleted file mode 100644
index 0be7a5019696a..0000000000000
Binary files a/public/emoji/1f624.png and /dev/null differ
diff --git a/public/emoji/1f624.svg b/public/emoji/1f624.svg
index fe5de95fc9eae..a3b73f63efe83 100644
--- a/public/emoji/1f624.svg
+++ b/public/emoji/1f624.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f625.png b/public/emoji/1f625.png
deleted file mode 100644
index aef864d2b3d7a..0000000000000
Binary files a/public/emoji/1f625.png and /dev/null differ
diff --git a/public/emoji/1f625.svg b/public/emoji/1f625.svg
index c52759e691b6b..1d06587ec5b0c 100644
--- a/public/emoji/1f625.svg
+++ b/public/emoji/1f625.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f626.png b/public/emoji/1f626.png
deleted file mode 100644
index 43ab6b0a1c118..0000000000000
Binary files a/public/emoji/1f626.png and /dev/null differ
diff --git a/public/emoji/1f626.svg b/public/emoji/1f626.svg
index c037c085a4565..11a2a0bf67b9c 100644
--- a/public/emoji/1f626.svg
+++ b/public/emoji/1f626.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f627.png b/public/emoji/1f627.png
deleted file mode 100644
index f99026a3bc763..0000000000000
Binary files a/public/emoji/1f627.png and /dev/null differ
diff --git a/public/emoji/1f627.svg b/public/emoji/1f627.svg
index b97c18b3aa290..94aee7d3c1e98 100644
--- a/public/emoji/1f627.svg
+++ b/public/emoji/1f627.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f628.png b/public/emoji/1f628.png
deleted file mode 100644
index eb8b347cef935..0000000000000
Binary files a/public/emoji/1f628.png and /dev/null differ
diff --git a/public/emoji/1f628.svg b/public/emoji/1f628.svg
index 38cfe0bb285be..d4cc4aa7c3979 100644
--- a/public/emoji/1f628.svg
+++ b/public/emoji/1f628.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f629.png b/public/emoji/1f629.png
deleted file mode 100644
index 98bfbd24a1686..0000000000000
Binary files a/public/emoji/1f629.png and /dev/null differ
diff --git a/public/emoji/1f629.svg b/public/emoji/1f629.svg
index 248da5b2e078c..200c69f7daaeb 100644
--- a/public/emoji/1f629.svg
+++ b/public/emoji/1f629.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f62a.png b/public/emoji/1f62a.png
deleted file mode 100644
index 836b41077173b..0000000000000
Binary files a/public/emoji/1f62a.png and /dev/null differ
diff --git a/public/emoji/1f62a.svg b/public/emoji/1f62a.svg
index d2dd9f7b4303b..26f5e93a3a807 100644
--- a/public/emoji/1f62a.svg
+++ b/public/emoji/1f62a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f62b.png b/public/emoji/1f62b.png
deleted file mode 100644
index 4e01eff5b2340..0000000000000
Binary files a/public/emoji/1f62b.png and /dev/null differ
diff --git a/public/emoji/1f62b.svg b/public/emoji/1f62b.svg
index 3ba1a6c02f009..094fd685d5635 100644
--- a/public/emoji/1f62b.svg
+++ b/public/emoji/1f62b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f62c.png b/public/emoji/1f62c.png
deleted file mode 100644
index 871b2f071c9ef..0000000000000
Binary files a/public/emoji/1f62c.png and /dev/null differ
diff --git a/public/emoji/1f62c.svg b/public/emoji/1f62c.svg
index 75c5b7dcb4269..6ef38ff1c4842 100644
--- a/public/emoji/1f62c.svg
+++ b/public/emoji/1f62c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f62d.png b/public/emoji/1f62d.png
deleted file mode 100644
index 52e3517a1ee5b..0000000000000
Binary files a/public/emoji/1f62d.png and /dev/null differ
diff --git a/public/emoji/1f62d.svg b/public/emoji/1f62d.svg
index 0fb4ba9bd63c6..87a656b31e26b 100644
--- a/public/emoji/1f62d.svg
+++ b/public/emoji/1f62d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f62e.png b/public/emoji/1f62e.png
deleted file mode 100644
index a62cd27e14859..0000000000000
Binary files a/public/emoji/1f62e.png and /dev/null differ
diff --git a/public/emoji/1f62e.svg b/public/emoji/1f62e.svg
index 855b53c66c797..4b54e4c742c75 100644
--- a/public/emoji/1f62e.svg
+++ b/public/emoji/1f62e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f62f.png b/public/emoji/1f62f.png
deleted file mode 100644
index cad0e23132ebe..0000000000000
Binary files a/public/emoji/1f62f.png and /dev/null differ
diff --git a/public/emoji/1f62f.svg b/public/emoji/1f62f.svg
index d9b0801f72b0c..192838a675d95 100644
--- a/public/emoji/1f62f.svg
+++ b/public/emoji/1f62f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f630.png b/public/emoji/1f630.png
deleted file mode 100644
index 85b2231bbf640..0000000000000
Binary files a/public/emoji/1f630.png and /dev/null differ
diff --git a/public/emoji/1f630.svg b/public/emoji/1f630.svg
index 9ae7444e71ebb..3463630bc395e 100644
--- a/public/emoji/1f630.svg
+++ b/public/emoji/1f630.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f631.png b/public/emoji/1f631.png
deleted file mode 100644
index c3bea9f25107c..0000000000000
Binary files a/public/emoji/1f631.png and /dev/null differ
diff --git a/public/emoji/1f631.svg b/public/emoji/1f631.svg
index 686c9835554ae..cd901c7c15469 100644
--- a/public/emoji/1f631.svg
+++ b/public/emoji/1f631.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f632.png b/public/emoji/1f632.png
deleted file mode 100644
index bd0ac55ec8e40..0000000000000
Binary files a/public/emoji/1f632.png and /dev/null differ
diff --git a/public/emoji/1f632.svg b/public/emoji/1f632.svg
index 703ddf123d0bb..6c07237f425a0 100644
--- a/public/emoji/1f632.svg
+++ b/public/emoji/1f632.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f633.png b/public/emoji/1f633.png
deleted file mode 100644
index 829220bc470e3..0000000000000
Binary files a/public/emoji/1f633.png and /dev/null differ
diff --git a/public/emoji/1f633.svg b/public/emoji/1f633.svg
index 8be56d39a9a94..b4a717fabc923 100644
--- a/public/emoji/1f633.svg
+++ b/public/emoji/1f633.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f634.png b/public/emoji/1f634.png
deleted file mode 100644
index 9ecf600d6d832..0000000000000
Binary files a/public/emoji/1f634.png and /dev/null differ
diff --git a/public/emoji/1f634.svg b/public/emoji/1f634.svg
index 41beef906ae66..53b486a9df6d1 100644
--- a/public/emoji/1f634.svg
+++ b/public/emoji/1f634.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f635.png b/public/emoji/1f635.png
deleted file mode 100644
index 3120316ab5ebb..0000000000000
Binary files a/public/emoji/1f635.png and /dev/null differ
diff --git a/public/emoji/1f635.svg b/public/emoji/1f635.svg
index 6556452471d0b..45a8bbed73280 100644
--- a/public/emoji/1f635.svg
+++ b/public/emoji/1f635.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f636.png b/public/emoji/1f636.png
deleted file mode 100644
index b642f6c117265..0000000000000
Binary files a/public/emoji/1f636.png and /dev/null differ
diff --git a/public/emoji/1f636.svg b/public/emoji/1f636.svg
index 9ad70bc5170e3..3eb385b1dc8e4 100644
--- a/public/emoji/1f636.svg
+++ b/public/emoji/1f636.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f637.png b/public/emoji/1f637.png
deleted file mode 100644
index 1e800acd1c06b..0000000000000
Binary files a/public/emoji/1f637.png and /dev/null differ
diff --git a/public/emoji/1f637.svg b/public/emoji/1f637.svg
index 2fcc6b50f83b0..c2de94b08d9c6 100644
--- a/public/emoji/1f637.svg
+++ b/public/emoji/1f637.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f638.png b/public/emoji/1f638.png
deleted file mode 100644
index 6f25f11dd3a01..0000000000000
Binary files a/public/emoji/1f638.png and /dev/null differ
diff --git a/public/emoji/1f638.svg b/public/emoji/1f638.svg
index 6e8aa84356a3c..470dd72660031 100644
--- a/public/emoji/1f638.svg
+++ b/public/emoji/1f638.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f639.png b/public/emoji/1f639.png
deleted file mode 100644
index aac353179aa84..0000000000000
Binary files a/public/emoji/1f639.png and /dev/null differ
diff --git a/public/emoji/1f639.svg b/public/emoji/1f639.svg
index 1eb62f35c7f93..4cd1a535a0dec 100644
--- a/public/emoji/1f639.svg
+++ b/public/emoji/1f639.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f63a.png b/public/emoji/1f63a.png
deleted file mode 100644
index 163b57a342790..0000000000000
Binary files a/public/emoji/1f63a.png and /dev/null differ
diff --git a/public/emoji/1f63a.svg b/public/emoji/1f63a.svg
index c708d746e0b9b..c5d85658deb33 100644
--- a/public/emoji/1f63a.svg
+++ b/public/emoji/1f63a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f63b.png b/public/emoji/1f63b.png
deleted file mode 100644
index bc5a833f9a1a8..0000000000000
Binary files a/public/emoji/1f63b.png and /dev/null differ
diff --git a/public/emoji/1f63b.svg b/public/emoji/1f63b.svg
index b7388254b87a5..7fbf39f0b0099 100644
--- a/public/emoji/1f63b.svg
+++ b/public/emoji/1f63b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f63c.png b/public/emoji/1f63c.png
deleted file mode 100644
index 9ac5954c199b5..0000000000000
Binary files a/public/emoji/1f63c.png and /dev/null differ
diff --git a/public/emoji/1f63c.svg b/public/emoji/1f63c.svg
index 7cebf3d67c26b..496d0bfea07e0 100644
--- a/public/emoji/1f63c.svg
+++ b/public/emoji/1f63c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f63d.png b/public/emoji/1f63d.png
deleted file mode 100644
index 6e0bcc77540eb..0000000000000
Binary files a/public/emoji/1f63d.png and /dev/null differ
diff --git a/public/emoji/1f63d.svg b/public/emoji/1f63d.svg
index 8d029f960517d..147c3e5c0307f 100644
--- a/public/emoji/1f63d.svg
+++ b/public/emoji/1f63d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f63e.png b/public/emoji/1f63e.png
deleted file mode 100644
index 41ddfeab42b45..0000000000000
Binary files a/public/emoji/1f63e.png and /dev/null differ
diff --git a/public/emoji/1f63e.svg b/public/emoji/1f63e.svg
index aa7be0f64404c..edb262e0f683a 100644
--- a/public/emoji/1f63e.svg
+++ b/public/emoji/1f63e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f63f.png b/public/emoji/1f63f.png
deleted file mode 100644
index b4f49715e0016..0000000000000
Binary files a/public/emoji/1f63f.png and /dev/null differ
diff --git a/public/emoji/1f63f.svg b/public/emoji/1f63f.svg
index 5b17e952381c2..1a0b5017ee6b8 100644
--- a/public/emoji/1f63f.svg
+++ b/public/emoji/1f63f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f640.png b/public/emoji/1f640.png
deleted file mode 100644
index 15803ad8e6e7e..0000000000000
Binary files a/public/emoji/1f640.png and /dev/null differ
diff --git a/public/emoji/1f640.svg b/public/emoji/1f640.svg
index 5c1c25786afc1..95462021ac063 100644
--- a/public/emoji/1f640.svg
+++ b/public/emoji/1f640.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f641.png b/public/emoji/1f641.png
deleted file mode 100644
index b2f1d983d363a..0000000000000
Binary files a/public/emoji/1f641.png and /dev/null differ
diff --git a/public/emoji/1f641.svg b/public/emoji/1f641.svg
index aeb3b4f24f80a..af09e8205b20e 100644
--- a/public/emoji/1f641.svg
+++ b/public/emoji/1f641.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f642.png b/public/emoji/1f642.png
deleted file mode 100644
index ddd7d65dd3dbe..0000000000000
Binary files a/public/emoji/1f642.png and /dev/null differ
diff --git a/public/emoji/1f642.svg b/public/emoji/1f642.svg
index 753ef7c23f8a4..0eab08c539cd9 100644
--- a/public/emoji/1f642.svg
+++ b/public/emoji/1f642.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f643.png b/public/emoji/1f643.png
deleted file mode 100644
index 128f31c982865..0000000000000
Binary files a/public/emoji/1f643.png and /dev/null differ
diff --git a/public/emoji/1f643.svg b/public/emoji/1f643.svg
index bdb24a7e51860..b44e813c77073 100644
--- a/public/emoji/1f643.svg
+++ b/public/emoji/1f643.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f644.png b/public/emoji/1f644.png
deleted file mode 100644
index 2f77b9fc3b97d..0000000000000
Binary files a/public/emoji/1f644.png and /dev/null differ
diff --git a/public/emoji/1f644.svg b/public/emoji/1f644.svg
index dcb222cefb388..0d6bfd35434b3 100644
--- a/public/emoji/1f644.svg
+++ b/public/emoji/1f644.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f645-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f645-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..74f9b85fdb4a0
--- /dev/null
+++ b/public/emoji/1f645-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f645-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f645-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..71db02cbab933
--- /dev/null
+++ b/public/emoji/1f645-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f645-1f3fb.png b/public/emoji/1f645-1f3fb.png
deleted file mode 100644
index 5c1a3cbb8840c..0000000000000
Binary files a/public/emoji/1f645-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f645-1f3fb.svg b/public/emoji/1f645-1f3fb.svg
index ac2255ef78f87..74f9b85fdb4a0 100644
--- a/public/emoji/1f645-1f3fb.svg
+++ b/public/emoji/1f645-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f645-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f645-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..af386803eac96
--- /dev/null
+++ b/public/emoji/1f645-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f645-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f645-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..67aae6cd5efb8
--- /dev/null
+++ b/public/emoji/1f645-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f645-1f3fc.png b/public/emoji/1f645-1f3fc.png
deleted file mode 100644
index 80d8021f8fe6f..0000000000000
Binary files a/public/emoji/1f645-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f645-1f3fc.svg b/public/emoji/1f645-1f3fc.svg
index 621160c36dbef..af386803eac96 100644
--- a/public/emoji/1f645-1f3fc.svg
+++ b/public/emoji/1f645-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f645-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f645-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..420a4d318166c
--- /dev/null
+++ b/public/emoji/1f645-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f645-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f645-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..d6d2b153b420b
--- /dev/null
+++ b/public/emoji/1f645-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f645-1f3fd.png b/public/emoji/1f645-1f3fd.png
deleted file mode 100644
index 635e6a0081501..0000000000000
Binary files a/public/emoji/1f645-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f645-1f3fd.svg b/public/emoji/1f645-1f3fd.svg
index 446067544eff6..420a4d318166c 100644
--- a/public/emoji/1f645-1f3fd.svg
+++ b/public/emoji/1f645-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f645-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f645-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..fb7d1118b614e
--- /dev/null
+++ b/public/emoji/1f645-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f645-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f645-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..ee5efbf77f161
--- /dev/null
+++ b/public/emoji/1f645-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f645-1f3fe.png b/public/emoji/1f645-1f3fe.png
deleted file mode 100644
index b96e412a3746e..0000000000000
Binary files a/public/emoji/1f645-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f645-1f3fe.svg b/public/emoji/1f645-1f3fe.svg
index 2a99eabc2eb05..fb7d1118b614e 100644
--- a/public/emoji/1f645-1f3fe.svg
+++ b/public/emoji/1f645-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f645-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f645-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..4bd472200f779
--- /dev/null
+++ b/public/emoji/1f645-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f645-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f645-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..ff3880c728d7a
--- /dev/null
+++ b/public/emoji/1f645-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f645-1f3ff.png b/public/emoji/1f645-1f3ff.png
deleted file mode 100644
index 9a7084afa0a7e..0000000000000
Binary files a/public/emoji/1f645-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f645-1f3ff.svg b/public/emoji/1f645-1f3ff.svg
index b32480b4a1dd4..4bd472200f779 100644
--- a/public/emoji/1f645-1f3ff.svg
+++ b/public/emoji/1f645-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f645-200d-2640-fe0f.svg b/public/emoji/1f645-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..4d88d71eb4a40
--- /dev/null
+++ b/public/emoji/1f645-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f645-200d-2642-fe0f.svg b/public/emoji/1f645-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..eae7e5fdb6685
--- /dev/null
+++ b/public/emoji/1f645-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f645.png b/public/emoji/1f645.png
deleted file mode 100644
index ed5771003228e..0000000000000
Binary files a/public/emoji/1f645.png and /dev/null differ
diff --git a/public/emoji/1f645.svg b/public/emoji/1f645.svg
index d735d25d781ba..4d88d71eb4a40 100644
--- a/public/emoji/1f645.svg
+++ b/public/emoji/1f645.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f646-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f646-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..df103cc7a9d6e
--- /dev/null
+++ b/public/emoji/1f646-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f646-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f646-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..0838f2dde9ff3
--- /dev/null
+++ b/public/emoji/1f646-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f646-1f3fb.png b/public/emoji/1f646-1f3fb.png
deleted file mode 100644
index c99543e785bd9..0000000000000
Binary files a/public/emoji/1f646-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f646-1f3fb.svg b/public/emoji/1f646-1f3fb.svg
index b8d8dfddb7b35..df103cc7a9d6e 100644
--- a/public/emoji/1f646-1f3fb.svg
+++ b/public/emoji/1f646-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f646-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f646-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..271cf8fd0b62e
--- /dev/null
+++ b/public/emoji/1f646-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f646-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f646-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..3a1069e0b8607
--- /dev/null
+++ b/public/emoji/1f646-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f646-1f3fc.png b/public/emoji/1f646-1f3fc.png
deleted file mode 100644
index ad5fae813dbc8..0000000000000
Binary files a/public/emoji/1f646-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f646-1f3fc.svg b/public/emoji/1f646-1f3fc.svg
index f16fa5a953eb0..271cf8fd0b62e 100644
--- a/public/emoji/1f646-1f3fc.svg
+++ b/public/emoji/1f646-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f646-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f646-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..16995b6a81a29
--- /dev/null
+++ b/public/emoji/1f646-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f646-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f646-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..910658dd27707
--- /dev/null
+++ b/public/emoji/1f646-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f646-1f3fd.png b/public/emoji/1f646-1f3fd.png
deleted file mode 100644
index 51bf4fab4062c..0000000000000
Binary files a/public/emoji/1f646-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f646-1f3fd.svg b/public/emoji/1f646-1f3fd.svg
index 9bc563c6b586d..16995b6a81a29 100644
--- a/public/emoji/1f646-1f3fd.svg
+++ b/public/emoji/1f646-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f646-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f646-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..7ddb98d58baf9
--- /dev/null
+++ b/public/emoji/1f646-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f646-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f646-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..125caa0c67725
--- /dev/null
+++ b/public/emoji/1f646-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f646-1f3fe.png b/public/emoji/1f646-1f3fe.png
deleted file mode 100644
index ee3f9dc640ab0..0000000000000
Binary files a/public/emoji/1f646-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f646-1f3fe.svg b/public/emoji/1f646-1f3fe.svg
index 5392c73753447..7ddb98d58baf9 100644
--- a/public/emoji/1f646-1f3fe.svg
+++ b/public/emoji/1f646-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f646-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f646-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..2d91be69f828d
--- /dev/null
+++ b/public/emoji/1f646-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f646-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f646-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..964fa2982768f
--- /dev/null
+++ b/public/emoji/1f646-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f646-1f3ff.png b/public/emoji/1f646-1f3ff.png
deleted file mode 100644
index 62a9d9237f7c5..0000000000000
Binary files a/public/emoji/1f646-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f646-1f3ff.svg b/public/emoji/1f646-1f3ff.svg
index 6a43d0b1a5e31..2d91be69f828d 100644
--- a/public/emoji/1f646-1f3ff.svg
+++ b/public/emoji/1f646-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f646-200d-2640-fe0f.svg b/public/emoji/1f646-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..6f357f8e708a6
--- /dev/null
+++ b/public/emoji/1f646-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f646-200d-2642-fe0f.svg b/public/emoji/1f646-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..236602e9fa4c0
--- /dev/null
+++ b/public/emoji/1f646-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f646.png b/public/emoji/1f646.png
deleted file mode 100644
index 90a2c7469c4bd..0000000000000
Binary files a/public/emoji/1f646.png and /dev/null differ
diff --git a/public/emoji/1f646.svg b/public/emoji/1f646.svg
index 8a9a9648e4b28..6f357f8e708a6 100644
--- a/public/emoji/1f646.svg
+++ b/public/emoji/1f646.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f647-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f647-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..fee297b9cddf6
--- /dev/null
+++ b/public/emoji/1f647-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f647-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f647-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..8b367d523f873
--- /dev/null
+++ b/public/emoji/1f647-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f647-1f3fb.png b/public/emoji/1f647-1f3fb.png
deleted file mode 100644
index 87afb7b54cf63..0000000000000
Binary files a/public/emoji/1f647-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f647-1f3fb.svg b/public/emoji/1f647-1f3fb.svg
index bce8d4babdc9a..8b367d523f873 100644
--- a/public/emoji/1f647-1f3fb.svg
+++ b/public/emoji/1f647-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f647-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f647-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..a6e77cca7af7e
--- /dev/null
+++ b/public/emoji/1f647-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f647-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f647-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..43f2bcb9c5a25
--- /dev/null
+++ b/public/emoji/1f647-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f647-1f3fc.png b/public/emoji/1f647-1f3fc.png
deleted file mode 100644
index 3ccf7dc085035..0000000000000
Binary files a/public/emoji/1f647-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f647-1f3fc.svg b/public/emoji/1f647-1f3fc.svg
index c492d09783f9b..43f2bcb9c5a25 100644
--- a/public/emoji/1f647-1f3fc.svg
+++ b/public/emoji/1f647-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f647-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f647-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..8ee53b8167247
--- /dev/null
+++ b/public/emoji/1f647-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f647-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f647-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..4b07a088272ae
--- /dev/null
+++ b/public/emoji/1f647-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f647-1f3fd.png b/public/emoji/1f647-1f3fd.png
deleted file mode 100644
index 8b9eb64f926b7..0000000000000
Binary files a/public/emoji/1f647-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f647-1f3fd.svg b/public/emoji/1f647-1f3fd.svg
index e615034036f3f..4b07a088272ae 100644
--- a/public/emoji/1f647-1f3fd.svg
+++ b/public/emoji/1f647-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f647-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f647-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..fc989b227df47
--- /dev/null
+++ b/public/emoji/1f647-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f647-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f647-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..851dae93d6425
--- /dev/null
+++ b/public/emoji/1f647-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f647-1f3fe.png b/public/emoji/1f647-1f3fe.png
deleted file mode 100644
index 683795ff40d7a..0000000000000
Binary files a/public/emoji/1f647-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f647-1f3fe.svg b/public/emoji/1f647-1f3fe.svg
index 090651faac9ce..851dae93d6425 100644
--- a/public/emoji/1f647-1f3fe.svg
+++ b/public/emoji/1f647-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f647-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f647-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..1d3cfa1f1a66d
--- /dev/null
+++ b/public/emoji/1f647-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f647-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f647-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..8fea01051f4fc
--- /dev/null
+++ b/public/emoji/1f647-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f647-1f3ff.png b/public/emoji/1f647-1f3ff.png
deleted file mode 100644
index 7969d97175210..0000000000000
Binary files a/public/emoji/1f647-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f647-1f3ff.svg b/public/emoji/1f647-1f3ff.svg
index f726d47a8069d..8fea01051f4fc 100644
--- a/public/emoji/1f647-1f3ff.svg
+++ b/public/emoji/1f647-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f647-200d-2640-fe0f.svg b/public/emoji/1f647-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..f4353ee985aa7
--- /dev/null
+++ b/public/emoji/1f647-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f647-200d-2642-fe0f.svg b/public/emoji/1f647-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..da2f281d4b269
--- /dev/null
+++ b/public/emoji/1f647-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f647.png b/public/emoji/1f647.png
deleted file mode 100644
index d8f793088dcd1..0000000000000
Binary files a/public/emoji/1f647.png and /dev/null differ
diff --git a/public/emoji/1f647.svg b/public/emoji/1f647.svg
index e5dedddd30a75..da2f281d4b269 100644
--- a/public/emoji/1f647.svg
+++ b/public/emoji/1f647.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f648.png b/public/emoji/1f648.png
deleted file mode 100644
index 5187e47453180..0000000000000
Binary files a/public/emoji/1f648.png and /dev/null differ
diff --git a/public/emoji/1f648.svg b/public/emoji/1f648.svg
index b8b51161e4e86..1d1f0924e3194 100644
--- a/public/emoji/1f648.svg
+++ b/public/emoji/1f648.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f649.png b/public/emoji/1f649.png
deleted file mode 100644
index 74b6be0c6c54a..0000000000000
Binary files a/public/emoji/1f649.png and /dev/null differ
diff --git a/public/emoji/1f649.svg b/public/emoji/1f649.svg
index ab6b6844c805f..db494cc26df41 100644
--- a/public/emoji/1f649.svg
+++ b/public/emoji/1f649.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64a.png b/public/emoji/1f64a.png
deleted file mode 100644
index 9d9e07c974b37..0000000000000
Binary files a/public/emoji/1f64a.png and /dev/null differ
diff --git a/public/emoji/1f64a.svg b/public/emoji/1f64a.svg
index 47df40a8c8640..7c87f05eb887e 100644
--- a/public/emoji/1f64a.svg
+++ b/public/emoji/1f64a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f64b-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..231fcade40e17
--- /dev/null
+++ b/public/emoji/1f64b-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f64b-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..ef3c817b00f57
--- /dev/null
+++ b/public/emoji/1f64b-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3fb.png b/public/emoji/1f64b-1f3fb.png
deleted file mode 100644
index 1c90e3e2689d7..0000000000000
Binary files a/public/emoji/1f64b-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f64b-1f3fb.svg b/public/emoji/1f64b-1f3fb.svg
index e9e7e3b3af294..231fcade40e17 100644
--- a/public/emoji/1f64b-1f3fb.svg
+++ b/public/emoji/1f64b-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f64b-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..7157d7421d037
--- /dev/null
+++ b/public/emoji/1f64b-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f64b-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..a0915c0712701
--- /dev/null
+++ b/public/emoji/1f64b-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3fc.png b/public/emoji/1f64b-1f3fc.png
deleted file mode 100644
index 82c3ef2bfc5a4..0000000000000
Binary files a/public/emoji/1f64b-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f64b-1f3fc.svg b/public/emoji/1f64b-1f3fc.svg
index 9e6ac9c2ca176..7157d7421d037 100644
--- a/public/emoji/1f64b-1f3fc.svg
+++ b/public/emoji/1f64b-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f64b-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..45eb562ca9042
--- /dev/null
+++ b/public/emoji/1f64b-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f64b-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..c9634b8d64d9a
--- /dev/null
+++ b/public/emoji/1f64b-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3fd.png b/public/emoji/1f64b-1f3fd.png
deleted file mode 100644
index 1b1da2aa0cac5..0000000000000
Binary files a/public/emoji/1f64b-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f64b-1f3fd.svg b/public/emoji/1f64b-1f3fd.svg
index d4e4a75f81b56..45eb562ca9042 100644
--- a/public/emoji/1f64b-1f3fd.svg
+++ b/public/emoji/1f64b-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f64b-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..7d3b14a3872c8
--- /dev/null
+++ b/public/emoji/1f64b-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f64b-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..7b2c719bd54e7
--- /dev/null
+++ b/public/emoji/1f64b-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3fe.png b/public/emoji/1f64b-1f3fe.png
deleted file mode 100644
index e453855c01ffa..0000000000000
Binary files a/public/emoji/1f64b-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f64b-1f3fe.svg b/public/emoji/1f64b-1f3fe.svg
index 39a1150008729..7d3b14a3872c8 100644
--- a/public/emoji/1f64b-1f3fe.svg
+++ b/public/emoji/1f64b-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f64b-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..1dd14746a2b75
--- /dev/null
+++ b/public/emoji/1f64b-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f64b-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..ce0d45a1d25f1
--- /dev/null
+++ b/public/emoji/1f64b-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64b-1f3ff.png b/public/emoji/1f64b-1f3ff.png
deleted file mode 100644
index b86200fd844e9..0000000000000
Binary files a/public/emoji/1f64b-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f64b-1f3ff.svg b/public/emoji/1f64b-1f3ff.svg
index f8cb017efde3a..1dd14746a2b75 100644
--- a/public/emoji/1f64b-1f3ff.svg
+++ b/public/emoji/1f64b-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64b-200d-2640-fe0f.svg b/public/emoji/1f64b-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..e1a2f19dc7ddf
--- /dev/null
+++ b/public/emoji/1f64b-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64b-200d-2642-fe0f.svg b/public/emoji/1f64b-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..9f9aea0bf4f5e
--- /dev/null
+++ b/public/emoji/1f64b-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64b.png b/public/emoji/1f64b.png
deleted file mode 100644
index 2880708c0cc73..0000000000000
Binary files a/public/emoji/1f64b.png and /dev/null differ
diff --git a/public/emoji/1f64b.svg b/public/emoji/1f64b.svg
index d221b1846d053..e1a2f19dc7ddf 100644
--- a/public/emoji/1f64b.svg
+++ b/public/emoji/1f64b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64c-1f3fb.png b/public/emoji/1f64c-1f3fb.png
deleted file mode 100644
index 1168b8236b646..0000000000000
Binary files a/public/emoji/1f64c-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f64c-1f3fb.svg b/public/emoji/1f64c-1f3fb.svg
index 2bec077d9031b..4a0b194f13b22 100644
--- a/public/emoji/1f64c-1f3fb.svg
+++ b/public/emoji/1f64c-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64c-1f3fc.png b/public/emoji/1f64c-1f3fc.png
deleted file mode 100644
index 322de622903be..0000000000000
Binary files a/public/emoji/1f64c-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f64c-1f3fc.svg b/public/emoji/1f64c-1f3fc.svg
index f90b8825c17bd..077ea85a029a6 100644
--- a/public/emoji/1f64c-1f3fc.svg
+++ b/public/emoji/1f64c-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64c-1f3fd.png b/public/emoji/1f64c-1f3fd.png
deleted file mode 100644
index 2aa24e05ae18a..0000000000000
Binary files a/public/emoji/1f64c-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f64c-1f3fd.svg b/public/emoji/1f64c-1f3fd.svg
index 0b0ed18ce434c..8b2e1e9ebdda3 100644
--- a/public/emoji/1f64c-1f3fd.svg
+++ b/public/emoji/1f64c-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64c-1f3fe.png b/public/emoji/1f64c-1f3fe.png
deleted file mode 100644
index f31bf0db992fd..0000000000000
Binary files a/public/emoji/1f64c-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f64c-1f3fe.svg b/public/emoji/1f64c-1f3fe.svg
index 413708003b05c..e5b98fcfca747 100644
--- a/public/emoji/1f64c-1f3fe.svg
+++ b/public/emoji/1f64c-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64c-1f3ff.png b/public/emoji/1f64c-1f3ff.png
deleted file mode 100644
index 5e95067f98b13..0000000000000
Binary files a/public/emoji/1f64c-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f64c-1f3ff.svg b/public/emoji/1f64c-1f3ff.svg
index e13a1d7b3b93f..65e7f1b2dcb42 100644
--- a/public/emoji/1f64c-1f3ff.svg
+++ b/public/emoji/1f64c-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64c.png b/public/emoji/1f64c.png
deleted file mode 100644
index c0155f728e785..0000000000000
Binary files a/public/emoji/1f64c.png and /dev/null differ
diff --git a/public/emoji/1f64c.svg b/public/emoji/1f64c.svg
index 0f7f86cfd6f2e..4ff308a9de75d 100644
--- a/public/emoji/1f64c.svg
+++ b/public/emoji/1f64c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f64d-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..ba73233300011
--- /dev/null
+++ b/public/emoji/1f64d-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f64d-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..174369312a75f
--- /dev/null
+++ b/public/emoji/1f64d-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3fb.png b/public/emoji/1f64d-1f3fb.png
deleted file mode 100644
index 21d3bb4392340..0000000000000
Binary files a/public/emoji/1f64d-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f64d-1f3fb.svg b/public/emoji/1f64d-1f3fb.svg
index 7a858ef2c846e..ba73233300011 100644
--- a/public/emoji/1f64d-1f3fb.svg
+++ b/public/emoji/1f64d-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f64d-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..31ad900f61b84
--- /dev/null
+++ b/public/emoji/1f64d-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f64d-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..461dd9dc17416
--- /dev/null
+++ b/public/emoji/1f64d-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3fc.png b/public/emoji/1f64d-1f3fc.png
deleted file mode 100644
index 973f5fc8382cc..0000000000000
Binary files a/public/emoji/1f64d-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f64d-1f3fc.svg b/public/emoji/1f64d-1f3fc.svg
index 10458b13f4ed6..31ad900f61b84 100644
--- a/public/emoji/1f64d-1f3fc.svg
+++ b/public/emoji/1f64d-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f64d-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..46f7a8c8d9062
--- /dev/null
+++ b/public/emoji/1f64d-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f64d-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..aa1741bc7aecb
--- /dev/null
+++ b/public/emoji/1f64d-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3fd.png b/public/emoji/1f64d-1f3fd.png
deleted file mode 100644
index 41fbcc78816c0..0000000000000
Binary files a/public/emoji/1f64d-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f64d-1f3fd.svg b/public/emoji/1f64d-1f3fd.svg
index f9842d0e4c76a..46f7a8c8d9062 100644
--- a/public/emoji/1f64d-1f3fd.svg
+++ b/public/emoji/1f64d-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f64d-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..5e2e2fb7a808d
--- /dev/null
+++ b/public/emoji/1f64d-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f64d-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..2fb851f37aa0c
--- /dev/null
+++ b/public/emoji/1f64d-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3fe.png b/public/emoji/1f64d-1f3fe.png
deleted file mode 100644
index 5a37c741030ee..0000000000000
Binary files a/public/emoji/1f64d-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f64d-1f3fe.svg b/public/emoji/1f64d-1f3fe.svg
index 57de38b91939b..5e2e2fb7a808d 100644
--- a/public/emoji/1f64d-1f3fe.svg
+++ b/public/emoji/1f64d-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f64d-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..e6acfa6f62267
--- /dev/null
+++ b/public/emoji/1f64d-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f64d-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..3a24ff123b46b
--- /dev/null
+++ b/public/emoji/1f64d-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64d-1f3ff.png b/public/emoji/1f64d-1f3ff.png
deleted file mode 100644
index e08141f3efec7..0000000000000
Binary files a/public/emoji/1f64d-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f64d-1f3ff.svg b/public/emoji/1f64d-1f3ff.svg
index 64af62a9b60d8..e6acfa6f62267 100644
--- a/public/emoji/1f64d-1f3ff.svg
+++ b/public/emoji/1f64d-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64d-200d-2640-fe0f.svg b/public/emoji/1f64d-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..293e6e48c4a35
--- /dev/null
+++ b/public/emoji/1f64d-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64d-200d-2642-fe0f.svg b/public/emoji/1f64d-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..2ae727a4aaa5c
--- /dev/null
+++ b/public/emoji/1f64d-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64d.png b/public/emoji/1f64d.png
deleted file mode 100644
index 579324959a18a..0000000000000
Binary files a/public/emoji/1f64d.png and /dev/null differ
diff --git a/public/emoji/1f64d.svg b/public/emoji/1f64d.svg
index 6309a63219a96..293e6e48c4a35 100644
--- a/public/emoji/1f64d.svg
+++ b/public/emoji/1f64d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f64e-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..08dd179a0494e
--- /dev/null
+++ b/public/emoji/1f64e-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f64e-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..262ae3afec1cd
--- /dev/null
+++ b/public/emoji/1f64e-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3fb.png b/public/emoji/1f64e-1f3fb.png
deleted file mode 100644
index 57e826b75a4e6..0000000000000
Binary files a/public/emoji/1f64e-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f64e-1f3fb.svg b/public/emoji/1f64e-1f3fb.svg
index 8d869fd6e429e..08dd179a0494e 100644
--- a/public/emoji/1f64e-1f3fb.svg
+++ b/public/emoji/1f64e-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f64e-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..497b5f03b6950
--- /dev/null
+++ b/public/emoji/1f64e-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f64e-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..b6acfce325d52
--- /dev/null
+++ b/public/emoji/1f64e-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3fc.png b/public/emoji/1f64e-1f3fc.png
deleted file mode 100644
index 3f317c0c25fd2..0000000000000
Binary files a/public/emoji/1f64e-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f64e-1f3fc.svg b/public/emoji/1f64e-1f3fc.svg
index 2dfd81c70d2aa..497b5f03b6950 100644
--- a/public/emoji/1f64e-1f3fc.svg
+++ b/public/emoji/1f64e-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f64e-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..d034260afc592
--- /dev/null
+++ b/public/emoji/1f64e-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f64e-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..206cae502e3ea
--- /dev/null
+++ b/public/emoji/1f64e-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3fd.png b/public/emoji/1f64e-1f3fd.png
deleted file mode 100644
index d2fbb6c20bfae..0000000000000
Binary files a/public/emoji/1f64e-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f64e-1f3fd.svg b/public/emoji/1f64e-1f3fd.svg
index 7cf16e681341e..d034260afc592 100644
--- a/public/emoji/1f64e-1f3fd.svg
+++ b/public/emoji/1f64e-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f64e-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..88f0cbf52453f
--- /dev/null
+++ b/public/emoji/1f64e-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f64e-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..f66526e39f097
--- /dev/null
+++ b/public/emoji/1f64e-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3fe.png b/public/emoji/1f64e-1f3fe.png
deleted file mode 100644
index 643ceb4a5c5f4..0000000000000
Binary files a/public/emoji/1f64e-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f64e-1f3fe.svg b/public/emoji/1f64e-1f3fe.svg
index 84d91ba6a4a42..88f0cbf52453f 100644
--- a/public/emoji/1f64e-1f3fe.svg
+++ b/public/emoji/1f64e-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f64e-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..2adddb911a0e2
--- /dev/null
+++ b/public/emoji/1f64e-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f64e-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..8bc4352d580fe
--- /dev/null
+++ b/public/emoji/1f64e-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64e-1f3ff.png b/public/emoji/1f64e-1f3ff.png
deleted file mode 100644
index b2eb6859c32c4..0000000000000
Binary files a/public/emoji/1f64e-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f64e-1f3ff.svg b/public/emoji/1f64e-1f3ff.svg
index 00882dd2faaee..2adddb911a0e2 100644
--- a/public/emoji/1f64e-1f3ff.svg
+++ b/public/emoji/1f64e-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64e-200d-2640-fe0f.svg b/public/emoji/1f64e-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..f63e4da853779
--- /dev/null
+++ b/public/emoji/1f64e-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64e-200d-2642-fe0f.svg b/public/emoji/1f64e-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..5f5c1e1d9f85a
--- /dev/null
+++ b/public/emoji/1f64e-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f64e.png b/public/emoji/1f64e.png
deleted file mode 100644
index 10eb057107814..0000000000000
Binary files a/public/emoji/1f64e.png and /dev/null differ
diff --git a/public/emoji/1f64e.svg b/public/emoji/1f64e.svg
index b23b54491b036..f63e4da853779 100644
--- a/public/emoji/1f64e.svg
+++ b/public/emoji/1f64e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64f-1f3fb.png b/public/emoji/1f64f-1f3fb.png
deleted file mode 100644
index 060ef25717206..0000000000000
Binary files a/public/emoji/1f64f-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f64f-1f3fb.svg b/public/emoji/1f64f-1f3fb.svg
index eddfe82f00281..15e30c292eb70 100644
--- a/public/emoji/1f64f-1f3fb.svg
+++ b/public/emoji/1f64f-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64f-1f3fc.png b/public/emoji/1f64f-1f3fc.png
deleted file mode 100644
index 56dc607c07a70..0000000000000
Binary files a/public/emoji/1f64f-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f64f-1f3fc.svg b/public/emoji/1f64f-1f3fc.svg
index 05011796d3350..24fc1b49476a5 100644
--- a/public/emoji/1f64f-1f3fc.svg
+++ b/public/emoji/1f64f-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64f-1f3fd.png b/public/emoji/1f64f-1f3fd.png
deleted file mode 100644
index 0f33b862008e7..0000000000000
Binary files a/public/emoji/1f64f-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f64f-1f3fd.svg b/public/emoji/1f64f-1f3fd.svg
index 40c74cf9067a9..00a919804a3a9 100644
--- a/public/emoji/1f64f-1f3fd.svg
+++ b/public/emoji/1f64f-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64f-1f3fe.png b/public/emoji/1f64f-1f3fe.png
deleted file mode 100644
index 2ea8dc116572b..0000000000000
Binary files a/public/emoji/1f64f-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f64f-1f3fe.svg b/public/emoji/1f64f-1f3fe.svg
index 1e8149f5201e2..f18b44e1405ca 100644
--- a/public/emoji/1f64f-1f3fe.svg
+++ b/public/emoji/1f64f-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64f-1f3ff.png b/public/emoji/1f64f-1f3ff.png
deleted file mode 100644
index 2128a6c4703af..0000000000000
Binary files a/public/emoji/1f64f-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f64f-1f3ff.svg b/public/emoji/1f64f-1f3ff.svg
index 3c7a1b6cb93c8..f92564f7fe3c4 100644
--- a/public/emoji/1f64f-1f3ff.svg
+++ b/public/emoji/1f64f-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f64f.png b/public/emoji/1f64f.png
deleted file mode 100644
index 8347f2435bee8..0000000000000
Binary files a/public/emoji/1f64f.png and /dev/null differ
diff --git a/public/emoji/1f64f.svg b/public/emoji/1f64f.svg
index a6b0bca048031..085c2c9726443 100644
--- a/public/emoji/1f64f.svg
+++ b/public/emoji/1f64f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f680.png b/public/emoji/1f680.png
deleted file mode 100644
index 0d8da089a37ee..0000000000000
Binary files a/public/emoji/1f680.png and /dev/null differ
diff --git a/public/emoji/1f680.svg b/public/emoji/1f680.svg
index 4ba418a05adcd..b26ded5ccb6c2 100644
--- a/public/emoji/1f680.svg
+++ b/public/emoji/1f680.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f681.png b/public/emoji/1f681.png
deleted file mode 100644
index 7ec5f39a51a22..0000000000000
Binary files a/public/emoji/1f681.png and /dev/null differ
diff --git a/public/emoji/1f681.svg b/public/emoji/1f681.svg
index fa2ce38e44960..cf0480df525b7 100644
--- a/public/emoji/1f681.svg
+++ b/public/emoji/1f681.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f682.png b/public/emoji/1f682.png
deleted file mode 100644
index 9ac0d999c4c6d..0000000000000
Binary files a/public/emoji/1f682.png and /dev/null differ
diff --git a/public/emoji/1f682.svg b/public/emoji/1f682.svg
index 829f6e2aa2b40..2ea090c6f1609 100644
--- a/public/emoji/1f682.svg
+++ b/public/emoji/1f682.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f683.png b/public/emoji/1f683.png
deleted file mode 100644
index a9acbf1300811..0000000000000
Binary files a/public/emoji/1f683.png and /dev/null differ
diff --git a/public/emoji/1f683.svg b/public/emoji/1f683.svg
index 8042882656f00..30f3c027bee0d 100644
--- a/public/emoji/1f683.svg
+++ b/public/emoji/1f683.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f684.png b/public/emoji/1f684.png
deleted file mode 100644
index ed61c67bf075e..0000000000000
Binary files a/public/emoji/1f684.png and /dev/null differ
diff --git a/public/emoji/1f684.svg b/public/emoji/1f684.svg
index 291c00a185bbe..e2c14f916f43d 100644
--- a/public/emoji/1f684.svg
+++ b/public/emoji/1f684.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f685.png b/public/emoji/1f685.png
deleted file mode 100644
index 4f698e056fa1f..0000000000000
Binary files a/public/emoji/1f685.png and /dev/null differ
diff --git a/public/emoji/1f685.svg b/public/emoji/1f685.svg
index e6e4a7a6ac003..cc80bc4aaa65b 100644
--- a/public/emoji/1f685.svg
+++ b/public/emoji/1f685.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f686.png b/public/emoji/1f686.png
deleted file mode 100644
index 367c7bc5d3968..0000000000000
Binary files a/public/emoji/1f686.png and /dev/null differ
diff --git a/public/emoji/1f686.svg b/public/emoji/1f686.svg
index 15d5e1ebbec54..647ab081530ba 100644
--- a/public/emoji/1f686.svg
+++ b/public/emoji/1f686.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f687.png b/public/emoji/1f687.png
deleted file mode 100644
index 1de8f0551f3b8..0000000000000
Binary files a/public/emoji/1f687.png and /dev/null differ
diff --git a/public/emoji/1f687.svg b/public/emoji/1f687.svg
index 5f075abdaeb90..60c3d8268ba57 100644
--- a/public/emoji/1f687.svg
+++ b/public/emoji/1f687.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f688.png b/public/emoji/1f688.png
deleted file mode 100644
index a64829f5078f9..0000000000000
Binary files a/public/emoji/1f688.png and /dev/null differ
diff --git a/public/emoji/1f688.svg b/public/emoji/1f688.svg
index f5fc3b02b4fd8..cb6e6d42b3d68 100644
--- a/public/emoji/1f688.svg
+++ b/public/emoji/1f688.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f689.png b/public/emoji/1f689.png
deleted file mode 100644
index 5c26fee529cc3..0000000000000
Binary files a/public/emoji/1f689.png and /dev/null differ
diff --git a/public/emoji/1f689.svg b/public/emoji/1f689.svg
index 6c3953aa30370..1c5c465c005b8 100644
--- a/public/emoji/1f689.svg
+++ b/public/emoji/1f689.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f68a.png b/public/emoji/1f68a.png
deleted file mode 100644
index b6f0e69038fab..0000000000000
Binary files a/public/emoji/1f68a.png and /dev/null differ
diff --git a/public/emoji/1f68a.svg b/public/emoji/1f68a.svg
index e98a079b011a5..829df7f8d45b1 100644
--- a/public/emoji/1f68a.svg
+++ b/public/emoji/1f68a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f68b.png b/public/emoji/1f68b.png
deleted file mode 100644
index 3c80321f7e8b2..0000000000000
Binary files a/public/emoji/1f68b.png and /dev/null differ
diff --git a/public/emoji/1f68b.svg b/public/emoji/1f68b.svg
index 8c64b51112a46..5cb3696fd6122 100644
--- a/public/emoji/1f68b.svg
+++ b/public/emoji/1f68b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f68c.png b/public/emoji/1f68c.png
deleted file mode 100644
index 641ddc56ca700..0000000000000
Binary files a/public/emoji/1f68c.png and /dev/null differ
diff --git a/public/emoji/1f68c.svg b/public/emoji/1f68c.svg
index 99862d5116196..8b5db4e4b4b79 100644
--- a/public/emoji/1f68c.svg
+++ b/public/emoji/1f68c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f68d.png b/public/emoji/1f68d.png
deleted file mode 100644
index ad91e256c7f8e..0000000000000
Binary files a/public/emoji/1f68d.png and /dev/null differ
diff --git a/public/emoji/1f68d.svg b/public/emoji/1f68d.svg
index d2d2f59c747f2..7bde4113e3a4a 100644
--- a/public/emoji/1f68d.svg
+++ b/public/emoji/1f68d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f68e.png b/public/emoji/1f68e.png
deleted file mode 100644
index 139a9931b529d..0000000000000
Binary files a/public/emoji/1f68e.png and /dev/null differ
diff --git a/public/emoji/1f68e.svg b/public/emoji/1f68e.svg
index ec3e927f81cf7..bac04094af549 100644
--- a/public/emoji/1f68e.svg
+++ b/public/emoji/1f68e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f68f.png b/public/emoji/1f68f.png
deleted file mode 100644
index b2b62208bfd64..0000000000000
Binary files a/public/emoji/1f68f.png and /dev/null differ
diff --git a/public/emoji/1f68f.svg b/public/emoji/1f68f.svg
index 3e9cb1d116c68..e224dbc7e72ec 100644
--- a/public/emoji/1f68f.svg
+++ b/public/emoji/1f68f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f690.png b/public/emoji/1f690.png
deleted file mode 100644
index c60dd8f47ab08..0000000000000
Binary files a/public/emoji/1f690.png and /dev/null differ
diff --git a/public/emoji/1f690.svg b/public/emoji/1f690.svg
index 5357258cc3666..b2a3b1cc1394e 100644
--- a/public/emoji/1f690.svg
+++ b/public/emoji/1f690.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f691.png b/public/emoji/1f691.png
deleted file mode 100644
index 6fb8076d76606..0000000000000
Binary files a/public/emoji/1f691.png and /dev/null differ
diff --git a/public/emoji/1f691.svg b/public/emoji/1f691.svg
index 2bcbcffa60978..7c969bef880ae 100644
--- a/public/emoji/1f691.svg
+++ b/public/emoji/1f691.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f692.png b/public/emoji/1f692.png
deleted file mode 100644
index 2cd45b7cf7e66..0000000000000
Binary files a/public/emoji/1f692.png and /dev/null differ
diff --git a/public/emoji/1f692.svg b/public/emoji/1f692.svg
index d82b2548336b3..a7672c43df748 100644
--- a/public/emoji/1f692.svg
+++ b/public/emoji/1f692.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f693.png b/public/emoji/1f693.png
deleted file mode 100644
index 3da4253de7e8e..0000000000000
Binary files a/public/emoji/1f693.png and /dev/null differ
diff --git a/public/emoji/1f693.svg b/public/emoji/1f693.svg
index 7964668dffd40..3241874c6c200 100644
--- a/public/emoji/1f693.svg
+++ b/public/emoji/1f693.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f694.png b/public/emoji/1f694.png
deleted file mode 100644
index c9109c85b5d9f..0000000000000
Binary files a/public/emoji/1f694.png and /dev/null differ
diff --git a/public/emoji/1f694.svg b/public/emoji/1f694.svg
index 680a09759598e..91e5aea9c96c4 100644
--- a/public/emoji/1f694.svg
+++ b/public/emoji/1f694.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f695.png b/public/emoji/1f695.png
deleted file mode 100644
index 55f4cc84797ae..0000000000000
Binary files a/public/emoji/1f695.png and /dev/null differ
diff --git a/public/emoji/1f695.svg b/public/emoji/1f695.svg
index c6bdad8ba9d07..0d7a21a7c02d3 100644
--- a/public/emoji/1f695.svg
+++ b/public/emoji/1f695.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f696.png b/public/emoji/1f696.png
deleted file mode 100644
index fea14e4584642..0000000000000
Binary files a/public/emoji/1f696.png and /dev/null differ
diff --git a/public/emoji/1f696.svg b/public/emoji/1f696.svg
index 6a02e812fd0c6..da0c6c583f7b4 100644
--- a/public/emoji/1f696.svg
+++ b/public/emoji/1f696.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f697.png b/public/emoji/1f697.png
deleted file mode 100644
index b3e6a774dea63..0000000000000
Binary files a/public/emoji/1f697.png and /dev/null differ
diff --git a/public/emoji/1f697.svg b/public/emoji/1f697.svg
index da85c344d2911..03e094c257b1a 100644
--- a/public/emoji/1f697.svg
+++ b/public/emoji/1f697.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f698.png b/public/emoji/1f698.png
deleted file mode 100644
index 3c7e1d52e63d7..0000000000000
Binary files a/public/emoji/1f698.png and /dev/null differ
diff --git a/public/emoji/1f698.svg b/public/emoji/1f698.svg
index cd0a8881ad5ab..9adc06efb3eb5 100644
--- a/public/emoji/1f698.svg
+++ b/public/emoji/1f698.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f699.png b/public/emoji/1f699.png
deleted file mode 100644
index e8ba817d393f1..0000000000000
Binary files a/public/emoji/1f699.png and /dev/null differ
diff --git a/public/emoji/1f699.svg b/public/emoji/1f699.svg
index 12d1b6d10dbd0..18d132b01defa 100644
--- a/public/emoji/1f699.svg
+++ b/public/emoji/1f699.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f69a.png b/public/emoji/1f69a.png
deleted file mode 100644
index 130de047f8b29..0000000000000
Binary files a/public/emoji/1f69a.png and /dev/null differ
diff --git a/public/emoji/1f69a.svg b/public/emoji/1f69a.svg
index c543e986251d4..8a0d04a4aee51 100644
--- a/public/emoji/1f69a.svg
+++ b/public/emoji/1f69a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f69b.png b/public/emoji/1f69b.png
deleted file mode 100644
index c821731713246..0000000000000
Binary files a/public/emoji/1f69b.png and /dev/null differ
diff --git a/public/emoji/1f69b.svg b/public/emoji/1f69b.svg
index 5f0fbc1ca6464..b5b3522a34f79 100644
--- a/public/emoji/1f69b.svg
+++ b/public/emoji/1f69b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f69c.png b/public/emoji/1f69c.png
deleted file mode 100644
index c1bf8cae44f5a..0000000000000
Binary files a/public/emoji/1f69c.png and /dev/null differ
diff --git a/public/emoji/1f69c.svg b/public/emoji/1f69c.svg
index 794c2d369e798..3c2d4ff5b8959 100644
--- a/public/emoji/1f69c.svg
+++ b/public/emoji/1f69c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f69d.png b/public/emoji/1f69d.png
deleted file mode 100644
index 11eb1f574bf7a..0000000000000
Binary files a/public/emoji/1f69d.png and /dev/null differ
diff --git a/public/emoji/1f69d.svg b/public/emoji/1f69d.svg
index 4244515a24063..f7cd69eea44c2 100644
--- a/public/emoji/1f69d.svg
+++ b/public/emoji/1f69d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f69e.png b/public/emoji/1f69e.png
deleted file mode 100644
index ade2218e46970..0000000000000
Binary files a/public/emoji/1f69e.png and /dev/null differ
diff --git a/public/emoji/1f69e.svg b/public/emoji/1f69e.svg
index 2bbbd3a0205d8..edab9bc152b3d 100644
--- a/public/emoji/1f69e.svg
+++ b/public/emoji/1f69e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f69f.png b/public/emoji/1f69f.png
deleted file mode 100644
index a59d5f48c2465..0000000000000
Binary files a/public/emoji/1f69f.png and /dev/null differ
diff --git a/public/emoji/1f69f.svg b/public/emoji/1f69f.svg
index 9f1974860fb64..f98920fd2ea3b 100644
--- a/public/emoji/1f69f.svg
+++ b/public/emoji/1f69f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a0.png b/public/emoji/1f6a0.png
deleted file mode 100644
index 1dea73ca53b51..0000000000000
Binary files a/public/emoji/1f6a0.png and /dev/null differ
diff --git a/public/emoji/1f6a0.svg b/public/emoji/1f6a0.svg
index e8eb108975f00..58ce005cda1f4 100644
--- a/public/emoji/1f6a0.svg
+++ b/public/emoji/1f6a0.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a1.png b/public/emoji/1f6a1.png
deleted file mode 100644
index 3eb4b61bf1d3f..0000000000000
Binary files a/public/emoji/1f6a1.png and /dev/null differ
diff --git a/public/emoji/1f6a1.svg b/public/emoji/1f6a1.svg
index 84de8fddf05c4..c06e2d34a999f 100644
--- a/public/emoji/1f6a1.svg
+++ b/public/emoji/1f6a1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a2.png b/public/emoji/1f6a2.png
deleted file mode 100644
index 62d54f7d6c92b..0000000000000
Binary files a/public/emoji/1f6a2.png and /dev/null differ
diff --git a/public/emoji/1f6a2.svg b/public/emoji/1f6a2.svg
index 032a22c98f919..015a830cbb0b6 100644
--- a/public/emoji/1f6a2.svg
+++ b/public/emoji/1f6a2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f6a3-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..dc8b2470e1f6c
--- /dev/null
+++ b/public/emoji/1f6a3-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f6a3-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..373293e11e749
--- /dev/null
+++ b/public/emoji/1f6a3-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3fb.png b/public/emoji/1f6a3-1f3fb.png
deleted file mode 100644
index 5e5d18548cb0c..0000000000000
Binary files a/public/emoji/1f6a3-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f6a3-1f3fb.svg b/public/emoji/1f6a3-1f3fb.svg
index a97ed61b21685..373293e11e749 100644
--- a/public/emoji/1f6a3-1f3fb.svg
+++ b/public/emoji/1f6a3-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f6a3-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..cbf40885440f5
--- /dev/null
+++ b/public/emoji/1f6a3-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f6a3-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..afcfc9d11298f
--- /dev/null
+++ b/public/emoji/1f6a3-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3fc.png b/public/emoji/1f6a3-1f3fc.png
deleted file mode 100644
index 9b123ef88716d..0000000000000
Binary files a/public/emoji/1f6a3-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f6a3-1f3fc.svg b/public/emoji/1f6a3-1f3fc.svg
index 4579d7f9980ba..afcfc9d11298f 100644
--- a/public/emoji/1f6a3-1f3fc.svg
+++ b/public/emoji/1f6a3-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f6a3-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..dfb4cc90c9f7a
--- /dev/null
+++ b/public/emoji/1f6a3-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f6a3-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..a68a297358d37
--- /dev/null
+++ b/public/emoji/1f6a3-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3fd.png b/public/emoji/1f6a3-1f3fd.png
deleted file mode 100644
index 8ebd89a55f508..0000000000000
Binary files a/public/emoji/1f6a3-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f6a3-1f3fd.svg b/public/emoji/1f6a3-1f3fd.svg
index 30f40ace808b9..a68a297358d37 100644
--- a/public/emoji/1f6a3-1f3fd.svg
+++ b/public/emoji/1f6a3-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f6a3-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..b8125596f891f
--- /dev/null
+++ b/public/emoji/1f6a3-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f6a3-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..4a0bdc0fd82d6
--- /dev/null
+++ b/public/emoji/1f6a3-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3fe.png b/public/emoji/1f6a3-1f3fe.png
deleted file mode 100644
index 2b0d04f87255e..0000000000000
Binary files a/public/emoji/1f6a3-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f6a3-1f3fe.svg b/public/emoji/1f6a3-1f3fe.svg
index 3b64992808e3d..4a0bdc0fd82d6 100644
--- a/public/emoji/1f6a3-1f3fe.svg
+++ b/public/emoji/1f6a3-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f6a3-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..ef0025a7fd233
--- /dev/null
+++ b/public/emoji/1f6a3-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f6a3-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..11b8650dd1ca6
--- /dev/null
+++ b/public/emoji/1f6a3-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6a3-1f3ff.png b/public/emoji/1f6a3-1f3ff.png
deleted file mode 100644
index b346f2dfc84be..0000000000000
Binary files a/public/emoji/1f6a3-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f6a3-1f3ff.svg b/public/emoji/1f6a3-1f3ff.svg
index 57bd8c0febfed..11b8650dd1ca6 100644
--- a/public/emoji/1f6a3-1f3ff.svg
+++ b/public/emoji/1f6a3-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a3-200d-2640-fe0f.svg b/public/emoji/1f6a3-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..923ed2b077146
--- /dev/null
+++ b/public/emoji/1f6a3-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6a3-200d-2642-fe0f.svg b/public/emoji/1f6a3-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..fb16b9148c206
--- /dev/null
+++ b/public/emoji/1f6a3-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6a3.png b/public/emoji/1f6a3.png
deleted file mode 100644
index dd4dfc095d9a2..0000000000000
Binary files a/public/emoji/1f6a3.png and /dev/null differ
diff --git a/public/emoji/1f6a3.svg b/public/emoji/1f6a3.svg
index 89eb387dc91e5..fb16b9148c206 100644
--- a/public/emoji/1f6a3.svg
+++ b/public/emoji/1f6a3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a4.png b/public/emoji/1f6a4.png
deleted file mode 100644
index 74059d12de189..0000000000000
Binary files a/public/emoji/1f6a4.png and /dev/null differ
diff --git a/public/emoji/1f6a4.svg b/public/emoji/1f6a4.svg
index 70aa1adc203de..796817aa3e4ff 100644
--- a/public/emoji/1f6a4.svg
+++ b/public/emoji/1f6a4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a5.png b/public/emoji/1f6a5.png
deleted file mode 100644
index 6b312285b0065..0000000000000
Binary files a/public/emoji/1f6a5.png and /dev/null differ
diff --git a/public/emoji/1f6a5.svg b/public/emoji/1f6a5.svg
index 30aa0d0923306..d720e00434126 100644
--- a/public/emoji/1f6a5.svg
+++ b/public/emoji/1f6a5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a6.png b/public/emoji/1f6a6.png
deleted file mode 100644
index 8085973eecf43..0000000000000
Binary files a/public/emoji/1f6a6.png and /dev/null differ
diff --git a/public/emoji/1f6a6.svg b/public/emoji/1f6a6.svg
index 7f6e697b409fa..9949ca9275876 100644
--- a/public/emoji/1f6a6.svg
+++ b/public/emoji/1f6a6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a7.png b/public/emoji/1f6a7.png
deleted file mode 100644
index ef8db5f471c29..0000000000000
Binary files a/public/emoji/1f6a7.png and /dev/null differ
diff --git a/public/emoji/1f6a7.svg b/public/emoji/1f6a7.svg
index c48a759c1e132..39dbfd5af33be 100644
--- a/public/emoji/1f6a7.svg
+++ b/public/emoji/1f6a7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a8.png b/public/emoji/1f6a8.png
deleted file mode 100644
index cad66b0afefb0..0000000000000
Binary files a/public/emoji/1f6a8.png and /dev/null differ
diff --git a/public/emoji/1f6a8.svg b/public/emoji/1f6a8.svg
index 2a00519110e9a..dce1260baa8ee 100644
--- a/public/emoji/1f6a8.svg
+++ b/public/emoji/1f6a8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6a9.png b/public/emoji/1f6a9.png
deleted file mode 100644
index c12d8b0688693..0000000000000
Binary files a/public/emoji/1f6a9.png and /dev/null differ
diff --git a/public/emoji/1f6a9.svg b/public/emoji/1f6a9.svg
index d07347b59ae6b..44a68cf20770e 100644
--- a/public/emoji/1f6a9.svg
+++ b/public/emoji/1f6a9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6aa.png b/public/emoji/1f6aa.png
deleted file mode 100644
index 36ae3e274946f..0000000000000
Binary files a/public/emoji/1f6aa.png and /dev/null differ
diff --git a/public/emoji/1f6aa.svg b/public/emoji/1f6aa.svg
index ac7fa2f073bc5..6743f42f6a240 100644
--- a/public/emoji/1f6aa.svg
+++ b/public/emoji/1f6aa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6ab.png b/public/emoji/1f6ab.png
deleted file mode 100644
index d2efd65e74b97..0000000000000
Binary files a/public/emoji/1f6ab.png and /dev/null differ
diff --git a/public/emoji/1f6ab.svg b/public/emoji/1f6ab.svg
index 1877e1d63de1a..deecfc9d54140 100644
--- a/public/emoji/1f6ab.svg
+++ b/public/emoji/1f6ab.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6ac.png b/public/emoji/1f6ac.png
deleted file mode 100644
index 910f648c8f9f2..0000000000000
Binary files a/public/emoji/1f6ac.png and /dev/null differ
diff --git a/public/emoji/1f6ac.svg b/public/emoji/1f6ac.svg
index 2f44e929deb02..19d8f162db2d5 100644
--- a/public/emoji/1f6ac.svg
+++ b/public/emoji/1f6ac.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6ad.png b/public/emoji/1f6ad.png
deleted file mode 100644
index 586b8d29d05b4..0000000000000
Binary files a/public/emoji/1f6ad.png and /dev/null differ
diff --git a/public/emoji/1f6ad.svg b/public/emoji/1f6ad.svg
index f02dd41b38ea3..504d2aaf3821d 100644
--- a/public/emoji/1f6ad.svg
+++ b/public/emoji/1f6ad.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6ae.png b/public/emoji/1f6ae.png
deleted file mode 100644
index 82a84f9a37589..0000000000000
Binary files a/public/emoji/1f6ae.png and /dev/null differ
diff --git a/public/emoji/1f6ae.svg b/public/emoji/1f6ae.svg
index 54cbd381e1559..1a5d6ae557eed 100644
--- a/public/emoji/1f6ae.svg
+++ b/public/emoji/1f6ae.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6af.png b/public/emoji/1f6af.png
deleted file mode 100644
index 341d2575f4f48..0000000000000
Binary files a/public/emoji/1f6af.png and /dev/null differ
diff --git a/public/emoji/1f6af.svg b/public/emoji/1f6af.svg
index bfc991b0787f3..1e311893a161c 100644
--- a/public/emoji/1f6af.svg
+++ b/public/emoji/1f6af.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b0.png b/public/emoji/1f6b0.png
deleted file mode 100644
index 2c610049459d8..0000000000000
Binary files a/public/emoji/1f6b0.png and /dev/null differ
diff --git a/public/emoji/1f6b0.svg b/public/emoji/1f6b0.svg
index 504d3cec0737b..19c4240e90244 100644
--- a/public/emoji/1f6b0.svg
+++ b/public/emoji/1f6b0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b1.png b/public/emoji/1f6b1.png
deleted file mode 100644
index 827d4193f4ea4..0000000000000
Binary files a/public/emoji/1f6b1.png and /dev/null differ
diff --git a/public/emoji/1f6b1.svg b/public/emoji/1f6b1.svg
index 0eec893e11ae6..de985691e7242 100644
--- a/public/emoji/1f6b1.svg
+++ b/public/emoji/1f6b1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b2.png b/public/emoji/1f6b2.png
deleted file mode 100644
index 556ed70f1a705..0000000000000
Binary files a/public/emoji/1f6b2.png and /dev/null differ
diff --git a/public/emoji/1f6b2.svg b/public/emoji/1f6b2.svg
index 0a4447d6cd4ab..e5638ad79f09f 100644
--- a/public/emoji/1f6b2.svg
+++ b/public/emoji/1f6b2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b3.png b/public/emoji/1f6b3.png
deleted file mode 100644
index 19c85421ce9d3..0000000000000
Binary files a/public/emoji/1f6b3.png and /dev/null differ
diff --git a/public/emoji/1f6b3.svg b/public/emoji/1f6b3.svg
index 320cc23716cd8..0b1eee9703a8f 100644
--- a/public/emoji/1f6b3.svg
+++ b/public/emoji/1f6b3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f6b4-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..c949abec108b6
--- /dev/null
+++ b/public/emoji/1f6b4-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f6b4-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..4a6d96ff9cb4b
--- /dev/null
+++ b/public/emoji/1f6b4-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3fb.png b/public/emoji/1f6b4-1f3fb.png
deleted file mode 100644
index decc2f728fe33..0000000000000
Binary files a/public/emoji/1f6b4-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f6b4-1f3fb.svg b/public/emoji/1f6b4-1f3fb.svg
index 23c64dcb0f941..4a6d96ff9cb4b 100644
--- a/public/emoji/1f6b4-1f3fb.svg
+++ b/public/emoji/1f6b4-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f6b4-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..10144b26f5c97
--- /dev/null
+++ b/public/emoji/1f6b4-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f6b4-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..0916f96a4b91d
--- /dev/null
+++ b/public/emoji/1f6b4-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3fc.png b/public/emoji/1f6b4-1f3fc.png
deleted file mode 100644
index 0067717b80acf..0000000000000
Binary files a/public/emoji/1f6b4-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f6b4-1f3fc.svg b/public/emoji/1f6b4-1f3fc.svg
index 3451fe9ba5e1b..0916f96a4b91d 100644
--- a/public/emoji/1f6b4-1f3fc.svg
+++ b/public/emoji/1f6b4-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f6b4-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..a14652605a8da
--- /dev/null
+++ b/public/emoji/1f6b4-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f6b4-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..488a0859f9803
--- /dev/null
+++ b/public/emoji/1f6b4-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3fd.png b/public/emoji/1f6b4-1f3fd.png
deleted file mode 100644
index a4f7b5e2776a2..0000000000000
Binary files a/public/emoji/1f6b4-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f6b4-1f3fd.svg b/public/emoji/1f6b4-1f3fd.svg
index a5b9598664bbc..488a0859f9803 100644
--- a/public/emoji/1f6b4-1f3fd.svg
+++ b/public/emoji/1f6b4-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f6b4-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..f667db53e7a4c
--- /dev/null
+++ b/public/emoji/1f6b4-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f6b4-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..e3989ddb8ba50
--- /dev/null
+++ b/public/emoji/1f6b4-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3fe.png b/public/emoji/1f6b4-1f3fe.png
deleted file mode 100644
index a3c8a797db428..0000000000000
Binary files a/public/emoji/1f6b4-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f6b4-1f3fe.svg b/public/emoji/1f6b4-1f3fe.svg
index 1dcaae8621839..e3989ddb8ba50 100644
--- a/public/emoji/1f6b4-1f3fe.svg
+++ b/public/emoji/1f6b4-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f6b4-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..d0be70885e5e5
--- /dev/null
+++ b/public/emoji/1f6b4-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f6b4-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..1c37cb11072b2
--- /dev/null
+++ b/public/emoji/1f6b4-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b4-1f3ff.png b/public/emoji/1f6b4-1f3ff.png
deleted file mode 100644
index 1606a8740512c..0000000000000
Binary files a/public/emoji/1f6b4-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f6b4-1f3ff.svg b/public/emoji/1f6b4-1f3ff.svg
index 44fc622fed1c5..1c37cb11072b2 100644
--- a/public/emoji/1f6b4-1f3ff.svg
+++ b/public/emoji/1f6b4-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b4-200d-2640-fe0f.svg b/public/emoji/1f6b4-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..69480c8310416
--- /dev/null
+++ b/public/emoji/1f6b4-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b4-200d-2642-fe0f.svg b/public/emoji/1f6b4-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..68ec2c479a358
--- /dev/null
+++ b/public/emoji/1f6b4-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b4.png b/public/emoji/1f6b4.png
deleted file mode 100644
index 9274da11048ea..0000000000000
Binary files a/public/emoji/1f6b4.png and /dev/null differ
diff --git a/public/emoji/1f6b4.svg b/public/emoji/1f6b4.svg
index d66ad5c6ceb87..68ec2c479a358 100644
--- a/public/emoji/1f6b4.svg
+++ b/public/emoji/1f6b4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f6b5-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..86185f8508e78
--- /dev/null
+++ b/public/emoji/1f6b5-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f6b5-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..f65d701a412d7
--- /dev/null
+++ b/public/emoji/1f6b5-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3fb.png b/public/emoji/1f6b5-1f3fb.png
deleted file mode 100644
index e9f1daf5e406c..0000000000000
Binary files a/public/emoji/1f6b5-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f6b5-1f3fb.svg b/public/emoji/1f6b5-1f3fb.svg
index 5ce96f5b2487b..f65d701a412d7 100644
--- a/public/emoji/1f6b5-1f3fb.svg
+++ b/public/emoji/1f6b5-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f6b5-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..f876528ea13de
--- /dev/null
+++ b/public/emoji/1f6b5-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f6b5-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..82785c12e16d0
--- /dev/null
+++ b/public/emoji/1f6b5-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3fc.png b/public/emoji/1f6b5-1f3fc.png
deleted file mode 100644
index 555b9e29d4dfe..0000000000000
Binary files a/public/emoji/1f6b5-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f6b5-1f3fc.svg b/public/emoji/1f6b5-1f3fc.svg
index 9b088b9f7debe..82785c12e16d0 100644
--- a/public/emoji/1f6b5-1f3fc.svg
+++ b/public/emoji/1f6b5-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f6b5-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..29711f85fb57b
--- /dev/null
+++ b/public/emoji/1f6b5-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f6b5-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..19f190291cd07
--- /dev/null
+++ b/public/emoji/1f6b5-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3fd.png b/public/emoji/1f6b5-1f3fd.png
deleted file mode 100644
index 7df5508ec8c27..0000000000000
Binary files a/public/emoji/1f6b5-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f6b5-1f3fd.svg b/public/emoji/1f6b5-1f3fd.svg
index 561ba2d1cb8a9..19f190291cd07 100644
--- a/public/emoji/1f6b5-1f3fd.svg
+++ b/public/emoji/1f6b5-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f6b5-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..89b33acec4dfa
--- /dev/null
+++ b/public/emoji/1f6b5-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f6b5-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..c57df8b116b65
--- /dev/null
+++ b/public/emoji/1f6b5-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3fe.png b/public/emoji/1f6b5-1f3fe.png
deleted file mode 100644
index f94b34506970a..0000000000000
Binary files a/public/emoji/1f6b5-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f6b5-1f3fe.svg b/public/emoji/1f6b5-1f3fe.svg
index a1153c343f39d..c57df8b116b65 100644
--- a/public/emoji/1f6b5-1f3fe.svg
+++ b/public/emoji/1f6b5-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f6b5-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..46b9a62069222
--- /dev/null
+++ b/public/emoji/1f6b5-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f6b5-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..86402bd907cc8
--- /dev/null
+++ b/public/emoji/1f6b5-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b5-1f3ff.png b/public/emoji/1f6b5-1f3ff.png
deleted file mode 100644
index 16a45861e1faf..0000000000000
Binary files a/public/emoji/1f6b5-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f6b5-1f3ff.svg b/public/emoji/1f6b5-1f3ff.svg
index ca9993afc3140..86402bd907cc8 100644
--- a/public/emoji/1f6b5-1f3ff.svg
+++ b/public/emoji/1f6b5-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b5-200d-2640-fe0f.svg b/public/emoji/1f6b5-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..fa1a7a3984fd5
--- /dev/null
+++ b/public/emoji/1f6b5-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b5-200d-2642-fe0f.svg b/public/emoji/1f6b5-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..ec9d2b0e16942
--- /dev/null
+++ b/public/emoji/1f6b5-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b5.png b/public/emoji/1f6b5.png
deleted file mode 100644
index 41d3dc3ac6f80..0000000000000
Binary files a/public/emoji/1f6b5.png and /dev/null differ
diff --git a/public/emoji/1f6b5.svg b/public/emoji/1f6b5.svg
index 0d5eb712dfdd9..ec9d2b0e16942 100644
--- a/public/emoji/1f6b5.svg
+++ b/public/emoji/1f6b5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f6b6-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..6680792c36c6d
--- /dev/null
+++ b/public/emoji/1f6b6-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f6b6-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..b1ba45891235a
--- /dev/null
+++ b/public/emoji/1f6b6-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3fb.png b/public/emoji/1f6b6-1f3fb.png
deleted file mode 100644
index 4e391b45a0b2a..0000000000000
Binary files a/public/emoji/1f6b6-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f6b6-1f3fb.svg b/public/emoji/1f6b6-1f3fb.svg
index b4d3ddee2d730..b1ba45891235a 100644
--- a/public/emoji/1f6b6-1f3fb.svg
+++ b/public/emoji/1f6b6-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f6b6-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..a6d74f765a0d0
--- /dev/null
+++ b/public/emoji/1f6b6-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f6b6-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..5376c07171275
--- /dev/null
+++ b/public/emoji/1f6b6-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3fc.png b/public/emoji/1f6b6-1f3fc.png
deleted file mode 100644
index 31f94a1bce119..0000000000000
Binary files a/public/emoji/1f6b6-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f6b6-1f3fc.svg b/public/emoji/1f6b6-1f3fc.svg
index 8c15b9be79953..5376c07171275 100644
--- a/public/emoji/1f6b6-1f3fc.svg
+++ b/public/emoji/1f6b6-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f6b6-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..cab4ccb79d665
--- /dev/null
+++ b/public/emoji/1f6b6-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f6b6-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..0bb556b989336
--- /dev/null
+++ b/public/emoji/1f6b6-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3fd.png b/public/emoji/1f6b6-1f3fd.png
deleted file mode 100644
index f7ed8e39c2ea6..0000000000000
Binary files a/public/emoji/1f6b6-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f6b6-1f3fd.svg b/public/emoji/1f6b6-1f3fd.svg
index 69ef31ca4f99e..0bb556b989336 100644
--- a/public/emoji/1f6b6-1f3fd.svg
+++ b/public/emoji/1f6b6-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f6b6-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..3930cfc73081d
--- /dev/null
+++ b/public/emoji/1f6b6-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f6b6-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..a1cc9c8222f0e
--- /dev/null
+++ b/public/emoji/1f6b6-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3fe.png b/public/emoji/1f6b6-1f3fe.png
deleted file mode 100644
index e58dc04c7b21d..0000000000000
Binary files a/public/emoji/1f6b6-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f6b6-1f3fe.svg b/public/emoji/1f6b6-1f3fe.svg
index 82b4e83346f94..a1cc9c8222f0e 100644
--- a/public/emoji/1f6b6-1f3fe.svg
+++ b/public/emoji/1f6b6-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f6b6-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..dcc4ea187a5d7
--- /dev/null
+++ b/public/emoji/1f6b6-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f6b6-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..a1b476a853b0c
--- /dev/null
+++ b/public/emoji/1f6b6-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b6-1f3ff.png b/public/emoji/1f6b6-1f3ff.png
deleted file mode 100644
index ba4e1b58fcb89..0000000000000
Binary files a/public/emoji/1f6b6-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f6b6-1f3ff.svg b/public/emoji/1f6b6-1f3ff.svg
index 454b2a99d747d..a1b476a853b0c 100644
--- a/public/emoji/1f6b6-1f3ff.svg
+++ b/public/emoji/1f6b6-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b6-200d-2640-fe0f.svg b/public/emoji/1f6b6-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..8299d1af045bf
--- /dev/null
+++ b/public/emoji/1f6b6-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b6-200d-2642-fe0f.svg b/public/emoji/1f6b6-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..db08fa81efc65
--- /dev/null
+++ b/public/emoji/1f6b6-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6b6.png b/public/emoji/1f6b6.png
deleted file mode 100644
index 06dc169a3fd58..0000000000000
Binary files a/public/emoji/1f6b6.png and /dev/null differ
diff --git a/public/emoji/1f6b6.svg b/public/emoji/1f6b6.svg
index 8ba1d28556056..db08fa81efc65 100644
--- a/public/emoji/1f6b6.svg
+++ b/public/emoji/1f6b6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b7.png b/public/emoji/1f6b7.png
deleted file mode 100644
index 286aa577a23b1..0000000000000
Binary files a/public/emoji/1f6b7.png and /dev/null differ
diff --git a/public/emoji/1f6b7.svg b/public/emoji/1f6b7.svg
index ff92a91ca023c..c857019e4296b 100644
--- a/public/emoji/1f6b7.svg
+++ b/public/emoji/1f6b7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b8.png b/public/emoji/1f6b8.png
deleted file mode 100644
index fa4c091c7c35f..0000000000000
Binary files a/public/emoji/1f6b8.png and /dev/null differ
diff --git a/public/emoji/1f6b8.svg b/public/emoji/1f6b8.svg
index 8b9b118396a28..0c007f6138748 100644
--- a/public/emoji/1f6b8.svg
+++ b/public/emoji/1f6b8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6b9.png b/public/emoji/1f6b9.png
deleted file mode 100644
index f5a1e1ba0cd49..0000000000000
Binary files a/public/emoji/1f6b9.png and /dev/null differ
diff --git a/public/emoji/1f6b9.svg b/public/emoji/1f6b9.svg
index 962b0940074e5..2cea4e4edd983 100644
--- a/public/emoji/1f6b9.svg
+++ b/public/emoji/1f6b9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6ba.png b/public/emoji/1f6ba.png
deleted file mode 100644
index d4ecc22e7b3d5..0000000000000
Binary files a/public/emoji/1f6ba.png and /dev/null differ
diff --git a/public/emoji/1f6ba.svg b/public/emoji/1f6ba.svg
index b98439e380516..354a204c48f44 100644
--- a/public/emoji/1f6ba.svg
+++ b/public/emoji/1f6ba.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6bb.png b/public/emoji/1f6bb.png
deleted file mode 100644
index 9588e0f0ef7da..0000000000000
Binary files a/public/emoji/1f6bb.png and /dev/null differ
diff --git a/public/emoji/1f6bb.svg b/public/emoji/1f6bb.svg
index 8ece75fe5b893..851ec0cf03e9f 100644
--- a/public/emoji/1f6bb.svg
+++ b/public/emoji/1f6bb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6bc.png b/public/emoji/1f6bc.png
deleted file mode 100644
index 64a10b71710ef..0000000000000
Binary files a/public/emoji/1f6bc.png and /dev/null differ
diff --git a/public/emoji/1f6bc.svg b/public/emoji/1f6bc.svg
index 4741117419000..8c6a12e03f59f 100644
--- a/public/emoji/1f6bc.svg
+++ b/public/emoji/1f6bc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6bd.png b/public/emoji/1f6bd.png
deleted file mode 100644
index 1392f76183545..0000000000000
Binary files a/public/emoji/1f6bd.png and /dev/null differ
diff --git a/public/emoji/1f6bd.svg b/public/emoji/1f6bd.svg
index 5a108e201c57c..7caf812079b93 100644
--- a/public/emoji/1f6bd.svg
+++ b/public/emoji/1f6bd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6be.png b/public/emoji/1f6be.png
deleted file mode 100644
index aa433e84ba62e..0000000000000
Binary files a/public/emoji/1f6be.png and /dev/null differ
diff --git a/public/emoji/1f6be.svg b/public/emoji/1f6be.svg
index 71390fb19f22a..791c1012224b8 100644
--- a/public/emoji/1f6be.svg
+++ b/public/emoji/1f6be.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6bf.png b/public/emoji/1f6bf.png
deleted file mode 100644
index 156776a2e5201..0000000000000
Binary files a/public/emoji/1f6bf.png and /dev/null differ
diff --git a/public/emoji/1f6bf.svg b/public/emoji/1f6bf.svg
index dd21474ebdf34..e4bf5e2236d38 100644
--- a/public/emoji/1f6bf.svg
+++ b/public/emoji/1f6bf.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6c0-1f3fb.png b/public/emoji/1f6c0-1f3fb.png
deleted file mode 100644
index 2152eabf2f5eb..0000000000000
Binary files a/public/emoji/1f6c0-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f6c0-1f3fb.svg b/public/emoji/1f6c0-1f3fb.svg
index fa9921fc402db..8f47a3cfaf65a 100644
--- a/public/emoji/1f6c0-1f3fb.svg
+++ b/public/emoji/1f6c0-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6c0-1f3fc.png b/public/emoji/1f6c0-1f3fc.png
deleted file mode 100644
index 2102e6133e3d4..0000000000000
Binary files a/public/emoji/1f6c0-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f6c0-1f3fc.svg b/public/emoji/1f6c0-1f3fc.svg
index 62648e5590fe4..958169f37f87d 100644
--- a/public/emoji/1f6c0-1f3fc.svg
+++ b/public/emoji/1f6c0-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6c0-1f3fd.png b/public/emoji/1f6c0-1f3fd.png
deleted file mode 100644
index fae66181e9f49..0000000000000
Binary files a/public/emoji/1f6c0-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f6c0-1f3fd.svg b/public/emoji/1f6c0-1f3fd.svg
index 4c4957f24f289..2975ade60307b 100644
--- a/public/emoji/1f6c0-1f3fd.svg
+++ b/public/emoji/1f6c0-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6c0-1f3fe.png b/public/emoji/1f6c0-1f3fe.png
deleted file mode 100644
index 1f8959d0d993c..0000000000000
Binary files a/public/emoji/1f6c0-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f6c0-1f3fe.svg b/public/emoji/1f6c0-1f3fe.svg
index 43c665f094773..30a4a8cd3b0bd 100644
--- a/public/emoji/1f6c0-1f3fe.svg
+++ b/public/emoji/1f6c0-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6c0-1f3ff.png b/public/emoji/1f6c0-1f3ff.png
deleted file mode 100644
index c8a08e84f25f3..0000000000000
Binary files a/public/emoji/1f6c0-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f6c0-1f3ff.svg b/public/emoji/1f6c0-1f3ff.svg
index c03631844c902..15ae1a6e4261a 100644
--- a/public/emoji/1f6c0-1f3ff.svg
+++ b/public/emoji/1f6c0-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6c0.png b/public/emoji/1f6c0.png
deleted file mode 100644
index 43fba5c8a2832..0000000000000
Binary files a/public/emoji/1f6c0.png and /dev/null differ
diff --git a/public/emoji/1f6c0.svg b/public/emoji/1f6c0.svg
index 6985f1feef674..be47a8dda6cb9 100644
--- a/public/emoji/1f6c0.svg
+++ b/public/emoji/1f6c0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6c1.png b/public/emoji/1f6c1.png
deleted file mode 100644
index 9a5f09361ebfb..0000000000000
Binary files a/public/emoji/1f6c1.png and /dev/null differ
diff --git a/public/emoji/1f6c1.svg b/public/emoji/1f6c1.svg
index cef7b67c3847f..baa62d48e279c 100644
--- a/public/emoji/1f6c1.svg
+++ b/public/emoji/1f6c1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6c2.png b/public/emoji/1f6c2.png
deleted file mode 100644
index 079e34ee4d41e..0000000000000
Binary files a/public/emoji/1f6c2.png and /dev/null differ
diff --git a/public/emoji/1f6c2.svg b/public/emoji/1f6c2.svg
index f29b9c724ad49..cb55bd48822be 100644
--- a/public/emoji/1f6c2.svg
+++ b/public/emoji/1f6c2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6c3.png b/public/emoji/1f6c3.png
deleted file mode 100644
index 21b7ce2c69e1d..0000000000000
Binary files a/public/emoji/1f6c3.png and /dev/null differ
diff --git a/public/emoji/1f6c3.svg b/public/emoji/1f6c3.svg
index 618ee799a0618..95062ee87364c 100644
--- a/public/emoji/1f6c3.svg
+++ b/public/emoji/1f6c3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6c4.png b/public/emoji/1f6c4.png
deleted file mode 100644
index 409b593e78a10..0000000000000
Binary files a/public/emoji/1f6c4.png and /dev/null differ
diff --git a/public/emoji/1f6c4.svg b/public/emoji/1f6c4.svg
index b7c8c1cb5390b..9a0ce13dd9517 100644
--- a/public/emoji/1f6c4.svg
+++ b/public/emoji/1f6c4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6c5.png b/public/emoji/1f6c5.png
deleted file mode 100644
index 887b23f3f25b5..0000000000000
Binary files a/public/emoji/1f6c5.png and /dev/null differ
diff --git a/public/emoji/1f6c5.svg b/public/emoji/1f6c5.svg
index dea7416552c02..c8396313c17b9 100644
--- a/public/emoji/1f6c5.svg
+++ b/public/emoji/1f6c5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6cb.png b/public/emoji/1f6cb.png
deleted file mode 100644
index 27b19b13bb097..0000000000000
Binary files a/public/emoji/1f6cb.png and /dev/null differ
diff --git a/public/emoji/1f6cb.svg b/public/emoji/1f6cb.svg
index a33ada16bb32c..c452194bcdfa0 100644
--- a/public/emoji/1f6cb.svg
+++ b/public/emoji/1f6cb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6cc-1f3fb.svg b/public/emoji/1f6cc-1f3fb.svg
new file mode 100644
index 0000000000000..f1b16416938a2
--- /dev/null
+++ b/public/emoji/1f6cc-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6cc-1f3fc.svg b/public/emoji/1f6cc-1f3fc.svg
new file mode 100644
index 0000000000000..cdae6beb8aaf5
--- /dev/null
+++ b/public/emoji/1f6cc-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6cc-1f3fd.svg b/public/emoji/1f6cc-1f3fd.svg
new file mode 100644
index 0000000000000..c13dd711fcc52
--- /dev/null
+++ b/public/emoji/1f6cc-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6cc-1f3fe.svg b/public/emoji/1f6cc-1f3fe.svg
new file mode 100644
index 0000000000000..0bde531d05b5b
--- /dev/null
+++ b/public/emoji/1f6cc-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6cc-1f3ff.svg b/public/emoji/1f6cc-1f3ff.svg
new file mode 100644
index 0000000000000..cddf398acc7bc
--- /dev/null
+++ b/public/emoji/1f6cc-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6cc.png b/public/emoji/1f6cc.png
deleted file mode 100644
index c739e7fb69bc3..0000000000000
Binary files a/public/emoji/1f6cc.png and /dev/null differ
diff --git a/public/emoji/1f6cc.svg b/public/emoji/1f6cc.svg
index 8446d6d7c9d33..cf6a9fac9f155 100644
--- a/public/emoji/1f6cc.svg
+++ b/public/emoji/1f6cc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6cd.png b/public/emoji/1f6cd.png
deleted file mode 100644
index 99f2a2b13acaa..0000000000000
Binary files a/public/emoji/1f6cd.png and /dev/null differ
diff --git a/public/emoji/1f6cd.svg b/public/emoji/1f6cd.svg
index 1daf857d80c4f..0ca3ece26c1a6 100644
--- a/public/emoji/1f6cd.svg
+++ b/public/emoji/1f6cd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6ce.png b/public/emoji/1f6ce.png
deleted file mode 100644
index 6b3297ceaf73d..0000000000000
Binary files a/public/emoji/1f6ce.png and /dev/null differ
diff --git a/public/emoji/1f6ce.svg b/public/emoji/1f6ce.svg
index 96f9fef0b696d..dab1704eefe2c 100644
--- a/public/emoji/1f6ce.svg
+++ b/public/emoji/1f6ce.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6cf.png b/public/emoji/1f6cf.png
deleted file mode 100644
index 86f964e245d10..0000000000000
Binary files a/public/emoji/1f6cf.png and /dev/null differ
diff --git a/public/emoji/1f6cf.svg b/public/emoji/1f6cf.svg
index f2fb4aad66ee2..59bc17175ac0f 100644
--- a/public/emoji/1f6cf.svg
+++ b/public/emoji/1f6cf.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6d0.png b/public/emoji/1f6d0.png
deleted file mode 100644
index 207d59cce851e..0000000000000
Binary files a/public/emoji/1f6d0.png and /dev/null differ
diff --git a/public/emoji/1f6d0.svg b/public/emoji/1f6d0.svg
index 65314e5f64146..0ec8b1a12d0a1 100644
--- a/public/emoji/1f6d0.svg
+++ b/public/emoji/1f6d0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6d1.png b/public/emoji/1f6d1.png
deleted file mode 100644
index 5ed6100404587..0000000000000
Binary files a/public/emoji/1f6d1.png and /dev/null differ
diff --git a/public/emoji/1f6d1.svg b/public/emoji/1f6d1.svg
index 4107a857f1b1f..96da3bba8b106 100644
--- a/public/emoji/1f6d1.svg
+++ b/public/emoji/1f6d1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6d2.png b/public/emoji/1f6d2.png
deleted file mode 100644
index 1086fe6e45651..0000000000000
Binary files a/public/emoji/1f6d2.png and /dev/null differ
diff --git a/public/emoji/1f6d2.svg b/public/emoji/1f6d2.svg
index b820572d75da0..fa7ec4adfd02b 100644
--- a/public/emoji/1f6d2.svg
+++ b/public/emoji/1f6d2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6e0.png b/public/emoji/1f6e0.png
deleted file mode 100644
index 3c6049273a9a8..0000000000000
Binary files a/public/emoji/1f6e0.png and /dev/null differ
diff --git a/public/emoji/1f6e0.svg b/public/emoji/1f6e0.svg
index af26bdb17b6d3..f7ac133b596c0 100644
--- a/public/emoji/1f6e0.svg
+++ b/public/emoji/1f6e0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6e1.png b/public/emoji/1f6e1.png
deleted file mode 100644
index 610bf033ce0f8..0000000000000
Binary files a/public/emoji/1f6e1.png and /dev/null differ
diff --git a/public/emoji/1f6e1.svg b/public/emoji/1f6e1.svg
index e9a41aa3a1e98..1f0c881fb456e 100644
--- a/public/emoji/1f6e1.svg
+++ b/public/emoji/1f6e1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6e2.png b/public/emoji/1f6e2.png
deleted file mode 100644
index c4c4d42da8b8b..0000000000000
Binary files a/public/emoji/1f6e2.png and /dev/null differ
diff --git a/public/emoji/1f6e2.svg b/public/emoji/1f6e2.svg
index c5a60a82c16cc..9405fe36d0ed0 100644
--- a/public/emoji/1f6e2.svg
+++ b/public/emoji/1f6e2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6e3.png b/public/emoji/1f6e3.png
deleted file mode 100644
index 8c3d3d03e3f2e..0000000000000
Binary files a/public/emoji/1f6e3.png and /dev/null differ
diff --git a/public/emoji/1f6e3.svg b/public/emoji/1f6e3.svg
index 2ccec72c45a26..69e58f85047c8 100644
--- a/public/emoji/1f6e3.svg
+++ b/public/emoji/1f6e3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6e4.png b/public/emoji/1f6e4.png
deleted file mode 100644
index e1a7a0d14309f..0000000000000
Binary files a/public/emoji/1f6e4.png and /dev/null differ
diff --git a/public/emoji/1f6e4.svg b/public/emoji/1f6e4.svg
index 4828d4248fc09..f6a4a6b316689 100644
--- a/public/emoji/1f6e4.svg
+++ b/public/emoji/1f6e4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6e5.png b/public/emoji/1f6e5.png
deleted file mode 100644
index 0506db1a40f6a..0000000000000
Binary files a/public/emoji/1f6e5.png and /dev/null differ
diff --git a/public/emoji/1f6e5.svg b/public/emoji/1f6e5.svg
index db896dbc98135..50e7c3d365b30 100644
--- a/public/emoji/1f6e5.svg
+++ b/public/emoji/1f6e5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6e9.png b/public/emoji/1f6e9.png
deleted file mode 100644
index b731b15e3a827..0000000000000
Binary files a/public/emoji/1f6e9.png and /dev/null differ
diff --git a/public/emoji/1f6e9.svg b/public/emoji/1f6e9.svg
index 191a1140947bf..2f42c60bf14f8 100644
--- a/public/emoji/1f6e9.svg
+++ b/public/emoji/1f6e9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6eb.png b/public/emoji/1f6eb.png
deleted file mode 100644
index a5766f9f4ae7b..0000000000000
Binary files a/public/emoji/1f6eb.png and /dev/null differ
diff --git a/public/emoji/1f6eb.svg b/public/emoji/1f6eb.svg
index 5220fb3a72266..5a76b58c21580 100644
--- a/public/emoji/1f6eb.svg
+++ b/public/emoji/1f6eb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6ec.png b/public/emoji/1f6ec.png
deleted file mode 100644
index d66841962f2c5..0000000000000
Binary files a/public/emoji/1f6ec.png and /dev/null differ
diff --git a/public/emoji/1f6ec.svg b/public/emoji/1f6ec.svg
index c170f90af8719..0493a97eb8b84 100644
--- a/public/emoji/1f6ec.svg
+++ b/public/emoji/1f6ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6f0.png b/public/emoji/1f6f0.png
deleted file mode 100644
index 4ba55d6e297bb..0000000000000
Binary files a/public/emoji/1f6f0.png and /dev/null differ
diff --git a/public/emoji/1f6f0.svg b/public/emoji/1f6f0.svg
index 1d11f7aa78211..d3b7ec6d43ba2 100644
--- a/public/emoji/1f6f0.svg
+++ b/public/emoji/1f6f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6f3.png b/public/emoji/1f6f3.png
deleted file mode 100644
index 19d4acbe40c82..0000000000000
Binary files a/public/emoji/1f6f3.png and /dev/null differ
diff --git a/public/emoji/1f6f3.svg b/public/emoji/1f6f3.svg
index 81b10ac490116..cede9fbc3d403 100644
--- a/public/emoji/1f6f3.svg
+++ b/public/emoji/1f6f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6f4.png b/public/emoji/1f6f4.png
deleted file mode 100644
index 4ab7ef59cd234..0000000000000
Binary files a/public/emoji/1f6f4.png and /dev/null differ
diff --git a/public/emoji/1f6f4.svg b/public/emoji/1f6f4.svg
index a0f4a49abe870..d23b8a07700fc 100644
--- a/public/emoji/1f6f4.svg
+++ b/public/emoji/1f6f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6f5.png b/public/emoji/1f6f5.png
deleted file mode 100644
index c5afa72d8073c..0000000000000
Binary files a/public/emoji/1f6f5.png and /dev/null differ
diff --git a/public/emoji/1f6f5.svg b/public/emoji/1f6f5.svg
index 7d7f7383b64fb..d7b49c603f4dd 100644
--- a/public/emoji/1f6f5.svg
+++ b/public/emoji/1f6f5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6f6.png b/public/emoji/1f6f6.png
deleted file mode 100644
index e26cdb9da6983..0000000000000
Binary files a/public/emoji/1f6f6.png and /dev/null differ
diff --git a/public/emoji/1f6f6.svg b/public/emoji/1f6f6.svg
index 3d86164533109..9ec5a06c673d7 100644
--- a/public/emoji/1f6f6.svg
+++ b/public/emoji/1f6f6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f6f7.svg b/public/emoji/1f6f7.svg
new file mode 100644
index 0000000000000..91f56537300be
--- /dev/null
+++ b/public/emoji/1f6f7.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f6f8.svg b/public/emoji/1f6f8.svg
new file mode 100644
index 0000000000000..5cc00c6a0f437
--- /dev/null
+++ b/public/emoji/1f6f8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f910.png b/public/emoji/1f910.png
deleted file mode 100644
index f8ced2502a743..0000000000000
Binary files a/public/emoji/1f910.png and /dev/null differ
diff --git a/public/emoji/1f910.svg b/public/emoji/1f910.svg
index 51851ff0145a4..0c238b55feb93 100644
--- a/public/emoji/1f910.svg
+++ b/public/emoji/1f910.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f911.png b/public/emoji/1f911.png
deleted file mode 100644
index 75fd1e90cb0e9..0000000000000
Binary files a/public/emoji/1f911.png and /dev/null differ
diff --git a/public/emoji/1f911.svg b/public/emoji/1f911.svg
index 19404ab8ecad3..c3c3f6b6f3528 100644
--- a/public/emoji/1f911.svg
+++ b/public/emoji/1f911.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f912.png b/public/emoji/1f912.png
deleted file mode 100644
index 8fc57387563fe..0000000000000
Binary files a/public/emoji/1f912.png and /dev/null differ
diff --git a/public/emoji/1f912.svg b/public/emoji/1f912.svg
index 2b9d9b0bebbe6..37e1ee294ceea 100644
--- a/public/emoji/1f912.svg
+++ b/public/emoji/1f912.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f913.png b/public/emoji/1f913.png
deleted file mode 100644
index 7820bd581dcaf..0000000000000
Binary files a/public/emoji/1f913.png and /dev/null differ
diff --git a/public/emoji/1f913.svg b/public/emoji/1f913.svg
index 1dc83d76462f7..50cbdd2ba580b 100644
--- a/public/emoji/1f913.svg
+++ b/public/emoji/1f913.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f914.png b/public/emoji/1f914.png
deleted file mode 100644
index c18f6fd14adde..0000000000000
Binary files a/public/emoji/1f914.png and /dev/null differ
diff --git a/public/emoji/1f914.svg b/public/emoji/1f914.svg
index 3b5fe136f6100..a7a571aa68e99 100644
--- a/public/emoji/1f914.svg
+++ b/public/emoji/1f914.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f915.png b/public/emoji/1f915.png
deleted file mode 100644
index 0be723085e014..0000000000000
Binary files a/public/emoji/1f915.png and /dev/null differ
diff --git a/public/emoji/1f915.svg b/public/emoji/1f915.svg
index 26dfd8cf44244..16bec115fd5e9 100644
--- a/public/emoji/1f915.svg
+++ b/public/emoji/1f915.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f916.png b/public/emoji/1f916.png
deleted file mode 100644
index 7cc62612c6a80..0000000000000
Binary files a/public/emoji/1f916.png and /dev/null differ
diff --git a/public/emoji/1f916.svg b/public/emoji/1f916.svg
index 047eae18ff855..9a9cf4b3ec4b9 100644
--- a/public/emoji/1f916.svg
+++ b/public/emoji/1f916.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f917.png b/public/emoji/1f917.png
deleted file mode 100644
index 5bba6dc6d51ba..0000000000000
Binary files a/public/emoji/1f917.png and /dev/null differ
diff --git a/public/emoji/1f917.svg b/public/emoji/1f917.svg
index 238b5a7825d27..cc3524873e88c 100644
--- a/public/emoji/1f917.svg
+++ b/public/emoji/1f917.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f918-1f3fb.png b/public/emoji/1f918-1f3fb.png
deleted file mode 100644
index c080d2addbda3..0000000000000
Binary files a/public/emoji/1f918-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f918-1f3fb.svg b/public/emoji/1f918-1f3fb.svg
index 2ac3beae05782..bcc91553a889b 100644
--- a/public/emoji/1f918-1f3fb.svg
+++ b/public/emoji/1f918-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f918-1f3fc.png b/public/emoji/1f918-1f3fc.png
deleted file mode 100644
index 12313529bcf01..0000000000000
Binary files a/public/emoji/1f918-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f918-1f3fc.svg b/public/emoji/1f918-1f3fc.svg
index edbd0b20892e8..25497767f3bea 100644
--- a/public/emoji/1f918-1f3fc.svg
+++ b/public/emoji/1f918-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f918-1f3fd.png b/public/emoji/1f918-1f3fd.png
deleted file mode 100644
index ca9be6ae67b8a..0000000000000
Binary files a/public/emoji/1f918-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f918-1f3fd.svg b/public/emoji/1f918-1f3fd.svg
index 39f8819a5aa55..4dbb31ef3455a 100644
--- a/public/emoji/1f918-1f3fd.svg
+++ b/public/emoji/1f918-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f918-1f3fe.png b/public/emoji/1f918-1f3fe.png
deleted file mode 100644
index abe28cbf890a7..0000000000000
Binary files a/public/emoji/1f918-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f918-1f3fe.svg b/public/emoji/1f918-1f3fe.svg
index b8b1f4500aba7..e74fe32567ea3 100644
--- a/public/emoji/1f918-1f3fe.svg
+++ b/public/emoji/1f918-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f918-1f3ff.png b/public/emoji/1f918-1f3ff.png
deleted file mode 100644
index 0c6b5dd34ed5f..0000000000000
Binary files a/public/emoji/1f918-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f918-1f3ff.svg b/public/emoji/1f918-1f3ff.svg
index 1dfaceff897db..8727eccb9cd7a 100644
--- a/public/emoji/1f918-1f3ff.svg
+++ b/public/emoji/1f918-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f918.png b/public/emoji/1f918.png
deleted file mode 100644
index 4aa6e7e0a44a1..0000000000000
Binary files a/public/emoji/1f918.png and /dev/null differ
diff --git a/public/emoji/1f918.svg b/public/emoji/1f918.svg
index 125c338544a58..ba3822b96f960 100644
--- a/public/emoji/1f918.svg
+++ b/public/emoji/1f918.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f919-1f3fb.png b/public/emoji/1f919-1f3fb.png
deleted file mode 100644
index 2c93201181a57..0000000000000
Binary files a/public/emoji/1f919-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f919-1f3fb.svg b/public/emoji/1f919-1f3fb.svg
index 6798a545f6d59..231703d3031d9 100644
--- a/public/emoji/1f919-1f3fb.svg
+++ b/public/emoji/1f919-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f919-1f3fc.png b/public/emoji/1f919-1f3fc.png
deleted file mode 100644
index c39f45a41ed65..0000000000000
Binary files a/public/emoji/1f919-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f919-1f3fc.svg b/public/emoji/1f919-1f3fc.svg
index 1c604faa35cda..1e096efd4db45 100644
--- a/public/emoji/1f919-1f3fc.svg
+++ b/public/emoji/1f919-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f919-1f3fd.png b/public/emoji/1f919-1f3fd.png
deleted file mode 100644
index 83a57f63c291f..0000000000000
Binary files a/public/emoji/1f919-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f919-1f3fd.svg b/public/emoji/1f919-1f3fd.svg
index 7270638042811..ee2567aa0bdca 100644
--- a/public/emoji/1f919-1f3fd.svg
+++ b/public/emoji/1f919-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f919-1f3fe.png b/public/emoji/1f919-1f3fe.png
deleted file mode 100644
index 65b3468fe44d5..0000000000000
Binary files a/public/emoji/1f919-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f919-1f3fe.svg b/public/emoji/1f919-1f3fe.svg
index c7d9afa184f9a..b6301bf75b5b8 100644
--- a/public/emoji/1f919-1f3fe.svg
+++ b/public/emoji/1f919-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f919-1f3ff.png b/public/emoji/1f919-1f3ff.png
deleted file mode 100644
index 94ef68ff3b3b0..0000000000000
Binary files a/public/emoji/1f919-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f919-1f3ff.svg b/public/emoji/1f919-1f3ff.svg
index 7f95819862367..a4126d45e02a3 100644
--- a/public/emoji/1f919-1f3ff.svg
+++ b/public/emoji/1f919-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f919.png b/public/emoji/1f919.png
deleted file mode 100644
index a10c59ba71143..0000000000000
Binary files a/public/emoji/1f919.png and /dev/null differ
diff --git a/public/emoji/1f919.svg b/public/emoji/1f919.svg
index 84df19cce07fb..05c6e76d3b4ea 100644
--- a/public/emoji/1f919.svg
+++ b/public/emoji/1f919.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91a-1f3fb.png b/public/emoji/1f91a-1f3fb.png
deleted file mode 100644
index 813d28499b521..0000000000000
Binary files a/public/emoji/1f91a-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f91a-1f3fb.svg b/public/emoji/1f91a-1f3fb.svg
index 7a7baa85408fe..d7767b7b580bd 100644
--- a/public/emoji/1f91a-1f3fb.svg
+++ b/public/emoji/1f91a-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91a-1f3fc.png b/public/emoji/1f91a-1f3fc.png
deleted file mode 100644
index 192ff795e37c0..0000000000000
Binary files a/public/emoji/1f91a-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f91a-1f3fc.svg b/public/emoji/1f91a-1f3fc.svg
index 7343906b1cf3e..beb8fc5d742f3 100644
--- a/public/emoji/1f91a-1f3fc.svg
+++ b/public/emoji/1f91a-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91a-1f3fd.png b/public/emoji/1f91a-1f3fd.png
deleted file mode 100644
index 61a727abe6baf..0000000000000
Binary files a/public/emoji/1f91a-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f91a-1f3fd.svg b/public/emoji/1f91a-1f3fd.svg
index 55f936d152d14..1c62d98f581d4 100644
--- a/public/emoji/1f91a-1f3fd.svg
+++ b/public/emoji/1f91a-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91a-1f3fe.png b/public/emoji/1f91a-1f3fe.png
deleted file mode 100644
index 2e83da511f55e..0000000000000
Binary files a/public/emoji/1f91a-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f91a-1f3fe.svg b/public/emoji/1f91a-1f3fe.svg
index 6dc3b2210d4ff..1026fca8deb8a 100644
--- a/public/emoji/1f91a-1f3fe.svg
+++ b/public/emoji/1f91a-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91a-1f3ff.png b/public/emoji/1f91a-1f3ff.png
deleted file mode 100644
index d7a5b95a02c7a..0000000000000
Binary files a/public/emoji/1f91a-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f91a-1f3ff.svg b/public/emoji/1f91a-1f3ff.svg
index d27a387c6d458..0a6024a203f10 100644
--- a/public/emoji/1f91a-1f3ff.svg
+++ b/public/emoji/1f91a-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91a.png b/public/emoji/1f91a.png
deleted file mode 100644
index 479234294b483..0000000000000
Binary files a/public/emoji/1f91a.png and /dev/null differ
diff --git a/public/emoji/1f91a.svg b/public/emoji/1f91a.svg
index 74d0015f65381..8579efff7a007 100644
--- a/public/emoji/1f91a.svg
+++ b/public/emoji/1f91a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91b-1f3fb.png b/public/emoji/1f91b-1f3fb.png
deleted file mode 100644
index 1262a6b4b6938..0000000000000
Binary files a/public/emoji/1f91b-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f91b-1f3fb.svg b/public/emoji/1f91b-1f3fb.svg
index 00f854072d621..2eb0c149a0953 100644
--- a/public/emoji/1f91b-1f3fb.svg
+++ b/public/emoji/1f91b-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91b-1f3fc.png b/public/emoji/1f91b-1f3fc.png
deleted file mode 100644
index 40bf70b82b295..0000000000000
Binary files a/public/emoji/1f91b-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f91b-1f3fc.svg b/public/emoji/1f91b-1f3fc.svg
index 92dd89993e5d0..10dd4d02a4bcf 100644
--- a/public/emoji/1f91b-1f3fc.svg
+++ b/public/emoji/1f91b-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91b-1f3fd.png b/public/emoji/1f91b-1f3fd.png
deleted file mode 100644
index 93f581451115f..0000000000000
Binary files a/public/emoji/1f91b-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f91b-1f3fd.svg b/public/emoji/1f91b-1f3fd.svg
index 6254ca9ae98ce..3b4cd2153dc7a 100644
--- a/public/emoji/1f91b-1f3fd.svg
+++ b/public/emoji/1f91b-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91b-1f3fe.png b/public/emoji/1f91b-1f3fe.png
deleted file mode 100644
index d82b5ec91f0af..0000000000000
Binary files a/public/emoji/1f91b-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f91b-1f3fe.svg b/public/emoji/1f91b-1f3fe.svg
index 074eca34800dd..66bccaef202fc 100644
--- a/public/emoji/1f91b-1f3fe.svg
+++ b/public/emoji/1f91b-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91b-1f3ff.png b/public/emoji/1f91b-1f3ff.png
deleted file mode 100644
index 09ae4cd492bd9..0000000000000
Binary files a/public/emoji/1f91b-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f91b-1f3ff.svg b/public/emoji/1f91b-1f3ff.svg
index 163866bbac1dc..2324d4aeee842 100644
--- a/public/emoji/1f91b-1f3ff.svg
+++ b/public/emoji/1f91b-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91b.png b/public/emoji/1f91b.png
deleted file mode 100644
index a9d9fd8d59ce2..0000000000000
Binary files a/public/emoji/1f91b.png and /dev/null differ
diff --git a/public/emoji/1f91b.svg b/public/emoji/1f91b.svg
index ea97a80a0b6d6..c554fffc59657 100644
--- a/public/emoji/1f91b.svg
+++ b/public/emoji/1f91b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91c-1f3fb.png b/public/emoji/1f91c-1f3fb.png
deleted file mode 100644
index 33ded2f61a6ff..0000000000000
Binary files a/public/emoji/1f91c-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f91c-1f3fb.svg b/public/emoji/1f91c-1f3fb.svg
index d3c0de370f46e..3207b4b5849d6 100644
--- a/public/emoji/1f91c-1f3fb.svg
+++ b/public/emoji/1f91c-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91c-1f3fc.png b/public/emoji/1f91c-1f3fc.png
deleted file mode 100644
index 88054e335c74a..0000000000000
Binary files a/public/emoji/1f91c-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f91c-1f3fc.svg b/public/emoji/1f91c-1f3fc.svg
index 9459974002f7e..678d3db73545b 100644
--- a/public/emoji/1f91c-1f3fc.svg
+++ b/public/emoji/1f91c-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91c-1f3fd.png b/public/emoji/1f91c-1f3fd.png
deleted file mode 100644
index 84b9f5da7f748..0000000000000
Binary files a/public/emoji/1f91c-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f91c-1f3fd.svg b/public/emoji/1f91c-1f3fd.svg
index c540bb048aecc..c619612bdcca5 100644
--- a/public/emoji/1f91c-1f3fd.svg
+++ b/public/emoji/1f91c-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91c-1f3fe.png b/public/emoji/1f91c-1f3fe.png
deleted file mode 100644
index e741cfea68b2f..0000000000000
Binary files a/public/emoji/1f91c-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f91c-1f3fe.svg b/public/emoji/1f91c-1f3fe.svg
index c3a410c28c0ea..e1dc9efa9a0e0 100644
--- a/public/emoji/1f91c-1f3fe.svg
+++ b/public/emoji/1f91c-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91c-1f3ff.png b/public/emoji/1f91c-1f3ff.png
deleted file mode 100644
index cf66d760c1f7c..0000000000000
Binary files a/public/emoji/1f91c-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f91c-1f3ff.svg b/public/emoji/1f91c-1f3ff.svg
index 1ff1b64f36d3f..a7b1723c0528d 100644
--- a/public/emoji/1f91c-1f3ff.svg
+++ b/public/emoji/1f91c-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91c.png b/public/emoji/1f91c.png
deleted file mode 100644
index 754ed066d2cd5..0000000000000
Binary files a/public/emoji/1f91c.png and /dev/null differ
diff --git a/public/emoji/1f91c.svg b/public/emoji/1f91c.svg
index 80a75c9cded8a..a320968b29f20 100644
--- a/public/emoji/1f91c.svg
+++ b/public/emoji/1f91c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91d-1f3fb.png b/public/emoji/1f91d-1f3fb.png
deleted file mode 100644
index 8f8fbb9bdcae0..0000000000000
Binary files a/public/emoji/1f91d-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f91d-1f3fb.svg b/public/emoji/1f91d-1f3fb.svg
deleted file mode 100644
index bc7cf60e8c13b..0000000000000
--- a/public/emoji/1f91d-1f3fb.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f91d-1f3fc.png b/public/emoji/1f91d-1f3fc.png
deleted file mode 100644
index 336a77a6d7812..0000000000000
Binary files a/public/emoji/1f91d-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f91d-1f3fc.svg b/public/emoji/1f91d-1f3fc.svg
deleted file mode 100644
index c13f18ba6e318..0000000000000
--- a/public/emoji/1f91d-1f3fc.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f91d-1f3fd.png b/public/emoji/1f91d-1f3fd.png
deleted file mode 100644
index 95f62d4fecd31..0000000000000
Binary files a/public/emoji/1f91d-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f91d-1f3fd.svg b/public/emoji/1f91d-1f3fd.svg
deleted file mode 100644
index 76871fcba7500..0000000000000
--- a/public/emoji/1f91d-1f3fd.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f91d-1f3fe.png b/public/emoji/1f91d-1f3fe.png
deleted file mode 100644
index 2b0a643388648..0000000000000
Binary files a/public/emoji/1f91d-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f91d-1f3fe.svg b/public/emoji/1f91d-1f3fe.svg
deleted file mode 100644
index 45a6c8204b34f..0000000000000
--- a/public/emoji/1f91d-1f3fe.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f91d-1f3ff.png b/public/emoji/1f91d-1f3ff.png
deleted file mode 100644
index 40189ee68e4f6..0000000000000
Binary files a/public/emoji/1f91d-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f91d-1f3ff.svg b/public/emoji/1f91d-1f3ff.svg
deleted file mode 100644
index 4444426701072..0000000000000
--- a/public/emoji/1f91d-1f3ff.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f91d.png b/public/emoji/1f91d.png
deleted file mode 100644
index c5d35fd813830..0000000000000
Binary files a/public/emoji/1f91d.png and /dev/null differ
diff --git a/public/emoji/1f91d.svg b/public/emoji/1f91d.svg
index 185bf3bc70aa8..d6b87a93f66dc 100644
--- a/public/emoji/1f91d.svg
+++ b/public/emoji/1f91d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91e-1f3fb.png b/public/emoji/1f91e-1f3fb.png
deleted file mode 100644
index dd2384a6cd55c..0000000000000
Binary files a/public/emoji/1f91e-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f91e-1f3fb.svg b/public/emoji/1f91e-1f3fb.svg
index aa4cd73ac16b0..571240a9ffc74 100644
--- a/public/emoji/1f91e-1f3fb.svg
+++ b/public/emoji/1f91e-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91e-1f3fc.png b/public/emoji/1f91e-1f3fc.png
deleted file mode 100644
index 6228401befe4b..0000000000000
Binary files a/public/emoji/1f91e-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f91e-1f3fc.svg b/public/emoji/1f91e-1f3fc.svg
index bf4eff677bd8a..b38874554fe8c 100644
--- a/public/emoji/1f91e-1f3fc.svg
+++ b/public/emoji/1f91e-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91e-1f3fd.png b/public/emoji/1f91e-1f3fd.png
deleted file mode 100644
index b1074da15f5d5..0000000000000
Binary files a/public/emoji/1f91e-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f91e-1f3fd.svg b/public/emoji/1f91e-1f3fd.svg
index 5562818e400be..6afd877e7978d 100644
--- a/public/emoji/1f91e-1f3fd.svg
+++ b/public/emoji/1f91e-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91e-1f3fe.png b/public/emoji/1f91e-1f3fe.png
deleted file mode 100644
index 75e05e4d332fa..0000000000000
Binary files a/public/emoji/1f91e-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f91e-1f3fe.svg b/public/emoji/1f91e-1f3fe.svg
index 5067aaebaae02..62816622dc803 100644
--- a/public/emoji/1f91e-1f3fe.svg
+++ b/public/emoji/1f91e-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91e-1f3ff.png b/public/emoji/1f91e-1f3ff.png
deleted file mode 100644
index 761aebdc30ff2..0000000000000
Binary files a/public/emoji/1f91e-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f91e-1f3ff.svg b/public/emoji/1f91e-1f3ff.svg
index 741dc664083bf..00b44e88ddbf8 100644
--- a/public/emoji/1f91e-1f3ff.svg
+++ b/public/emoji/1f91e-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91e.png b/public/emoji/1f91e.png
deleted file mode 100644
index 4cd18514ea316..0000000000000
Binary files a/public/emoji/1f91e.png and /dev/null differ
diff --git a/public/emoji/1f91e.svg b/public/emoji/1f91e.svg
index 574dcc17f9737..ee5f2430d41b3 100644
--- a/public/emoji/1f91e.svg
+++ b/public/emoji/1f91e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f91f-1f3fb.svg b/public/emoji/1f91f-1f3fb.svg
new file mode 100644
index 0000000000000..24b951fc119c9
--- /dev/null
+++ b/public/emoji/1f91f-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f91f-1f3fc.svg b/public/emoji/1f91f-1f3fc.svg
new file mode 100644
index 0000000000000..0dff66ba44955
--- /dev/null
+++ b/public/emoji/1f91f-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f91f-1f3fd.svg b/public/emoji/1f91f-1f3fd.svg
new file mode 100644
index 0000000000000..0140134559a31
--- /dev/null
+++ b/public/emoji/1f91f-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f91f-1f3fe.svg b/public/emoji/1f91f-1f3fe.svg
new file mode 100644
index 0000000000000..74b318c0c6453
--- /dev/null
+++ b/public/emoji/1f91f-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f91f-1f3ff.svg b/public/emoji/1f91f-1f3ff.svg
new file mode 100644
index 0000000000000..c059eb6e52ac3
--- /dev/null
+++ b/public/emoji/1f91f-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f91f.svg b/public/emoji/1f91f.svg
new file mode 100644
index 0000000000000..8f93518655792
--- /dev/null
+++ b/public/emoji/1f91f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f920.png b/public/emoji/1f920.png
deleted file mode 100644
index 70dd5d0d9d1f3..0000000000000
Binary files a/public/emoji/1f920.png and /dev/null differ
diff --git a/public/emoji/1f920.svg b/public/emoji/1f920.svg
index 11437ce6dd0f6..a240ae0b504ea 100644
--- a/public/emoji/1f920.svg
+++ b/public/emoji/1f920.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f921.png b/public/emoji/1f921.png
deleted file mode 100644
index 02b7ff7004991..0000000000000
Binary files a/public/emoji/1f921.png and /dev/null differ
diff --git a/public/emoji/1f921.svg b/public/emoji/1f921.svg
index 63812e7311046..f07866132062c 100644
--- a/public/emoji/1f921.svg
+++ b/public/emoji/1f921.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f922.png b/public/emoji/1f922.png
deleted file mode 100644
index a566c109c2818..0000000000000
Binary files a/public/emoji/1f922.png and /dev/null differ
diff --git a/public/emoji/1f922.svg b/public/emoji/1f922.svg
index 893e564de5acf..1815d4965a200 100644
--- a/public/emoji/1f922.svg
+++ b/public/emoji/1f922.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f923.png b/public/emoji/1f923.png
deleted file mode 100644
index b1736fedfeb0a..0000000000000
Binary files a/public/emoji/1f923.png and /dev/null differ
diff --git a/public/emoji/1f923.svg b/public/emoji/1f923.svg
index e029257016f8b..1ca89f33aefd9 100644
--- a/public/emoji/1f923.svg
+++ b/public/emoji/1f923.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f924.png b/public/emoji/1f924.png
deleted file mode 100644
index a5460532597ea..0000000000000
Binary files a/public/emoji/1f924.png and /dev/null differ
diff --git a/public/emoji/1f924.svg b/public/emoji/1f924.svg
index 4e30304dfc07e..c81e62d6c5bc8 100644
--- a/public/emoji/1f924.svg
+++ b/public/emoji/1f924.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f925.png b/public/emoji/1f925.png
deleted file mode 100644
index 02827e2628b96..0000000000000
Binary files a/public/emoji/1f925.png and /dev/null differ
diff --git a/public/emoji/1f925.svg b/public/emoji/1f925.svg
index 7446d3f45fabe..a78baff89daf5 100644
--- a/public/emoji/1f925.svg
+++ b/public/emoji/1f925.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f926-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f926-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..61cab88bec333
--- /dev/null
+++ b/public/emoji/1f926-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f926-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f926-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..45a0c293d4415
--- /dev/null
+++ b/public/emoji/1f926-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f926-1f3fb.png b/public/emoji/1f926-1f3fb.png
deleted file mode 100644
index 2f4b010bb40ed..0000000000000
Binary files a/public/emoji/1f926-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f926-1f3fb.svg b/public/emoji/1f926-1f3fb.svg
index 60e2089a4b916..61cab88bec333 100644
--- a/public/emoji/1f926-1f3fb.svg
+++ b/public/emoji/1f926-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f926-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f926-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..9d28aecc95705
--- /dev/null
+++ b/public/emoji/1f926-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f926-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f926-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..55f32a525a6e1
--- /dev/null
+++ b/public/emoji/1f926-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f926-1f3fc.png b/public/emoji/1f926-1f3fc.png
deleted file mode 100644
index 97fb6831687a3..0000000000000
Binary files a/public/emoji/1f926-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f926-1f3fc.svg b/public/emoji/1f926-1f3fc.svg
index a5fc0ae04c3fa..9d28aecc95705 100644
--- a/public/emoji/1f926-1f3fc.svg
+++ b/public/emoji/1f926-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f926-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f926-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..a23fe91cc13c5
--- /dev/null
+++ b/public/emoji/1f926-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f926-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f926-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..0c349e099c5aa
--- /dev/null
+++ b/public/emoji/1f926-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f926-1f3fd.png b/public/emoji/1f926-1f3fd.png
deleted file mode 100644
index b5b5c1e5306c5..0000000000000
Binary files a/public/emoji/1f926-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f926-1f3fd.svg b/public/emoji/1f926-1f3fd.svg
index ea86bb8cba650..a23fe91cc13c5 100644
--- a/public/emoji/1f926-1f3fd.svg
+++ b/public/emoji/1f926-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f926-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f926-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..6ec0c9edbafa1
--- /dev/null
+++ b/public/emoji/1f926-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f926-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f926-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..af75656a57078
--- /dev/null
+++ b/public/emoji/1f926-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f926-1f3fe.png b/public/emoji/1f926-1f3fe.png
deleted file mode 100644
index 2840b11348343..0000000000000
Binary files a/public/emoji/1f926-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f926-1f3fe.svg b/public/emoji/1f926-1f3fe.svg
index 27bb43a42b4c9..6ec0c9edbafa1 100644
--- a/public/emoji/1f926-1f3fe.svg
+++ b/public/emoji/1f926-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f926-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f926-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..e4ba1179b459e
--- /dev/null
+++ b/public/emoji/1f926-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f926-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f926-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..cc2122284deb9
--- /dev/null
+++ b/public/emoji/1f926-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f926-1f3ff.png b/public/emoji/1f926-1f3ff.png
deleted file mode 100644
index 6f070db98be25..0000000000000
Binary files a/public/emoji/1f926-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f926-1f3ff.svg b/public/emoji/1f926-1f3ff.svg
index 2f70443759166..e4ba1179b459e 100644
--- a/public/emoji/1f926-1f3ff.svg
+++ b/public/emoji/1f926-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f926-200d-2640-fe0f.svg b/public/emoji/1f926-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..9e134f05d2a02
--- /dev/null
+++ b/public/emoji/1f926-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f926-200d-2642-fe0f.svg b/public/emoji/1f926-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..1e51ec0459a1a
--- /dev/null
+++ b/public/emoji/1f926-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f926.png b/public/emoji/1f926.png
deleted file mode 100644
index defc796cf161a..0000000000000
Binary files a/public/emoji/1f926.png and /dev/null differ
diff --git a/public/emoji/1f926.svg b/public/emoji/1f926.svg
index bff8effe6bde7..9e134f05d2a02 100644
--- a/public/emoji/1f926.svg
+++ b/public/emoji/1f926.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f927.png b/public/emoji/1f927.png
deleted file mode 100644
index ccf07d4b64d5c..0000000000000
Binary files a/public/emoji/1f927.png and /dev/null differ
diff --git a/public/emoji/1f927.svg b/public/emoji/1f927.svg
index 1c513dd28097b..ad0eb94a52465 100644
--- a/public/emoji/1f927.svg
+++ b/public/emoji/1f927.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f928.svg b/public/emoji/1f928.svg
new file mode 100644
index 0000000000000..5b7fda886ff3b
--- /dev/null
+++ b/public/emoji/1f928.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f929.svg b/public/emoji/1f929.svg
new file mode 100644
index 0000000000000..cd16d001e7f82
--- /dev/null
+++ b/public/emoji/1f929.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f92a.svg b/public/emoji/1f92a.svg
new file mode 100644
index 0000000000000..579fb1c9db055
--- /dev/null
+++ b/public/emoji/1f92a.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f92b.svg b/public/emoji/1f92b.svg
new file mode 100644
index 0000000000000..819a7c792aa1f
--- /dev/null
+++ b/public/emoji/1f92b.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f92c.svg b/public/emoji/1f92c.svg
new file mode 100644
index 0000000000000..e19b92f4522c9
--- /dev/null
+++ b/public/emoji/1f92c.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f92d.svg b/public/emoji/1f92d.svg
new file mode 100644
index 0000000000000..ee9649f89e7cf
--- /dev/null
+++ b/public/emoji/1f92d.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f92e.svg b/public/emoji/1f92e.svg
new file mode 100644
index 0000000000000..dbf0ad3ff5e4a
--- /dev/null
+++ b/public/emoji/1f92e.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f92f.svg b/public/emoji/1f92f.svg
new file mode 100644
index 0000000000000..03198605d1987
--- /dev/null
+++ b/public/emoji/1f92f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f930-1f3fb.png b/public/emoji/1f930-1f3fb.png
deleted file mode 100644
index a78703b33aad0..0000000000000
Binary files a/public/emoji/1f930-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f930-1f3fb.svg b/public/emoji/1f930-1f3fb.svg
index 4b1d23ff2974a..324864905a280 100644
--- a/public/emoji/1f930-1f3fb.svg
+++ b/public/emoji/1f930-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f930-1f3fc.png b/public/emoji/1f930-1f3fc.png
deleted file mode 100644
index 0068c6c4a7727..0000000000000
Binary files a/public/emoji/1f930-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f930-1f3fc.svg b/public/emoji/1f930-1f3fc.svg
index b1683589282f6..f7771ab08c0fe 100644
--- a/public/emoji/1f930-1f3fc.svg
+++ b/public/emoji/1f930-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f930-1f3fd.png b/public/emoji/1f930-1f3fd.png
deleted file mode 100644
index 3206296b684d9..0000000000000
Binary files a/public/emoji/1f930-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f930-1f3fd.svg b/public/emoji/1f930-1f3fd.svg
index dbb32eac3af17..34000f5a248c8 100644
--- a/public/emoji/1f930-1f3fd.svg
+++ b/public/emoji/1f930-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f930-1f3fe.png b/public/emoji/1f930-1f3fe.png
deleted file mode 100644
index 120fda5cd8c16..0000000000000
Binary files a/public/emoji/1f930-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f930-1f3fe.svg b/public/emoji/1f930-1f3fe.svg
index a3bab2cba49af..3a6ac0c1f4fa0 100644
--- a/public/emoji/1f930-1f3fe.svg
+++ b/public/emoji/1f930-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f930-1f3ff.png b/public/emoji/1f930-1f3ff.png
deleted file mode 100644
index 569bfdf05ce28..0000000000000
Binary files a/public/emoji/1f930-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f930-1f3ff.svg b/public/emoji/1f930-1f3ff.svg
index ad37b4b16f61f..5ca9e492fe07c 100644
--- a/public/emoji/1f930-1f3ff.svg
+++ b/public/emoji/1f930-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f930.png b/public/emoji/1f930.png
deleted file mode 100644
index 084e83a414a33..0000000000000
Binary files a/public/emoji/1f930.png and /dev/null differ
diff --git a/public/emoji/1f930.svg b/public/emoji/1f930.svg
index 768b902b88e40..b5820f4f3e8dc 100644
--- a/public/emoji/1f930.svg
+++ b/public/emoji/1f930.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f931-1f3fb.svg b/public/emoji/1f931-1f3fb.svg
new file mode 100644
index 0000000000000..988b5d57d5228
--- /dev/null
+++ b/public/emoji/1f931-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f931-1f3fc.svg b/public/emoji/1f931-1f3fc.svg
new file mode 100644
index 0000000000000..2883d9ef5653a
--- /dev/null
+++ b/public/emoji/1f931-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f931-1f3fd.svg b/public/emoji/1f931-1f3fd.svg
new file mode 100644
index 0000000000000..b42dc9fb5f85a
--- /dev/null
+++ b/public/emoji/1f931-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f931-1f3fe.svg b/public/emoji/1f931-1f3fe.svg
new file mode 100644
index 0000000000000..41c6f1c75eb6b
--- /dev/null
+++ b/public/emoji/1f931-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f931-1f3ff.svg b/public/emoji/1f931-1f3ff.svg
new file mode 100644
index 0000000000000..428a21dcb02f2
--- /dev/null
+++ b/public/emoji/1f931-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f931.svg b/public/emoji/1f931.svg
new file mode 100644
index 0000000000000..6533abf711b67
--- /dev/null
+++ b/public/emoji/1f931.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f932-1f3fb.svg b/public/emoji/1f932-1f3fb.svg
new file mode 100644
index 0000000000000..8d826d97519d4
--- /dev/null
+++ b/public/emoji/1f932-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f932-1f3fc.svg b/public/emoji/1f932-1f3fc.svg
new file mode 100644
index 0000000000000..5ab9964ff38d2
--- /dev/null
+++ b/public/emoji/1f932-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f932-1f3fd.svg b/public/emoji/1f932-1f3fd.svg
new file mode 100644
index 0000000000000..e64b1fba47d84
--- /dev/null
+++ b/public/emoji/1f932-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f932-1f3fe.svg b/public/emoji/1f932-1f3fe.svg
new file mode 100644
index 0000000000000..34728c5ab9b9f
--- /dev/null
+++ b/public/emoji/1f932-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f932-1f3ff.svg b/public/emoji/1f932-1f3ff.svg
new file mode 100644
index 0000000000000..dff0c8e43eb67
--- /dev/null
+++ b/public/emoji/1f932-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f932.svg b/public/emoji/1f932.svg
new file mode 100644
index 0000000000000..457e04c2c0344
--- /dev/null
+++ b/public/emoji/1f932.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f933-1f3fb.png b/public/emoji/1f933-1f3fb.png
deleted file mode 100644
index 290e075b56fb2..0000000000000
Binary files a/public/emoji/1f933-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f933-1f3fb.svg b/public/emoji/1f933-1f3fb.svg
index 891ddd132290b..1f0bbf5b462e6 100644
--- a/public/emoji/1f933-1f3fb.svg
+++ b/public/emoji/1f933-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f933-1f3fc.png b/public/emoji/1f933-1f3fc.png
deleted file mode 100644
index fcd9595b64377..0000000000000
Binary files a/public/emoji/1f933-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f933-1f3fc.svg b/public/emoji/1f933-1f3fc.svg
index 8e9e654444904..db84bbe08864c 100644
--- a/public/emoji/1f933-1f3fc.svg
+++ b/public/emoji/1f933-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f933-1f3fd.png b/public/emoji/1f933-1f3fd.png
deleted file mode 100644
index f3a22fdf4354a..0000000000000
Binary files a/public/emoji/1f933-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f933-1f3fd.svg b/public/emoji/1f933-1f3fd.svg
index d40f5f75d0d65..34d5842fecd8f 100644
--- a/public/emoji/1f933-1f3fd.svg
+++ b/public/emoji/1f933-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f933-1f3fe.png b/public/emoji/1f933-1f3fe.png
deleted file mode 100644
index cdecf6d9f4e50..0000000000000
Binary files a/public/emoji/1f933-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f933-1f3fe.svg b/public/emoji/1f933-1f3fe.svg
index d19b5ea811b22..1d313cf1833d0 100644
--- a/public/emoji/1f933-1f3fe.svg
+++ b/public/emoji/1f933-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f933-1f3ff.png b/public/emoji/1f933-1f3ff.png
deleted file mode 100644
index 86acbb6c202cd..0000000000000
Binary files a/public/emoji/1f933-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f933-1f3ff.svg b/public/emoji/1f933-1f3ff.svg
index 3be274394fcbc..8badf905fc966 100644
--- a/public/emoji/1f933-1f3ff.svg
+++ b/public/emoji/1f933-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f933.png b/public/emoji/1f933.png
deleted file mode 100644
index 6a1ba75c7e391..0000000000000
Binary files a/public/emoji/1f933.png and /dev/null differ
diff --git a/public/emoji/1f933.svg b/public/emoji/1f933.svg
index 009221c6abb01..c031fc001e49f 100644
--- a/public/emoji/1f933.svg
+++ b/public/emoji/1f933.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f934-1f3fb.png b/public/emoji/1f934-1f3fb.png
deleted file mode 100644
index 849930c888773..0000000000000
Binary files a/public/emoji/1f934-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f934-1f3fb.svg b/public/emoji/1f934-1f3fb.svg
index 9688cead97068..841a50ec3ff57 100644
--- a/public/emoji/1f934-1f3fb.svg
+++ b/public/emoji/1f934-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f934-1f3fc.png b/public/emoji/1f934-1f3fc.png
deleted file mode 100644
index 23d8b3b12856b..0000000000000
Binary files a/public/emoji/1f934-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f934-1f3fc.svg b/public/emoji/1f934-1f3fc.svg
index cc27b532deb9b..7624b4dae5531 100644
--- a/public/emoji/1f934-1f3fc.svg
+++ b/public/emoji/1f934-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f934-1f3fd.png b/public/emoji/1f934-1f3fd.png
deleted file mode 100644
index db6dfff0647e5..0000000000000
Binary files a/public/emoji/1f934-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f934-1f3fd.svg b/public/emoji/1f934-1f3fd.svg
index 44a0524d41c2a..43ee1573ef807 100644
--- a/public/emoji/1f934-1f3fd.svg
+++ b/public/emoji/1f934-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f934-1f3fe.png b/public/emoji/1f934-1f3fe.png
deleted file mode 100644
index 8e10f8be6a8d0..0000000000000
Binary files a/public/emoji/1f934-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f934-1f3fe.svg b/public/emoji/1f934-1f3fe.svg
index 71c66cb95efd1..d2d890f82886a 100644
--- a/public/emoji/1f934-1f3fe.svg
+++ b/public/emoji/1f934-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f934-1f3ff.png b/public/emoji/1f934-1f3ff.png
deleted file mode 100644
index 138d4ea704854..0000000000000
Binary files a/public/emoji/1f934-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f934-1f3ff.svg b/public/emoji/1f934-1f3ff.svg
index d45a0f05aa697..845726b1b0165 100644
--- a/public/emoji/1f934-1f3ff.svg
+++ b/public/emoji/1f934-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f934.png b/public/emoji/1f934.png
deleted file mode 100644
index 38d69344c84c3..0000000000000
Binary files a/public/emoji/1f934.png and /dev/null differ
diff --git a/public/emoji/1f934.svg b/public/emoji/1f934.svg
index a075a6b44cfc1..700e4dd8ee1ce 100644
--- a/public/emoji/1f934.svg
+++ b/public/emoji/1f934.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f935-1f3fb.png b/public/emoji/1f935-1f3fb.png
deleted file mode 100644
index 7b6b3acd99b51..0000000000000
Binary files a/public/emoji/1f935-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f935-1f3fb.svg b/public/emoji/1f935-1f3fb.svg
index b5259d659d97b..76431d58f8dcb 100644
--- a/public/emoji/1f935-1f3fb.svg
+++ b/public/emoji/1f935-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f935-1f3fc.png b/public/emoji/1f935-1f3fc.png
deleted file mode 100644
index 7975191b36047..0000000000000
Binary files a/public/emoji/1f935-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f935-1f3fc.svg b/public/emoji/1f935-1f3fc.svg
index d57750ac502d3..af8c199d5bd76 100644
--- a/public/emoji/1f935-1f3fc.svg
+++ b/public/emoji/1f935-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f935-1f3fd.png b/public/emoji/1f935-1f3fd.png
deleted file mode 100644
index a2816f600ae79..0000000000000
Binary files a/public/emoji/1f935-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f935-1f3fd.svg b/public/emoji/1f935-1f3fd.svg
index 9c816e30331ea..3d796d873e04a 100644
--- a/public/emoji/1f935-1f3fd.svg
+++ b/public/emoji/1f935-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f935-1f3fe.png b/public/emoji/1f935-1f3fe.png
deleted file mode 100644
index ea8291760f932..0000000000000
Binary files a/public/emoji/1f935-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f935-1f3fe.svg b/public/emoji/1f935-1f3fe.svg
index e15d1765727b8..bdfbf85df36e6 100644
--- a/public/emoji/1f935-1f3fe.svg
+++ b/public/emoji/1f935-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f935-1f3ff.png b/public/emoji/1f935-1f3ff.png
deleted file mode 100644
index c743e05fc5e13..0000000000000
Binary files a/public/emoji/1f935-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f935-1f3ff.svg b/public/emoji/1f935-1f3ff.svg
index f8655dbe7b538..da7f013d0da81 100644
--- a/public/emoji/1f935-1f3ff.svg
+++ b/public/emoji/1f935-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f935.png b/public/emoji/1f935.png
deleted file mode 100644
index 5f7e9303f893b..0000000000000
Binary files a/public/emoji/1f935.png and /dev/null differ
diff --git a/public/emoji/1f935.svg b/public/emoji/1f935.svg
index 228b84a0a4466..14d2a46ae46b7 100644
--- a/public/emoji/1f935.svg
+++ b/public/emoji/1f935.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f936-1f3fb.png b/public/emoji/1f936-1f3fb.png
deleted file mode 100644
index d8a695d703527..0000000000000
Binary files a/public/emoji/1f936-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f936-1f3fb.svg b/public/emoji/1f936-1f3fb.svg
index 42ba4e633958b..de4f37f67b467 100644
--- a/public/emoji/1f936-1f3fb.svg
+++ b/public/emoji/1f936-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f936-1f3fc.png b/public/emoji/1f936-1f3fc.png
deleted file mode 100644
index 0e17e8c51f327..0000000000000
Binary files a/public/emoji/1f936-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f936-1f3fc.svg b/public/emoji/1f936-1f3fc.svg
index 039a576614408..b1a535d2fca78 100644
--- a/public/emoji/1f936-1f3fc.svg
+++ b/public/emoji/1f936-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f936-1f3fd.png b/public/emoji/1f936-1f3fd.png
deleted file mode 100644
index c3ee4d1dfaeb7..0000000000000
Binary files a/public/emoji/1f936-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f936-1f3fd.svg b/public/emoji/1f936-1f3fd.svg
index a28a074bba6eb..f99d06457c0b3 100644
--- a/public/emoji/1f936-1f3fd.svg
+++ b/public/emoji/1f936-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f936-1f3fe.png b/public/emoji/1f936-1f3fe.png
deleted file mode 100644
index 68a556da2fee2..0000000000000
Binary files a/public/emoji/1f936-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f936-1f3fe.svg b/public/emoji/1f936-1f3fe.svg
index bac1e4678a653..44bbb6b573a1b 100644
--- a/public/emoji/1f936-1f3fe.svg
+++ b/public/emoji/1f936-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f936-1f3ff.png b/public/emoji/1f936-1f3ff.png
deleted file mode 100644
index ccab3c40ff21e..0000000000000
Binary files a/public/emoji/1f936-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f936-1f3ff.svg b/public/emoji/1f936-1f3ff.svg
index bd8eb1babdebf..b972cf0b23bca 100644
--- a/public/emoji/1f936-1f3ff.svg
+++ b/public/emoji/1f936-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f936.png b/public/emoji/1f936.png
deleted file mode 100644
index 9cf2458df1af4..0000000000000
Binary files a/public/emoji/1f936.png and /dev/null differ
diff --git a/public/emoji/1f936.svg b/public/emoji/1f936.svg
index c2c0e9862ebd2..aad36267b0739 100644
--- a/public/emoji/1f936.svg
+++ b/public/emoji/1f936.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f937-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f937-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..3fb8aa608aed6
--- /dev/null
+++ b/public/emoji/1f937-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f937-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f937-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..6fa8b486080db
--- /dev/null
+++ b/public/emoji/1f937-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f937-1f3fb.png b/public/emoji/1f937-1f3fb.png
deleted file mode 100644
index 1c895e64468ba..0000000000000
Binary files a/public/emoji/1f937-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f937-1f3fb.svg b/public/emoji/1f937-1f3fb.svg
index e654bcd6a742a..3fb8aa608aed6 100644
--- a/public/emoji/1f937-1f3fb.svg
+++ b/public/emoji/1f937-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f937-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f937-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..df88b238b4b1c
--- /dev/null
+++ b/public/emoji/1f937-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f937-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f937-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..9690008e39a7a
--- /dev/null
+++ b/public/emoji/1f937-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f937-1f3fc.png b/public/emoji/1f937-1f3fc.png
deleted file mode 100644
index 4e3ca8f8bac46..0000000000000
Binary files a/public/emoji/1f937-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f937-1f3fc.svg b/public/emoji/1f937-1f3fc.svg
index 8686bdf2bd36e..df88b238b4b1c 100644
--- a/public/emoji/1f937-1f3fc.svg
+++ b/public/emoji/1f937-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f937-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f937-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..38047209f52a2
--- /dev/null
+++ b/public/emoji/1f937-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f937-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f937-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..7a7807e03bfe4
--- /dev/null
+++ b/public/emoji/1f937-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f937-1f3fd.png b/public/emoji/1f937-1f3fd.png
deleted file mode 100644
index d1b16a19bb564..0000000000000
Binary files a/public/emoji/1f937-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f937-1f3fd.svg b/public/emoji/1f937-1f3fd.svg
index ee50fbbd74796..38047209f52a2 100644
--- a/public/emoji/1f937-1f3fd.svg
+++ b/public/emoji/1f937-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f937-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f937-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..d7c4702e3e26a
--- /dev/null
+++ b/public/emoji/1f937-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f937-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f937-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..8f2eb7f48fca5
--- /dev/null
+++ b/public/emoji/1f937-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f937-1f3fe.png b/public/emoji/1f937-1f3fe.png
deleted file mode 100644
index 5fbef3f2255f1..0000000000000
Binary files a/public/emoji/1f937-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f937-1f3fe.svg b/public/emoji/1f937-1f3fe.svg
index 4a7bc965e382b..d7c4702e3e26a 100644
--- a/public/emoji/1f937-1f3fe.svg
+++ b/public/emoji/1f937-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f937-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f937-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..769929c569f79
--- /dev/null
+++ b/public/emoji/1f937-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f937-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f937-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..7384bbb3203de
--- /dev/null
+++ b/public/emoji/1f937-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f937-1f3ff.png b/public/emoji/1f937-1f3ff.png
deleted file mode 100644
index 4af2e28bc5cf2..0000000000000
Binary files a/public/emoji/1f937-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f937-1f3ff.svg b/public/emoji/1f937-1f3ff.svg
index 25bfd9ef717ed..769929c569f79 100644
--- a/public/emoji/1f937-1f3ff.svg
+++ b/public/emoji/1f937-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f937-200d-2640-fe0f.svg b/public/emoji/1f937-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..4277e9ddb4f8d
--- /dev/null
+++ b/public/emoji/1f937-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f937-200d-2642-fe0f.svg b/public/emoji/1f937-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..d202027282faf
--- /dev/null
+++ b/public/emoji/1f937-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f937.png b/public/emoji/1f937.png
deleted file mode 100644
index 76e63bfac775f..0000000000000
Binary files a/public/emoji/1f937.png and /dev/null differ
diff --git a/public/emoji/1f937.svg b/public/emoji/1f937.svg
index c2ab59fe01788..4277e9ddb4f8d 100644
--- a/public/emoji/1f937.svg
+++ b/public/emoji/1f937.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f938-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f938-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..11c961dfdec81
--- /dev/null
+++ b/public/emoji/1f938-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f938-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f938-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..beb1698b000ae
--- /dev/null
+++ b/public/emoji/1f938-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f938-1f3fb.png b/public/emoji/1f938-1f3fb.png
deleted file mode 100644
index db6d65895fb1a..0000000000000
Binary files a/public/emoji/1f938-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f938-1f3fb.svg b/public/emoji/1f938-1f3fb.svg
index 41bb168869ab9..11c961dfdec81 100644
--- a/public/emoji/1f938-1f3fb.svg
+++ b/public/emoji/1f938-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f938-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f938-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..5e568ea2511a2
--- /dev/null
+++ b/public/emoji/1f938-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f938-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f938-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..136338d4abd21
--- /dev/null
+++ b/public/emoji/1f938-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f938-1f3fc.png b/public/emoji/1f938-1f3fc.png
deleted file mode 100644
index e00ffbc27a81f..0000000000000
Binary files a/public/emoji/1f938-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f938-1f3fc.svg b/public/emoji/1f938-1f3fc.svg
index 17ccde4bb5f3b..5e568ea2511a2 100644
--- a/public/emoji/1f938-1f3fc.svg
+++ b/public/emoji/1f938-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f938-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f938-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..86abb59e3c819
--- /dev/null
+++ b/public/emoji/1f938-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f938-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f938-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..e580c1f446a30
--- /dev/null
+++ b/public/emoji/1f938-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f938-1f3fd.png b/public/emoji/1f938-1f3fd.png
deleted file mode 100644
index 49321be391f21..0000000000000
Binary files a/public/emoji/1f938-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f938-1f3fd.svg b/public/emoji/1f938-1f3fd.svg
index e76db7a6ea286..86abb59e3c819 100644
--- a/public/emoji/1f938-1f3fd.svg
+++ b/public/emoji/1f938-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f938-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f938-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..06c5f27ce36fa
--- /dev/null
+++ b/public/emoji/1f938-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f938-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f938-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..ee81b8e943cdc
--- /dev/null
+++ b/public/emoji/1f938-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f938-1f3fe.png b/public/emoji/1f938-1f3fe.png
deleted file mode 100644
index d4562b5e3ddde..0000000000000
Binary files a/public/emoji/1f938-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f938-1f3fe.svg b/public/emoji/1f938-1f3fe.svg
index 83a3dd3bd7858..06c5f27ce36fa 100644
--- a/public/emoji/1f938-1f3fe.svg
+++ b/public/emoji/1f938-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f938-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f938-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..492866a6d9eaf
--- /dev/null
+++ b/public/emoji/1f938-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f938-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f938-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..3846f7e814691
--- /dev/null
+++ b/public/emoji/1f938-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f938-1f3ff.png b/public/emoji/1f938-1f3ff.png
deleted file mode 100644
index 6e09a87076751..0000000000000
Binary files a/public/emoji/1f938-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f938-1f3ff.svg b/public/emoji/1f938-1f3ff.svg
index 347df3bc0eae7..492866a6d9eaf 100644
--- a/public/emoji/1f938-1f3ff.svg
+++ b/public/emoji/1f938-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f938-200d-2640-fe0f.svg b/public/emoji/1f938-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..d4108d7067b3a
--- /dev/null
+++ b/public/emoji/1f938-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f938-200d-2642-fe0f.svg b/public/emoji/1f938-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..1335d4f0a4e9f
--- /dev/null
+++ b/public/emoji/1f938-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f938.png b/public/emoji/1f938.png
deleted file mode 100644
index cbcaa578253a9..0000000000000
Binary files a/public/emoji/1f938.png and /dev/null differ
diff --git a/public/emoji/1f938.svg b/public/emoji/1f938.svg
index d3c2a1ad8341f..d4108d7067b3a 100644
--- a/public/emoji/1f938.svg
+++ b/public/emoji/1f938.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f939-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f939-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..ecbe04f58d420
--- /dev/null
+++ b/public/emoji/1f939-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f939-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f939-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..cc2e8f3dcc6b9
--- /dev/null
+++ b/public/emoji/1f939-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f939-1f3fb.png b/public/emoji/1f939-1f3fb.png
deleted file mode 100644
index c18eda400311a..0000000000000
Binary files a/public/emoji/1f939-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f939-1f3fb.svg b/public/emoji/1f939-1f3fb.svg
index db37b39a0b122..cc2e8f3dcc6b9 100644
--- a/public/emoji/1f939-1f3fb.svg
+++ b/public/emoji/1f939-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f939-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f939-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..54b97ed10f23b
--- /dev/null
+++ b/public/emoji/1f939-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f939-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f939-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..883eb1cde9519
--- /dev/null
+++ b/public/emoji/1f939-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f939-1f3fc.png b/public/emoji/1f939-1f3fc.png
deleted file mode 100644
index de3b7a555b6ca..0000000000000
Binary files a/public/emoji/1f939-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f939-1f3fc.svg b/public/emoji/1f939-1f3fc.svg
index bb834f73f8d0d..883eb1cde9519 100644
--- a/public/emoji/1f939-1f3fc.svg
+++ b/public/emoji/1f939-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f939-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f939-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..b49b5d176b0de
--- /dev/null
+++ b/public/emoji/1f939-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f939-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f939-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..1675762c87002
--- /dev/null
+++ b/public/emoji/1f939-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f939-1f3fd.png b/public/emoji/1f939-1f3fd.png
deleted file mode 100644
index 74ab6d8545881..0000000000000
Binary files a/public/emoji/1f939-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f939-1f3fd.svg b/public/emoji/1f939-1f3fd.svg
index 8c2b703d85d7a..1675762c87002 100644
--- a/public/emoji/1f939-1f3fd.svg
+++ b/public/emoji/1f939-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f939-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f939-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..9fa47f6ed3faf
--- /dev/null
+++ b/public/emoji/1f939-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f939-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f939-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..fa0ea01556ce3
--- /dev/null
+++ b/public/emoji/1f939-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f939-1f3fe.png b/public/emoji/1f939-1f3fe.png
deleted file mode 100644
index 1c57823203fca..0000000000000
Binary files a/public/emoji/1f939-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f939-1f3fe.svg b/public/emoji/1f939-1f3fe.svg
index fcf09920858eb..fa0ea01556ce3 100644
--- a/public/emoji/1f939-1f3fe.svg
+++ b/public/emoji/1f939-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f939-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f939-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..e2128cc2e1111
--- /dev/null
+++ b/public/emoji/1f939-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f939-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f939-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..ec09828104b0a
--- /dev/null
+++ b/public/emoji/1f939-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f939-1f3ff.png b/public/emoji/1f939-1f3ff.png
deleted file mode 100644
index c343d6ee98a91..0000000000000
Binary files a/public/emoji/1f939-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f939-1f3ff.svg b/public/emoji/1f939-1f3ff.svg
index b1d6168a07582..ec09828104b0a 100644
--- a/public/emoji/1f939-1f3ff.svg
+++ b/public/emoji/1f939-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f939-200d-2640-fe0f.svg b/public/emoji/1f939-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..c2f071c5beadf
--- /dev/null
+++ b/public/emoji/1f939-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f939-200d-2642-fe0f.svg b/public/emoji/1f939-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..532cd15cf61ae
--- /dev/null
+++ b/public/emoji/1f939-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f939.png b/public/emoji/1f939.png
deleted file mode 100644
index a37f6224a42ee..0000000000000
Binary files a/public/emoji/1f939.png and /dev/null differ
diff --git a/public/emoji/1f939.svg b/public/emoji/1f939.svg
index 3859ff275fa77..532cd15cf61ae 100644
--- a/public/emoji/1f939.svg
+++ b/public/emoji/1f939.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f93a.png b/public/emoji/1f93a.png
deleted file mode 100644
index 5288c920eb90a..0000000000000
Binary files a/public/emoji/1f93a.png and /dev/null differ
diff --git a/public/emoji/1f93a.svg b/public/emoji/1f93a.svg
index f566e0605cee6..663bae152a90f 100644
--- a/public/emoji/1f93a.svg
+++ b/public/emoji/1f93a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f93c-1f3fb.png b/public/emoji/1f93c-1f3fb.png
deleted file mode 100644
index 379070fd03bdd..0000000000000
Binary files a/public/emoji/1f93c-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f93c-1f3fb.svg b/public/emoji/1f93c-1f3fb.svg
deleted file mode 100644
index 107ff2667e20f..0000000000000
--- a/public/emoji/1f93c-1f3fb.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f93c-1f3fc.png b/public/emoji/1f93c-1f3fc.png
deleted file mode 100644
index 6863ea9209d81..0000000000000
Binary files a/public/emoji/1f93c-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f93c-1f3fc.svg b/public/emoji/1f93c-1f3fc.svg
deleted file mode 100644
index e417df2d85613..0000000000000
--- a/public/emoji/1f93c-1f3fc.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f93c-1f3fd.png b/public/emoji/1f93c-1f3fd.png
deleted file mode 100644
index b7e62910127a3..0000000000000
Binary files a/public/emoji/1f93c-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f93c-1f3fd.svg b/public/emoji/1f93c-1f3fd.svg
deleted file mode 100644
index 5b897f9dbb63b..0000000000000
--- a/public/emoji/1f93c-1f3fd.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f93c-1f3fe.png b/public/emoji/1f93c-1f3fe.png
deleted file mode 100644
index 750f9589233fa..0000000000000
Binary files a/public/emoji/1f93c-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f93c-1f3fe.svg b/public/emoji/1f93c-1f3fe.svg
deleted file mode 100644
index 7f342502175f1..0000000000000
--- a/public/emoji/1f93c-1f3fe.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f93c-1f3ff.png b/public/emoji/1f93c-1f3ff.png
deleted file mode 100644
index 36ab9bb3f4250..0000000000000
Binary files a/public/emoji/1f93c-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f93c-1f3ff.svg b/public/emoji/1f93c-1f3ff.svg
deleted file mode 100644
index a4e5ecc507eec..0000000000000
--- a/public/emoji/1f93c-1f3ff.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/emoji/1f93c-200d-2640-fe0f.svg b/public/emoji/1f93c-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..2380abf71e528
--- /dev/null
+++ b/public/emoji/1f93c-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93c-200d-2642-fe0f.svg b/public/emoji/1f93c-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..d568b453c0db8
--- /dev/null
+++ b/public/emoji/1f93c-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93c.png b/public/emoji/1f93c.png
deleted file mode 100644
index 71e67cfad851b..0000000000000
Binary files a/public/emoji/1f93c.png and /dev/null differ
diff --git a/public/emoji/1f93c.svg b/public/emoji/1f93c.svg
index 694ce7662430e..d568b453c0db8 100644
--- a/public/emoji/1f93c.svg
+++ b/public/emoji/1f93c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f93d-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..c725abbce326e
--- /dev/null
+++ b/public/emoji/1f93d-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f93d-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..a7515d5dbcdef
--- /dev/null
+++ b/public/emoji/1f93d-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3fb.png b/public/emoji/1f93d-1f3fb.png
deleted file mode 100644
index bed1a908d6aed..0000000000000
Binary files a/public/emoji/1f93d-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f93d-1f3fb.svg b/public/emoji/1f93d-1f3fb.svg
index ab8d140df0308..a7515d5dbcdef 100644
--- a/public/emoji/1f93d-1f3fb.svg
+++ b/public/emoji/1f93d-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f93d-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..80bc3501b1a0a
--- /dev/null
+++ b/public/emoji/1f93d-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f93d-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..b304277916ace
--- /dev/null
+++ b/public/emoji/1f93d-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3fc.png b/public/emoji/1f93d-1f3fc.png
deleted file mode 100644
index ec5a43b4d4a76..0000000000000
Binary files a/public/emoji/1f93d-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f93d-1f3fc.svg b/public/emoji/1f93d-1f3fc.svg
index 85395e007b487..b304277916ace 100644
--- a/public/emoji/1f93d-1f3fc.svg
+++ b/public/emoji/1f93d-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f93d-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..cf169c961be85
--- /dev/null
+++ b/public/emoji/1f93d-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f93d-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..2e55ad5707b6a
--- /dev/null
+++ b/public/emoji/1f93d-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3fd.png b/public/emoji/1f93d-1f3fd.png
deleted file mode 100644
index b081a4a5a965d..0000000000000
Binary files a/public/emoji/1f93d-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f93d-1f3fd.svg b/public/emoji/1f93d-1f3fd.svg
index 3977b73773746..2e55ad5707b6a 100644
--- a/public/emoji/1f93d-1f3fd.svg
+++ b/public/emoji/1f93d-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f93d-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..605d328d9b477
--- /dev/null
+++ b/public/emoji/1f93d-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f93d-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..5459f0f98b600
--- /dev/null
+++ b/public/emoji/1f93d-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3fe.png b/public/emoji/1f93d-1f3fe.png
deleted file mode 100644
index 82cfbc3b0c7c7..0000000000000
Binary files a/public/emoji/1f93d-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f93d-1f3fe.svg b/public/emoji/1f93d-1f3fe.svg
index d25f2bfb0c9d1..5459f0f98b600 100644
--- a/public/emoji/1f93d-1f3fe.svg
+++ b/public/emoji/1f93d-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f93d-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..c01fa423bdbee
--- /dev/null
+++ b/public/emoji/1f93d-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f93d-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..c84f230dce16c
--- /dev/null
+++ b/public/emoji/1f93d-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93d-1f3ff.png b/public/emoji/1f93d-1f3ff.png
deleted file mode 100644
index bd3366eb06c3d..0000000000000
Binary files a/public/emoji/1f93d-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f93d-1f3ff.svg b/public/emoji/1f93d-1f3ff.svg
index 16cd1bbe4946f..c84f230dce16c 100644
--- a/public/emoji/1f93d-1f3ff.svg
+++ b/public/emoji/1f93d-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f93d-200d-2640-fe0f.svg b/public/emoji/1f93d-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..4f22a638fcc07
--- /dev/null
+++ b/public/emoji/1f93d-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93d-200d-2642-fe0f.svg b/public/emoji/1f93d-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..1cbe1e8e384cf
--- /dev/null
+++ b/public/emoji/1f93d-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93d.png b/public/emoji/1f93d.png
deleted file mode 100644
index cb44576780d41..0000000000000
Binary files a/public/emoji/1f93d.png and /dev/null differ
diff --git a/public/emoji/1f93d.svg b/public/emoji/1f93d.svg
index 1ba0ab89ed165..1cbe1e8e384cf 100644
--- a/public/emoji/1f93d.svg
+++ b/public/emoji/1f93d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f93e-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..cc9a5e83775e3
--- /dev/null
+++ b/public/emoji/1f93e-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f93e-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..b7f07e45f9c50
--- /dev/null
+++ b/public/emoji/1f93e-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3fb.png b/public/emoji/1f93e-1f3fb.png
deleted file mode 100644
index c26cac2df9860..0000000000000
Binary files a/public/emoji/1f93e-1f3fb.png and /dev/null differ
diff --git a/public/emoji/1f93e-1f3fb.svg b/public/emoji/1f93e-1f3fb.svg
index 58ad79fadd369..cc9a5e83775e3 100644
--- a/public/emoji/1f93e-1f3fb.svg
+++ b/public/emoji/1f93e-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f93e-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..8c0d7576f3a6d
--- /dev/null
+++ b/public/emoji/1f93e-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f93e-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..2d25b7a5bd77d
--- /dev/null
+++ b/public/emoji/1f93e-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3fc.png b/public/emoji/1f93e-1f3fc.png
deleted file mode 100644
index 7baaf95a9a219..0000000000000
Binary files a/public/emoji/1f93e-1f3fc.png and /dev/null differ
diff --git a/public/emoji/1f93e-1f3fc.svg b/public/emoji/1f93e-1f3fc.svg
index fb609bac76f6e..8c0d7576f3a6d 100644
--- a/public/emoji/1f93e-1f3fc.svg
+++ b/public/emoji/1f93e-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f93e-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..1aa9f7d2d2473
--- /dev/null
+++ b/public/emoji/1f93e-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f93e-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..e270a92f945ab
--- /dev/null
+++ b/public/emoji/1f93e-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3fd.png b/public/emoji/1f93e-1f3fd.png
deleted file mode 100644
index 0e3a37c3d4084..0000000000000
Binary files a/public/emoji/1f93e-1f3fd.png and /dev/null differ
diff --git a/public/emoji/1f93e-1f3fd.svg b/public/emoji/1f93e-1f3fd.svg
index facf15d77992c..1aa9f7d2d2473 100644
--- a/public/emoji/1f93e-1f3fd.svg
+++ b/public/emoji/1f93e-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f93e-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..0d46f89068ead
--- /dev/null
+++ b/public/emoji/1f93e-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f93e-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..5e0c971405721
--- /dev/null
+++ b/public/emoji/1f93e-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3fe.png b/public/emoji/1f93e-1f3fe.png
deleted file mode 100644
index e1233f38266a0..0000000000000
Binary files a/public/emoji/1f93e-1f3fe.png and /dev/null differ
diff --git a/public/emoji/1f93e-1f3fe.svg b/public/emoji/1f93e-1f3fe.svg
index 2b3023fce5d54..0d46f89068ead 100644
--- a/public/emoji/1f93e-1f3fe.svg
+++ b/public/emoji/1f93e-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f93e-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..34be64b016192
--- /dev/null
+++ b/public/emoji/1f93e-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f93e-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..a868dcc31994b
--- /dev/null
+++ b/public/emoji/1f93e-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93e-1f3ff.png b/public/emoji/1f93e-1f3ff.png
deleted file mode 100644
index 6b1eb9b64b0f7..0000000000000
Binary files a/public/emoji/1f93e-1f3ff.png and /dev/null differ
diff --git a/public/emoji/1f93e-1f3ff.svg b/public/emoji/1f93e-1f3ff.svg
index 65220a53948f2..34be64b016192 100644
--- a/public/emoji/1f93e-1f3ff.svg
+++ b/public/emoji/1f93e-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f93e-200d-2640-fe0f.svg b/public/emoji/1f93e-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..817bb49f597e1
--- /dev/null
+++ b/public/emoji/1f93e-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93e-200d-2642-fe0f.svg b/public/emoji/1f93e-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..4dfcc53762bd3
--- /dev/null
+++ b/public/emoji/1f93e-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f93e.png b/public/emoji/1f93e.png
deleted file mode 100644
index 1152f1344c7a3..0000000000000
Binary files a/public/emoji/1f93e.png and /dev/null differ
diff --git a/public/emoji/1f93e.svg b/public/emoji/1f93e.svg
index d3a20ac8a204b..817bb49f597e1 100644
--- a/public/emoji/1f93e.svg
+++ b/public/emoji/1f93e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f940.png b/public/emoji/1f940.png
deleted file mode 100644
index 62412b143ae6c..0000000000000
Binary files a/public/emoji/1f940.png and /dev/null differ
diff --git a/public/emoji/1f940.svg b/public/emoji/1f940.svg
index dda76b81bcd1f..08d5986def0aa 100644
--- a/public/emoji/1f940.svg
+++ b/public/emoji/1f940.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f941.png b/public/emoji/1f941.png
deleted file mode 100644
index b038727cc99f9..0000000000000
Binary files a/public/emoji/1f941.png and /dev/null differ
diff --git a/public/emoji/1f941.svg b/public/emoji/1f941.svg
index 3a07224db3402..7a7027b7e3ee4 100644
--- a/public/emoji/1f941.svg
+++ b/public/emoji/1f941.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f942.png b/public/emoji/1f942.png
deleted file mode 100644
index 31937ae939244..0000000000000
Binary files a/public/emoji/1f942.png and /dev/null differ
diff --git a/public/emoji/1f942.svg b/public/emoji/1f942.svg
index 41384a1ac31e7..1540a6b852faa 100644
--- a/public/emoji/1f942.svg
+++ b/public/emoji/1f942.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f943.png b/public/emoji/1f943.png
deleted file mode 100644
index 7bf09229879a0..0000000000000
Binary files a/public/emoji/1f943.png and /dev/null differ
diff --git a/public/emoji/1f943.svg b/public/emoji/1f943.svg
index 025cd0b8a332f..dc49c48728d0d 100644
--- a/public/emoji/1f943.svg
+++ b/public/emoji/1f943.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f944.png b/public/emoji/1f944.png
deleted file mode 100644
index 3c4da766aee70..0000000000000
Binary files a/public/emoji/1f944.png and /dev/null differ
diff --git a/public/emoji/1f944.svg b/public/emoji/1f944.svg
index f69528ca7a4a3..d17ec31ca4fe0 100644
--- a/public/emoji/1f944.svg
+++ b/public/emoji/1f944.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f945.png b/public/emoji/1f945.png
deleted file mode 100644
index df3a53da0fbf8..0000000000000
Binary files a/public/emoji/1f945.png and /dev/null differ
diff --git a/public/emoji/1f945.svg b/public/emoji/1f945.svg
index 181c8522440ea..6e1648f3085ea 100644
--- a/public/emoji/1f945.svg
+++ b/public/emoji/1f945.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f947.png b/public/emoji/1f947.png
deleted file mode 100644
index 15612b66492e1..0000000000000
Binary files a/public/emoji/1f947.png and /dev/null differ
diff --git a/public/emoji/1f947.svg b/public/emoji/1f947.svg
index abb7620a09f09..6403a34712314 100644
--- a/public/emoji/1f947.svg
+++ b/public/emoji/1f947.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f948.png b/public/emoji/1f948.png
deleted file mode 100644
index 17b011268b6df..0000000000000
Binary files a/public/emoji/1f948.png and /dev/null differ
diff --git a/public/emoji/1f948.svg b/public/emoji/1f948.svg
index 2da21e1386c08..75283797e1c14 100644
--- a/public/emoji/1f948.svg
+++ b/public/emoji/1f948.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f949.png b/public/emoji/1f949.png
deleted file mode 100644
index 636e04a595091..0000000000000
Binary files a/public/emoji/1f949.png and /dev/null differ
diff --git a/public/emoji/1f949.svg b/public/emoji/1f949.svg
index 1322b555feb67..d3f5f03f8b8e3 100644
--- a/public/emoji/1f949.svg
+++ b/public/emoji/1f949.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f94a.png b/public/emoji/1f94a.png
deleted file mode 100644
index 9838f24e51a75..0000000000000
Binary files a/public/emoji/1f94a.png and /dev/null differ
diff --git a/public/emoji/1f94a.svg b/public/emoji/1f94a.svg
index 752af12e30a58..9821f08b9725b 100644
--- a/public/emoji/1f94a.svg
+++ b/public/emoji/1f94a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f94b.png b/public/emoji/1f94b.png
deleted file mode 100644
index 8d6114761f65c..0000000000000
Binary files a/public/emoji/1f94b.png and /dev/null differ
diff --git a/public/emoji/1f94b.svg b/public/emoji/1f94b.svg
index 44fc92b840da6..f4c48eaf79aad 100644
--- a/public/emoji/1f94b.svg
+++ b/public/emoji/1f94b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f94c.svg b/public/emoji/1f94c.svg
new file mode 100644
index 0000000000000..1d4067c6af89d
--- /dev/null
+++ b/public/emoji/1f94c.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f950.png b/public/emoji/1f950.png
deleted file mode 100644
index fb33feb1a383f..0000000000000
Binary files a/public/emoji/1f950.png and /dev/null differ
diff --git a/public/emoji/1f950.svg b/public/emoji/1f950.svg
index 184e56c466290..4c325029a1e4a 100644
--- a/public/emoji/1f950.svg
+++ b/public/emoji/1f950.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f951.png b/public/emoji/1f951.png
deleted file mode 100644
index 06f0d124aedf1..0000000000000
Binary files a/public/emoji/1f951.png and /dev/null differ
diff --git a/public/emoji/1f951.svg b/public/emoji/1f951.svg
index b8c26d2a4152b..093bf6984d5e0 100644
--- a/public/emoji/1f951.svg
+++ b/public/emoji/1f951.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f952.png b/public/emoji/1f952.png
deleted file mode 100644
index 500807059d24e..0000000000000
Binary files a/public/emoji/1f952.png and /dev/null differ
diff --git a/public/emoji/1f952.svg b/public/emoji/1f952.svg
index d72b1ceba0cc5..72e66de084f7d 100644
--- a/public/emoji/1f952.svg
+++ b/public/emoji/1f952.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f953.png b/public/emoji/1f953.png
deleted file mode 100644
index f38a485fbe4a8..0000000000000
Binary files a/public/emoji/1f953.png and /dev/null differ
diff --git a/public/emoji/1f953.svg b/public/emoji/1f953.svg
index d702dc50c454e..9617ade964d43 100644
--- a/public/emoji/1f953.svg
+++ b/public/emoji/1f953.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f954.png b/public/emoji/1f954.png
deleted file mode 100644
index 70350ca2c0aad..0000000000000
Binary files a/public/emoji/1f954.png and /dev/null differ
diff --git a/public/emoji/1f954.svg b/public/emoji/1f954.svg
index 15d99ff471468..4f3744519e405 100644
--- a/public/emoji/1f954.svg
+++ b/public/emoji/1f954.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f955.png b/public/emoji/1f955.png
deleted file mode 100644
index c68829b58e788..0000000000000
Binary files a/public/emoji/1f955.png and /dev/null differ
diff --git a/public/emoji/1f955.svg b/public/emoji/1f955.svg
index 468c7a216b584..cf125d4f119a4 100644
--- a/public/emoji/1f955.svg
+++ b/public/emoji/1f955.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f956.png b/public/emoji/1f956.png
deleted file mode 100644
index 4c2c563982226..0000000000000
Binary files a/public/emoji/1f956.png and /dev/null differ
diff --git a/public/emoji/1f956.svg b/public/emoji/1f956.svg
index dc1e86fc3796c..4e00b5746fc51 100644
--- a/public/emoji/1f956.svg
+++ b/public/emoji/1f956.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f957.png b/public/emoji/1f957.png
deleted file mode 100644
index c89f93411580e..0000000000000
Binary files a/public/emoji/1f957.png and /dev/null differ
diff --git a/public/emoji/1f957.svg b/public/emoji/1f957.svg
index e0a2a01edb32a..6368a14b4690f 100644
--- a/public/emoji/1f957.svg
+++ b/public/emoji/1f957.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f958.png b/public/emoji/1f958.png
deleted file mode 100644
index 663a1006acd7b..0000000000000
Binary files a/public/emoji/1f958.png and /dev/null differ
diff --git a/public/emoji/1f958.svg b/public/emoji/1f958.svg
index 2062eae7fbad0..a90551e1c29e0 100644
--- a/public/emoji/1f958.svg
+++ b/public/emoji/1f958.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f959.png b/public/emoji/1f959.png
deleted file mode 100644
index a2e10df40a5dc..0000000000000
Binary files a/public/emoji/1f959.png and /dev/null differ
diff --git a/public/emoji/1f959.svg b/public/emoji/1f959.svg
index 8be63ab158fe9..dcf10698f8ba8 100644
--- a/public/emoji/1f959.svg
+++ b/public/emoji/1f959.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f95a.png b/public/emoji/1f95a.png
deleted file mode 100644
index c171974d99350..0000000000000
Binary files a/public/emoji/1f95a.png and /dev/null differ
diff --git a/public/emoji/1f95a.svg b/public/emoji/1f95a.svg
index 005e3e6af0173..292ed7e8ef335 100644
--- a/public/emoji/1f95a.svg
+++ b/public/emoji/1f95a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f95b.png b/public/emoji/1f95b.png
deleted file mode 100644
index e4fcf2e64f39a..0000000000000
Binary files a/public/emoji/1f95b.png and /dev/null differ
diff --git a/public/emoji/1f95b.svg b/public/emoji/1f95b.svg
index 877c0521c6dd1..7157c078b88f7 100644
--- a/public/emoji/1f95b.svg
+++ b/public/emoji/1f95b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f95c.png b/public/emoji/1f95c.png
deleted file mode 100644
index b64fadad01090..0000000000000
Binary files a/public/emoji/1f95c.png and /dev/null differ
diff --git a/public/emoji/1f95c.svg b/public/emoji/1f95c.svg
index 3866204ec253c..3f8f0244fd9d6 100644
--- a/public/emoji/1f95c.svg
+++ b/public/emoji/1f95c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f95d.png b/public/emoji/1f95d.png
deleted file mode 100644
index dfbd825807411..0000000000000
Binary files a/public/emoji/1f95d.png and /dev/null differ
diff --git a/public/emoji/1f95d.svg b/public/emoji/1f95d.svg
index d60d50f87efa7..f25a06289ee52 100644
--- a/public/emoji/1f95d.svg
+++ b/public/emoji/1f95d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f95e.png b/public/emoji/1f95e.png
deleted file mode 100644
index 6223d1a28e99c..0000000000000
Binary files a/public/emoji/1f95e.png and /dev/null differ
diff --git a/public/emoji/1f95e.svg b/public/emoji/1f95e.svg
index 603a3470d7044..1a1769b0c076f 100644
--- a/public/emoji/1f95e.svg
+++ b/public/emoji/1f95e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f95f.svg b/public/emoji/1f95f.svg
new file mode 100644
index 0000000000000..9044b39980e6e
--- /dev/null
+++ b/public/emoji/1f95f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f960.svg b/public/emoji/1f960.svg
new file mode 100644
index 0000000000000..bc2052056f72a
--- /dev/null
+++ b/public/emoji/1f960.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f961.svg b/public/emoji/1f961.svg
new file mode 100644
index 0000000000000..81fbe98f5795e
--- /dev/null
+++ b/public/emoji/1f961.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f962.svg b/public/emoji/1f962.svg
new file mode 100644
index 0000000000000..fc03175484bf4
--- /dev/null
+++ b/public/emoji/1f962.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f963.svg b/public/emoji/1f963.svg
new file mode 100644
index 0000000000000..c5d61ee6c96f7
--- /dev/null
+++ b/public/emoji/1f963.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f964.svg b/public/emoji/1f964.svg
new file mode 100644
index 0000000000000..a229dbbcdfbdb
--- /dev/null
+++ b/public/emoji/1f964.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f965.svg b/public/emoji/1f965.svg
new file mode 100644
index 0000000000000..d80d0d9f45dd4
--- /dev/null
+++ b/public/emoji/1f965.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f966.svg b/public/emoji/1f966.svg
new file mode 100644
index 0000000000000..e0ae9476d2745
--- /dev/null
+++ b/public/emoji/1f966.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f967.svg b/public/emoji/1f967.svg
new file mode 100644
index 0000000000000..e4c0fc39a7286
--- /dev/null
+++ b/public/emoji/1f967.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f968.svg b/public/emoji/1f968.svg
new file mode 100644
index 0000000000000..7aaef3251c725
--- /dev/null
+++ b/public/emoji/1f968.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f969.svg b/public/emoji/1f969.svg
new file mode 100644
index 0000000000000..3b9d7741d52c4
--- /dev/null
+++ b/public/emoji/1f969.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f96a.svg b/public/emoji/1f96a.svg
new file mode 100644
index 0000000000000..c708089af152d
--- /dev/null
+++ b/public/emoji/1f96a.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f96b.svg b/public/emoji/1f96b.svg
new file mode 100644
index 0000000000000..bef3815b1e827
--- /dev/null
+++ b/public/emoji/1f96b.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f980.png b/public/emoji/1f980.png
deleted file mode 100644
index 19f3047ab61f4..0000000000000
Binary files a/public/emoji/1f980.png and /dev/null differ
diff --git a/public/emoji/1f980.svg b/public/emoji/1f980.svg
index 1f7936f4a7ce6..5c98af4a57ab9 100644
--- a/public/emoji/1f980.svg
+++ b/public/emoji/1f980.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f981.png b/public/emoji/1f981.png
deleted file mode 100644
index 5062ab47ecf8f..0000000000000
Binary files a/public/emoji/1f981.png and /dev/null differ
diff --git a/public/emoji/1f981.svg b/public/emoji/1f981.svg
index 965e4ef2102b9..51707e184af31 100644
--- a/public/emoji/1f981.svg
+++ b/public/emoji/1f981.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f982.png b/public/emoji/1f982.png
deleted file mode 100644
index 449a6b281c993..0000000000000
Binary files a/public/emoji/1f982.png and /dev/null differ
diff --git a/public/emoji/1f982.svg b/public/emoji/1f982.svg
index a1afc315cd6bb..c6c3fe93ff0a5 100644
--- a/public/emoji/1f982.svg
+++ b/public/emoji/1f982.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f983.png b/public/emoji/1f983.png
deleted file mode 100644
index 344af94c9ecd2..0000000000000
Binary files a/public/emoji/1f983.png and /dev/null differ
diff --git a/public/emoji/1f983.svg b/public/emoji/1f983.svg
index 59cc30fe369d5..c35118cc4aa19 100644
--- a/public/emoji/1f983.svg
+++ b/public/emoji/1f983.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f984.png b/public/emoji/1f984.png
deleted file mode 100644
index 05a97969f7efe..0000000000000
Binary files a/public/emoji/1f984.png and /dev/null differ
diff --git a/public/emoji/1f984.svg b/public/emoji/1f984.svg
index 507937d7a035b..a996b38614970 100644
--- a/public/emoji/1f984.svg
+++ b/public/emoji/1f984.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f985.png b/public/emoji/1f985.png
deleted file mode 100644
index 4f277debeef3e..0000000000000
Binary files a/public/emoji/1f985.png and /dev/null differ
diff --git a/public/emoji/1f985.svg b/public/emoji/1f985.svg
index afba6f983fc9a..c96b06e7afd7d 100644
--- a/public/emoji/1f985.svg
+++ b/public/emoji/1f985.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f986.png b/public/emoji/1f986.png
deleted file mode 100644
index 74330b77ca33b..0000000000000
Binary files a/public/emoji/1f986.png and /dev/null differ
diff --git a/public/emoji/1f986.svg b/public/emoji/1f986.svg
index ee80f71d87f89..d047b47cb5cb6 100644
--- a/public/emoji/1f986.svg
+++ b/public/emoji/1f986.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f987.png b/public/emoji/1f987.png
deleted file mode 100644
index 3152c047e004e..0000000000000
Binary files a/public/emoji/1f987.png and /dev/null differ
diff --git a/public/emoji/1f987.svg b/public/emoji/1f987.svg
index 77c26c984238f..2a730479268a7 100644
--- a/public/emoji/1f987.svg
+++ b/public/emoji/1f987.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f988.png b/public/emoji/1f988.png
deleted file mode 100644
index c75076d57d820..0000000000000
Binary files a/public/emoji/1f988.png and /dev/null differ
diff --git a/public/emoji/1f988.svg b/public/emoji/1f988.svg
index c1fffcd291ff4..81409bbc4d12b 100644
--- a/public/emoji/1f988.svg
+++ b/public/emoji/1f988.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f989.png b/public/emoji/1f989.png
deleted file mode 100644
index fa6815480c345..0000000000000
Binary files a/public/emoji/1f989.png and /dev/null differ
diff --git a/public/emoji/1f989.svg b/public/emoji/1f989.svg
index bde42fe1c9383..10a2cbaa254f9 100644
--- a/public/emoji/1f989.svg
+++ b/public/emoji/1f989.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f98a.png b/public/emoji/1f98a.png
deleted file mode 100644
index 1ab339bf05429..0000000000000
Binary files a/public/emoji/1f98a.png and /dev/null differ
diff --git a/public/emoji/1f98a.svg b/public/emoji/1f98a.svg
index 28f9072f55dea..8603d9180e969 100644
--- a/public/emoji/1f98a.svg
+++ b/public/emoji/1f98a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f98b.png b/public/emoji/1f98b.png
deleted file mode 100644
index 5631fe992265c..0000000000000
Binary files a/public/emoji/1f98b.png and /dev/null differ
diff --git a/public/emoji/1f98b.svg b/public/emoji/1f98b.svg
index 794e94d395c1c..457b722a524f4 100644
--- a/public/emoji/1f98b.svg
+++ b/public/emoji/1f98b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f98c.png b/public/emoji/1f98c.png
deleted file mode 100644
index d8698195ff0ad..0000000000000
Binary files a/public/emoji/1f98c.png and /dev/null differ
diff --git a/public/emoji/1f98c.svg b/public/emoji/1f98c.svg
index a70a64169e112..5a753e0d1b106 100644
--- a/public/emoji/1f98c.svg
+++ b/public/emoji/1f98c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f98d.png b/public/emoji/1f98d.png
deleted file mode 100644
index acc51e13622ae..0000000000000
Binary files a/public/emoji/1f98d.png and /dev/null differ
diff --git a/public/emoji/1f98d.svg b/public/emoji/1f98d.svg
index 2c27214fd648a..8cf5a02bba233 100644
--- a/public/emoji/1f98d.svg
+++ b/public/emoji/1f98d.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f98e.png b/public/emoji/1f98e.png
deleted file mode 100644
index 8363876050e2a..0000000000000
Binary files a/public/emoji/1f98e.png and /dev/null differ
diff --git a/public/emoji/1f98e.svg b/public/emoji/1f98e.svg
index 4f15955dbc658..21f1b5d27a7bf 100644
--- a/public/emoji/1f98e.svg
+++ b/public/emoji/1f98e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f98f.png b/public/emoji/1f98f.png
deleted file mode 100644
index 12f4e0d9d9be7..0000000000000
Binary files a/public/emoji/1f98f.png and /dev/null differ
diff --git a/public/emoji/1f98f.svg b/public/emoji/1f98f.svg
index 7329b384e61bb..cda2c04d03585 100644
--- a/public/emoji/1f98f.svg
+++ b/public/emoji/1f98f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f990.png b/public/emoji/1f990.png
deleted file mode 100644
index 49eff28a71e8b..0000000000000
Binary files a/public/emoji/1f990.png and /dev/null differ
diff --git a/public/emoji/1f990.svg b/public/emoji/1f990.svg
index 7cf07ad10bcf1..741d889d71841 100644
--- a/public/emoji/1f990.svg
+++ b/public/emoji/1f990.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f991.png b/public/emoji/1f991.png
deleted file mode 100644
index d2af223f0cb3a..0000000000000
Binary files a/public/emoji/1f991.png and /dev/null differ
diff --git a/public/emoji/1f991.svg b/public/emoji/1f991.svg
index c7e876402e6fa..8ef80f8ff90f2 100644
--- a/public/emoji/1f991.svg
+++ b/public/emoji/1f991.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f992.svg b/public/emoji/1f992.svg
new file mode 100644
index 0000000000000..5e43bb4a8eb0a
--- /dev/null
+++ b/public/emoji/1f992.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f993.svg b/public/emoji/1f993.svg
new file mode 100644
index 0000000000000..afec3170d6029
--- /dev/null
+++ b/public/emoji/1f993.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f994.svg b/public/emoji/1f994.svg
new file mode 100644
index 0000000000000..52361720cef1c
--- /dev/null
+++ b/public/emoji/1f994.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f995.svg b/public/emoji/1f995.svg
new file mode 100644
index 0000000000000..c424c6a2e3294
--- /dev/null
+++ b/public/emoji/1f995.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f996.svg b/public/emoji/1f996.svg
new file mode 100644
index 0000000000000..71bb2c5f9b31a
--- /dev/null
+++ b/public/emoji/1f996.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f997.svg b/public/emoji/1f997.svg
new file mode 100644
index 0000000000000..91ab418c9547f
--- /dev/null
+++ b/public/emoji/1f997.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9c0.png b/public/emoji/1f9c0.png
deleted file mode 100644
index 00e997622868c..0000000000000
Binary files a/public/emoji/1f9c0.png and /dev/null differ
diff --git a/public/emoji/1f9c0.svg b/public/emoji/1f9c0.svg
index 3cbd80968812d..a9ebf6cccc123 100644
--- a/public/emoji/1f9c0.svg
+++ b/public/emoji/1f9c0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/1f9d0.svg b/public/emoji/1f9d0.svg
new file mode 100644
index 0000000000000..e07680481b8da
--- /dev/null
+++ b/public/emoji/1f9d0.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d1-1f3fb.svg b/public/emoji/1f9d1-1f3fb.svg
new file mode 100644
index 0000000000000..915e14171056f
--- /dev/null
+++ b/public/emoji/1f9d1-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d1-1f3fc.svg b/public/emoji/1f9d1-1f3fc.svg
new file mode 100644
index 0000000000000..9872b9b895554
--- /dev/null
+++ b/public/emoji/1f9d1-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d1-1f3fd.svg b/public/emoji/1f9d1-1f3fd.svg
new file mode 100644
index 0000000000000..87ad5b5329c11
--- /dev/null
+++ b/public/emoji/1f9d1-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d1-1f3fe.svg b/public/emoji/1f9d1-1f3fe.svg
new file mode 100644
index 0000000000000..f63bc5a2a26b4
--- /dev/null
+++ b/public/emoji/1f9d1-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d1-1f3ff.svg b/public/emoji/1f9d1-1f3ff.svg
new file mode 100644
index 0000000000000..199a8bf44732b
--- /dev/null
+++ b/public/emoji/1f9d1-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d1.svg b/public/emoji/1f9d1.svg
new file mode 100644
index 0000000000000..18aae372f5b12
--- /dev/null
+++ b/public/emoji/1f9d1.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d2-1f3fb.svg b/public/emoji/1f9d2-1f3fb.svg
new file mode 100644
index 0000000000000..ee17b4cbedec7
--- /dev/null
+++ b/public/emoji/1f9d2-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d2-1f3fc.svg b/public/emoji/1f9d2-1f3fc.svg
new file mode 100644
index 0000000000000..eb8dc7832bc2b
--- /dev/null
+++ b/public/emoji/1f9d2-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d2-1f3fd.svg b/public/emoji/1f9d2-1f3fd.svg
new file mode 100644
index 0000000000000..6a202d60e31a9
--- /dev/null
+++ b/public/emoji/1f9d2-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d2-1f3fe.svg b/public/emoji/1f9d2-1f3fe.svg
new file mode 100644
index 0000000000000..b4cd560c46a26
--- /dev/null
+++ b/public/emoji/1f9d2-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d2-1f3ff.svg b/public/emoji/1f9d2-1f3ff.svg
new file mode 100644
index 0000000000000..b805d80a9998e
--- /dev/null
+++ b/public/emoji/1f9d2-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d2.svg b/public/emoji/1f9d2.svg
new file mode 100644
index 0000000000000..f352b41dda6ce
--- /dev/null
+++ b/public/emoji/1f9d2.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d3-1f3fb.svg b/public/emoji/1f9d3-1f3fb.svg
new file mode 100644
index 0000000000000..6721beb4ae971
--- /dev/null
+++ b/public/emoji/1f9d3-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d3-1f3fc.svg b/public/emoji/1f9d3-1f3fc.svg
new file mode 100644
index 0000000000000..ba61f7f1624ce
--- /dev/null
+++ b/public/emoji/1f9d3-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d3-1f3fd.svg b/public/emoji/1f9d3-1f3fd.svg
new file mode 100644
index 0000000000000..78868e3e02a26
--- /dev/null
+++ b/public/emoji/1f9d3-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d3-1f3fe.svg b/public/emoji/1f9d3-1f3fe.svg
new file mode 100644
index 0000000000000..472ee9c7bfc1d
--- /dev/null
+++ b/public/emoji/1f9d3-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d3-1f3ff.svg b/public/emoji/1f9d3-1f3ff.svg
new file mode 100644
index 0000000000000..efaff91a8161d
--- /dev/null
+++ b/public/emoji/1f9d3-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d3.svg b/public/emoji/1f9d3.svg
new file mode 100644
index 0000000000000..3576010394fd4
--- /dev/null
+++ b/public/emoji/1f9d3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d4-1f3fb.svg b/public/emoji/1f9d4-1f3fb.svg
new file mode 100644
index 0000000000000..f4583cc92d5c3
--- /dev/null
+++ b/public/emoji/1f9d4-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d4-1f3fc.svg b/public/emoji/1f9d4-1f3fc.svg
new file mode 100644
index 0000000000000..0b6de72fdb7a2
--- /dev/null
+++ b/public/emoji/1f9d4-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d4-1f3fd.svg b/public/emoji/1f9d4-1f3fd.svg
new file mode 100644
index 0000000000000..413b79b825dca
--- /dev/null
+++ b/public/emoji/1f9d4-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d4-1f3fe.svg b/public/emoji/1f9d4-1f3fe.svg
new file mode 100644
index 0000000000000..9f6dbcad71d68
--- /dev/null
+++ b/public/emoji/1f9d4-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d4-1f3ff.svg b/public/emoji/1f9d4-1f3ff.svg
new file mode 100644
index 0000000000000..7da8277651dc5
--- /dev/null
+++ b/public/emoji/1f9d4-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d4.svg b/public/emoji/1f9d4.svg
new file mode 100644
index 0000000000000..8dc1733562ef8
--- /dev/null
+++ b/public/emoji/1f9d4.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d5-1f3fb.svg b/public/emoji/1f9d5-1f3fb.svg
new file mode 100644
index 0000000000000..c41266b7c3110
--- /dev/null
+++ b/public/emoji/1f9d5-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d5-1f3fc.svg b/public/emoji/1f9d5-1f3fc.svg
new file mode 100644
index 0000000000000..0ee84dfcfdbec
--- /dev/null
+++ b/public/emoji/1f9d5-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d5-1f3fd.svg b/public/emoji/1f9d5-1f3fd.svg
new file mode 100644
index 0000000000000..bc4cac0dc59fd
--- /dev/null
+++ b/public/emoji/1f9d5-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d5-1f3fe.svg b/public/emoji/1f9d5-1f3fe.svg
new file mode 100644
index 0000000000000..aa5081bae434f
--- /dev/null
+++ b/public/emoji/1f9d5-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d5-1f3ff.svg b/public/emoji/1f9d5-1f3ff.svg
new file mode 100644
index 0000000000000..827bfaf9dea29
--- /dev/null
+++ b/public/emoji/1f9d5-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d5.svg b/public/emoji/1f9d5.svg
new file mode 100644
index 0000000000000..6ddfb5a499586
--- /dev/null
+++ b/public/emoji/1f9d5.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f9d6-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..9a65636b36221
--- /dev/null
+++ b/public/emoji/1f9d6-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f9d6-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..5a623944af62c
--- /dev/null
+++ b/public/emoji/1f9d6-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3fb.svg b/public/emoji/1f9d6-1f3fb.svg
new file mode 100644
index 0000000000000..9a65636b36221
--- /dev/null
+++ b/public/emoji/1f9d6-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f9d6-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..435e88fe985c8
--- /dev/null
+++ b/public/emoji/1f9d6-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f9d6-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..d6f1beb07b8fd
--- /dev/null
+++ b/public/emoji/1f9d6-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3fc.svg b/public/emoji/1f9d6-1f3fc.svg
new file mode 100644
index 0000000000000..435e88fe985c8
--- /dev/null
+++ b/public/emoji/1f9d6-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f9d6-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..b7392561aa963
--- /dev/null
+++ b/public/emoji/1f9d6-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f9d6-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..515cb688ddea8
--- /dev/null
+++ b/public/emoji/1f9d6-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3fd.svg b/public/emoji/1f9d6-1f3fd.svg
new file mode 100644
index 0000000000000..b7392561aa963
--- /dev/null
+++ b/public/emoji/1f9d6-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f9d6-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..6d101a5692d98
--- /dev/null
+++ b/public/emoji/1f9d6-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f9d6-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..e43dde27a82e2
--- /dev/null
+++ b/public/emoji/1f9d6-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3fe.svg b/public/emoji/1f9d6-1f3fe.svg
new file mode 100644
index 0000000000000..6d101a5692d98
--- /dev/null
+++ b/public/emoji/1f9d6-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f9d6-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..205eb5747259f
--- /dev/null
+++ b/public/emoji/1f9d6-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f9d6-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..f271c855f6648
--- /dev/null
+++ b/public/emoji/1f9d6-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-1f3ff.svg b/public/emoji/1f9d6-1f3ff.svg
new file mode 100644
index 0000000000000..205eb5747259f
--- /dev/null
+++ b/public/emoji/1f9d6-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-200d-2640-fe0f.svg b/public/emoji/1f9d6-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..fea6a9391e800
--- /dev/null
+++ b/public/emoji/1f9d6-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6-200d-2642-fe0f.svg b/public/emoji/1f9d6-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..d9c9c1534bd44
--- /dev/null
+++ b/public/emoji/1f9d6-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d6.svg b/public/emoji/1f9d6.svg
new file mode 100644
index 0000000000000..fea6a9391e800
--- /dev/null
+++ b/public/emoji/1f9d6.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f9d7-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..fca1a442ab5d5
--- /dev/null
+++ b/public/emoji/1f9d7-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f9d7-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..144d2f4f52503
--- /dev/null
+++ b/public/emoji/1f9d7-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3fb.svg b/public/emoji/1f9d7-1f3fb.svg
new file mode 100644
index 0000000000000..144d2f4f52503
--- /dev/null
+++ b/public/emoji/1f9d7-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f9d7-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..570da6962b322
--- /dev/null
+++ b/public/emoji/1f9d7-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f9d7-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..fd28bf2f421c7
--- /dev/null
+++ b/public/emoji/1f9d7-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3fc.svg b/public/emoji/1f9d7-1f3fc.svg
new file mode 100644
index 0000000000000..fd28bf2f421c7
--- /dev/null
+++ b/public/emoji/1f9d7-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f9d7-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..8da25887ccf69
--- /dev/null
+++ b/public/emoji/1f9d7-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f9d7-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..c4a08dab1e82b
--- /dev/null
+++ b/public/emoji/1f9d7-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3fd.svg b/public/emoji/1f9d7-1f3fd.svg
new file mode 100644
index 0000000000000..c4a08dab1e82b
--- /dev/null
+++ b/public/emoji/1f9d7-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f9d7-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..e0b694853cfa8
--- /dev/null
+++ b/public/emoji/1f9d7-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f9d7-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..470762e1f5beb
--- /dev/null
+++ b/public/emoji/1f9d7-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3fe.svg b/public/emoji/1f9d7-1f3fe.svg
new file mode 100644
index 0000000000000..470762e1f5beb
--- /dev/null
+++ b/public/emoji/1f9d7-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f9d7-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..8856dc16e0eec
--- /dev/null
+++ b/public/emoji/1f9d7-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f9d7-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..4bff51071778a
--- /dev/null
+++ b/public/emoji/1f9d7-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-1f3ff.svg b/public/emoji/1f9d7-1f3ff.svg
new file mode 100644
index 0000000000000..4bff51071778a
--- /dev/null
+++ b/public/emoji/1f9d7-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-200d-2640-fe0f.svg b/public/emoji/1f9d7-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..36f14c8ccb7b7
--- /dev/null
+++ b/public/emoji/1f9d7-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7-200d-2642-fe0f.svg b/public/emoji/1f9d7-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..95db1647f74a9
--- /dev/null
+++ b/public/emoji/1f9d7-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d7.svg b/public/emoji/1f9d7.svg
new file mode 100644
index 0000000000000..95db1647f74a9
--- /dev/null
+++ b/public/emoji/1f9d7.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f9d8-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..8bd6178dc1b6e
--- /dev/null
+++ b/public/emoji/1f9d8-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f9d8-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..6a65728f4c499
--- /dev/null
+++ b/public/emoji/1f9d8-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3fb.svg b/public/emoji/1f9d8-1f3fb.svg
new file mode 100644
index 0000000000000..8bd6178dc1b6e
--- /dev/null
+++ b/public/emoji/1f9d8-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f9d8-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..25eb489e3eec6
--- /dev/null
+++ b/public/emoji/1f9d8-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f9d8-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..426c5de95368b
--- /dev/null
+++ b/public/emoji/1f9d8-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3fc.svg b/public/emoji/1f9d8-1f3fc.svg
new file mode 100644
index 0000000000000..25eb489e3eec6
--- /dev/null
+++ b/public/emoji/1f9d8-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f9d8-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..0f015f02dcaaa
--- /dev/null
+++ b/public/emoji/1f9d8-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f9d8-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..8a15c254547f5
--- /dev/null
+++ b/public/emoji/1f9d8-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3fd.svg b/public/emoji/1f9d8-1f3fd.svg
new file mode 100644
index 0000000000000..0f015f02dcaaa
--- /dev/null
+++ b/public/emoji/1f9d8-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f9d8-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..71f6a958d5d6f
--- /dev/null
+++ b/public/emoji/1f9d8-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f9d8-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..ea2cd80cf1f55
--- /dev/null
+++ b/public/emoji/1f9d8-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3fe.svg b/public/emoji/1f9d8-1f3fe.svg
new file mode 100644
index 0000000000000..71f6a958d5d6f
--- /dev/null
+++ b/public/emoji/1f9d8-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f9d8-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..0fcf4b16b3985
--- /dev/null
+++ b/public/emoji/1f9d8-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f9d8-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..bfbf1da807d8a
--- /dev/null
+++ b/public/emoji/1f9d8-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-1f3ff.svg b/public/emoji/1f9d8-1f3ff.svg
new file mode 100644
index 0000000000000..0fcf4b16b3985
--- /dev/null
+++ b/public/emoji/1f9d8-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-200d-2640-fe0f.svg b/public/emoji/1f9d8-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..344e7ce05c7e7
--- /dev/null
+++ b/public/emoji/1f9d8-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8-200d-2642-fe0f.svg b/public/emoji/1f9d8-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..6e6ffdd620471
--- /dev/null
+++ b/public/emoji/1f9d8-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d8.svg b/public/emoji/1f9d8.svg
new file mode 100644
index 0000000000000..344e7ce05c7e7
--- /dev/null
+++ b/public/emoji/1f9d8.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f9d9-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..b0960fa6e1ea7
--- /dev/null
+++ b/public/emoji/1f9d9-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f9d9-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..4710995116bbb
--- /dev/null
+++ b/public/emoji/1f9d9-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3fb.svg b/public/emoji/1f9d9-1f3fb.svg
new file mode 100644
index 0000000000000..4710995116bbb
--- /dev/null
+++ b/public/emoji/1f9d9-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f9d9-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..111b4d80f8953
--- /dev/null
+++ b/public/emoji/1f9d9-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f9d9-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..d82ff1c2d0250
--- /dev/null
+++ b/public/emoji/1f9d9-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3fc.svg b/public/emoji/1f9d9-1f3fc.svg
new file mode 100644
index 0000000000000..d82ff1c2d0250
--- /dev/null
+++ b/public/emoji/1f9d9-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f9d9-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..0899b523c6c25
--- /dev/null
+++ b/public/emoji/1f9d9-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f9d9-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..05564a9bff6b4
--- /dev/null
+++ b/public/emoji/1f9d9-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3fd.svg b/public/emoji/1f9d9-1f3fd.svg
new file mode 100644
index 0000000000000..05564a9bff6b4
--- /dev/null
+++ b/public/emoji/1f9d9-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f9d9-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..6bfe7c68f8454
--- /dev/null
+++ b/public/emoji/1f9d9-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f9d9-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..9db5339945bf6
--- /dev/null
+++ b/public/emoji/1f9d9-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3fe.svg b/public/emoji/1f9d9-1f3fe.svg
new file mode 100644
index 0000000000000..9db5339945bf6
--- /dev/null
+++ b/public/emoji/1f9d9-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f9d9-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..4c4a326d02e4c
--- /dev/null
+++ b/public/emoji/1f9d9-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f9d9-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..2967e532fa5e6
--- /dev/null
+++ b/public/emoji/1f9d9-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-1f3ff.svg b/public/emoji/1f9d9-1f3ff.svg
new file mode 100644
index 0000000000000..2967e532fa5e6
--- /dev/null
+++ b/public/emoji/1f9d9-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-200d-2640-fe0f.svg b/public/emoji/1f9d9-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..95b8b5f7b11db
--- /dev/null
+++ b/public/emoji/1f9d9-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9-200d-2642-fe0f.svg b/public/emoji/1f9d9-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..814783e13c5b4
--- /dev/null
+++ b/public/emoji/1f9d9-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9d9.svg b/public/emoji/1f9d9.svg
new file mode 100644
index 0000000000000..814783e13c5b4
--- /dev/null
+++ b/public/emoji/1f9d9.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f9da-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..ca2a9a0218ccb
--- /dev/null
+++ b/public/emoji/1f9da-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f9da-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..a2a8c0ec3278d
--- /dev/null
+++ b/public/emoji/1f9da-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3fb.svg b/public/emoji/1f9da-1f3fb.svg
new file mode 100644
index 0000000000000..ca2a9a0218ccb
--- /dev/null
+++ b/public/emoji/1f9da-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f9da-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..e7a26571712b3
--- /dev/null
+++ b/public/emoji/1f9da-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f9da-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..f832ccb7addb8
--- /dev/null
+++ b/public/emoji/1f9da-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3fc.svg b/public/emoji/1f9da-1f3fc.svg
new file mode 100644
index 0000000000000..e7a26571712b3
--- /dev/null
+++ b/public/emoji/1f9da-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f9da-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..1cf49450faf54
--- /dev/null
+++ b/public/emoji/1f9da-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f9da-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..11393bdf7eaf6
--- /dev/null
+++ b/public/emoji/1f9da-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3fd.svg b/public/emoji/1f9da-1f3fd.svg
new file mode 100644
index 0000000000000..1cf49450faf54
--- /dev/null
+++ b/public/emoji/1f9da-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f9da-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..c79b2ff9c5cae
--- /dev/null
+++ b/public/emoji/1f9da-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f9da-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..7393eedaa7935
--- /dev/null
+++ b/public/emoji/1f9da-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3fe.svg b/public/emoji/1f9da-1f3fe.svg
new file mode 100644
index 0000000000000..c79b2ff9c5cae
--- /dev/null
+++ b/public/emoji/1f9da-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f9da-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..fa73e9e7909ba
--- /dev/null
+++ b/public/emoji/1f9da-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f9da-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..7b23d046ae306
--- /dev/null
+++ b/public/emoji/1f9da-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-1f3ff.svg b/public/emoji/1f9da-1f3ff.svg
new file mode 100644
index 0000000000000..fa73e9e7909ba
--- /dev/null
+++ b/public/emoji/1f9da-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-200d-2640-fe0f.svg b/public/emoji/1f9da-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..9a0b3b4c501f2
--- /dev/null
+++ b/public/emoji/1f9da-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da-200d-2642-fe0f.svg b/public/emoji/1f9da-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..3634760fc8160
--- /dev/null
+++ b/public/emoji/1f9da-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9da.svg b/public/emoji/1f9da.svg
new file mode 100644
index 0000000000000..9a0b3b4c501f2
--- /dev/null
+++ b/public/emoji/1f9da.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f9db-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..b32bfd5ba4cac
--- /dev/null
+++ b/public/emoji/1f9db-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f9db-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..6a2e57e6cb0b3
--- /dev/null
+++ b/public/emoji/1f9db-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3fb.svg b/public/emoji/1f9db-1f3fb.svg
new file mode 100644
index 0000000000000..6a2e57e6cb0b3
--- /dev/null
+++ b/public/emoji/1f9db-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f9db-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..5b45c6a5d6c62
--- /dev/null
+++ b/public/emoji/1f9db-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f9db-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..977d04020261f
--- /dev/null
+++ b/public/emoji/1f9db-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3fc.svg b/public/emoji/1f9db-1f3fc.svg
new file mode 100644
index 0000000000000..977d04020261f
--- /dev/null
+++ b/public/emoji/1f9db-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f9db-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..f4b3aea671b3f
--- /dev/null
+++ b/public/emoji/1f9db-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f9db-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..97a93aac0634c
--- /dev/null
+++ b/public/emoji/1f9db-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3fd.svg b/public/emoji/1f9db-1f3fd.svg
new file mode 100644
index 0000000000000..97a93aac0634c
--- /dev/null
+++ b/public/emoji/1f9db-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f9db-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..70aa844e99c27
--- /dev/null
+++ b/public/emoji/1f9db-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f9db-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..6afba45ce8d28
--- /dev/null
+++ b/public/emoji/1f9db-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3fe.svg b/public/emoji/1f9db-1f3fe.svg
new file mode 100644
index 0000000000000..6afba45ce8d28
--- /dev/null
+++ b/public/emoji/1f9db-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f9db-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..532b32ce166e1
--- /dev/null
+++ b/public/emoji/1f9db-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f9db-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..30adcd8646353
--- /dev/null
+++ b/public/emoji/1f9db-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-1f3ff.svg b/public/emoji/1f9db-1f3ff.svg
new file mode 100644
index 0000000000000..30adcd8646353
--- /dev/null
+++ b/public/emoji/1f9db-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-200d-2640-fe0f.svg b/public/emoji/1f9db-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..d0aa04d0daff0
--- /dev/null
+++ b/public/emoji/1f9db-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db-200d-2642-fe0f.svg b/public/emoji/1f9db-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..9719a1de4f6da
--- /dev/null
+++ b/public/emoji/1f9db-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9db.svg b/public/emoji/1f9db.svg
new file mode 100644
index 0000000000000..9719a1de4f6da
--- /dev/null
+++ b/public/emoji/1f9db.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f9dc-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..e237ae292991b
--- /dev/null
+++ b/public/emoji/1f9dc-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f9dc-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..c6d8341d51a6f
--- /dev/null
+++ b/public/emoji/1f9dc-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3fb.svg b/public/emoji/1f9dc-1f3fb.svg
new file mode 100644
index 0000000000000..e237ae292991b
--- /dev/null
+++ b/public/emoji/1f9dc-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f9dc-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..3198168825572
--- /dev/null
+++ b/public/emoji/1f9dc-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f9dc-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..fd1d1b6ddd869
--- /dev/null
+++ b/public/emoji/1f9dc-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3fc.svg b/public/emoji/1f9dc-1f3fc.svg
new file mode 100644
index 0000000000000..3198168825572
--- /dev/null
+++ b/public/emoji/1f9dc-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f9dc-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..29ae6e9a26653
--- /dev/null
+++ b/public/emoji/1f9dc-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f9dc-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..c71ebcaf03c20
--- /dev/null
+++ b/public/emoji/1f9dc-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3fd.svg b/public/emoji/1f9dc-1f3fd.svg
new file mode 100644
index 0000000000000..29ae6e9a26653
--- /dev/null
+++ b/public/emoji/1f9dc-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f9dc-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..4d74cce5c8a5b
--- /dev/null
+++ b/public/emoji/1f9dc-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f9dc-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..33a7228537f27
--- /dev/null
+++ b/public/emoji/1f9dc-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3fe.svg b/public/emoji/1f9dc-1f3fe.svg
new file mode 100644
index 0000000000000..4d74cce5c8a5b
--- /dev/null
+++ b/public/emoji/1f9dc-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f9dc-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..abdd82796fb90
--- /dev/null
+++ b/public/emoji/1f9dc-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f9dc-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..51b1d082e273f
--- /dev/null
+++ b/public/emoji/1f9dc-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-1f3ff.svg b/public/emoji/1f9dc-1f3ff.svg
new file mode 100644
index 0000000000000..abdd82796fb90
--- /dev/null
+++ b/public/emoji/1f9dc-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-200d-2640-fe0f.svg b/public/emoji/1f9dc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..ce3976137e3d4
--- /dev/null
+++ b/public/emoji/1f9dc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc-200d-2642-fe0f.svg b/public/emoji/1f9dc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..2fc5df5240d3a
--- /dev/null
+++ b/public/emoji/1f9dc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dc.svg b/public/emoji/1f9dc.svg
new file mode 100644
index 0000000000000..ce3976137e3d4
--- /dev/null
+++ b/public/emoji/1f9dc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3fb-200d-2640-fe0f.svg b/public/emoji/1f9dd-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..5214ac009ac09
--- /dev/null
+++ b/public/emoji/1f9dd-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3fb-200d-2642-fe0f.svg b/public/emoji/1f9dd-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..84d9dd8f5c092
--- /dev/null
+++ b/public/emoji/1f9dd-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3fb.svg b/public/emoji/1f9dd-1f3fb.svg
new file mode 100644
index 0000000000000..84d9dd8f5c092
--- /dev/null
+++ b/public/emoji/1f9dd-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3fc-200d-2640-fe0f.svg b/public/emoji/1f9dd-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..fe418bcac5fe1
--- /dev/null
+++ b/public/emoji/1f9dd-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3fc-200d-2642-fe0f.svg b/public/emoji/1f9dd-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..3399fdde42d34
--- /dev/null
+++ b/public/emoji/1f9dd-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3fc.svg b/public/emoji/1f9dd-1f3fc.svg
new file mode 100644
index 0000000000000..3399fdde42d34
--- /dev/null
+++ b/public/emoji/1f9dd-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3fd-200d-2640-fe0f.svg b/public/emoji/1f9dd-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..fc11d24c6f1e7
--- /dev/null
+++ b/public/emoji/1f9dd-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3fd-200d-2642-fe0f.svg b/public/emoji/1f9dd-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..181feba5a735d
--- /dev/null
+++ b/public/emoji/1f9dd-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3fd.svg b/public/emoji/1f9dd-1f3fd.svg
new file mode 100644
index 0000000000000..181feba5a735d
--- /dev/null
+++ b/public/emoji/1f9dd-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3fe-200d-2640-fe0f.svg b/public/emoji/1f9dd-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..5c0123f832f0c
--- /dev/null
+++ b/public/emoji/1f9dd-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3fe-200d-2642-fe0f.svg b/public/emoji/1f9dd-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..f7b2c321e4a98
--- /dev/null
+++ b/public/emoji/1f9dd-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3fe.svg b/public/emoji/1f9dd-1f3fe.svg
new file mode 100644
index 0000000000000..f7b2c321e4a98
--- /dev/null
+++ b/public/emoji/1f9dd-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3ff-200d-2640-fe0f.svg b/public/emoji/1f9dd-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..9b6f37fb01487
--- /dev/null
+++ b/public/emoji/1f9dd-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3ff-200d-2642-fe0f.svg b/public/emoji/1f9dd-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..c05267d4b51af
--- /dev/null
+++ b/public/emoji/1f9dd-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-1f3ff.svg b/public/emoji/1f9dd-1f3ff.svg
new file mode 100644
index 0000000000000..c05267d4b51af
--- /dev/null
+++ b/public/emoji/1f9dd-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-200d-2640-fe0f.svg b/public/emoji/1f9dd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..49c6a4ba98692
--- /dev/null
+++ b/public/emoji/1f9dd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd-200d-2642-fe0f.svg b/public/emoji/1f9dd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..c9714d2a901a3
--- /dev/null
+++ b/public/emoji/1f9dd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9dd.svg b/public/emoji/1f9dd.svg
new file mode 100644
index 0000000000000..c9714d2a901a3
--- /dev/null
+++ b/public/emoji/1f9dd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9de-200d-2640-fe0f.svg b/public/emoji/1f9de-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..dfcd6d61c40dc
--- /dev/null
+++ b/public/emoji/1f9de-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9de-200d-2642-fe0f.svg b/public/emoji/1f9de-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..0301523635e1e
--- /dev/null
+++ b/public/emoji/1f9de-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9de.svg b/public/emoji/1f9de.svg
new file mode 100644
index 0000000000000..0301523635e1e
--- /dev/null
+++ b/public/emoji/1f9de.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9df-200d-2640-fe0f.svg b/public/emoji/1f9df-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..deb582f562181
--- /dev/null
+++ b/public/emoji/1f9df-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9df-200d-2642-fe0f.svg b/public/emoji/1f9df-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..60e086314ed01
--- /dev/null
+++ b/public/emoji/1f9df-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9df.svg b/public/emoji/1f9df.svg
new file mode 100644
index 0000000000000..60e086314ed01
--- /dev/null
+++ b/public/emoji/1f9df.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9e0.svg b/public/emoji/1f9e0.svg
new file mode 100644
index 0000000000000..df291e740550d
--- /dev/null
+++ b/public/emoji/1f9e0.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9e1.svg b/public/emoji/1f9e1.svg
new file mode 100644
index 0000000000000..2a35e7788cafb
--- /dev/null
+++ b/public/emoji/1f9e1.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9e2.svg b/public/emoji/1f9e2.svg
new file mode 100644
index 0000000000000..68e9079ffe661
--- /dev/null
+++ b/public/emoji/1f9e2.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9e3.svg b/public/emoji/1f9e3.svg
new file mode 100644
index 0000000000000..09643e41a2622
--- /dev/null
+++ b/public/emoji/1f9e3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9e4.svg b/public/emoji/1f9e4.svg
new file mode 100644
index 0000000000000..4f34ac5650e61
--- /dev/null
+++ b/public/emoji/1f9e4.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9e5.svg b/public/emoji/1f9e5.svg
new file mode 100644
index 0000000000000..778d9dc8737bf
--- /dev/null
+++ b/public/emoji/1f9e5.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/1f9e6.svg b/public/emoji/1f9e6.svg
new file mode 100644
index 0000000000000..a9ccf1e848dbc
--- /dev/null
+++ b/public/emoji/1f9e6.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/203c.png b/public/emoji/203c.png
deleted file mode 100644
index 58a9c528fca60..0000000000000
Binary files a/public/emoji/203c.png and /dev/null differ
diff --git a/public/emoji/203c.svg b/public/emoji/203c.svg
index 7d2d0dfd1d3b1..955e9dc6a4d68 100644
--- a/public/emoji/203c.svg
+++ b/public/emoji/203c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2049.png b/public/emoji/2049.png
deleted file mode 100644
index 509813e9bb225..0000000000000
Binary files a/public/emoji/2049.png and /dev/null differ
diff --git a/public/emoji/2049.svg b/public/emoji/2049.svg
index b39038bb0ac33..457aab8ea492a 100644
--- a/public/emoji/2049.svg
+++ b/public/emoji/2049.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2122.png b/public/emoji/2122.png
deleted file mode 100644
index 7a0c44a2c2b44..0000000000000
Binary files a/public/emoji/2122.png and /dev/null differ
diff --git a/public/emoji/2122.svg b/public/emoji/2122.svg
index 321c2026e364d..554777689cdef 100644
--- a/public/emoji/2122.svg
+++ b/public/emoji/2122.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2139.png b/public/emoji/2139.png
deleted file mode 100644
index 871f2db931416..0000000000000
Binary files a/public/emoji/2139.png and /dev/null differ
diff --git a/public/emoji/2139.svg b/public/emoji/2139.svg
index 93e13a8aaf74a..cc2df8c6959a0 100644
--- a/public/emoji/2139.svg
+++ b/public/emoji/2139.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2194.png b/public/emoji/2194.png
deleted file mode 100644
index 7937f24f2acd1..0000000000000
Binary files a/public/emoji/2194.png and /dev/null differ
diff --git a/public/emoji/2194.svg b/public/emoji/2194.svg
index 8ffc7d1db7688..7f97d90c9ce30 100644
--- a/public/emoji/2194.svg
+++ b/public/emoji/2194.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2195.png b/public/emoji/2195.png
deleted file mode 100644
index dfa32b9718672..0000000000000
Binary files a/public/emoji/2195.png and /dev/null differ
diff --git a/public/emoji/2195.svg b/public/emoji/2195.svg
index 803b79d385b1f..afe63739c9f95 100644
--- a/public/emoji/2195.svg
+++ b/public/emoji/2195.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2196.png b/public/emoji/2196.png
deleted file mode 100644
index f38718fbe34c9..0000000000000
Binary files a/public/emoji/2196.png and /dev/null differ
diff --git a/public/emoji/2196.svg b/public/emoji/2196.svg
index 7049c485f29ed..9c3ce342cdb37 100644
--- a/public/emoji/2196.svg
+++ b/public/emoji/2196.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2197.png b/public/emoji/2197.png
deleted file mode 100644
index c43e12d0f6429..0000000000000
Binary files a/public/emoji/2197.png and /dev/null differ
diff --git a/public/emoji/2197.svg b/public/emoji/2197.svg
index 73cc6a7e5faba..4982e3790adb3 100644
--- a/public/emoji/2197.svg
+++ b/public/emoji/2197.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2198.png b/public/emoji/2198.png
deleted file mode 100644
index 7e807da739226..0000000000000
Binary files a/public/emoji/2198.png and /dev/null differ
diff --git a/public/emoji/2198.svg b/public/emoji/2198.svg
index 7a5e9677f3fee..92a86388449d3 100644
--- a/public/emoji/2198.svg
+++ b/public/emoji/2198.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2199.png b/public/emoji/2199.png
deleted file mode 100644
index 88b3771607845..0000000000000
Binary files a/public/emoji/2199.png and /dev/null differ
diff --git a/public/emoji/2199.svg b/public/emoji/2199.svg
index 29c9464255ed6..a0753f6be368f 100644
--- a/public/emoji/2199.svg
+++ b/public/emoji/2199.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/21a9.png b/public/emoji/21a9.png
deleted file mode 100644
index ba45c2ad9e9cf..0000000000000
Binary files a/public/emoji/21a9.png and /dev/null differ
diff --git a/public/emoji/21a9.svg b/public/emoji/21a9.svg
index 03a61def71a7f..b9a5f59915f9e 100644
--- a/public/emoji/21a9.svg
+++ b/public/emoji/21a9.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/21aa.png b/public/emoji/21aa.png
deleted file mode 100644
index e7258ad32683e..0000000000000
Binary files a/public/emoji/21aa.png and /dev/null differ
diff --git a/public/emoji/21aa.svg b/public/emoji/21aa.svg
index fd4773fd23a54..d7ecd3656c52b 100644
--- a/public/emoji/21aa.svg
+++ b/public/emoji/21aa.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23-20e3.svg b/public/emoji/23-20e3.svg
new file mode 100644
index 0000000000000..6ec3750246587
--- /dev/null
+++ b/public/emoji/23-20e3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/231a.png b/public/emoji/231a.png
deleted file mode 100644
index 64819bc6e2144..0000000000000
Binary files a/public/emoji/231a.png and /dev/null differ
diff --git a/public/emoji/231a.svg b/public/emoji/231a.svg
index 31cbd09c99020..21836090115c8 100644
--- a/public/emoji/231a.svg
+++ b/public/emoji/231a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/231b.png b/public/emoji/231b.png
deleted file mode 100644
index a5db2d1d3f4b5..0000000000000
Binary files a/public/emoji/231b.png and /dev/null differ
diff --git a/public/emoji/231b.svg b/public/emoji/231b.svg
index 18acf0a3ec452..4c001222d6094 100644
--- a/public/emoji/231b.svg
+++ b/public/emoji/231b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2328.png b/public/emoji/2328.png
deleted file mode 100644
index 75027cb9af7ed..0000000000000
Binary files a/public/emoji/2328.png and /dev/null differ
diff --git a/public/emoji/2328.svg b/public/emoji/2328.svg
index c282cf73f8b3e..1004347b07a25 100644
--- a/public/emoji/2328.svg
+++ b/public/emoji/2328.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23cf.png b/public/emoji/23cf.png
deleted file mode 100644
index ec5cfc489733d..0000000000000
Binary files a/public/emoji/23cf.png and /dev/null differ
diff --git a/public/emoji/23cf.svg b/public/emoji/23cf.svg
index 2229e4437f231..c85f114fa570f 100644
--- a/public/emoji/23cf.svg
+++ b/public/emoji/23cf.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23e9.png b/public/emoji/23e9.png
deleted file mode 100644
index c406fedfdb12d..0000000000000
Binary files a/public/emoji/23e9.png and /dev/null differ
diff --git a/public/emoji/23e9.svg b/public/emoji/23e9.svg
index 60d4f822a74dc..9bbfc6fcbafcd 100644
--- a/public/emoji/23e9.svg
+++ b/public/emoji/23e9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23ea.png b/public/emoji/23ea.png
deleted file mode 100644
index e22e2bd3da5ee..0000000000000
Binary files a/public/emoji/23ea.png and /dev/null differ
diff --git a/public/emoji/23ea.svg b/public/emoji/23ea.svg
index 2530af199cc85..65c35a904e66a 100644
--- a/public/emoji/23ea.svg
+++ b/public/emoji/23ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23eb.png b/public/emoji/23eb.png
deleted file mode 100644
index 13543d5eef237..0000000000000
Binary files a/public/emoji/23eb.png and /dev/null differ
diff --git a/public/emoji/23eb.svg b/public/emoji/23eb.svg
index fcc82a94eb1cd..b045d90352469 100644
--- a/public/emoji/23eb.svg
+++ b/public/emoji/23eb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23ec.png b/public/emoji/23ec.png
deleted file mode 100644
index 90193bfcb4097..0000000000000
Binary files a/public/emoji/23ec.png and /dev/null differ
diff --git a/public/emoji/23ec.svg b/public/emoji/23ec.svg
index 17d697dfe8697..8c258ce46262f 100644
--- a/public/emoji/23ec.svg
+++ b/public/emoji/23ec.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23ed.png b/public/emoji/23ed.png
deleted file mode 100644
index f8880d33babb2..0000000000000
Binary files a/public/emoji/23ed.png and /dev/null differ
diff --git a/public/emoji/23ed.svg b/public/emoji/23ed.svg
index 4202a012d92dd..179100aa3b0b5 100644
--- a/public/emoji/23ed.svg
+++ b/public/emoji/23ed.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23ee.png b/public/emoji/23ee.png
deleted file mode 100644
index 1ffd0566cfcbd..0000000000000
Binary files a/public/emoji/23ee.png and /dev/null differ
diff --git a/public/emoji/23ee.svg b/public/emoji/23ee.svg
index e8d3c4ffe08dc..7c69b690b8f94 100644
--- a/public/emoji/23ee.svg
+++ b/public/emoji/23ee.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23ef.png b/public/emoji/23ef.png
deleted file mode 100644
index a9f857139ac0d..0000000000000
Binary files a/public/emoji/23ef.png and /dev/null differ
diff --git a/public/emoji/23ef.svg b/public/emoji/23ef.svg
index 2fc2c46d0494c..bdf3a2f046aee 100644
--- a/public/emoji/23ef.svg
+++ b/public/emoji/23ef.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23f0.png b/public/emoji/23f0.png
deleted file mode 100644
index cdbc2fbb950f6..0000000000000
Binary files a/public/emoji/23f0.png and /dev/null differ
diff --git a/public/emoji/23f0.svg b/public/emoji/23f0.svg
index fe986122022ec..5c9c6c9f77f27 100644
--- a/public/emoji/23f0.svg
+++ b/public/emoji/23f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23f1.png b/public/emoji/23f1.png
deleted file mode 100644
index 8fae1c9a8981f..0000000000000
Binary files a/public/emoji/23f1.png and /dev/null differ
diff --git a/public/emoji/23f1.svg b/public/emoji/23f1.svg
index 051d3d5499a4b..f7bab6c11c130 100644
--- a/public/emoji/23f1.svg
+++ b/public/emoji/23f1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23f2.png b/public/emoji/23f2.png
deleted file mode 100644
index 8a3be574c24bd..0000000000000
Binary files a/public/emoji/23f2.png and /dev/null differ
diff --git a/public/emoji/23f2.svg b/public/emoji/23f2.svg
index c8f4446e0a2a2..d5fd91b47a19f 100644
--- a/public/emoji/23f2.svg
+++ b/public/emoji/23f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23f3.png b/public/emoji/23f3.png
deleted file mode 100644
index b93b15ed6d853..0000000000000
Binary files a/public/emoji/23f3.png and /dev/null differ
diff --git a/public/emoji/23f3.svg b/public/emoji/23f3.svg
index 803f932307d38..cab22a1f1bd2b 100644
--- a/public/emoji/23f3.svg
+++ b/public/emoji/23f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23f8.png b/public/emoji/23f8.png
deleted file mode 100644
index 4f07e7ebfd7b3..0000000000000
Binary files a/public/emoji/23f8.png and /dev/null differ
diff --git a/public/emoji/23f8.svg b/public/emoji/23f8.svg
index 3247d55a89a8c..9e8995e4ce8db 100644
--- a/public/emoji/23f8.svg
+++ b/public/emoji/23f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23f9.png b/public/emoji/23f9.png
deleted file mode 100644
index cfa99988ac2cd..0000000000000
Binary files a/public/emoji/23f9.png and /dev/null differ
diff --git a/public/emoji/23f9.svg b/public/emoji/23f9.svg
index 874ad6dbc2b39..608fd561fac7f 100644
--- a/public/emoji/23f9.svg
+++ b/public/emoji/23f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/23fa.png b/public/emoji/23fa.png
deleted file mode 100644
index ada52830fce0c..0000000000000
Binary files a/public/emoji/23fa.png and /dev/null differ
diff --git a/public/emoji/23fa.svg b/public/emoji/23fa.svg
index 668d682890754..4583b10da8602 100644
--- a/public/emoji/23fa.svg
+++ b/public/emoji/23fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/24c2.png b/public/emoji/24c2.png
deleted file mode 100644
index 8a3506fc1d7fe..0000000000000
Binary files a/public/emoji/24c2.png and /dev/null differ
diff --git a/public/emoji/24c2.svg b/public/emoji/24c2.svg
index fbbf6f8eedc37..bd4ca96a7e473 100644
--- a/public/emoji/24c2.svg
+++ b/public/emoji/24c2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/25aa.png b/public/emoji/25aa.png
deleted file mode 100644
index 48595d3e1a92a..0000000000000
Binary files a/public/emoji/25aa.png and /dev/null differ
diff --git a/public/emoji/25aa.svg b/public/emoji/25aa.svg
index 2d0fa0a394719..9d8c004aa769f 100644
--- a/public/emoji/25aa.svg
+++ b/public/emoji/25aa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/25ab.png b/public/emoji/25ab.png
deleted file mode 100644
index d7ebdb0c0ed4d..0000000000000
Binary files a/public/emoji/25ab.png and /dev/null differ
diff --git a/public/emoji/25ab.svg b/public/emoji/25ab.svg
index ab1ec4d2e38f0..2da27bef38a6b 100644
--- a/public/emoji/25ab.svg
+++ b/public/emoji/25ab.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/25b6.png b/public/emoji/25b6.png
deleted file mode 100644
index 4e2b682857cba..0000000000000
Binary files a/public/emoji/25b6.png and /dev/null differ
diff --git a/public/emoji/25b6.svg b/public/emoji/25b6.svg
index f7ac18377a823..a208b0ec8a74d 100644
--- a/public/emoji/25b6.svg
+++ b/public/emoji/25b6.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/25c0.png b/public/emoji/25c0.png
deleted file mode 100644
index ee38e3b038e44..0000000000000
Binary files a/public/emoji/25c0.png and /dev/null differ
diff --git a/public/emoji/25c0.svg b/public/emoji/25c0.svg
index d67bffccfbc08..99baa87e31ca7 100644
--- a/public/emoji/25c0.svg
+++ b/public/emoji/25c0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/25fb.png b/public/emoji/25fb.png
deleted file mode 100644
index 8daacf57059d1..0000000000000
Binary files a/public/emoji/25fb.png and /dev/null differ
diff --git a/public/emoji/25fb.svg b/public/emoji/25fb.svg
index c3dd9d3f2b75e..44c97a58fb1d3 100644
--- a/public/emoji/25fb.svg
+++ b/public/emoji/25fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/25fc.png b/public/emoji/25fc.png
deleted file mode 100644
index 05a30a6aa2d20..0000000000000
Binary files a/public/emoji/25fc.png and /dev/null differ
diff --git a/public/emoji/25fc.svg b/public/emoji/25fc.svg
index bf2f030161449..b3cbc0ab3224d 100644
--- a/public/emoji/25fc.svg
+++ b/public/emoji/25fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/25fd.png b/public/emoji/25fd.png
deleted file mode 100644
index ae8741267505f..0000000000000
Binary files a/public/emoji/25fd.png and /dev/null differ
diff --git a/public/emoji/25fd.svg b/public/emoji/25fd.svg
index 5f5ab3f58bf05..0d86db1716fb0 100644
--- a/public/emoji/25fd.svg
+++ b/public/emoji/25fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/25fe.png b/public/emoji/25fe.png
deleted file mode 100644
index 39765bba61019..0000000000000
Binary files a/public/emoji/25fe.png and /dev/null differ
diff --git a/public/emoji/25fe.svg b/public/emoji/25fe.svg
index b2a4c8150cb95..0224ef0aeea9a 100644
--- a/public/emoji/25fe.svg
+++ b/public/emoji/25fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2600.png b/public/emoji/2600.png
deleted file mode 100644
index fd521ae31a73a..0000000000000
Binary files a/public/emoji/2600.png and /dev/null differ
diff --git a/public/emoji/2600.svg b/public/emoji/2600.svg
index aec6212d720e3..734d6d2341ff5 100644
--- a/public/emoji/2600.svg
+++ b/public/emoji/2600.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2601.png b/public/emoji/2601.png
deleted file mode 100644
index 5b4f57f77ba6c..0000000000000
Binary files a/public/emoji/2601.png and /dev/null differ
diff --git a/public/emoji/2601.svg b/public/emoji/2601.svg
index 3df7fa6e30059..76dd8ef5bbdb1 100644
--- a/public/emoji/2601.svg
+++ b/public/emoji/2601.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2602.png b/public/emoji/2602.png
deleted file mode 100644
index 97fe859e74ff6..0000000000000
Binary files a/public/emoji/2602.png and /dev/null differ
diff --git a/public/emoji/2602.svg b/public/emoji/2602.svg
index 2105cf10ab00e..6712133473dce 100644
--- a/public/emoji/2602.svg
+++ b/public/emoji/2602.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2603.png b/public/emoji/2603.png
deleted file mode 100644
index 896f28502af71..0000000000000
Binary files a/public/emoji/2603.png and /dev/null differ
diff --git a/public/emoji/2603.svg b/public/emoji/2603.svg
index 8bfcae8fe6656..0e3ce22606bc3 100644
--- a/public/emoji/2603.svg
+++ b/public/emoji/2603.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2604.png b/public/emoji/2604.png
deleted file mode 100644
index a99751f79befc..0000000000000
Binary files a/public/emoji/2604.png and /dev/null differ
diff --git a/public/emoji/2604.svg b/public/emoji/2604.svg
index 7ad1c661d593b..3d525c4c55402 100644
--- a/public/emoji/2604.svg
+++ b/public/emoji/2604.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/260e.png b/public/emoji/260e.png
deleted file mode 100644
index a1e69f566bcf5..0000000000000
Binary files a/public/emoji/260e.png and /dev/null differ
diff --git a/public/emoji/260e.svg b/public/emoji/260e.svg
index 2be32eb0aafdc..f71c5595da6b1 100644
--- a/public/emoji/260e.svg
+++ b/public/emoji/260e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2611.png b/public/emoji/2611.png
deleted file mode 100644
index 284d957384780..0000000000000
Binary files a/public/emoji/2611.png and /dev/null differ
diff --git a/public/emoji/2611.svg b/public/emoji/2611.svg
index 42ff8d4554505..719f46c1044a2 100644
--- a/public/emoji/2611.svg
+++ b/public/emoji/2611.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2614.png b/public/emoji/2614.png
deleted file mode 100644
index 5b35b7ff6a4b5..0000000000000
Binary files a/public/emoji/2614.png and /dev/null differ
diff --git a/public/emoji/2614.svg b/public/emoji/2614.svg
index 01ad0ed439a21..bdeb12e6457dc 100644
--- a/public/emoji/2614.svg
+++ b/public/emoji/2614.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2615.png b/public/emoji/2615.png
deleted file mode 100644
index 553061471b14c..0000000000000
Binary files a/public/emoji/2615.png and /dev/null differ
diff --git a/public/emoji/2615.svg b/public/emoji/2615.svg
index cd98ff4a23594..97426120826d7 100644
--- a/public/emoji/2615.svg
+++ b/public/emoji/2615.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2618.png b/public/emoji/2618.png
deleted file mode 100644
index f202aecfe6f7f..0000000000000
Binary files a/public/emoji/2618.png and /dev/null differ
diff --git a/public/emoji/2618.svg b/public/emoji/2618.svg
index d9a9acd471112..f4b39ae449e30 100644
--- a/public/emoji/2618.svg
+++ b/public/emoji/2618.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/261d-1f3fb.png b/public/emoji/261d-1f3fb.png
deleted file mode 100644
index 6a9db21d64ce0..0000000000000
Binary files a/public/emoji/261d-1f3fb.png and /dev/null differ
diff --git a/public/emoji/261d-1f3fb.svg b/public/emoji/261d-1f3fb.svg
index 6a8b95a1044fd..52bf74379c247 100644
--- a/public/emoji/261d-1f3fb.svg
+++ b/public/emoji/261d-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/261d-1f3fc.png b/public/emoji/261d-1f3fc.png
deleted file mode 100644
index 15aa9ea0e05fd..0000000000000
Binary files a/public/emoji/261d-1f3fc.png and /dev/null differ
diff --git a/public/emoji/261d-1f3fc.svg b/public/emoji/261d-1f3fc.svg
index d43f1a7b3acda..1c188d0e378de 100644
--- a/public/emoji/261d-1f3fc.svg
+++ b/public/emoji/261d-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/261d-1f3fd.png b/public/emoji/261d-1f3fd.png
deleted file mode 100644
index 652b73a9c5d32..0000000000000
Binary files a/public/emoji/261d-1f3fd.png and /dev/null differ
diff --git a/public/emoji/261d-1f3fd.svg b/public/emoji/261d-1f3fd.svg
index c548d5dbb5fd2..b377f9f81b2da 100644
--- a/public/emoji/261d-1f3fd.svg
+++ b/public/emoji/261d-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/261d-1f3fe.png b/public/emoji/261d-1f3fe.png
deleted file mode 100644
index 692bad926e9ed..0000000000000
Binary files a/public/emoji/261d-1f3fe.png and /dev/null differ
diff --git a/public/emoji/261d-1f3fe.svg b/public/emoji/261d-1f3fe.svg
index 4b63a6b24f903..324f88f9cb2ee 100644
--- a/public/emoji/261d-1f3fe.svg
+++ b/public/emoji/261d-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/261d-1f3ff.png b/public/emoji/261d-1f3ff.png
deleted file mode 100644
index 1e1b10fb71ccf..0000000000000
Binary files a/public/emoji/261d-1f3ff.png and /dev/null differ
diff --git a/public/emoji/261d-1f3ff.svg b/public/emoji/261d-1f3ff.svg
index e422854ac6704..1522274150fab 100644
--- a/public/emoji/261d-1f3ff.svg
+++ b/public/emoji/261d-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/261d.png b/public/emoji/261d.png
deleted file mode 100644
index f4978ff0f003e..0000000000000
Binary files a/public/emoji/261d.png and /dev/null differ
diff --git a/public/emoji/261d.svg b/public/emoji/261d.svg
index 2d47296e53657..8d0720ac90938 100644
--- a/public/emoji/261d.svg
+++ b/public/emoji/261d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2620.png b/public/emoji/2620.png
deleted file mode 100644
index b459df9227adf..0000000000000
Binary files a/public/emoji/2620.png and /dev/null differ
diff --git a/public/emoji/2620.svg b/public/emoji/2620.svg
index c8858de6ef219..6275f091d8991 100644
--- a/public/emoji/2620.svg
+++ b/public/emoji/2620.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2622.png b/public/emoji/2622.png
deleted file mode 100644
index 3b46199fe374c..0000000000000
Binary files a/public/emoji/2622.png and /dev/null differ
diff --git a/public/emoji/2622.svg b/public/emoji/2622.svg
index b2068336e16c7..22fe96a7bfeb8 100644
--- a/public/emoji/2622.svg
+++ b/public/emoji/2622.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2623.png b/public/emoji/2623.png
deleted file mode 100644
index 007b4fc2d85cc..0000000000000
Binary files a/public/emoji/2623.png and /dev/null differ
diff --git a/public/emoji/2623.svg b/public/emoji/2623.svg
index 60a22e51b7265..2240cd6d9245b 100644
--- a/public/emoji/2623.svg
+++ b/public/emoji/2623.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2626.png b/public/emoji/2626.png
deleted file mode 100644
index 0530e33a4d42b..0000000000000
Binary files a/public/emoji/2626.png and /dev/null differ
diff --git a/public/emoji/2626.svg b/public/emoji/2626.svg
index cc62ecdb01b52..a1fccfed450fd 100644
--- a/public/emoji/2626.svg
+++ b/public/emoji/2626.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/262a.png b/public/emoji/262a.png
deleted file mode 100644
index e182636457d3c..0000000000000
Binary files a/public/emoji/262a.png and /dev/null differ
diff --git a/public/emoji/262a.svg b/public/emoji/262a.svg
index 87fd9c7040dbc..478d46894f882 100644
--- a/public/emoji/262a.svg
+++ b/public/emoji/262a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/262e.png b/public/emoji/262e.png
deleted file mode 100644
index 86033faf477fd..0000000000000
Binary files a/public/emoji/262e.png and /dev/null differ
diff --git a/public/emoji/262e.svg b/public/emoji/262e.svg
index 01a035a556761..7ff833d39cf3d 100644
--- a/public/emoji/262e.svg
+++ b/public/emoji/262e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/262f.png b/public/emoji/262f.png
deleted file mode 100644
index f2900f6338ffe..0000000000000
Binary files a/public/emoji/262f.png and /dev/null differ
diff --git a/public/emoji/262f.svg b/public/emoji/262f.svg
index e232b66922f5c..48aec61aeb164 100644
--- a/public/emoji/262f.svg
+++ b/public/emoji/262f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2638.png b/public/emoji/2638.png
deleted file mode 100644
index 3666db0016b3c..0000000000000
Binary files a/public/emoji/2638.png and /dev/null differ
diff --git a/public/emoji/2638.svg b/public/emoji/2638.svg
index 8c09aa21ad3cb..c65083aade090 100644
--- a/public/emoji/2638.svg
+++ b/public/emoji/2638.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2639.png b/public/emoji/2639.png
deleted file mode 100644
index 6ae71f233b9d8..0000000000000
Binary files a/public/emoji/2639.png and /dev/null differ
diff --git a/public/emoji/2639.svg b/public/emoji/2639.svg
index ead0eb5b3b16a..b6f0b04a2675f 100644
--- a/public/emoji/2639.svg
+++ b/public/emoji/2639.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/263a.png b/public/emoji/263a.png
deleted file mode 100644
index e9e53c03d45ea..0000000000000
Binary files a/public/emoji/263a.png and /dev/null differ
diff --git a/public/emoji/263a.svg b/public/emoji/263a.svg
index f8a5cb762d065..2b358e7dc9aae 100644
--- a/public/emoji/263a.svg
+++ b/public/emoji/263a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2640.svg b/public/emoji/2640.svg
new file mode 100644
index 0000000000000..9605f80234006
--- /dev/null
+++ b/public/emoji/2640.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/2642.svg b/public/emoji/2642.svg
new file mode 100644
index 0000000000000..2eb7e7fc035c5
--- /dev/null
+++ b/public/emoji/2642.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/2648.png b/public/emoji/2648.png
deleted file mode 100644
index 21a189d0edee4..0000000000000
Binary files a/public/emoji/2648.png and /dev/null differ
diff --git a/public/emoji/2648.svg b/public/emoji/2648.svg
index f85279e5735a9..bc556d9f4f664 100644
--- a/public/emoji/2648.svg
+++ b/public/emoji/2648.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2649.png b/public/emoji/2649.png
deleted file mode 100644
index b2a370df42b7e..0000000000000
Binary files a/public/emoji/2649.png and /dev/null differ
diff --git a/public/emoji/2649.svg b/public/emoji/2649.svg
index a569cb32ba37f..eca8d4a547f12 100644
--- a/public/emoji/2649.svg
+++ b/public/emoji/2649.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/264a.png b/public/emoji/264a.png
deleted file mode 100644
index 1a09698cf00e1..0000000000000
Binary files a/public/emoji/264a.png and /dev/null differ
diff --git a/public/emoji/264a.svg b/public/emoji/264a.svg
index f87603f68e4e7..954e211dcd840 100644
--- a/public/emoji/264a.svg
+++ b/public/emoji/264a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/264b.png b/public/emoji/264b.png
deleted file mode 100644
index a64af07cb5fef..0000000000000
Binary files a/public/emoji/264b.png and /dev/null differ
diff --git a/public/emoji/264b.svg b/public/emoji/264b.svg
index 703fda7ffe03b..f8f82b780f0d3 100644
--- a/public/emoji/264b.svg
+++ b/public/emoji/264b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/264c.png b/public/emoji/264c.png
deleted file mode 100644
index 30158d34de914..0000000000000
Binary files a/public/emoji/264c.png and /dev/null differ
diff --git a/public/emoji/264c.svg b/public/emoji/264c.svg
index e5a2ad1c494c7..8529aac4e86b0 100644
--- a/public/emoji/264c.svg
+++ b/public/emoji/264c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/264d.png b/public/emoji/264d.png
deleted file mode 100644
index a6b56c2cb5e44..0000000000000
Binary files a/public/emoji/264d.png and /dev/null differ
diff --git a/public/emoji/264d.svg b/public/emoji/264d.svg
index 24f569cc7071b..74919add455b8 100644
--- a/public/emoji/264d.svg
+++ b/public/emoji/264d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/264e.png b/public/emoji/264e.png
deleted file mode 100644
index 8fd133a357c71..0000000000000
Binary files a/public/emoji/264e.png and /dev/null differ
diff --git a/public/emoji/264e.svg b/public/emoji/264e.svg
index a7c8e0a7106d5..3879b8a685b1c 100644
--- a/public/emoji/264e.svg
+++ b/public/emoji/264e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/264f.png b/public/emoji/264f.png
deleted file mode 100644
index c31a9920455e2..0000000000000
Binary files a/public/emoji/264f.png and /dev/null differ
diff --git a/public/emoji/264f.svg b/public/emoji/264f.svg
index 78de283a6b7a8..b8a7bf8d67fde 100644
--- a/public/emoji/264f.svg
+++ b/public/emoji/264f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2650.png b/public/emoji/2650.png
deleted file mode 100644
index f8d94ff292350..0000000000000
Binary files a/public/emoji/2650.png and /dev/null differ
diff --git a/public/emoji/2650.svg b/public/emoji/2650.svg
index 0e7fcde6e607c..a4d391290b5f8 100644
--- a/public/emoji/2650.svg
+++ b/public/emoji/2650.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2651.png b/public/emoji/2651.png
deleted file mode 100644
index 6293d31d4b161..0000000000000
Binary files a/public/emoji/2651.png and /dev/null differ
diff --git a/public/emoji/2651.svg b/public/emoji/2651.svg
index d632096556747..7eabb46aae251 100644
--- a/public/emoji/2651.svg
+++ b/public/emoji/2651.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2652.png b/public/emoji/2652.png
deleted file mode 100644
index 641a4f6888987..0000000000000
Binary files a/public/emoji/2652.png and /dev/null differ
diff --git a/public/emoji/2652.svg b/public/emoji/2652.svg
index 7b262f869dc41..8644b787e39cc 100644
--- a/public/emoji/2652.svg
+++ b/public/emoji/2652.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2653.png b/public/emoji/2653.png
deleted file mode 100644
index 7f6f646a95c5f..0000000000000
Binary files a/public/emoji/2653.png and /dev/null differ
diff --git a/public/emoji/2653.svg b/public/emoji/2653.svg
index d50acfc893817..c529897f806a6 100644
--- a/public/emoji/2653.svg
+++ b/public/emoji/2653.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2660.png b/public/emoji/2660.png
deleted file mode 100644
index f822f184cb0ef..0000000000000
Binary files a/public/emoji/2660.png and /dev/null differ
diff --git a/public/emoji/2660.svg b/public/emoji/2660.svg
index 0d9699bd5f498..687a3c150475d 100644
--- a/public/emoji/2660.svg
+++ b/public/emoji/2660.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2663.png b/public/emoji/2663.png
deleted file mode 100644
index 4f2abf791cacf..0000000000000
Binary files a/public/emoji/2663.png and /dev/null differ
diff --git a/public/emoji/2663.svg b/public/emoji/2663.svg
index 2ee52dd62f874..d1afd90e12430 100644
--- a/public/emoji/2663.svg
+++ b/public/emoji/2663.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2665.png b/public/emoji/2665.png
deleted file mode 100644
index 393c3ed52674a..0000000000000
Binary files a/public/emoji/2665.png and /dev/null differ
diff --git a/public/emoji/2665.svg b/public/emoji/2665.svg
index 6659eb13c85ba..a4d85a5123e5a 100644
--- a/public/emoji/2665.svg
+++ b/public/emoji/2665.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2666.png b/public/emoji/2666.png
deleted file mode 100644
index 1f25f51f97ae9..0000000000000
Binary files a/public/emoji/2666.png and /dev/null differ
diff --git a/public/emoji/2666.svg b/public/emoji/2666.svg
index 654b2f4b632c9..561a85b2f9443 100644
--- a/public/emoji/2666.svg
+++ b/public/emoji/2666.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2668.png b/public/emoji/2668.png
deleted file mode 100644
index 3d9df2d947581..0000000000000
Binary files a/public/emoji/2668.png and /dev/null differ
diff --git a/public/emoji/2668.svg b/public/emoji/2668.svg
index e65cbcb1a0e96..8aa2f4b6b66a7 100644
--- a/public/emoji/2668.svg
+++ b/public/emoji/2668.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/267b.png b/public/emoji/267b.png
deleted file mode 100644
index 9221f095c37d7..0000000000000
Binary files a/public/emoji/267b.png and /dev/null differ
diff --git a/public/emoji/267b.svg b/public/emoji/267b.svg
index 7d80b6fe73fbe..118b9a7b97766 100644
--- a/public/emoji/267b.svg
+++ b/public/emoji/267b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/267f.png b/public/emoji/267f.png
deleted file mode 100644
index 4e5b2698eacd7..0000000000000
Binary files a/public/emoji/267f.png and /dev/null differ
diff --git a/public/emoji/267f.svg b/public/emoji/267f.svg
index 3ee86eb6caddc..a082dbd57b22d 100644
--- a/public/emoji/267f.svg
+++ b/public/emoji/267f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2692.png b/public/emoji/2692.png
deleted file mode 100644
index 3bee30ec588ce..0000000000000
Binary files a/public/emoji/2692.png and /dev/null differ
diff --git a/public/emoji/2692.svg b/public/emoji/2692.svg
index 10516b7bf5349..0bb18a1ab02b2 100644
--- a/public/emoji/2692.svg
+++ b/public/emoji/2692.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2693.png b/public/emoji/2693.png
deleted file mode 100644
index b036f70a00b15..0000000000000
Binary files a/public/emoji/2693.png and /dev/null differ
diff --git a/public/emoji/2693.svg b/public/emoji/2693.svg
index b5f5418d10a66..752c9d2427ad5 100644
--- a/public/emoji/2693.svg
+++ b/public/emoji/2693.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2694.png b/public/emoji/2694.png
deleted file mode 100644
index 907e96071344a..0000000000000
Binary files a/public/emoji/2694.png and /dev/null differ
diff --git a/public/emoji/2694.svg b/public/emoji/2694.svg
index 368fdc0541573..3fe031fe88dd1 100644
--- a/public/emoji/2694.svg
+++ b/public/emoji/2694.svg
@@ -1,3 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2695.svg b/public/emoji/2695.svg
new file mode 100644
index 0000000000000..636f7ed26b3aa
--- /dev/null
+++ b/public/emoji/2695.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/2696.png b/public/emoji/2696.png
deleted file mode 100644
index 0757eda1684cf..0000000000000
Binary files a/public/emoji/2696.png and /dev/null differ
diff --git a/public/emoji/2696.svg b/public/emoji/2696.svg
index c8042bbcbc015..77d5349abafb1 100644
--- a/public/emoji/2696.svg
+++ b/public/emoji/2696.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2697.png b/public/emoji/2697.png
deleted file mode 100644
index 307a732424964..0000000000000
Binary files a/public/emoji/2697.png and /dev/null differ
diff --git a/public/emoji/2697.svg b/public/emoji/2697.svg
index 6e63dacb8f7f9..3e8b73d51dcb9 100644
--- a/public/emoji/2697.svg
+++ b/public/emoji/2697.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2699.png b/public/emoji/2699.png
deleted file mode 100644
index 2a1cc2c0ff496..0000000000000
Binary files a/public/emoji/2699.png and /dev/null differ
diff --git a/public/emoji/2699.svg b/public/emoji/2699.svg
index 9230ed01a4a00..616e7960f99a8 100644
--- a/public/emoji/2699.svg
+++ b/public/emoji/2699.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/269b.png b/public/emoji/269b.png
deleted file mode 100644
index 5f4567aa0938a..0000000000000
Binary files a/public/emoji/269b.png and /dev/null differ
diff --git a/public/emoji/269b.svg b/public/emoji/269b.svg
index 0b02d3cd4cb79..67f33674f1079 100644
--- a/public/emoji/269b.svg
+++ b/public/emoji/269b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/269c.png b/public/emoji/269c.png
deleted file mode 100644
index c9250d27fa776..0000000000000
Binary files a/public/emoji/269c.png and /dev/null differ
diff --git a/public/emoji/269c.svg b/public/emoji/269c.svg
index ce5bad9515f5c..da380fdb089af 100644
--- a/public/emoji/269c.svg
+++ b/public/emoji/269c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26a0.png b/public/emoji/26a0.png
deleted file mode 100644
index 35691c2ed9710..0000000000000
Binary files a/public/emoji/26a0.png and /dev/null differ
diff --git a/public/emoji/26a0.svg b/public/emoji/26a0.svg
index e6b14203c2898..81952f7d5c9ed 100644
--- a/public/emoji/26a0.svg
+++ b/public/emoji/26a0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26a1.png b/public/emoji/26a1.png
deleted file mode 100644
index 47e68e48e49e4..0000000000000
Binary files a/public/emoji/26a1.png and /dev/null differ
diff --git a/public/emoji/26a1.svg b/public/emoji/26a1.svg
index ac811c568ce02..2e816f43755ae 100644
--- a/public/emoji/26a1.svg
+++ b/public/emoji/26a1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26aa.png b/public/emoji/26aa.png
deleted file mode 100644
index c19e15684dd1d..0000000000000
Binary files a/public/emoji/26aa.png and /dev/null differ
diff --git a/public/emoji/26aa.svg b/public/emoji/26aa.svg
index fb39d3ebbd442..edf7f09793404 100644
--- a/public/emoji/26aa.svg
+++ b/public/emoji/26aa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26ab.png b/public/emoji/26ab.png
deleted file mode 100644
index b62b87170e838..0000000000000
Binary files a/public/emoji/26ab.png and /dev/null differ
diff --git a/public/emoji/26ab.svg b/public/emoji/26ab.svg
index 137a56b1f5e00..c7f93882cbe3a 100644
--- a/public/emoji/26ab.svg
+++ b/public/emoji/26ab.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26b0.png b/public/emoji/26b0.png
deleted file mode 100644
index fb2932aa5f6d7..0000000000000
Binary files a/public/emoji/26b0.png and /dev/null differ
diff --git a/public/emoji/26b0.svg b/public/emoji/26b0.svg
index 8fb8eb11776d5..fb6a252760072 100644
--- a/public/emoji/26b0.svg
+++ b/public/emoji/26b0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26b1.png b/public/emoji/26b1.png
deleted file mode 100644
index 6b5b350343860..0000000000000
Binary files a/public/emoji/26b1.png and /dev/null differ
diff --git a/public/emoji/26b1.svg b/public/emoji/26b1.svg
index a752a318320ea..2bbe1e997adb9 100644
--- a/public/emoji/26b1.svg
+++ b/public/emoji/26b1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26bd.png b/public/emoji/26bd.png
deleted file mode 100644
index 28cfa218d6d49..0000000000000
Binary files a/public/emoji/26bd.png and /dev/null differ
diff --git a/public/emoji/26bd.svg b/public/emoji/26bd.svg
index dc2380edd38a9..5aad1297f3ef8 100644
--- a/public/emoji/26bd.svg
+++ b/public/emoji/26bd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26be.png b/public/emoji/26be.png
deleted file mode 100644
index f8463f1538b59..0000000000000
Binary files a/public/emoji/26be.png and /dev/null differ
diff --git a/public/emoji/26be.svg b/public/emoji/26be.svg
index efe314bc6acc7..6e7f410280a0e 100644
--- a/public/emoji/26be.svg
+++ b/public/emoji/26be.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26c4.png b/public/emoji/26c4.png
deleted file mode 100644
index 20c177c2aff1c..0000000000000
Binary files a/public/emoji/26c4.png and /dev/null differ
diff --git a/public/emoji/26c4.svg b/public/emoji/26c4.svg
index 3d083f6ce6fc1..f202eaea4c4cd 100644
--- a/public/emoji/26c4.svg
+++ b/public/emoji/26c4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26c5.png b/public/emoji/26c5.png
deleted file mode 100644
index a55e59c344cf9..0000000000000
Binary files a/public/emoji/26c5.png and /dev/null differ
diff --git a/public/emoji/26c5.svg b/public/emoji/26c5.svg
index ea9730cc161d5..d8d053b71ca34 100644
--- a/public/emoji/26c5.svg
+++ b/public/emoji/26c5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26c8.png b/public/emoji/26c8.png
deleted file mode 100644
index 31a26a1b6ee92..0000000000000
Binary files a/public/emoji/26c8.png and /dev/null differ
diff --git a/public/emoji/26c8.svg b/public/emoji/26c8.svg
index 03409bb69c277..86e3c01caa556 100644
--- a/public/emoji/26c8.svg
+++ b/public/emoji/26c8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26ce.png b/public/emoji/26ce.png
deleted file mode 100644
index 0a780a700daaa..0000000000000
Binary files a/public/emoji/26ce.png and /dev/null differ
diff --git a/public/emoji/26ce.svg b/public/emoji/26ce.svg
index bacb7e3e8af34..9fc2d99ce8e9f 100644
--- a/public/emoji/26ce.svg
+++ b/public/emoji/26ce.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26cf.png b/public/emoji/26cf.png
deleted file mode 100644
index 6370fe6d79175..0000000000000
Binary files a/public/emoji/26cf.png and /dev/null differ
diff --git a/public/emoji/26cf.svg b/public/emoji/26cf.svg
index 3c30f7f3c96e9..5e434df61599b 100644
--- a/public/emoji/26cf.svg
+++ b/public/emoji/26cf.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26d1.png b/public/emoji/26d1.png
deleted file mode 100644
index 7140a67603865..0000000000000
Binary files a/public/emoji/26d1.png and /dev/null differ
diff --git a/public/emoji/26d1.svg b/public/emoji/26d1.svg
index bcdd92d6836e6..3ab886e577da3 100644
--- a/public/emoji/26d1.svg
+++ b/public/emoji/26d1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26d3.png b/public/emoji/26d3.png
deleted file mode 100644
index 57f46139a06df..0000000000000
Binary files a/public/emoji/26d3.png and /dev/null differ
diff --git a/public/emoji/26d3.svg b/public/emoji/26d3.svg
index a34973b8c2bdf..636fc4edcc053 100644
--- a/public/emoji/26d3.svg
+++ b/public/emoji/26d3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26d4.png b/public/emoji/26d4.png
deleted file mode 100644
index 476800fc5c692..0000000000000
Binary files a/public/emoji/26d4.png and /dev/null differ
diff --git a/public/emoji/26d4.svg b/public/emoji/26d4.svg
index 61545291b1428..433994c942cc6 100644
--- a/public/emoji/26d4.svg
+++ b/public/emoji/26d4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26e9.png b/public/emoji/26e9.png
deleted file mode 100644
index 5a344975bf384..0000000000000
Binary files a/public/emoji/26e9.png and /dev/null differ
diff --git a/public/emoji/26e9.svg b/public/emoji/26e9.svg
index 570b46d89957c..28a4e20e4417d 100644
--- a/public/emoji/26e9.svg
+++ b/public/emoji/26e9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26ea.png b/public/emoji/26ea.png
deleted file mode 100644
index 8242fd272b394..0000000000000
Binary files a/public/emoji/26ea.png and /dev/null differ
diff --git a/public/emoji/26ea.svg b/public/emoji/26ea.svg
index 6d8236c253ac0..66daae9731409 100644
--- a/public/emoji/26ea.svg
+++ b/public/emoji/26ea.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26f0.png b/public/emoji/26f0.png
deleted file mode 100644
index 6722ebdd29463..0000000000000
Binary files a/public/emoji/26f0.png and /dev/null differ
diff --git a/public/emoji/26f0.svg b/public/emoji/26f0.svg
index ae954cfb07673..25a3d7608c206 100644
--- a/public/emoji/26f0.svg
+++ b/public/emoji/26f0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26f1.png b/public/emoji/26f1.png
deleted file mode 100644
index 220a74f813251..0000000000000
Binary files a/public/emoji/26f1.png and /dev/null differ
diff --git a/public/emoji/26f1.svg b/public/emoji/26f1.svg
index 641b4551d0d45..582dceb0d1cdf 100644
--- a/public/emoji/26f1.svg
+++ b/public/emoji/26f1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26f2.png b/public/emoji/26f2.png
deleted file mode 100644
index 293f5d91c0fc2..0000000000000
Binary files a/public/emoji/26f2.png and /dev/null differ
diff --git a/public/emoji/26f2.svg b/public/emoji/26f2.svg
index 377ecf84299aa..b12362cbf6813 100644
--- a/public/emoji/26f2.svg
+++ b/public/emoji/26f2.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26f3.png b/public/emoji/26f3.png
deleted file mode 100644
index f65a21d8a46c0..0000000000000
Binary files a/public/emoji/26f3.png and /dev/null differ
diff --git a/public/emoji/26f3.svg b/public/emoji/26f3.svg
index cd35a12deba2a..380db9ad11719 100644
--- a/public/emoji/26f3.svg
+++ b/public/emoji/26f3.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26f4.png b/public/emoji/26f4.png
deleted file mode 100644
index 41816b3ae3406..0000000000000
Binary files a/public/emoji/26f4.png and /dev/null differ
diff --git a/public/emoji/26f4.svg b/public/emoji/26f4.svg
index 306970ebc3255..ecdfb117e7c33 100644
--- a/public/emoji/26f4.svg
+++ b/public/emoji/26f4.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26f5.png b/public/emoji/26f5.png
deleted file mode 100644
index 772ef11da5d6d..0000000000000
Binary files a/public/emoji/26f5.png and /dev/null differ
diff --git a/public/emoji/26f5.svg b/public/emoji/26f5.svg
index e69f924b9d543..7cc9620fdcf38 100644
--- a/public/emoji/26f5.svg
+++ b/public/emoji/26f5.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26f7-1f3fb.svg b/public/emoji/26f7-1f3fb.svg
new file mode 100644
index 0000000000000..fb061e6143570
--- /dev/null
+++ b/public/emoji/26f7-1f3fb.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f7-1f3fc.svg b/public/emoji/26f7-1f3fc.svg
new file mode 100644
index 0000000000000..2dd9d8b6a21c1
--- /dev/null
+++ b/public/emoji/26f7-1f3fc.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f7-1f3fd.svg b/public/emoji/26f7-1f3fd.svg
new file mode 100644
index 0000000000000..74313649bbb99
--- /dev/null
+++ b/public/emoji/26f7-1f3fd.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f7-1f3fe.svg b/public/emoji/26f7-1f3fe.svg
new file mode 100644
index 0000000000000..665d80d24cefd
--- /dev/null
+++ b/public/emoji/26f7-1f3fe.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f7-1f3ff.svg b/public/emoji/26f7-1f3ff.svg
new file mode 100644
index 0000000000000..125156eca1ebe
--- /dev/null
+++ b/public/emoji/26f7-1f3ff.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f7.png b/public/emoji/26f7.png
deleted file mode 100644
index 2eb3bdce2afca..0000000000000
Binary files a/public/emoji/26f7.png and /dev/null differ
diff --git a/public/emoji/26f7.svg b/public/emoji/26f7.svg
index a9fb9b84df2d0..24a5ee2d74862 100644
--- a/public/emoji/26f7.svg
+++ b/public/emoji/26f7.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26f8.png b/public/emoji/26f8.png
deleted file mode 100644
index 8c449b0c03987..0000000000000
Binary files a/public/emoji/26f8.png and /dev/null differ
diff --git a/public/emoji/26f8.svg b/public/emoji/26f8.svg
index 60adcaf3c6122..081c919469ebf 100644
--- a/public/emoji/26f8.svg
+++ b/public/emoji/26f8.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26f9-1f3fb-200d-2640-fe0f.svg b/public/emoji/26f9-1f3fb-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..aaa5e9b8d36fd
--- /dev/null
+++ b/public/emoji/26f9-1f3fb-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f9-1f3fb-200d-2642-fe0f.svg b/public/emoji/26f9-1f3fb-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..e54effa5032d3
--- /dev/null
+++ b/public/emoji/26f9-1f3fb-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f9-1f3fb.png b/public/emoji/26f9-1f3fb.png
deleted file mode 100644
index cd12c7ab9bf48..0000000000000
Binary files a/public/emoji/26f9-1f3fb.png and /dev/null differ
diff --git a/public/emoji/26f9-1f3fb.svg b/public/emoji/26f9-1f3fb.svg
index 480994ca90be2..e54effa5032d3 100644
--- a/public/emoji/26f9-1f3fb.svg
+++ b/public/emoji/26f9-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26f9-1f3fc-200d-2640-fe0f.svg b/public/emoji/26f9-1f3fc-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..dcfff64d7dece
--- /dev/null
+++ b/public/emoji/26f9-1f3fc-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f9-1f3fc-200d-2642-fe0f.svg b/public/emoji/26f9-1f3fc-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..41e49a818d596
--- /dev/null
+++ b/public/emoji/26f9-1f3fc-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f9-1f3fc.png b/public/emoji/26f9-1f3fc.png
deleted file mode 100644
index f892fd596dafb..0000000000000
Binary files a/public/emoji/26f9-1f3fc.png and /dev/null differ
diff --git a/public/emoji/26f9-1f3fc.svg b/public/emoji/26f9-1f3fc.svg
index dd18a65d3b829..41e49a818d596 100644
--- a/public/emoji/26f9-1f3fc.svg
+++ b/public/emoji/26f9-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26f9-1f3fd-200d-2640-fe0f.svg b/public/emoji/26f9-1f3fd-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..3c67cdb51ac85
--- /dev/null
+++ b/public/emoji/26f9-1f3fd-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f9-1f3fd-200d-2642-fe0f.svg b/public/emoji/26f9-1f3fd-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..25e93c8b5c241
--- /dev/null
+++ b/public/emoji/26f9-1f3fd-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f9-1f3fd.png b/public/emoji/26f9-1f3fd.png
deleted file mode 100644
index e109997a91a00..0000000000000
Binary files a/public/emoji/26f9-1f3fd.png and /dev/null differ
diff --git a/public/emoji/26f9-1f3fd.svg b/public/emoji/26f9-1f3fd.svg
index 0af260864d8b1..25e93c8b5c241 100644
--- a/public/emoji/26f9-1f3fd.svg
+++ b/public/emoji/26f9-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26f9-1f3fe-200d-2640-fe0f.svg b/public/emoji/26f9-1f3fe-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..79ebd4ebaa3a1
--- /dev/null
+++ b/public/emoji/26f9-1f3fe-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f9-1f3fe-200d-2642-fe0f.svg b/public/emoji/26f9-1f3fe-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..07ff374472b0c
--- /dev/null
+++ b/public/emoji/26f9-1f3fe-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f9-1f3fe.png b/public/emoji/26f9-1f3fe.png
deleted file mode 100644
index 3b90b946af4a4..0000000000000
Binary files a/public/emoji/26f9-1f3fe.png and /dev/null differ
diff --git a/public/emoji/26f9-1f3fe.svg b/public/emoji/26f9-1f3fe.svg
index b0b9d364205df..07ff374472b0c 100644
--- a/public/emoji/26f9-1f3fe.svg
+++ b/public/emoji/26f9-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26f9-1f3ff-200d-2640-fe0f.svg b/public/emoji/26f9-1f3ff-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..8976d8fd8f1c7
--- /dev/null
+++ b/public/emoji/26f9-1f3ff-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f9-1f3ff-200d-2642-fe0f.svg b/public/emoji/26f9-1f3ff-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..1e4c967176194
--- /dev/null
+++ b/public/emoji/26f9-1f3ff-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f9-1f3ff.png b/public/emoji/26f9-1f3ff.png
deleted file mode 100644
index bafed7828a7bc..0000000000000
Binary files a/public/emoji/26f9-1f3ff.png and /dev/null differ
diff --git a/public/emoji/26f9-1f3ff.svg b/public/emoji/26f9-1f3ff.svg
index f7ee9300db1ca..1e4c967176194 100644
--- a/public/emoji/26f9-1f3ff.svg
+++ b/public/emoji/26f9-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26f9-fe0f-200d-2640-fe0f.svg b/public/emoji/26f9-fe0f-200d-2640-fe0f.svg
new file mode 100644
index 0000000000000..72d0a9b2340c6
--- /dev/null
+++ b/public/emoji/26f9-fe0f-200d-2640-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f9-fe0f-200d-2642-fe0f.svg b/public/emoji/26f9-fe0f-200d-2642-fe0f.svg
new file mode 100644
index 0000000000000..28bef1b8d5a53
--- /dev/null
+++ b/public/emoji/26f9-fe0f-200d-2642-fe0f.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/26f9.png b/public/emoji/26f9.png
deleted file mode 100644
index 8ce90c5cad622..0000000000000
Binary files a/public/emoji/26f9.png and /dev/null differ
diff --git a/public/emoji/26f9.svg b/public/emoji/26f9.svg
index ad4502b149304..28bef1b8d5a53 100644
--- a/public/emoji/26f9.svg
+++ b/public/emoji/26f9.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26fa.png b/public/emoji/26fa.png
deleted file mode 100644
index 3fddcfc56eb1e..0000000000000
Binary files a/public/emoji/26fa.png and /dev/null differ
diff --git a/public/emoji/26fa.svg b/public/emoji/26fa.svg
index 73bb5136fdb0a..3fd15c46711a3 100644
--- a/public/emoji/26fa.svg
+++ b/public/emoji/26fa.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/26fd.png b/public/emoji/26fd.png
deleted file mode 100644
index 05b1879447471..0000000000000
Binary files a/public/emoji/26fd.png and /dev/null differ
diff --git a/public/emoji/26fd.svg b/public/emoji/26fd.svg
index cfc136ba86174..d234f20df1316 100644
--- a/public/emoji/26fd.svg
+++ b/public/emoji/26fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2702.png b/public/emoji/2702.png
deleted file mode 100644
index 270571c8cddb0..0000000000000
Binary files a/public/emoji/2702.png and /dev/null differ
diff --git a/public/emoji/2702.svg b/public/emoji/2702.svg
index a5e934da6d1e1..eb14f2d344931 100644
--- a/public/emoji/2702.svg
+++ b/public/emoji/2702.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2705.png b/public/emoji/2705.png
deleted file mode 100644
index e55f087e544d1..0000000000000
Binary files a/public/emoji/2705.png and /dev/null differ
diff --git a/public/emoji/2705.svg b/public/emoji/2705.svg
index 4f0474ade5586..2aba51916b8fc 100644
--- a/public/emoji/2705.svg
+++ b/public/emoji/2705.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2708.png b/public/emoji/2708.png
deleted file mode 100644
index 268d2ac3c8e06..0000000000000
Binary files a/public/emoji/2708.png and /dev/null differ
diff --git a/public/emoji/2708.svg b/public/emoji/2708.svg
index 92d5f73194c6c..12fb9b5c37c76 100644
--- a/public/emoji/2708.svg
+++ b/public/emoji/2708.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2709.png b/public/emoji/2709.png
deleted file mode 100644
index ec77ac375a40c..0000000000000
Binary files a/public/emoji/2709.png and /dev/null differ
diff --git a/public/emoji/2709.svg b/public/emoji/2709.svg
index 4337c482eb445..0c37fcb8b53a1 100644
--- a/public/emoji/2709.svg
+++ b/public/emoji/2709.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270a-1f3fb.png b/public/emoji/270a-1f3fb.png
deleted file mode 100644
index 02809e2dd6838..0000000000000
Binary files a/public/emoji/270a-1f3fb.png and /dev/null differ
diff --git a/public/emoji/270a-1f3fb.svg b/public/emoji/270a-1f3fb.svg
index 425a770958b38..d15ffb8438051 100644
--- a/public/emoji/270a-1f3fb.svg
+++ b/public/emoji/270a-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270a-1f3fc.png b/public/emoji/270a-1f3fc.png
deleted file mode 100644
index 5de34810383e8..0000000000000
Binary files a/public/emoji/270a-1f3fc.png and /dev/null differ
diff --git a/public/emoji/270a-1f3fc.svg b/public/emoji/270a-1f3fc.svg
index 64c091bdab88a..d3ef8029513c2 100644
--- a/public/emoji/270a-1f3fc.svg
+++ b/public/emoji/270a-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270a-1f3fd.png b/public/emoji/270a-1f3fd.png
deleted file mode 100644
index 0d5240129b1c8..0000000000000
Binary files a/public/emoji/270a-1f3fd.png and /dev/null differ
diff --git a/public/emoji/270a-1f3fd.svg b/public/emoji/270a-1f3fd.svg
index ac29bb90cb2ad..658e9d48ab6d3 100644
--- a/public/emoji/270a-1f3fd.svg
+++ b/public/emoji/270a-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270a-1f3fe.png b/public/emoji/270a-1f3fe.png
deleted file mode 100644
index a95c0dd634b82..0000000000000
Binary files a/public/emoji/270a-1f3fe.png and /dev/null differ
diff --git a/public/emoji/270a-1f3fe.svg b/public/emoji/270a-1f3fe.svg
index 6b2ae91c60a4d..dec8e82fed4c6 100644
--- a/public/emoji/270a-1f3fe.svg
+++ b/public/emoji/270a-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270a-1f3ff.png b/public/emoji/270a-1f3ff.png
deleted file mode 100644
index a2f092fd8c774..0000000000000
Binary files a/public/emoji/270a-1f3ff.png and /dev/null differ
diff --git a/public/emoji/270a-1f3ff.svg b/public/emoji/270a-1f3ff.svg
index ab9f9952ec9e3..5be8afe572762 100644
--- a/public/emoji/270a-1f3ff.svg
+++ b/public/emoji/270a-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270a.png b/public/emoji/270a.png
deleted file mode 100644
index de33592bf98e4..0000000000000
Binary files a/public/emoji/270a.png and /dev/null differ
diff --git a/public/emoji/270a.svg b/public/emoji/270a.svg
index 7f6e6cee72488..de194626511f1 100644
--- a/public/emoji/270a.svg
+++ b/public/emoji/270a.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270b-1f3fb.png b/public/emoji/270b-1f3fb.png
deleted file mode 100644
index 3b752902c07c6..0000000000000
Binary files a/public/emoji/270b-1f3fb.png and /dev/null differ
diff --git a/public/emoji/270b-1f3fb.svg b/public/emoji/270b-1f3fb.svg
index 5345aea1354f5..0641793ea9302 100644
--- a/public/emoji/270b-1f3fb.svg
+++ b/public/emoji/270b-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270b-1f3fc.png b/public/emoji/270b-1f3fc.png
deleted file mode 100644
index 44e2a514c600c..0000000000000
Binary files a/public/emoji/270b-1f3fc.png and /dev/null differ
diff --git a/public/emoji/270b-1f3fc.svg b/public/emoji/270b-1f3fc.svg
index 99d1359be7545..f0352b8da95c1 100644
--- a/public/emoji/270b-1f3fc.svg
+++ b/public/emoji/270b-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270b-1f3fd.png b/public/emoji/270b-1f3fd.png
deleted file mode 100644
index 5bb62a7528ac9..0000000000000
Binary files a/public/emoji/270b-1f3fd.png and /dev/null differ
diff --git a/public/emoji/270b-1f3fd.svg b/public/emoji/270b-1f3fd.svg
index 258c678f944d6..77154d07048b2 100644
--- a/public/emoji/270b-1f3fd.svg
+++ b/public/emoji/270b-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270b-1f3fe.png b/public/emoji/270b-1f3fe.png
deleted file mode 100644
index c7f8c9ec2701f..0000000000000
Binary files a/public/emoji/270b-1f3fe.png and /dev/null differ
diff --git a/public/emoji/270b-1f3fe.svg b/public/emoji/270b-1f3fe.svg
index 3b7b55ff50c5b..6d44c9b38b4bd 100644
--- a/public/emoji/270b-1f3fe.svg
+++ b/public/emoji/270b-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270b-1f3ff.png b/public/emoji/270b-1f3ff.png
deleted file mode 100644
index c601b58a73e93..0000000000000
Binary files a/public/emoji/270b-1f3ff.png and /dev/null differ
diff --git a/public/emoji/270b-1f3ff.svg b/public/emoji/270b-1f3ff.svg
index b1e851268acc4..35e7bb3ec90d1 100644
--- a/public/emoji/270b-1f3ff.svg
+++ b/public/emoji/270b-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270b.png b/public/emoji/270b.png
deleted file mode 100644
index 6b2954315d18c..0000000000000
Binary files a/public/emoji/270b.png and /dev/null differ
diff --git a/public/emoji/270b.svg b/public/emoji/270b.svg
index 8aca81b82b33a..8287246378b2f 100644
--- a/public/emoji/270b.svg
+++ b/public/emoji/270b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270c-1f3fb.png b/public/emoji/270c-1f3fb.png
deleted file mode 100644
index 6ac54a745f40e..0000000000000
Binary files a/public/emoji/270c-1f3fb.png and /dev/null differ
diff --git a/public/emoji/270c-1f3fb.svg b/public/emoji/270c-1f3fb.svg
index 2053e46dc4edd..447137caa321f 100644
--- a/public/emoji/270c-1f3fb.svg
+++ b/public/emoji/270c-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270c-1f3fc.png b/public/emoji/270c-1f3fc.png
deleted file mode 100644
index 6dd9669866d58..0000000000000
Binary files a/public/emoji/270c-1f3fc.png and /dev/null differ
diff --git a/public/emoji/270c-1f3fc.svg b/public/emoji/270c-1f3fc.svg
index 7be61714c93a6..908add91ce5ed 100644
--- a/public/emoji/270c-1f3fc.svg
+++ b/public/emoji/270c-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270c-1f3fd.png b/public/emoji/270c-1f3fd.png
deleted file mode 100644
index a615e53f02ffa..0000000000000
Binary files a/public/emoji/270c-1f3fd.png and /dev/null differ
diff --git a/public/emoji/270c-1f3fd.svg b/public/emoji/270c-1f3fd.svg
index fb5387e1058c6..1a814abd839c7 100644
--- a/public/emoji/270c-1f3fd.svg
+++ b/public/emoji/270c-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270c-1f3fe.png b/public/emoji/270c-1f3fe.png
deleted file mode 100644
index 33a34bd5a786a..0000000000000
Binary files a/public/emoji/270c-1f3fe.png and /dev/null differ
diff --git a/public/emoji/270c-1f3fe.svg b/public/emoji/270c-1f3fe.svg
index 2b8a95d8e6d73..a8ee7f0ed5ae4 100644
--- a/public/emoji/270c-1f3fe.svg
+++ b/public/emoji/270c-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270c-1f3ff.png b/public/emoji/270c-1f3ff.png
deleted file mode 100644
index 45ad14b6c9ccf..0000000000000
Binary files a/public/emoji/270c-1f3ff.png and /dev/null differ
diff --git a/public/emoji/270c-1f3ff.svg b/public/emoji/270c-1f3ff.svg
index 8d41bbcdc42bc..bcff574adf07e 100644
--- a/public/emoji/270c-1f3ff.svg
+++ b/public/emoji/270c-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270c.png b/public/emoji/270c.png
deleted file mode 100644
index 70c5516ffeec7..0000000000000
Binary files a/public/emoji/270c.png and /dev/null differ
diff --git a/public/emoji/270c.svg b/public/emoji/270c.svg
index 78682b572ef1b..0fbd3b5fffda8 100644
--- a/public/emoji/270c.svg
+++ b/public/emoji/270c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270d-1f3fb.png b/public/emoji/270d-1f3fb.png
deleted file mode 100644
index 7923d8ebb1719..0000000000000
Binary files a/public/emoji/270d-1f3fb.png and /dev/null differ
diff --git a/public/emoji/270d-1f3fb.svg b/public/emoji/270d-1f3fb.svg
index 438ab1a8ad4f0..4dc08a519fd64 100644
--- a/public/emoji/270d-1f3fb.svg
+++ b/public/emoji/270d-1f3fb.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270d-1f3fc.png b/public/emoji/270d-1f3fc.png
deleted file mode 100644
index bcb304e15d200..0000000000000
Binary files a/public/emoji/270d-1f3fc.png and /dev/null differ
diff --git a/public/emoji/270d-1f3fc.svg b/public/emoji/270d-1f3fc.svg
index 3ff16a807c65e..fdd4d48c60f98 100644
--- a/public/emoji/270d-1f3fc.svg
+++ b/public/emoji/270d-1f3fc.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270d-1f3fd.png b/public/emoji/270d-1f3fd.png
deleted file mode 100644
index fd885fd2d9068..0000000000000
Binary files a/public/emoji/270d-1f3fd.png and /dev/null differ
diff --git a/public/emoji/270d-1f3fd.svg b/public/emoji/270d-1f3fd.svg
index 57884c07e5cbd..d47a6f868b84a 100644
--- a/public/emoji/270d-1f3fd.svg
+++ b/public/emoji/270d-1f3fd.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270d-1f3fe.png b/public/emoji/270d-1f3fe.png
deleted file mode 100644
index d065b8c64abd0..0000000000000
Binary files a/public/emoji/270d-1f3fe.png and /dev/null differ
diff --git a/public/emoji/270d-1f3fe.svg b/public/emoji/270d-1f3fe.svg
index 089e890d5d909..dd8efc41e052b 100644
--- a/public/emoji/270d-1f3fe.svg
+++ b/public/emoji/270d-1f3fe.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270d-1f3ff.png b/public/emoji/270d-1f3ff.png
deleted file mode 100644
index a44b3dd757c3d..0000000000000
Binary files a/public/emoji/270d-1f3ff.png and /dev/null differ
diff --git a/public/emoji/270d-1f3ff.svg b/public/emoji/270d-1f3ff.svg
index 863dbaae551e6..f92699de14731 100644
--- a/public/emoji/270d-1f3ff.svg
+++ b/public/emoji/270d-1f3ff.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270d.png b/public/emoji/270d.png
deleted file mode 100644
index 85639f8ac4063..0000000000000
Binary files a/public/emoji/270d.png and /dev/null differ
diff --git a/public/emoji/270d.svg b/public/emoji/270d.svg
index 9370c8c3902f7..b452ab986f2fa 100644
--- a/public/emoji/270d.svg
+++ b/public/emoji/270d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/270f.png b/public/emoji/270f.png
deleted file mode 100644
index 3833d590fa2ce..0000000000000
Binary files a/public/emoji/270f.png and /dev/null differ
diff --git a/public/emoji/270f.svg b/public/emoji/270f.svg
index 55eec77285b56..417e2d1f9810b 100644
--- a/public/emoji/270f.svg
+++ b/public/emoji/270f.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2712.png b/public/emoji/2712.png
deleted file mode 100644
index 872d0ae159881..0000000000000
Binary files a/public/emoji/2712.png and /dev/null differ
diff --git a/public/emoji/2712.svg b/public/emoji/2712.svg
index 28a3968a725d0..91b747d93e09d 100644
--- a/public/emoji/2712.svg
+++ b/public/emoji/2712.svg
@@ -1,2 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2714.png b/public/emoji/2714.png
deleted file mode 100644
index 03bd695377e95..0000000000000
Binary files a/public/emoji/2714.png and /dev/null differ
diff --git a/public/emoji/2714.svg b/public/emoji/2714.svg
index 20a0826183064..6208932b40d8c 100644
--- a/public/emoji/2714.svg
+++ b/public/emoji/2714.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2716.png b/public/emoji/2716.png
deleted file mode 100644
index e47cc1b685d16..0000000000000
Binary files a/public/emoji/2716.png and /dev/null differ
diff --git a/public/emoji/2716.svg b/public/emoji/2716.svg
index 1117a759586be..be81d594f9a77 100644
--- a/public/emoji/2716.svg
+++ b/public/emoji/2716.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/271d.png b/public/emoji/271d.png
deleted file mode 100644
index 42b10e8225706..0000000000000
Binary files a/public/emoji/271d.png and /dev/null differ
diff --git a/public/emoji/271d.svg b/public/emoji/271d.svg
index 850e144406a8e..dd13a3b9903f0 100644
--- a/public/emoji/271d.svg
+++ b/public/emoji/271d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2721.png b/public/emoji/2721.png
deleted file mode 100644
index fc59d0dde2408..0000000000000
Binary files a/public/emoji/2721.png and /dev/null differ
diff --git a/public/emoji/2721.svg b/public/emoji/2721.svg
index 073f6042919ae..6d83966e9a294 100644
--- a/public/emoji/2721.svg
+++ b/public/emoji/2721.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2728.png b/public/emoji/2728.png
deleted file mode 100644
index 169bc10b02301..0000000000000
Binary files a/public/emoji/2728.png and /dev/null differ
diff --git a/public/emoji/2728.svg b/public/emoji/2728.svg
index 37c088090c5e4..3e5591e040199 100644
--- a/public/emoji/2728.svg
+++ b/public/emoji/2728.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2733.png b/public/emoji/2733.png
deleted file mode 100644
index 3307ffa62eee6..0000000000000
Binary files a/public/emoji/2733.png and /dev/null differ
diff --git a/public/emoji/2733.svg b/public/emoji/2733.svg
index fc0a0d5cc0ac7..2b133c2b5c572 100644
--- a/public/emoji/2733.svg
+++ b/public/emoji/2733.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2734.png b/public/emoji/2734.png
deleted file mode 100644
index 820179bda507c..0000000000000
Binary files a/public/emoji/2734.png and /dev/null differ
diff --git a/public/emoji/2734.svg b/public/emoji/2734.svg
index c8f50edc768e3..9f1cefd96b86a 100644
--- a/public/emoji/2734.svg
+++ b/public/emoji/2734.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2744.png b/public/emoji/2744.png
deleted file mode 100644
index db319a77ec682..0000000000000
Binary files a/public/emoji/2744.png and /dev/null differ
diff --git a/public/emoji/2744.svg b/public/emoji/2744.svg
index 145818394d1c5..26d6d72ad0a75 100644
--- a/public/emoji/2744.svg
+++ b/public/emoji/2744.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2747.png b/public/emoji/2747.png
deleted file mode 100644
index 6aa7b6ec9cf4b..0000000000000
Binary files a/public/emoji/2747.png and /dev/null differ
diff --git a/public/emoji/2747.svg b/public/emoji/2747.svg
index 9c179d6ea3102..812425abc9a20 100644
--- a/public/emoji/2747.svg
+++ b/public/emoji/2747.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/274c.png b/public/emoji/274c.png
deleted file mode 100644
index 9f9ed0f7ad217..0000000000000
Binary files a/public/emoji/274c.png and /dev/null differ
diff --git a/public/emoji/274c.svg b/public/emoji/274c.svg
index 5f60701d2acb5..5aa21e8fd410a 100644
--- a/public/emoji/274c.svg
+++ b/public/emoji/274c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/274e.png b/public/emoji/274e.png
deleted file mode 100644
index dae487f1f98dc..0000000000000
Binary files a/public/emoji/274e.png and /dev/null differ
diff --git a/public/emoji/274e.svg b/public/emoji/274e.svg
index b65d3ec9e9e3a..c74d9f134abd1 100644
--- a/public/emoji/274e.svg
+++ b/public/emoji/274e.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2753.png b/public/emoji/2753.png
deleted file mode 100644
index 5a58f3458aa16..0000000000000
Binary files a/public/emoji/2753.png and /dev/null differ
diff --git a/public/emoji/2753.svg b/public/emoji/2753.svg
index d4b28c81cbb13..9d78e0a433056 100644
--- a/public/emoji/2753.svg
+++ b/public/emoji/2753.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2754.png b/public/emoji/2754.png
deleted file mode 100644
index 6e7824c75f6c5..0000000000000
Binary files a/public/emoji/2754.png and /dev/null differ
diff --git a/public/emoji/2754.svg b/public/emoji/2754.svg
index d04a83c31170b..14f5a8430811b 100644
--- a/public/emoji/2754.svg
+++ b/public/emoji/2754.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2755.png b/public/emoji/2755.png
deleted file mode 100644
index 9b64da8bf7fc7..0000000000000
Binary files a/public/emoji/2755.png and /dev/null differ
diff --git a/public/emoji/2755.svg b/public/emoji/2755.svg
index 714e2103fff01..9cb804adc53a1 100644
--- a/public/emoji/2755.svg
+++ b/public/emoji/2755.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2757.png b/public/emoji/2757.png
deleted file mode 100644
index 2c14406422f03..0000000000000
Binary files a/public/emoji/2757.png and /dev/null differ
diff --git a/public/emoji/2757.svg b/public/emoji/2757.svg
index d064e7e12550b..963356add285b 100644
--- a/public/emoji/2757.svg
+++ b/public/emoji/2757.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2763.png b/public/emoji/2763.png
deleted file mode 100644
index 91b520be40b5f..0000000000000
Binary files a/public/emoji/2763.png and /dev/null differ
diff --git a/public/emoji/2763.svg b/public/emoji/2763.svg
index df6ebedfb17e2..e22110bb0c4f2 100644
--- a/public/emoji/2763.svg
+++ b/public/emoji/2763.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2764.png b/public/emoji/2764.png
deleted file mode 100644
index 638cb72dc4e6d..0000000000000
Binary files a/public/emoji/2764.png and /dev/null differ
diff --git a/public/emoji/2764.svg b/public/emoji/2764.svg
index 12c6742e25174..6dc97e26cefda 100644
--- a/public/emoji/2764.svg
+++ b/public/emoji/2764.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2795.png b/public/emoji/2795.png
deleted file mode 100644
index 40799798aafeb..0000000000000
Binary files a/public/emoji/2795.png and /dev/null differ
diff --git a/public/emoji/2795.svg b/public/emoji/2795.svg
index c572fec5c0239..cc6c542683107 100644
--- a/public/emoji/2795.svg
+++ b/public/emoji/2795.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2796.png b/public/emoji/2796.png
deleted file mode 100644
index 054211caf1224..0000000000000
Binary files a/public/emoji/2796.png and /dev/null differ
diff --git a/public/emoji/2796.svg b/public/emoji/2796.svg
index 844614dd60733..fb069dfe142b9 100644
--- a/public/emoji/2796.svg
+++ b/public/emoji/2796.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2797.png b/public/emoji/2797.png
deleted file mode 100644
index df32ab21bea3c..0000000000000
Binary files a/public/emoji/2797.png and /dev/null differ
diff --git a/public/emoji/2797.svg b/public/emoji/2797.svg
index 8b3945c9c5797..0bf64b5070bde 100644
--- a/public/emoji/2797.svg
+++ b/public/emoji/2797.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/27a1.png b/public/emoji/27a1.png
deleted file mode 100644
index 4755670b5cc73..0000000000000
Binary files a/public/emoji/27a1.png and /dev/null differ
diff --git a/public/emoji/27a1.svg b/public/emoji/27a1.svg
index 125d7d47f5cd7..6eca5745434b1 100644
--- a/public/emoji/27a1.svg
+++ b/public/emoji/27a1.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/27b0.png b/public/emoji/27b0.png
deleted file mode 100644
index 440aa56d50e0a..0000000000000
Binary files a/public/emoji/27b0.png and /dev/null differ
diff --git a/public/emoji/27b0.svg b/public/emoji/27b0.svg
index 5bf1eac01a21e..f1c056454f2bb 100644
--- a/public/emoji/27b0.svg
+++ b/public/emoji/27b0.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/27bf.png b/public/emoji/27bf.png
deleted file mode 100644
index 0b82c8fe31555..0000000000000
Binary files a/public/emoji/27bf.png and /dev/null differ
diff --git a/public/emoji/27bf.svg b/public/emoji/27bf.svg
index 83d211d28bd79..351493bb8f274 100644
--- a/public/emoji/27bf.svg
+++ b/public/emoji/27bf.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2934.png b/public/emoji/2934.png
deleted file mode 100644
index f29bfcfc0dec5..0000000000000
Binary files a/public/emoji/2934.png and /dev/null differ
diff --git a/public/emoji/2934.svg b/public/emoji/2934.svg
index 2d7a211d1ff98..d40c272528945 100644
--- a/public/emoji/2934.svg
+++ b/public/emoji/2934.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2935.png b/public/emoji/2935.png
deleted file mode 100644
index 2d9d24bca8004..0000000000000
Binary files a/public/emoji/2935.png and /dev/null differ
diff --git a/public/emoji/2935.svg b/public/emoji/2935.svg
index 00a8a92ab38a9..1db0a9cb24a81 100644
--- a/public/emoji/2935.svg
+++ b/public/emoji/2935.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2a-20e3.svg b/public/emoji/2a-20e3.svg
new file mode 100644
index 0000000000000..e3ace720226dd
--- /dev/null
+++ b/public/emoji/2a-20e3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/2b05.png b/public/emoji/2b05.png
deleted file mode 100644
index 8c685e0a81b0d..0000000000000
Binary files a/public/emoji/2b05.png and /dev/null differ
diff --git a/public/emoji/2b05.svg b/public/emoji/2b05.svg
index 9583aec7fca9a..b56d8fd84baf4 100644
--- a/public/emoji/2b05.svg
+++ b/public/emoji/2b05.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2b06.png b/public/emoji/2b06.png
deleted file mode 100644
index af8218a87f7a8..0000000000000
Binary files a/public/emoji/2b06.png and /dev/null differ
diff --git a/public/emoji/2b06.svg b/public/emoji/2b06.svg
index efa332284ab01..f54dcb999efae 100644
--- a/public/emoji/2b06.svg
+++ b/public/emoji/2b06.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2b07.png b/public/emoji/2b07.png
deleted file mode 100644
index b8eefd0b19f24..0000000000000
Binary files a/public/emoji/2b07.png and /dev/null differ
diff --git a/public/emoji/2b07.svg b/public/emoji/2b07.svg
index bbd2213f8c4f7..623ea5074fa5d 100644
--- a/public/emoji/2b07.svg
+++ b/public/emoji/2b07.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2b1b.png b/public/emoji/2b1b.png
deleted file mode 100644
index 162f2bb429097..0000000000000
Binary files a/public/emoji/2b1b.png and /dev/null differ
diff --git a/public/emoji/2b1b.svg b/public/emoji/2b1b.svg
index b908105f3f1f1..75820ed0e2767 100644
--- a/public/emoji/2b1b.svg
+++ b/public/emoji/2b1b.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2b1c.png b/public/emoji/2b1c.png
deleted file mode 100644
index 6f06c1c79de9c..0000000000000
Binary files a/public/emoji/2b1c.png and /dev/null differ
diff --git a/public/emoji/2b1c.svg b/public/emoji/2b1c.svg
index a58c77bd04283..e9ce9710b9cee 100644
--- a/public/emoji/2b1c.svg
+++ b/public/emoji/2b1c.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2b50.png b/public/emoji/2b50.png
deleted file mode 100644
index c930947076ebe..0000000000000
Binary files a/public/emoji/2b50.png and /dev/null differ
diff --git a/public/emoji/2b50.svg b/public/emoji/2b50.svg
index 487bf321c6c3f..d2bc202e99c0a 100644
--- a/public/emoji/2b50.svg
+++ b/public/emoji/2b50.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/2b55.png b/public/emoji/2b55.png
deleted file mode 100644
index 3fe75ce4675c1..0000000000000
Binary files a/public/emoji/2b55.png and /dev/null differ
diff --git a/public/emoji/2b55.svg b/public/emoji/2b55.svg
index 46265062f1360..056ad641a9afe 100644
--- a/public/emoji/2b55.svg
+++ b/public/emoji/2b55.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/30-20e3.svg b/public/emoji/30-20e3.svg
new file mode 100644
index 0000000000000..6b9454e667e27
--- /dev/null
+++ b/public/emoji/30-20e3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/3030.png b/public/emoji/3030.png
deleted file mode 100644
index 001c8d6e47d67..0000000000000
Binary files a/public/emoji/3030.png and /dev/null differ
diff --git a/public/emoji/3030.svg b/public/emoji/3030.svg
index ce6c00599405b..85addce18951d 100644
--- a/public/emoji/3030.svg
+++ b/public/emoji/3030.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/303d.png b/public/emoji/303d.png
deleted file mode 100644
index 70453d41528df..0000000000000
Binary files a/public/emoji/303d.png and /dev/null differ
diff --git a/public/emoji/303d.svg b/public/emoji/303d.svg
index 3b7e1508aa462..8a8b08c0e8fc3 100644
--- a/public/emoji/303d.svg
+++ b/public/emoji/303d.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/31-20e3.svg b/public/emoji/31-20e3.svg
new file mode 100644
index 0000000000000..d56800d4a812e
--- /dev/null
+++ b/public/emoji/31-20e3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/32-20e3.svg b/public/emoji/32-20e3.svg
new file mode 100644
index 0000000000000..546488da1f744
--- /dev/null
+++ b/public/emoji/32-20e3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/3297.png b/public/emoji/3297.png
deleted file mode 100644
index ba8c89d95eeed..0000000000000
Binary files a/public/emoji/3297.png and /dev/null differ
diff --git a/public/emoji/3297.svg b/public/emoji/3297.svg
index c57b1ab8a4b78..b525207fbbc2d 100644
--- a/public/emoji/3297.svg
+++ b/public/emoji/3297.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/3299.png b/public/emoji/3299.png
deleted file mode 100644
index 5fd72608e60ef..0000000000000
Binary files a/public/emoji/3299.png and /dev/null differ
diff --git a/public/emoji/3299.svg b/public/emoji/3299.svg
index 3e750322ec23c..ffe9e7757a977 100644
--- a/public/emoji/3299.svg
+++ b/public/emoji/3299.svg
@@ -1 +1 @@
-
\ No newline at end of file
+image/svg+xml
diff --git a/public/emoji/33-20e3.svg b/public/emoji/33-20e3.svg
new file mode 100644
index 0000000000000..9d70003df3934
--- /dev/null
+++ b/public/emoji/33-20e3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/34-20e3.svg b/public/emoji/34-20e3.svg
new file mode 100644
index 0000000000000..5fdef5829c31e
--- /dev/null
+++ b/public/emoji/34-20e3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/35-20e3.svg b/public/emoji/35-20e3.svg
new file mode 100644
index 0000000000000..2afa988d6f197
--- /dev/null
+++ b/public/emoji/35-20e3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/36-20e3.svg b/public/emoji/36-20e3.svg
new file mode 100644
index 0000000000000..153c581d60681
--- /dev/null
+++ b/public/emoji/36-20e3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/37-20e3.svg b/public/emoji/37-20e3.svg
new file mode 100644
index 0000000000000..abbb8d654b968
--- /dev/null
+++ b/public/emoji/37-20e3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/38-20e3.svg b/public/emoji/38-20e3.svg
new file mode 100644
index 0000000000000..11e717650360b
--- /dev/null
+++ b/public/emoji/38-20e3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/39-20e3.svg b/public/emoji/39-20e3.svg
new file mode 100644
index 0000000000000..c82bb1a1b9151
--- /dev/null
+++ b/public/emoji/39-20e3.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/a9.svg b/public/emoji/a9.svg
new file mode 100644
index 0000000000000..a56a396950bc9
--- /dev/null
+++ b/public/emoji/a9.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/ae.svg b/public/emoji/ae.svg
new file mode 100644
index 0000000000000..012e11635e9bf
--- /dev/null
+++ b/public/emoji/ae.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/e50a.svg b/public/emoji/e50a.svg
new file mode 100644
index 0000000000000..7c28b8f06a1fe
--- /dev/null
+++ b/public/emoji/e50a.svg
@@ -0,0 +1 @@
+image/svg+xml
diff --git a/public/emoji/sheet.png b/public/emoji/sheet.png
new file mode 100644
index 0000000000000..e9a3f23f86155
Binary files /dev/null and b/public/emoji/sheet.png differ
diff --git a/public/oops.gif b/public/oops.gif
new file mode 100644
index 0000000000000..ad19c4e10585e
Binary files /dev/null and b/public/oops.gif differ
diff --git a/public/oops.png b/public/oops.png
deleted file mode 100644
index 0abddad3e8a11..0000000000000
Binary files a/public/oops.png and /dev/null differ
diff --git a/spec/controllers/api/v1/accounts/relationships_controller_spec.rb b/spec/controllers/api/v1/accounts/relationships_controller_spec.rb
index a9073b197ab04..431fc21941479 100644
--- a/spec/controllers/api/v1/accounts/relationships_controller_spec.rb
+++ b/spec/controllers/api/v1/accounts/relationships_controller_spec.rb
@@ -50,14 +50,14 @@ describe Api::V1::Accounts::RelationshipsController do
json = body_as_json
expect(json).to be_a Enumerable
- expect(json.first[:id]).to eq simon.id
+ expect(json.first[:id]).to eq simon.id.to_s
expect(json.first[:following]).to be true
expect(json.first[:followed_by]).to be false
expect(json.first[:muting]).to be false
expect(json.first[:requested]).to be false
expect(json.first[:domain_blocking]).to be false
- expect(json.second[:id]).to eq lewis.id
+ expect(json.second[:id]).to eq lewis.id.to_s
expect(json.second[:following]).to be false
expect(json.second[:followed_by]).to be true
expect(json.second[:muting]).to be false
diff --git a/spec/controllers/api/v1/custom_emojis_controller_spec.rb b/spec/controllers/api/v1/custom_emojis_controller_spec.rb
new file mode 100644
index 0000000000000..9f3522812b742
--- /dev/null
+++ b/spec/controllers/api/v1/custom_emojis_controller_spec.rb
@@ -0,0 +1,18 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+RSpec.describe Api::V1::CustomEmojisController, type: :controller do
+ render_views
+
+ describe 'GET #index' do
+ before do
+ Fabricate(:custom_emoji)
+ get :index
+ end
+
+ it 'returns http success' do
+ expect(response).to have_http_status(:success)
+ end
+ end
+end
diff --git a/spec/controllers/api/v1/media_controller_spec.rb b/spec/controllers/api/v1/media_controller_spec.rb
index 6bad3f05d8e9c..baa22d7e48617 100644
--- a/spec/controllers/api/v1/media_controller_spec.rb
+++ b/spec/controllers/api/v1/media_controller_spec.rb
@@ -53,7 +53,7 @@ RSpec.describe Api::V1::MediaController, type: :controller do
end
it 'returns media ID in JSON' do
- expect(body_as_json[:id]).to eq MediaAttachment.first.id
+ expect(body_as_json[:id]).to eq MediaAttachment.first.id.to_s
end
end
@@ -75,7 +75,7 @@ RSpec.describe Api::V1::MediaController, type: :controller do
end
it 'returns media ID in JSON' do
- expect(body_as_json[:id]).to eq MediaAttachment.first.id
+ expect(body_as_json[:id]).to eq MediaAttachment.first.id.to_s
end
end
@@ -97,7 +97,7 @@ RSpec.describe Api::V1::MediaController, type: :controller do
end
xit 'returns media ID in JSON' do
- expect(body_as_json[:id]).to eq MediaAttachment.first.id
+ expect(body_as_json[:id]).to eq MediaAttachment.first.id.to_s
end
end
end
diff --git a/spec/controllers/api/v1/statuses/favourites_controller_spec.rb b/spec/controllers/api/v1/statuses/favourites_controller_spec.rb
index 2a029230d7f1b..aba7cd4588d58 100644
--- a/spec/controllers/api/v1/statuses/favourites_controller_spec.rb
+++ b/spec/controllers/api/v1/statuses/favourites_controller_spec.rb
@@ -36,7 +36,7 @@ describe Api::V1::Statuses::FavouritesController do
it 'return json with updated attributes' do
hash_body = body_as_json
- expect(hash_body[:id]).to eq status.id
+ expect(hash_body[:id]).to eq status.id.to_s
expect(hash_body[:favourites_count]).to eq 1
expect(hash_body[:favourited]).to be true
end
diff --git a/spec/controllers/api/v1/statuses/pins_controller_spec.rb b/spec/controllers/api/v1/statuses/pins_controller_spec.rb
index 2e170da240938..79005c9decadf 100644
--- a/spec/controllers/api/v1/statuses/pins_controller_spec.rb
+++ b/spec/controllers/api/v1/statuses/pins_controller_spec.rb
@@ -32,7 +32,7 @@ describe Api::V1::Statuses::PinsController do
it 'return json with updated attributes' do
hash_body = body_as_json
- expect(hash_body[:id]).to eq status.id
+ expect(hash_body[:id]).to eq status.id.to_s
expect(hash_body[:pinned]).to be true
end
end
diff --git a/spec/controllers/api/v1/statuses/reblogs_controller_spec.rb b/spec/controllers/api/v1/statuses/reblogs_controller_spec.rb
index d6d36c1b2f618..7417ff672fbec 100644
--- a/spec/controllers/api/v1/statuses/reblogs_controller_spec.rb
+++ b/spec/controllers/api/v1/statuses/reblogs_controller_spec.rb
@@ -36,7 +36,7 @@ describe Api::V1::Statuses::ReblogsController do
it 'return json with updated attributes' do
hash_body = body_as_json
- expect(hash_body[:reblog][:id]).to eq status.id
+ expect(hash_body[:reblog][:id]).to eq status.id.to_s
expect(hash_body[:reblog][:reblogs_count]).to eq 1
expect(hash_body[:reblog][:reblogged]).to be true
end
diff --git a/spec/helpers/emoji_helper_spec.rb b/spec/helpers/emoji_helper_spec.rb
deleted file mode 100644
index 6edf7672f7bd6..0000000000000
--- a/spec/helpers/emoji_helper_spec.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe EmojiHelper, type: :helper do
- describe '#emojify' do
- it 'converts shortcodes to unicode' do
- text = ':book: Book'
- expect(emojify(text)).to eq '📖 Book'
- end
-
- it 'converts composite emoji shortcodes to unicode' do
- text = ':couple_ww:'
- expect(emojify(text)).to eq '👩❤👩'
- end
-
- it 'does not convert shortcodes that are part of a string into unicode' do
- text = ':see_no_evil::hear_no_evil::speak_no_evil:'
- expect(emojify(text)).to eq text
- end
- end
-end
diff --git a/spec/javascript/components/dropdown_menu.test.js b/spec/javascript/components/dropdown_menu.test.js
deleted file mode 100644
index a5af730efe97a..0000000000000
--- a/spec/javascript/components/dropdown_menu.test.js
+++ /dev/null
@@ -1,132 +0,0 @@
-import { expect } from 'chai';
-import { shallow, mount } from 'enzyme';
-import sinon from 'sinon';
-import React from 'react';
-import DropdownMenu from '../../../app/javascript/mastodon/components/dropdown_menu';
-import Dropdown, { DropdownTrigger, DropdownContent } from 'react-simple-dropdown';
-
-const isTrue = () => true;
-
-describe(' ', () => {
- const icon = 'my-icon';
- const size = 123;
- let items;
- let wrapper;
- let action;
-
- beforeEach(() => {
- action = sinon.spy();
-
- items = [
- { text: 'first item', action: action, href: '/some/url' },
- { text: 'second item', action: 'noop' },
- ];
- wrapper = shallow( );
- });
-
- it('contains one ', () => {
- expect(wrapper).to.have.exactly(1).descendants(Dropdown);
- });
-
- it('contains one ', () => {
- expect(wrapper.find(Dropdown)).to.have.exactly(1).descendants(DropdownTrigger);
- });
-
- it('contains one ', () => {
- expect(wrapper.find(Dropdown)).to.have.exactly(1).descendants(DropdownContent);
- });
-
- it('does not contain a if isUserTouching', () => {
- const touchingWrapper = shallow( );
- expect(touchingWrapper.find(Dropdown)).to.have.exactly(0).descendants(DropdownContent);
- });
-
- it('does not contain a if isUserTouching', () => {
- const touchingWrapper = shallow( );
- expect(touchingWrapper.find(Dropdown)).to.have.exactly(0).descendants(DropdownContent);
- });
-
- it('uses props.size for style values', () => {
- ['font-size', 'width', 'line-height'].map((property) => {
- expect(wrapper.find(DropdownTrigger)).to.have.style(property, `${size}px`);
- });
- });
-
- it('uses props.icon as icon class name', () => {
- expect(wrapper.find(DropdownTrigger).find('i')).to.have.className(`fa-${icon}`);
- });
-
- it('is not expanded by default', () => {
- expect(wrapper.state('expanded')).to.be.equal(false);
- });
-
- it('does not render the list elements if not expanded', () => {
- const lis = wrapper.find(DropdownContent).find('li');
- expect(lis.length).to.be.equal(0);
- });
-
- it('sets expanded to true when clicking the trigger', () => {
- const wrapper = mount( );
- wrapper.find(DropdownTrigger).first().simulate('click');
- expect(wrapper.state('expanded')).to.be.equal(true);
- });
-
- it('calls onModalOpen when clicking the trigger if isUserTouching', () => {
- const onModalOpen = sinon.spy();
- const touchingWrapper = mount( );
- touchingWrapper.find(DropdownTrigger).first().simulate('click');
- expect(onModalOpen.calledOnce).to.be.equal(true);
- expect(onModalOpen.args[0][0]).to.be.deep.equal({ status: 3.14, actions: items, onClick: touchingWrapper.node.handleClick });
- });
-
- it('calls onModalClose when clicking an action if isUserTouching and isModalOpen', () => {
- const onModalOpen = sinon.spy();
- const onModalClose = sinon.spy();
- const touchingWrapper = mount( );
- touchingWrapper.find(DropdownTrigger).first().simulate('click');
- touchingWrapper.node.handleClick({ currentTarget: { getAttribute: () => '0' }, preventDefault: () => null });
- expect(onModalClose.calledOnce).to.be.equal(true);
- });
-
- // Error: ReactWrapper::state() can only be called on the root
- /*it('sets expanded to false when clicking outside', () => {
- const wrapper = mount((
-
-
-
-
- ));
-
- wrapper.find(DropdownTrigger).first().simulate('click');
- expect(wrapper.find(DropdownMenu).first().state('expanded')).to.be.equal(true);
-
- wrapper.find('span').first().simulate('click');
- expect(wrapper.find(DropdownMenu).first().state('expanded')).to.be.equal(false);
- })*/
-
- it('renders list elements for each props.items if expanded', () => {
- const wrapper = mount( );
- wrapper.find(DropdownTrigger).first().simulate('click');
- const lis = wrapper.find(DropdownContent).find('li');
- expect(lis.length).to.be.equal(items.length);
- });
-
- it('uses the href passed in via props.items', () => {
- wrapper
- .find(DropdownContent).find('li a')
- .forEach((a, i) => expect(a).to.have.attr('href', items[i].href));
- });
-
- it('uses the text passed in via props.items', () => {
- wrapper
- .find(DropdownContent).find('li a')
- .forEach((a, i) => expect(a).to.have.text(items[i].text));
- });
-
- it('uses the action passed in via props.items as click handler', () => {
- const wrapper = mount( );
- wrapper.find(DropdownTrigger).first().simulate('click');
- wrapper.find(DropdownContent).find('li a').first().simulate('click');
- expect(action.calledOnce).to.equal(true);
- });
-});
diff --git a/spec/javascript/components/emojify.test.js b/spec/javascript/components/emojify.test.js
index e165b4519fc34..6e73c925149f2 100644
--- a/spec/javascript/components/emojify.test.js
+++ b/spec/javascript/components/emojify.test.js
@@ -22,23 +22,23 @@ describe('emojify', () => {
it('does unicode', () => {
expect(emojify('\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66')).to.equal(
- ' ');
- expect(emojify('\uD83D\uDC68\uD83D\uDC69\uD83D\uDC67\uD83D\uDC67')).to.equal(
- ' ');
- expect(emojify('\uD83D\uDC69\uD83D\uDC69\uD83D\uDC66')).to.equal(' ');
+ ' ');
+ expect(emojify('👨👩👧👧')).to.equal(
+ ' ');
+ expect(emojify('👩👩👦')).to.equal(' ');
expect(emojify('\u2757')).to.equal(
' ');
});
it('does multiple unicode', () => {
expect(emojify('\u2757 #\uFE0F\u20E3')).to.equal(
- ' ');
+ ' ');
expect(emojify('\u2757#\uFE0F\u20E3')).to.equal(
- ' ');
+ ' ');
expect(emojify('\u2757 #\uFE0F\u20E3 \u2757')).to.equal(
- ' ');
+ ' ');
expect(emojify('foo \u2757 #\uFE0F\u20E3 bar')).to.equal(
- 'foo bar');
+ 'foo bar');
});
it('ignores unicode inside of tags', () => {
diff --git a/spec/lib/activitypub/activity/create_spec.rb b/spec/lib/activitypub/activity/create_spec.rb
index 1a9520f04a60f..cdd49915058f9 100644
--- a/spec/lib/activitypub/activity/create_spec.rb
+++ b/spec/lib/activitypub/activity/create_spec.rb
@@ -171,6 +171,26 @@ RSpec.describe ActivityPub::Activity::Create do
end
end
+ context 'with mentions missing href' do
+ let(:object_json) do
+ {
+ id: 'bar',
+ type: 'Note',
+ content: 'Lorem ipsum',
+ tag: [
+ {
+ type: 'Mention',
+ },
+ ],
+ }
+ end
+
+ it 'creates status' do
+ status = sender.statuses.first
+ expect(status).to_not be_nil
+ end
+ end
+
context 'with media attachments' do
let(:object_json) do
{
@@ -195,6 +215,27 @@ RSpec.describe ActivityPub::Activity::Create do
end
end
+ context 'with media attachments missing url' do
+ let(:object_json) do
+ {
+ id: 'bar',
+ type: 'Note',
+ content: 'Lorem ipsum',
+ attachment: [
+ {
+ type: 'Document',
+ mime_type: 'image/png',
+ },
+ ],
+ }
+ end
+
+ it 'creates status' do
+ status = sender.statuses.first
+ expect(status).to_not be_nil
+ end
+ end
+
context 'with hashtags' do
let(:object_json) do
{
@@ -219,6 +260,27 @@ RSpec.describe ActivityPub::Activity::Create do
end
end
+ context 'with hashtags missing name' do
+ let(:object_json) do
+ {
+ id: 'bar',
+ type: 'Note',
+ content: 'Lorem ipsum',
+ tag: [
+ {
+ type: 'Hashtag',
+ href: 'http://example.com/blah',
+ },
+ ],
+ }
+ end
+
+ it 'creates status' do
+ status = sender.statuses.first
+ expect(status).to_not be_nil
+ end
+ end
+
context 'with emojis' do
let(:object_json) do
{
@@ -242,5 +304,47 @@ RSpec.describe ActivityPub::Activity::Create do
expect(status.emojis.map(&:shortcode)).to include('tinking')
end
end
+
+ context 'with emojis missing name' do
+ let(:object_json) do
+ {
+ id: 'bar',
+ type: 'Note',
+ content: 'Lorem ipsum :tinking:',
+ tag: [
+ {
+ type: 'Emoji',
+ href: 'http://example.com/emoji.png',
+ },
+ ],
+ }
+ end
+
+ it 'creates status' do
+ status = sender.statuses.first
+ expect(status).to_not be_nil
+ end
+ end
+
+ context 'with emojis missing href' do
+ let(:object_json) do
+ {
+ id: 'bar',
+ type: 'Note',
+ content: 'Lorem ipsum :tinking:',
+ tag: [
+ {
+ type: 'Emoji',
+ name: 'tinking',
+ },
+ ],
+ }
+ end
+
+ it 'creates status' do
+ status = sender.statuses.first
+ expect(status).to_not be_nil
+ end
+ end
end
end
diff --git a/spec/lib/activitypub/tag_manager_spec.rb b/spec/lib/activitypub/tag_manager_spec.rb
index dea8abc655949..0d16652169dfb 100644
--- a/spec/lib/activitypub/tag_manager_spec.rb
+++ b/spec/lib/activitypub/tag_manager_spec.rb
@@ -108,7 +108,7 @@ RSpec.describe ActivityPub::TagManager do
it 'returns the local status for OStatus tag: URI' do
status = Fabricate(:status)
- expect(subject.uri_to_resource(::TagManager.instance.uri_for(status), Status)).to eq status
+ expect(subject.uri_to_resource(OStatus::TagManager.instance.uri_for(status), Status)).to eq status
end
it 'returns the local status for OStatus StreamEntry URL' do
diff --git a/spec/lib/emoji_spec.rb b/spec/lib/emoji_spec.rb
deleted file mode 100644
index 04931ccfba0cd..0000000000000
--- a/spec/lib/emoji_spec.rb
+++ /dev/null
@@ -1,15 +0,0 @@
-require 'rails_helper'
-
-RSpec.describe Emoji do
- describe '#unicode' do
- it 'returns a unicode for a shortcode' do
- expect(Emoji.instance.unicode(':joy:')).to eq '😂'
- end
- end
-
- describe '#names' do
- it 'returns an array' do
- expect(Emoji.instance.names).to be_an Array
- end
- end
-end
diff --git a/spec/lib/ostatus/atom_serializer_spec.rb b/spec/lib/ostatus/atom_serializer_spec.rb
index b2480a53b38c9..00e6f09dc4496 100644
--- a/spec/lib/ostatus/atom_serializer_spec.rb
+++ b/spec/lib/ostatus/atom_serializer_spec.rb
@@ -17,7 +17,7 @@ RSpec.describe OStatus::AtomSerializer do
follow_request_salmon = serialize(follow_request)
object_type = follow_request_salmon.nodes.find { |node| node.name == 'activity:object-type' }
- expect(object_type.text).to eq TagManager::TYPES[:activity]
+ expect(object_type.text).to eq OStatus::TagManager::TYPES[:activity]
end
it 'appends activity:verb element with request_friend type' do
@@ -26,7 +26,7 @@ RSpec.describe OStatus::AtomSerializer do
follow_request_salmon = serialize(follow_request)
verb = follow_request_salmon.nodes.find { |node| node.name == 'activity:verb' }
- expect(verb.text).to eq TagManager::VERBS[:request_friend]
+ expect(verb.text).to eq OStatus::TagManager::VERBS[:request_friend]
end
it 'appends activity:object with target account' do
@@ -44,13 +44,13 @@ RSpec.describe OStatus::AtomSerializer do
it 'adds namespaces' do
element = serialize
- expect(element['xmlns']).to eq TagManager::XMLNS
- expect(element['xmlns:thr']).to eq TagManager::THR_XMLNS
- expect(element['xmlns:activity']).to eq TagManager::AS_XMLNS
- expect(element['xmlns:poco']).to eq TagManager::POCO_XMLNS
- expect(element['xmlns:media']).to eq TagManager::MEDIA_XMLNS
- expect(element['xmlns:ostatus']).to eq TagManager::OS_XMLNS
- expect(element['xmlns:mastodon']).to eq TagManager::MTDN_XMLNS
+ expect(element['xmlns']).to eq OStatus::TagManager::XMLNS
+ expect(element['xmlns:thr']).to eq OStatus::TagManager::THR_XMLNS
+ expect(element['xmlns:activity']).to eq OStatus::TagManager::AS_XMLNS
+ expect(element['xmlns:poco']).to eq OStatus::TagManager::POCO_XMLNS
+ expect(element['xmlns:media']).to eq OStatus::TagManager::MEDIA_XMLNS
+ expect(element['xmlns:ostatus']).to eq OStatus::TagManager::OS_XMLNS
+ expect(element['xmlns:mastodon']).to eq OStatus::TagManager::MTDN_XMLNS
end
end
@@ -98,7 +98,7 @@ RSpec.describe OStatus::AtomSerializer do
mentioned = element.nodes.find do |node|
node.name == 'link' &&
node[:rel] == 'mentioned' &&
- node['ostatus:object-type'] == TagManager::TYPES[:person]
+ node['ostatus:object-type'] == OStatus::TagManager::TYPES[:person]
end
expect(mentioned[:href]).to eq 'https://cb6e6126.ngrok.io/users/username'
@@ -188,7 +188,7 @@ RSpec.describe OStatus::AtomSerializer do
author = OStatus::AtomSerializer.new.author(account)
object_type = author.nodes.find { |node| node.name == 'activity:object-type' }
- expect(object_type.text).to eq TagManager::TYPES[:person]
+ expect(object_type.text).to eq OStatus::TagManager::TYPES[:person]
end
it 'appends email element with username and domain for local account' do
@@ -358,9 +358,9 @@ RSpec.describe OStatus::AtomSerializer do
mentioned_person = entry.nodes.find do |node|
node.name == 'link' &&
node[:rel] == 'mentioned' &&
- node['ostatus:object-type'] == TagManager::TYPES[:collection]
+ node['ostatus:object-type'] == OStatus::TagManager::TYPES[:collection]
end
- expect(mentioned_person[:href]).to eq TagManager::COLLECTIONS[:public]
+ expect(mentioned_person[:href]).to eq OStatus::TagManager::COLLECTIONS[:public]
end
it 'does not append link element for the public collection if status is not publicly visible' do
@@ -371,8 +371,8 @@ RSpec.describe OStatus::AtomSerializer do
entry.nodes.each do |node|
if node.name == 'link' &&
node[:rel] == 'mentioned' &&
- node['ostatus:object-type'] == TagManager::TYPES[:collection]
- expect(mentioned_collection[:href]).not_to eq TagManager::COLLECTIONS[:public]
+ node['ostatus:object-type'] == OStatus::TagManager::TYPES[:collection]
+ expect(mentioned_collection[:href]).not_to eq OStatus::TagManager::COLLECTIONS[:public]
end
end
end
@@ -506,7 +506,7 @@ RSpec.describe OStatus::AtomSerializer do
status = Fabricate(:status)
entry = OStatus::AtomSerializer.new.entry(status.stream_entry)
object_type = entry.nodes.find { |node| node.name == 'activity:object-type' }
- expect(object_type.text).to eq TagManager::TYPES[:note]
+ expect(object_type.text).to eq OStatus::TagManager::TYPES[:note]
end
it 'appends activity:verb element with object type' do
@@ -515,7 +515,7 @@ RSpec.describe OStatus::AtomSerializer do
entry = OStatus::AtomSerializer.new.entry(status.stream_entry)
object_type = entry.nodes.find { |node| node.name == 'activity:verb' }
- expect(object_type.text).to eq TagManager::VERBS[:post]
+ expect(object_type.text).to eq OStatus::TagManager::VERBS[:post]
end
it 'appends activity:object element with target if present' do
@@ -739,8 +739,8 @@ RSpec.describe OStatus::AtomSerializer do
time_after = Time.now
expect(block_salmon.id.text).to(
- eq(TagManager.instance.unique_tag(time_before.utc, block.id, 'Block'))
- .or(eq(TagManager.instance.unique_tag(time_after.utc, block.id, 'Block')))
+ eq(OStatus::TagManager.instance.unique_tag(time_before.utc, block.id, 'Block'))
+ .or(eq(OStatus::TagManager.instance.unique_tag(time_after.utc, block.id, 'Block')))
)
end
@@ -769,7 +769,7 @@ RSpec.describe OStatus::AtomSerializer do
block_salmon = OStatus::AtomSerializer.new.block_salmon(block)
object_type = block_salmon.nodes.find { |node| node.name == 'activity:object-type' }
- expect(object_type.text).to eq TagManager::TYPES[:activity]
+ expect(object_type.text).to eq OStatus::TagManager::TYPES[:activity]
end
it 'appends activity:verb element with block' do
@@ -778,7 +778,7 @@ RSpec.describe OStatus::AtomSerializer do
block_salmon = OStatus::AtomSerializer.new.block_salmon(block)
verb = block_salmon.nodes.find { |node| node.name == 'activity:verb' }
- expect(verb.text).to eq TagManager::VERBS[:block]
+ expect(verb.text).to eq OStatus::TagManager::VERBS[:block]
end
it 'appends activity:object element with target account' do
@@ -826,8 +826,8 @@ RSpec.describe OStatus::AtomSerializer do
time_after = Time.now
expect(unblock_salmon.id.text).to(
- eq(TagManager.instance.unique_tag(time_before.utc, block.id, 'Block'))
- .or(eq(TagManager.instance.unique_tag(time_after.utc, block.id, 'Block')))
+ eq(OStatus::TagManager.instance.unique_tag(time_before.utc, block.id, 'Block'))
+ .or(eq(OStatus::TagManager.instance.unique_tag(time_after.utc, block.id, 'Block')))
)
end
@@ -856,7 +856,7 @@ RSpec.describe OStatus::AtomSerializer do
unblock_salmon = OStatus::AtomSerializer.new.unblock_salmon(block)
object_type = unblock_salmon.nodes.find { |node| node.name == 'activity:object-type' }
- expect(object_type.text).to eq TagManager::TYPES[:activity]
+ expect(object_type.text).to eq OStatus::TagManager::TYPES[:activity]
end
it 'appends activity:verb element with block' do
@@ -865,7 +865,7 @@ RSpec.describe OStatus::AtomSerializer do
unblock_salmon = OStatus::AtomSerializer.new.unblock_salmon(block)
verb = unblock_salmon.nodes.find { |node| node.name == 'activity:verb' }
- expect(verb.text).to eq TagManager::VERBS[:unblock]
+ expect(verb.text).to eq OStatus::TagManager::VERBS[:unblock]
end
it 'appends activity:object element with target account' do
@@ -934,7 +934,7 @@ RSpec.describe OStatus::AtomSerializer do
favourite_salmon = OStatus::AtomSerializer.new.favourite_salmon(favourite)
verb = favourite_salmon.nodes.find { |node| node.name == 'activity:verb' }
- expect(verb.text).to eq TagManager::VERBS[:favorite]
+ expect(verb.text).to eq OStatus::TagManager::VERBS[:favorite]
end
it 'appends activity:object element with status' do
@@ -1005,8 +1005,8 @@ RSpec.describe OStatus::AtomSerializer do
time_after = Time.now
expect(unfavourite_salmon.id.text).to(
- eq(TagManager.instance.unique_tag(time_before.utc, favourite.id, 'Favourite'))
- .or(eq(TagManager.instance.unique_tag(time_after.utc, favourite.id, 'Favourite')))
+ eq(OStatus::TagManager.instance.unique_tag(time_before.utc, favourite.id, 'Favourite'))
+ .or(eq(OStatus::TagManager.instance.unique_tag(time_after.utc, favourite.id, 'Favourite')))
)
end
@@ -1034,7 +1034,7 @@ RSpec.describe OStatus::AtomSerializer do
unfavourite_salmon = OStatus::AtomSerializer.new.unfavourite_salmon(favourite)
verb = unfavourite_salmon.nodes.find { |node| node.name == 'activity:verb' }
- expect(verb.text).to eq TagManager::VERBS[:unfavorite]
+ expect(verb.text).to eq OStatus::TagManager::VERBS[:unfavorite]
end
it 'appends activity:object element with status' do
@@ -1117,7 +1117,7 @@ RSpec.describe OStatus::AtomSerializer do
follow_salmon = OStatus::AtomSerializer.new.follow_salmon(follow)
object_type = follow_salmon.nodes.find { |node| node.name == 'activity:object-type' }
- expect(object_type.text).to eq TagManager::TYPES[:activity]
+ expect(object_type.text).to eq OStatus::TagManager::TYPES[:activity]
end
it 'appends activity:verb element with follow' do
@@ -1126,7 +1126,7 @@ RSpec.describe OStatus::AtomSerializer do
follow_salmon = OStatus::AtomSerializer.new.follow_salmon(follow)
verb = follow_salmon.nodes.find { |node| node.name == 'activity:verb' }
- expect(verb.text).to eq TagManager::VERBS[:follow]
+ expect(verb.text).to eq OStatus::TagManager::VERBS[:follow]
end
it 'appends activity:object element with target account' do
@@ -1190,8 +1190,8 @@ RSpec.describe OStatus::AtomSerializer do
time_after = Time.now
expect(unfollow_salmon.id.text).to(
- eq(TagManager.instance.unique_tag(time_before.utc, follow.id, 'Follow'))
- .or(eq(TagManager.instance.unique_tag(time_after.utc, follow.id, 'Follow')))
+ eq(OStatus::TagManager.instance.unique_tag(time_before.utc, follow.id, 'Follow'))
+ .or(eq(OStatus::TagManager.instance.unique_tag(time_after.utc, follow.id, 'Follow')))
)
end
@@ -1234,7 +1234,7 @@ RSpec.describe OStatus::AtomSerializer do
unfollow_salmon = OStatus::AtomSerializer.new.unfollow_salmon(follow)
object_type = unfollow_salmon.nodes.find { |node| node.name == 'activity:object-type' }
- expect(object_type.text).to eq TagManager::TYPES[:activity]
+ expect(object_type.text).to eq OStatus::TagManager::TYPES[:activity]
end
it 'appends activity:verb element with follow' do
@@ -1244,7 +1244,7 @@ RSpec.describe OStatus::AtomSerializer do
unfollow_salmon = OStatus::AtomSerializer.new.unfollow_salmon(follow)
verb = unfollow_salmon.nodes.find { |node| node.name == 'activity:verb' }
- expect(verb.text).to eq TagManager::VERBS[:unfollow]
+ expect(verb.text).to eq OStatus::TagManager::VERBS[:unfollow]
end
it 'appends activity:object element with target account' do
@@ -1338,8 +1338,8 @@ RSpec.describe OStatus::AtomSerializer do
time_after = Time.now
expect(authorize_follow_request_salmon.id.text).to(
- eq(TagManager.instance.unique_tag(time_before.utc, follow_request.id, 'FollowRequest'))
- .or(eq(TagManager.instance.unique_tag(time_after.utc, follow_request.id, 'FollowRequest')))
+ eq(OStatus::TagManager.instance.unique_tag(time_before.utc, follow_request.id, 'FollowRequest'))
+ .or(eq(OStatus::TagManager.instance.unique_tag(time_after.utc, follow_request.id, 'FollowRequest')))
)
end
@@ -1359,7 +1359,7 @@ RSpec.describe OStatus::AtomSerializer do
authorize_follow_request_salmon = OStatus::AtomSerializer.new.authorize_follow_request_salmon(follow_request)
object_type = authorize_follow_request_salmon.nodes.find { |node| node.name == 'activity:object-type' }
- expect(object_type.text).to eq TagManager::TYPES[:activity]
+ expect(object_type.text).to eq OStatus::TagManager::TYPES[:activity]
end
it 'appends activity:verb element with authorize' do
@@ -1368,7 +1368,7 @@ RSpec.describe OStatus::AtomSerializer do
authorize_follow_request_salmon = OStatus::AtomSerializer.new.authorize_follow_request_salmon(follow_request)
verb = authorize_follow_request_salmon.nodes.find { |node| node.name == 'activity:verb' }
- expect(verb.text).to eq TagManager::VERBS[:authorize]
+ expect(verb.text).to eq OStatus::TagManager::VERBS[:authorize]
end
it 'returns element whose rendered view creates follow from follow request when processed' do
@@ -1407,8 +1407,8 @@ RSpec.describe OStatus::AtomSerializer do
time_after = Time.now
expect(reject_follow_request_salmon.id.text).to(
- eq(TagManager.instance.unique_tag(time_before.utc, follow_request.id, 'FollowRequest'))
- .or(TagManager.instance.unique_tag(time_after.utc, follow_request.id, 'FollowRequest'))
+ eq(OStatus::TagManager.instance.unique_tag(time_before.utc, follow_request.id, 'FollowRequest'))
+ .or(OStatus::TagManager.instance.unique_tag(time_after.utc, follow_request.id, 'FollowRequest'))
)
end
@@ -1424,14 +1424,14 @@ RSpec.describe OStatus::AtomSerializer do
follow_request = Fabricate(:follow_request)
reject_follow_request_salmon = OStatus::AtomSerializer.new.reject_follow_request_salmon(follow_request)
object_type = reject_follow_request_salmon.nodes.find { |node| node.name == 'activity:object-type' }
- expect(object_type.text).to eq TagManager::TYPES[:activity]
+ expect(object_type.text).to eq OStatus::TagManager::TYPES[:activity]
end
it 'appends activity:verb element with authorize' do
follow_request = Fabricate(:follow_request)
reject_follow_request_salmon = OStatus::AtomSerializer.new.reject_follow_request_salmon(follow_request)
verb = reject_follow_request_salmon.nodes.find { |node| node.name == 'activity:verb' }
- expect(verb.text).to eq TagManager::VERBS[:reject]
+ expect(verb.text).to eq OStatus::TagManager::VERBS[:reject]
end
it 'returns element whose rendered view deletes follow request when processed' do
@@ -1503,7 +1503,7 @@ RSpec.describe OStatus::AtomSerializer do
entry = OStatus::AtomSerializer.new.object(status)
object_type = entry.nodes.find { |node| node.name == 'activity:object-type' }
- expect(object_type.text).to eq TagManager::TYPES[:note]
+ expect(object_type.text).to eq OStatus::TagManager::TYPES[:note]
end
it 'appends activity:verb element with verb' do
@@ -1512,7 +1512,7 @@ RSpec.describe OStatus::AtomSerializer do
entry = OStatus::AtomSerializer.new.object(status)
object_type = entry.nodes.find { |node| node.name == 'activity:verb' }
- expect(object_type.text).to eq TagManager::VERBS[:post]
+ expect(object_type.text).to eq OStatus::TagManager::VERBS[:post]
end
it 'appends link element for an alternative' do
diff --git a/spec/lib/ostatus/tag_manager_spec.rb b/spec/lib/ostatus/tag_manager_spec.rb
new file mode 100644
index 0000000000000..31195bae2132f
--- /dev/null
+++ b/spec/lib/ostatus/tag_manager_spec.rb
@@ -0,0 +1,70 @@
+# frozen_string_literal: true
+
+require 'rails_helper'
+
+describe OStatus::TagManager do
+ describe '#unique_tag' do
+ it 'returns a unique tag' do
+ expect(OStatus::TagManager.instance.unique_tag(Time.utc(2000), 12, 'Status')).to eq 'tag:cb6e6126.ngrok.io,2000-01-01:objectId=12:objectType=Status'
+ end
+ end
+
+ describe '#unique_tag_to_local_id' do
+ it 'returns the ID part' do
+ expect(OStatus::TagManager.instance.unique_tag_to_local_id('tag:cb6e6126.ngrok.io,2000-01-01:objectId=12:objectType=Status', 'Status')).to eql '12'
+ end
+
+ it 'returns nil if it is not local id' do
+ expect(OStatus::TagManager.instance.unique_tag_to_local_id('tag:remote,2000-01-01:objectId=12:objectType=Status', 'Status')).to eq nil
+ end
+
+ it 'returns nil if it is not expected type' do
+ expect(OStatus::TagManager.instance.unique_tag_to_local_id('tag:cb6e6126.ngrok.io,2000-01-01:objectId=12:objectType=Block', 'Status')).to eq nil
+ end
+
+ it 'returns nil if it does not have object ID' do
+ expect(OStatus::TagManager.instance.unique_tag_to_local_id('tag:cb6e6126.ngrok.io,2000-01-01:objectType=Status', 'Status')).to eq nil
+ end
+ end
+
+ describe '#local_id?' do
+ it 'returns true for a local ID' do
+ expect(OStatus::TagManager.instance.local_id?('tag:cb6e6126.ngrok.io;objectId=12:objectType=Status')).to be true
+ end
+
+ it 'returns false for a foreign ID' do
+ expect(OStatus::TagManager.instance.local_id?('tag:foreign.tld;objectId=12:objectType=Status')).to be false
+ end
+ end
+
+ describe '#uri_for' do
+ subject { OStatus::TagManager.instance.uri_for(target) }
+
+ context 'comment object' do
+ let(:target) { Fabricate(:status, created_at: '2000-01-01T00:00:00Z', reply: true) }
+
+ it 'returns the unique tag for status' do
+ expect(target.object_type).to eq :comment
+ is_expected.to eq target.uri
+ end
+ end
+
+ context 'note object' do
+ let(:target) { Fabricate(:status, created_at: '2000-01-01T00:00:00Z', reply: false, thread: nil) }
+
+ it 'returns the unique tag for status' do
+ expect(target.object_type).to eq :note
+ is_expected.to eq target.uri
+ end
+ end
+
+ context 'person object' do
+ let(:target) { Fabricate(:account, username: 'alice') }
+
+ it 'returns the URL for account' do
+ expect(target.object_type).to eq :person
+ is_expected.to eq 'https://cb6e6126.ngrok.io/users/alice'
+ end
+ end
+ end
+end
diff --git a/spec/lib/tag_manager_spec.rb b/spec/lib/tag_manager_spec.rb
index 6c783023192e8..5427a2929eed0 100644
--- a/spec/lib/tag_manager_spec.rb
+++ b/spec/lib/tag_manager_spec.rb
@@ -120,71 +120,6 @@ RSpec.describe TagManager do
end
end
- describe '#unique_tag' do
- it 'returns a unique tag' do
- expect(TagManager.instance.unique_tag(Time.utc(2000), 12, 'Status')).to eq 'tag:cb6e6126.ngrok.io,2000-01-01:objectId=12:objectType=Status'
- end
- end
-
- describe '#unique_tag_to_local_id' do
- it 'returns the ID part' do
- expect(TagManager.instance.unique_tag_to_local_id('tag:cb6e6126.ngrok.io,2000-01-01:objectId=12:objectType=Status', 'Status')).to eql '12'
- end
-
- it 'returns nil if it is not local id' do
- expect(TagManager.instance.unique_tag_to_local_id('tag:remote,2000-01-01:objectId=12:objectType=Status', 'Status')).to eq nil
- end
-
- it 'returns nil if it is not expected type' do
- expect(TagManager.instance.unique_tag_to_local_id('tag:cb6e6126.ngrok.io,2000-01-01:objectId=12:objectType=Block', 'Status')).to eq nil
- end
-
- it 'returns nil if it does not have object ID' do
- expect(TagManager.instance.unique_tag_to_local_id('tag:cb6e6126.ngrok.io,2000-01-01:objectType=Status', 'Status')).to eq nil
- end
- end
-
- describe '#local_id?' do
- it 'returns true for a local ID' do
- expect(TagManager.instance.local_id?('tag:cb6e6126.ngrok.io;objectId=12:objectType=Status')).to be true
- end
-
- it 'returns false for a foreign ID' do
- expect(TagManager.instance.local_id?('tag:foreign.tld;objectId=12:objectType=Status')).to be false
- end
- end
-
- describe '#uri_for' do
- subject { TagManager.instance.uri_for(target) }
-
- context 'comment object' do
- let(:target) { Fabricate(:status, created_at: '2000-01-01T00:00:00Z', reply: true) }
-
- it 'returns the unique tag for status' do
- expect(target.object_type).to eq :comment
- is_expected.to eq target.uri
- end
- end
-
- context 'note object' do
- let(:target) { Fabricate(:status, created_at: '2000-01-01T00:00:00Z', reply: false, thread: nil) }
-
- it 'returns the unique tag for status' do
- expect(target.object_type).to eq :note
- is_expected.to eq target.uri
- end
- end
-
- context 'person object' do
- let(:target) { Fabricate(:account, username: 'alice') }
-
- it 'returns the URL for account' do
- expect(target.object_type).to eq :person
- is_expected.to eq 'https://cb6e6126.ngrok.io/users/alice'
- end
- end
- end
-
describe '#url_for' do
let(:alice) { Fabricate(:account, username: 'alice') }
diff --git a/spec/models/status_spec.rb b/spec/models/status_spec.rb
index 12efcae617315..9cb71d715dba0 100644
--- a/spec/models/status_spec.rb
+++ b/spec/models/status_spec.rb
@@ -173,6 +173,22 @@ RSpec.describe Status, type: :model do
end
end
+ describe '.not_in_filtered_languages' do
+ context 'for accounts with language filters' do
+ let(:user) { Fabricate(:user, filtered_languages: ['en']) }
+
+ it 'does not include statuses in filtered languages' do
+ status = Fabricate(:status, language: 'en')
+ expect(Status.not_in_filtered_languages(user.account)).not_to include status
+ end
+
+ it 'includes status with unknown language' do
+ status = Fabricate(:status, language: nil)
+ expect(Status.not_in_filtered_languages(user.account)).to include status
+ end
+ end
+ end
+
describe '.as_home_timeline' do
let(:account) { Fabricate(:account) }
let(:followed) { Fabricate(:account) }
diff --git a/spec/services/activitypub/process_collection_service_spec.rb b/spec/services/activitypub/process_collection_service_spec.rb
index 249b12470e62a..c1cc22523c3ad 100644
--- a/spec/services/activitypub/process_collection_service_spec.rb
+++ b/spec/services/activitypub/process_collection_service_spec.rb
@@ -1,7 +1,7 @@
require 'rails_helper'
RSpec.describe ActivityPub::ProcessCollectionService do
- let(:actor) { Fabricate(:account) }
+ let(:actor) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/account') }
let(:payload) do
{
@@ -24,7 +24,7 @@ RSpec.describe ActivityPub::ProcessCollectionService do
describe '#call' do
context 'when actor is the sender'
context 'when actor differs from sender' do
- let(:forwarder) { Fabricate(:account) }
+ let(:forwarder) { Fabricate(:account, domain: 'example.com', uri: 'http://example.com/other_account') }
it 'processes payload with sender if no signature exists' do
expect_any_instance_of(ActivityPub::LinkedDataSignature).not_to receive(:verify_account!)
diff --git a/spec/services/authorize_follow_service_spec.rb b/spec/services/authorize_follow_service_spec.rb
index d74eb41a2c52c..6ea4d83da3cff 100644
--- a/spec/services/authorize_follow_service_spec.rb
+++ b/spec/services/authorize_follow_service_spec.rb
@@ -42,7 +42,7 @@ RSpec.describe AuthorizeFollowService do
it 'sends a follow request authorization salmon slap' do
expect(a_request(:post, "http://salmon.example.com/").with { |req|
xml = OStatus2::Salmon.new.unpack(req.body)
- xml.match(TagManager::VERBS[:authorize])
+ xml.match(OStatus::TagManager::VERBS[:authorize])
}).to have_been_made.once
end
end
diff --git a/spec/services/batched_remove_status_service_spec.rb b/spec/services/batched_remove_status_service_spec.rb
index b1e9ac567be08..f5c9adfb54aba 100644
--- a/spec/services/batched_remove_status_service_spec.rb
+++ b/spec/services/batched_remove_status_service_spec.rb
@@ -50,14 +50,14 @@ RSpec.describe BatchedRemoveStatusService do
it 'sends PuSH update to PuSH subscribers' do
expect(a_request(:post, 'http://example.com/push').with { |req|
- matches = req.body.match(TagManager::VERBS[:delete])
+ matches = req.body.match(OStatus::TagManager::VERBS[:delete])
}).to have_been_made.at_least_once
end
it 'sends Salmon slap to previously mentioned users' do
expect(a_request(:post, "http://example.com/salmon").with { |req|
xml = OStatus2::Salmon.new.unpack(req.body)
- xml.match(TagManager::VERBS[:delete])
+ xml.match(OStatus::TagManager::VERBS[:delete])
}).to have_been_made.once
end
diff --git a/spec/services/block_service_spec.rb b/spec/services/block_service_spec.rb
index bd2ab3d53e33c..c69ff78047185 100644
--- a/spec/services/block_service_spec.rb
+++ b/spec/services/block_service_spec.rb
@@ -32,7 +32,7 @@ RSpec.describe BlockService do
it 'sends a block salmon slap' do
expect(a_request(:post, "http://salmon.example.com/").with { |req|
xml = OStatus2::Salmon.new.unpack(req.body)
- xml.match(TagManager::VERBS[:block])
+ xml.match(OStatus::TagManager::VERBS[:block])
}).to have_been_made.once
end
end
diff --git a/spec/services/favourite_service_spec.rb b/spec/services/favourite_service_spec.rb
index 2ab1f32ca2379..5bf2c74a91038 100644
--- a/spec/services/favourite_service_spec.rb
+++ b/spec/services/favourite_service_spec.rb
@@ -34,7 +34,7 @@ RSpec.describe FavouriteService do
it 'sends a salmon slap' do
expect(a_request(:post, "http://salmon.example.com/").with { |req|
xml = OStatus2::Salmon.new.unpack(req.body)
- xml.match(TagManager::VERBS[:favorite])
+ xml.match(OStatus::TagManager::VERBS[:favorite])
}).to have_been_made.once
end
end
diff --git a/spec/services/follow_service_spec.rb b/spec/services/follow_service_spec.rb
index 1e23780316e6b..ceb39e5e6ea7c 100644
--- a/spec/services/follow_service_spec.rb
+++ b/spec/services/follow_service_spec.rb
@@ -60,7 +60,7 @@ RSpec.describe FollowService do
it 'sends a follow request salmon slap' do
expect(a_request(:post, "http://salmon.example.com/").with { |req|
xml = OStatus2::Salmon.new.unpack(req.body)
- xml.match(TagManager::VERBS[:request_friend])
+ xml.match(OStatus::TagManager::VERBS[:request_friend])
}).to have_been_made.once
end
end
@@ -81,7 +81,7 @@ RSpec.describe FollowService do
it 'sends a follow salmon slap' do
expect(a_request(:post, "http://salmon.example.com/").with { |req|
xml = OStatus2::Salmon.new.unpack(req.body)
- xml.match(TagManager::VERBS[:follow])
+ xml.match(OStatus::TagManager::VERBS[:follow])
}).to have_been_made.once
end
diff --git a/spec/services/reject_follow_service_spec.rb b/spec/services/reject_follow_service_spec.rb
index 2e06345b367b5..bf49dd2c94865 100644
--- a/spec/services/reject_follow_service_spec.rb
+++ b/spec/services/reject_follow_service_spec.rb
@@ -42,7 +42,7 @@ RSpec.describe RejectFollowService do
it 'sends a follow request rejection salmon slap' do
expect(a_request(:post, "http://salmon.example.com/").with { |req|
xml = OStatus2::Salmon.new.unpack(req.body)
- xml.match(TagManager::VERBS[:reject])
+ xml.match(OStatus::TagManager::VERBS[:reject])
}).to have_been_made.once
end
end
diff --git a/spec/services/remove_status_service_spec.rb b/spec/services/remove_status_service_spec.rb
index 8b34bdb6b653a..b60015928bcd1 100644
--- a/spec/services/remove_status_service_spec.rb
+++ b/spec/services/remove_status_service_spec.rb
@@ -34,7 +34,7 @@ RSpec.describe RemoveStatusService do
it 'sends PuSH update to PuSH subscribers' do
expect(a_request(:post, 'http://example.com/push').with { |req|
- req.body.match(TagManager::VERBS[:delete])
+ req.body.match(OStatus::TagManager::VERBS[:delete])
}).to have_been_made
end
@@ -45,7 +45,7 @@ RSpec.describe RemoveStatusService do
it 'sends Salmon slap to previously mentioned users' do
expect(a_request(:post, "http://example.com/salmon").with { |req|
xml = OStatus2::Salmon.new.unpack(req.body)
- xml.match(TagManager::VERBS[:delete])
+ xml.match(OStatus::TagManager::VERBS[:delete])
}).to have_been_made.once
end
diff --git a/spec/services/unblock_service_spec.rb b/spec/services/unblock_service_spec.rb
index def4981e7287b..ca7a6b77e8fa9 100644
--- a/spec/services/unblock_service_spec.rb
+++ b/spec/services/unblock_service_spec.rb
@@ -34,7 +34,7 @@ RSpec.describe UnblockService do
it 'sends an unblock salmon slap' do
expect(a_request(:post, "http://salmon.example.com/").with { |req|
xml = OStatus2::Salmon.new.unpack(req.body)
- xml.match(TagManager::VERBS[:unblock])
+ xml.match(OStatus::TagManager::VERBS[:unblock])
}).to have_been_made.once
end
end
diff --git a/spec/services/unfollow_service_spec.rb b/spec/services/unfollow_service_spec.rb
index 29040431e524d..021e76782691a 100644
--- a/spec/services/unfollow_service_spec.rb
+++ b/spec/services/unfollow_service_spec.rb
@@ -34,7 +34,7 @@ RSpec.describe UnfollowService do
it 'sends an unfollow salmon slap' do
expect(a_request(:post, "http://salmon.example.com/").with { |req|
xml = OStatus2::Salmon.new.unpack(req.body)
- xml.match(TagManager::VERBS[:unfollow])
+ xml.match(OStatus::TagManager::VERBS[:unfollow])
}).to have_been_made.once
end
end
diff --git a/spec/workers/pubsubhubbub/distribution_worker_spec.rb b/spec/workers/pubsubhubbub/distribution_worker_spec.rb
index 5c22e7fa8e321..5844850795fcf 100644
--- a/spec/workers/pubsubhubbub/distribution_worker_spec.rb
+++ b/spec/workers/pubsubhubbub/distribution_worker_spec.rb
@@ -18,48 +18,11 @@ describe Pubsubhubbub::DistributionWorker do
it 'delivers payload to all subscriptions' do
allow(Pubsubhubbub::DeliveryWorker).to receive(:push_bulk)
subject.perform(status.stream_entry.id)
- expect(Pubsubhubbub::DeliveryWorker).to have_received(:push_bulk).with([anonymous_subscription, subscription_with_follower])
- end
- end
-
- context 'when OStatus privacy is used' do
- around do |example|
- before_val = Rails.configuration.x.use_ostatus_privacy
- Rails.configuration.x.use_ostatus_privacy = true
- example.run
- Rails.configuration.x.use_ostatus_privacy = before_val
- end
-
- describe 'with private status' do
- let(:status) { Fabricate(:status, account: alice, text: 'Hello', visibility: :private) }
-
- it 'delivers payload only to subscriptions with followers' do
- allow(Pubsubhubbub::DeliveryWorker).to receive(:push_bulk)
- subject.perform(status.stream_entry.id)
- expect(Pubsubhubbub::DeliveryWorker).to have_received(:push_bulk).with([subscription_with_follower])
- expect(Pubsubhubbub::DeliveryWorker).to_not have_received(:push_bulk).with([anonymous_subscription])
- end
- end
-
- describe 'with direct status' do
- let(:status) { Fabricate(:status, account: alice, text: 'Hello', visibility: :direct) }
-
- it 'does not deliver payload' do
- allow(Pubsubhubbub::DeliveryWorker).to receive(:push_bulk)
- subject.perform(status.stream_entry.id)
- expect(Pubsubhubbub::DeliveryWorker).to_not have_received(:push_bulk)
- end
+ expect(Pubsubhubbub::DeliveryWorker).to have_received(:push_bulk).with([anonymous_subscription.id, subscription_with_follower.id])
end
end
context 'when OStatus privacy is not used' do
- around do |example|
- before_val = Rails.configuration.x.use_ostatus_privacy
- Rails.configuration.x.use_ostatus_privacy = false
- example.run
- Rails.configuration.x.use_ostatus_privacy = before_val
- end
-
describe 'with private status' do
let(:status) { Fabricate(:status, account: alice, text: 'Hello', visibility: :private) }
diff --git a/streaming/index.js b/streaming/index.js
index 3e80c8b3083df..017073fa112fb 100644
--- a/streaming/index.js
+++ b/streaming/index.js
@@ -264,7 +264,7 @@ const startWorker = (workerId) => {
const transmit = () => {
const now = new Date().getTime();
const delta = now - queued_at;
- const encodedPayload = typeof payload === 'number' ? payload : JSON.stringify(payload);
+ const encodedPayload = typeof payload === 'object' ? JSON.stringify(payload) : payload;
log.silly(req.requestId, `Transmitting for ${req.accountId}: ${event} ${encodedPayload} Delay: ${delta}ms`);
output(event, encodedPayload);
diff --git a/yarn.lock b/yarn.lock
index c1c27a615c482..640d06a102e7e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -982,6 +982,10 @@ base64-js@^1.0.2:
version "1.2.1"
resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.1.tgz#a91947da1f4a516ea38e5b4ec0ec3773675e0886"
+batch-processor@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/batch-processor/-/batch-processor-1.0.0.tgz#75c95c32b748e0850d10c2b168f6bdbe9891ace8"
+
batch@0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
@@ -1234,6 +1238,10 @@ chai@^4.1.0:
pathval "^1.0.0"
type-detect "^4.0.0"
+chain-function@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.yarnpkg.com/chain-function/-/chain-function-1.0.0.tgz#0d4ab37e7e18ead0bdc47b920764118ce58733dc"
+
chalk@^1.0.0, chalk@^1.1.0, chalk@^1.1.1, chalk@^1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
@@ -1972,7 +1980,7 @@ doctrine@^2.0.0:
esutils "^2.0.2"
isarray "^1.0.0"
-"dom-helpers@^2.4.0 || ^3.0.0", dom-helpers@^3.0.0, dom-helpers@^3.2.1:
+"dom-helpers@^2.4.0 || ^3.0.0", dom-helpers@^3.0.0, dom-helpers@^3.2.0, dom-helpers@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/dom-helpers/-/dom-helpers-3.2.1.tgz#3203e07fed217bd1f424b019735582fc37b2825a"
@@ -2049,6 +2057,12 @@ electron-to-chromium@^1.2.7, electron-to-chromium@^1.3.14:
version "1.3.15"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.15.tgz#08397934891cbcfaebbd18b82a95b5a481138369"
+element-resize-detector@^1.1.12:
+ version "1.1.12"
+ resolved "https://registry.yarnpkg.com/element-resize-detector/-/element-resize-detector-1.1.12.tgz#8b3fd6eedda17f9c00b360a0ea2df9927ae80ba2"
+ dependencies:
+ batch-processor "^1.0.0"
+
elliptic@^6.0.0:
version "6.4.0"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df"
@@ -2061,6 +2075,12 @@ elliptic@^6.0.0:
minimalistic-assert "^1.0.0"
minimalistic-crypto-utils "^1.0.0"
+emoji-mart@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/emoji-mart/-/emoji-mart-1.0.1.tgz#0ef2fd2bf4b6762aab7486c26c574387f034e392"
+ dependencies:
+ measure-scrollbar "^0.1.0"
+
emoji-regex@^6.1.0:
version "6.4.3"
resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-6.4.3.tgz#6ac2ac58d4b78def5e39b33fcbf395688af3076c"
@@ -3853,6 +3873,10 @@ mathjs@^3.11.5:
tiny-emitter "2.0.0"
typed-function "0.10.5"
+measure-scrollbar@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.yarnpkg.com/measure-scrollbar/-/measure-scrollbar-0.1.0.tgz#2bbfac6773bcbb98d814e6890554c0b92846fe6f"
+
media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
@@ -5131,6 +5155,12 @@ promise@^7.1.1:
dependencies:
asap "~2.0.3"
+prop-types-extra@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/prop-types-extra/-/prop-types-extra-1.0.1.tgz#a57bd4810e82d27a3ff4317ecc1b4ad005f79a82"
+ dependencies:
+ warning "^3.0.0"
+
prop-types@^15.5.10, prop-types@^15.5.4, prop-types@^15.5.6, prop-types@^15.5.8:
version "15.5.10"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.5.10.tgz#2797dfc3126182e3a95e3dfbb2e893ddd7456154"
@@ -5329,6 +5359,17 @@ react-notification@^6.7.1:
dependencies:
prop-types "^15.5.10"
+react-overlays@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.yarnpkg.com/react-overlays/-/react-overlays-0.8.1.tgz#26e480003c2fd6f581a4a66c0c86cb3dff17e626"
+ dependencies:
+ classnames "^2.2.5"
+ dom-helpers "^3.2.1"
+ prop-types "^15.5.10"
+ prop-types-extra "^1.0.1"
+ react-transition-group "^2.0.0-beta.0"
+ warning "^3.0.0"
+
react-redux-loading-bar@^2.9.2:
version "2.9.2"
resolved "https://registry.yarnpkg.com/react-redux-loading-bar/-/react-redux-loading-bar-2.9.2.tgz#f0e604ee35af5ecb25addb10bf24ca3d478c95a8"
@@ -5382,6 +5423,14 @@ react-simple-dropdown@^3.0.0:
classnames "^2.1.2"
prop-types "^15.5.8"
+react-sizeme@^2.3.5:
+ version "2.3.5"
+ resolved "https://registry.yarnpkg.com/react-sizeme/-/react-sizeme-2.3.5.tgz#f14c0a15f9b24d7b8b6f196871b0af19aa01a422"
+ dependencies:
+ element-resize-detector "^1.1.12"
+ invariant "^2.2.2"
+ lodash "^4.17.4"
+
react-swipeable-views-core@^0.11.1:
version "0.11.1"
resolved "https://registry.yarnpkg.com/react-swipeable-views-core/-/react-swipeable-views-core-0.11.1.tgz#61d046799f90725bbf91a0eb3abcab805c774cac"
@@ -5430,6 +5479,17 @@ react-toggle@^4.0.1:
dependencies:
classnames "^2.2.5"
+react-transition-group@^2.0.0-beta.0:
+ version "2.2.0"
+ resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-2.2.0.tgz#793bf8cb15bfe91b3101b24bce1c1d2891659575"
+ dependencies:
+ chain-function "^1.0.0"
+ classnames "^2.2.5"
+ dom-helpers "^3.2.0"
+ loose-envify "^1.3.1"
+ prop-types "^15.5.8"
+ warning "^3.0.0"
+
react-virtualized@^9.7.4:
version "9.9.0"
resolved "https://registry.yarnpkg.com/react-virtualized/-/react-virtualized-9.9.0.tgz#799a6f23819eeb82860d59b82fad33d1d420325e"